@phenixrts/sdk 2025.2.4-beta.617 → 2025.2.4-beta.619
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 +28 -8
- package/channels/debug/package.json +1 -1
- package/channels/debug.private/channels.js +28 -8
- package/channels/debug.private/package.json +1 -1
- package/channels/debug.provideGlobalScope/channels.js +28 -8
- package/channels/debug.provideGlobalScope/package.json +1 -1
- package/channels/es5.debug.private/channels.js +28 -8
- 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 +28 -8
- package/full/debug/package.json +1 -1
- package/full/debug.private/full.js +28 -8
- 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 +28 -8
- package/publish/debug.private/package.json +1 -1
- package/publish/debug.private/publish.js +28 -8
- 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/globalScope/GlobalScope.d.ts +2 -0
- package/types/globalScope/IGlobalScope.d.ts +2 -0
- package/types/globalScope/INavigator.d.ts +1 -1
- package/types/globalScope/IWindow.d.ts +1 -0
- package/types/globalScope/ProvidedGlobalScope.d.ts +2 -0
|
@@ -1003,6 +1003,11 @@ var GlobalScope = /*#__PURE__*/function () {
|
|
|
1003
1003
|
// @ts-ignore
|
|
1004
1004
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1005
1005
|
return (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__["default"])(GlobalScope, [{
|
|
1006
|
+
key: "AbortController",
|
|
1007
|
+
get: function get() {
|
|
1008
|
+
return this._window.AbortController;
|
|
1009
|
+
}
|
|
1010
|
+
}, {
|
|
1006
1011
|
key: "FormData",
|
|
1007
1012
|
get: function get() {
|
|
1008
1013
|
return this._window.FormData;
|
|
@@ -1122,6 +1127,14 @@ var GlobalScope = /*#__PURE__*/function () {
|
|
|
1122
1127
|
get: function get() {
|
|
1123
1128
|
return this._window['__phenixPageLoadTime'] || this._window['__pageLoadTime'];
|
|
1124
1129
|
}
|
|
1130
|
+
}, {
|
|
1131
|
+
key: "sendBeacon",
|
|
1132
|
+
get: function get() {
|
|
1133
|
+
var _this = this;
|
|
1134
|
+
return this._navigator.sendBeacon ? function (url, data) {
|
|
1135
|
+
return _this._navigator.sendBeacon(url, data === undefined ? null : data);
|
|
1136
|
+
} : undefined;
|
|
1137
|
+
}
|
|
1125
1138
|
}, {
|
|
1126
1139
|
key: "queueMicrotask",
|
|
1127
1140
|
get: function get() {
|
|
@@ -7477,14 +7490,21 @@ var EndPoint = /*#__PURE__*/function () {
|
|
|
7477
7490
|
key: "destroyStreamOnUnmount",
|
|
7478
7491
|
value: function () {
|
|
7479
7492
|
var _destroyStreamOnUnmount = (0,_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__["default"])(/*#__PURE__*/_regenerator().m(function _callee8(stream, reason) {
|
|
7480
|
-
var
|
|
7481
|
-
var
|
|
7493
|
+
var _this8 = this;
|
|
7494
|
+
var sendBeacon, url, formData, body;
|
|
7482
7495
|
return _regenerator().w(function (_context8) {
|
|
7483
7496
|
while (1) switch (_context8.n) {
|
|
7484
7497
|
case 0:
|
|
7485
|
-
|
|
7486
|
-
|
|
7498
|
+
sendBeacon = _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.sendBeacon;
|
|
7499
|
+
if (sendBeacon) {
|
|
7500
|
+
_context8.n = 1;
|
|
7501
|
+
break;
|
|
7487
7502
|
}
|
|
7503
|
+
this.destroyStream(stream, reason)["catch"](function (err) {
|
|
7504
|
+
_this8._logger.error('Failed to destroy stream on unmount', err);
|
|
7505
|
+
});
|
|
7506
|
+
return _context8.a(2);
|
|
7507
|
+
case 1:
|
|
7488
7508
|
url = this.buildUrl([stream.tenancy, 'stream', stream.streamId, 'destroy']).toString();
|
|
7489
7509
|
formData = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.FormData();
|
|
7490
7510
|
body = {
|
|
@@ -7494,8 +7514,8 @@ var EndPoint = /*#__PURE__*/function () {
|
|
|
7494
7514
|
options: []
|
|
7495
7515
|
};
|
|
7496
7516
|
formData.append('jsonBody', JSON.stringify(body));
|
|
7497
|
-
|
|
7498
|
-
case
|
|
7517
|
+
sendBeacon(url, formData);
|
|
7518
|
+
case 2:
|
|
7499
7519
|
return _context8.a(2);
|
|
7500
7520
|
}
|
|
7501
7521
|
}, _callee8, this);
|
|
@@ -9761,7 +9781,7 @@ var VersionManager = /*#__PURE__*/function () {
|
|
|
9761
9781
|
key: "sdkVersion",
|
|
9762
9782
|
get: function get() {
|
|
9763
9783
|
try {
|
|
9764
|
-
return "2026-07-
|
|
9784
|
+
return "2026-07-08T19:42:41.636Z (2025.2.4-beta.619)";
|
|
9765
9785
|
} catch (e) {
|
|
9766
9786
|
return this._defaultVersion;
|
|
9767
9787
|
}
|
|
@@ -11949,4 +11969,4 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
11949
11969
|
/******/ })()
|
|
11950
11970
|
;
|
|
11951
11971
|
});
|
|
11952
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUMzdkIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFDeGpCLENBQUMsRTs7Ozs7Ozs7Ozs7OztBQ1hGO0FBQ0E7QUFDQTs7QUFFMkc7QUFFM0csK0RBQWUsSUFBSTJ2QixVQUFVLElBQUE5K0IsTUFBQSxDQUFBd2Msb0ZBQUEsQ0FDeEI4NEIsb0dBQXVCLElBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFBOTRCLG9GQUFBLENBQUssSUFBSXNpQixVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMzdkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFFLEdBQUcsR0FBQXFOLG9GQUFBLENBQzdFODRCLG9HQUF1QixJQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFDekQsQ0FBQyxFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNURjtBQUNBO0FBQ0E7O0FBR2tEO0FBQytGO0FBQUEsSUFFNUhnQiw4QkFBOEI7RUFHakQsU0FBQUEsK0JBQVl2RCxNQUFjLEVBQUU7SUFBQXoyQyxpRkFBQSxPQUFBZzZDLDhCQUFBO0lBQUEvNUMsaUZBQUEseUJBRjhELElBQUl3ckMsR0FBRyxDQUFDLENBQUM7SUFHakcsSUFBSSxDQUFDbnJDLFVBQVUsQ0FBQ20yQyxNQUFNLENBQUM7RUFDekI7RUFBQyxPQUFBbDJDLDhFQUFBLENBQUF5NUMsOEJBQUE7SUFBQXg1QyxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFPdXJDLGFBQWFBLENBQUlnTyxXQUFxQyxFQUFFQyxZQUFrQyxFQUFjO01BQUEsSUFBQWo1QyxLQUFBO01BQzdHLElBQUksQ0FBQ2s1QyxjQUFjLENBQUMzZ0MsR0FBRyxDQUFDeWdDLFdBQVcsRUFBRUMsWUFBdUMsQ0FBQztNQUU3RSxPQUFPLElBQUl4NkMsd0RBQVUsQ0FBQztRQUFBLE9BQU11QixLQUFJLENBQUNrNUMsY0FBYyxVQUFPLENBQUNGLFdBQVcsQ0FBQztNQUFBLEVBQUM7SUFDdEU7RUFBQztJQUFBejVDLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQU9LLE9BQU9BLENBQUEsRUFBUztNQUNyQixJQUFJLENBQUNvNUMsY0FBYyxDQUFDMU0sS0FBSyxDQUFDLENBQUM7SUFDN0I7RUFBQztJQUFBanRDLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQVFKLFVBQVVBLENBQUNtMkMsTUFBYyxFQUFRO01BQUEsSUFBQXhnQyxNQUFBO01BQ3ZDd2dDLE1BQU0sQ0FBQ2p1QyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsVUFBQW5CLElBQUEsRUFBcUQ7UUFBQSxJQUE3QzBNLE9BQU8sR0FBQTFNLElBQUEsQ0FBYjRQLElBQUk7UUFDdkMsSUFBTW1qQyxnQkFBZ0IsR0FBRyxTQUFuQkEsZ0JBQWdCQSxDQUFBeHlDLEtBQUEsRUFBb0Q7VUFBQSxJQUE1Q0ssSUFBSSxHQUFBTCxLQUFBLENBQUpLLElBQUk7WUFBRWdQLElBQUksR0FBQXJQLEtBQUEsQ0FBSnFQLElBQUk7VUFDdEMsSUFBTWlqQyxZQUFZLEdBQUdqa0MsTUFBSSxDQUFDa2tDLGNBQWMsQ0FBQzE1QyxHQUFHLENBQUN3SCxJQUFJLENBQUM7VUFFbEQsSUFBSSxDQUFDaXlDLFlBQVksRUFBRTtZQUNqQjtVQUNGO1VBRUFBLFlBQVksQ0FBQ2pqQyxJQUFJLENBQUM7UUFDcEIsQ0FBQztRQUVELFFBQVFsRCxPQUFPLENBQUM5TCxJQUFJO1VBQ2xCLEtBQUtxdUMsdUZBQW9CLENBQUMrRCxLQUFLO1VBQy9CLEtBQUsvRCx1RkFBb0IsQ0FBQ2dFLFFBQVE7WUFDaENGLGdCQUFnQixDQUFDcm1DLE9BQU8sQ0FBQ2tELElBQUksQ0FBQztZQUU5QjtVQUVGO1FBQ0Y7TUFDRixDQUFDLEVBQUU7UUFBQ3lnQyxJQUFJLEVBQUU7TUFBSyxDQUFDLENBQUM7SUFDbkI7RUFBQztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7QUMvQ0g7QUFDQTtBQUNBOztBQU1PLElBQUtwQixvQkFBb0IsMEJBQXBCQSxvQkFBb0I7RUFBcEJBLG9CQUFvQixDQUFwQkEsb0JBQW9CO0VBQXBCQSxvQkFBb0IsQ0FBcEJBLG9CQUFvQjtFQUFwQkEsb0JBQW9CLENBQXBCQSxvQkFBb0I7RUFBcEJBLG9CQUFvQixDQUFwQkEsb0JBQW9CO0VBQXBCQSxvQkFBb0IsQ0FBcEJBLG9CQUFvQjtFQUFwQkEsb0JBQW9CLENBQXBCQSxvQkFBb0I7RUFBQSxPQUFwQkEsb0JBQW9CO0FBQUE7QUFTekIsSUFBSy9LLHdCQUF3QiwwQkFBeEJBLHdCQUF3QjtFQUF4QkEsd0JBQXdCLENBQXhCQSx3QkFBd0I7RUFBeEJBLHdCQUF3QixDQUF4QkEsd0JBQXdCO0VBQXhCQSx3QkFBd0IsQ0FBeEJBLHdCQUF3QjtFQUF4QkEsd0JBQXdCLENBQXhCQSx3QkFBd0I7RUFBeEJBLHdCQUF3QixDQUF4QkEsd0JBQXdCO0VBQUEsT0FBeEJBLHdCQUF3QjtBQUFBLE07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNqQnBDO0FBQ0E7QUFDQTtBQUZBLElBTXFCOXRCLGNBQWM7RUFBQSxTQUFBQSxlQUFBO0lBQUF6ZCxpRkFBQSxPQUFBeWQsY0FBQTtFQUFBO0VBQUEsT0FBQWxkLDhFQUFBLENBQUFrZCxjQUFBO0lBQUFqZCxHQUFBO0lBQUFDLEdBQUEsRUFHakMsU0FBQUEsSUFBQSxFQUFnQztNQUM5QixJQUFJO1FBQ0YsT0FBTzg1Qyw4Q0FBaUI7TUFDMUIsQ0FBQyxDQUFDLE9BQU9udkMsQ0FBQyxFQUFFO1FBQ1YsT0FBTyxJQUFJLENBQUNvdkMsZUFBZTtNQUM3QjtJQUNGO0VBQUM7QUFBQTtBQUFBdjZDLGlGQUFBLENBVGtCd2QsY0FBYyxxQkFDQSxJQUFJdmQsSUFBSSxDQUFDLENBQUMsQ0FBQ2lVLFdBQVcsQ0FBQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNQM0Q7QUFDQTtBQUNBOztBQUVrRDtBQUFBLElBSzdCaUQsaUJBQWlCO0VBTXBDLFNBQUFBLGtCQUFZK1gsc0JBQThDLEVBQUU7SUFBQW52QixpRkFBQSxPQUFBb1gsaUJBQUE7SUFBQW5YLGlGQUFBO0lBQUFBLGlGQUFBO0lBQUFBLGlGQUFBO0lBQUFBLGlGQUFBO0lBQzFELElBQUksQ0FBQzZaLFFBQVEsR0FBR3FWLHNCQUFzQixDQUFDcFYsT0FBTztJQUM5QyxJQUFJLENBQUNDLFVBQVUsR0FBR21WLHNCQUFzQixDQUFDbFYsU0FBUztJQUNsRCxJQUFJLENBQUNyRyxVQUFVLEdBQUd1YixzQkFBc0IsQ0FBQ3hiLFNBQVM7SUFDbEQsSUFBSSxDQUFDK21DLGlCQUFpQixHQUFHLElBQUlELHlEQUFnQixDQUFDdHJCLHNCQUFzQixDQUFDO0VBQ3ZFO0VBQUMsT0FBQTV1Qiw4RUFBQSxDQUFBNlcsaUJBQUE7SUFBQTVXLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQUFtVCxHQUFHQSxDQUFDQyxRQUFzQixFQUFFQyxPQUFlLEVBQUVDLFFBQWdCLEVBQUVDLElBQVUsRUFBUTtNQUMvRSxJQUFJSCxRQUFRLEdBQUcsSUFBSSxDQUFDRixVQUFVLEVBQUU7UUFDOUI7TUFDRjtNQUVBLElBQUksQ0FBQzhtQyxpQkFBaUIsQ0FBQzF3QyxJQUFJLENBQUM4SixRQUFRLEVBQUVDLE9BQU8sRUFBRUMsUUFBUSxFQUFFQyxJQUFJLENBQUM7SUFDaEU7RUFBQztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDNUJIO0FBQ0E7QUFDQTs7QUFFcUQ7QUFFQztBQUFBLElBRWpDb0Qsc0JBQXNCO0VBQUEsU0FBQUEsdUJBQUE7SUFBQXJYLGlGQUFBLE9BQUFxWCxzQkFBQTtJQUFBcFgsaUZBQUEsZUFDMUIsZ0RBQWdEO0lBQUFBLGlGQUFBLG1CQUNwQyxHQUFHO0lBQUFBLGlGQUFBLHFCQUNELEdBQUc7SUFBQUEsaUZBQUEsdUJBQ0QsR0FBRztJQUFBQSxpRkFBQSx3QkFDRixDQUFDO0lBQUFBLGlGQUFBLHFCQUNac0UsOERBQWMsQ0FBQ1ksNEJBQTRCO0VBQUE7RUFBQSxPQUFBNUUsOEVBQUEsQ0FBQThXLHNCQUFBO0lBQUE3VyxHQUFBO0lBQUFDLEdBQUEsRUFFaEUsU0FBQUEsSUFBQSxFQUFrQjtNQUNoQixPQUFPLElBQUksQ0FBQzhZLElBQUk7SUFDbEIsQ0FBQztJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBUUMsR0FBVyxFQUFFO01BQ25CLElBQU02VixZQUFZLEdBQUcsSUFBSTd2QixnRUFBVyxDQUFDaUIsS0FBSyxDQUFDMEYsR0FBRyxDQUFDcVQsR0FBRyxDQUFDO01BRW5ENlYsWUFBWSxDQUFDM1YsUUFBUSxHQUFHMlYsWUFBWSxDQUFDM1YsUUFBUSxHQUFHLE9BQU87TUFFdkQsSUFBSSxDQUFDSixJQUFJLEdBQUcrVixZQUFZLENBQUNsZSxRQUFRLENBQUMsQ0FBQztJQUNyQztFQUFDO0lBQUE1USxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQTBCO01BQ3hCLE9BQU8sSUFBSSxDQUFDbVosWUFBWTtJQUMxQixDQUFDO0lBQUFKLEdBQUEsRUFFRCxTQUFBQSxJQUFnQkssV0FBbUIsRUFBRTtNQUNuQyxJQUFJLENBQUNELFlBQVksR0FBR0MsV0FBVztJQUNqQztFQUFDO0lBQUFyWixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXNCO01BQ3BCLE9BQU8sSUFBSSxDQUFDcVosUUFBUTtJQUN0QixDQUFDO0lBQUFOLEdBQUEsRUFFRCxTQUFBQSxJQUFZTyxPQUFlLEVBQUU7TUFDM0IsSUFBSSxDQUFDRCxRQUFRLEdBQUdDLE9BQU87SUFDekI7RUFBQztJQUFBdlosR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUF3QjtNQUN0QixPQUFPLElBQUksQ0FBQ3VaLFVBQVU7SUFDeEIsQ0FBQztJQUFBUixHQUFBLEVBRUQsU0FBQUEsSUFBY1MsU0FBaUIsRUFBRTtNQUMvQixJQUFJLENBQUNELFVBQVUsR0FBR0MsU0FBUztJQUM3QjtFQUFDO0lBQUF6WixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQTJCO01BQ3pCLE9BQU8sSUFBSSxDQUFDMkksYUFBYTtJQUMzQixDQUFDO0lBQUFvUSxHQUFBLEVBRUQsU0FBQUEsSUFBaUJ4USxZQUFvQixFQUFFO01BQ3JDLElBQUksQ0FBQ0ksYUFBYSxHQUFHSixZQUFZO0lBQ25DO0VBQUM7SUFBQXhJLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBOEI7TUFDNUIsT0FBTyxJQUFJLENBQUNtVCxVQUFVO0lBQ3hCLENBQUM7SUFBQTRGLEdBQUEsRUFFRCxTQUFBQSxJQUFjN0YsU0FBdUIsRUFBRTtNQUNyQyxJQUFJLENBQUNDLFVBQVUsR0FBR0QsU0FBUztJQUM3QjtFQUFDO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCQ2pFSCx1S0FBQXZJLENBQUEsRUFBQThQLENBQUEsRUFBQUMsQ0FBQSx3QkFBQUMsTUFBQSxHQUFBQSxNQUFBLE9BQUFDLENBQUEsR0FBQUYsQ0FBQSxDQUFBRyxRQUFBLGtCQUFBQyxDQUFBLEdBQUFKLENBQUEsQ0FBQUssV0FBQSw4QkFBQUMsRUFBQU4sQ0FBQSxFQUFBRSxDQUFBLEVBQUFFLENBQUEsRUFBQUUsQ0FBQSxRQUFBQyxDQUFBLEdBQUFMLENBQUEsSUFBQUEsQ0FBQSxDQUFBN04sU0FBQSxZQUFBbU8sU0FBQSxHQUFBTixDQUFBLEdBQUFNLFNBQUEsRUFBQUMsQ0FBQSxHQUFBN0UsTUFBQSxDQUFBOEUsTUFBQSxDQUFBSCxDQUFBLENBQUFsTyxTQUFBLFVBQUFzTyxtQkFBQSxDQUFBRixDQUFBLHVCQUFBVCxDQUFBLEVBQUFFLENBQUEsRUFBQUUsQ0FBQSxRQUFBRSxDQUFBLEVBQUFDLENBQUEsRUFBQUUsQ0FBQSxFQUFBRyxDQUFBLE1BQUFDLENBQUEsR0FBQVQsQ0FBQSxRQUFBVSxDQUFBLE9BQUFDLENBQUEsS0FBQUYsQ0FBQSxLQUFBWCxDQUFBLEtBQUFjLENBQUEsRUFBQS9RLENBQUEsRUFBQWdSLENBQUEsRUFBQUMsQ0FBQSxFQUFBTixDQUFBLEVBQUFNLENBQUEsQ0FBQXRXLElBQUEsQ0FBQXFGLENBQUEsTUFBQWlSLENBQUEsV0FBQUEsRUFBQW5CLENBQUEsRUFBQUMsQ0FBQSxXQUFBTSxDQUFBLEdBQUFQLENBQUEsRUFBQVEsQ0FBQSxNQUFBRSxDQUFBLEdBQUF4USxDQUFBLEVBQUE4USxDQUFBLENBQUFiLENBQUEsR0FBQUYsQ0FBQSxFQUFBaUIsQ0FBQSxnQkFBQUMsRUFBQWxCLENBQUEsRUFBQUUsQ0FBQSxTQUFBSyxDQUFBLEdBQUFQLENBQUEsRUFBQVMsQ0FBQSxHQUFBUCxDQUFBLEVBQUFILENBQUEsT0FBQWUsQ0FBQSxJQUFBRixDQUFBLEtBQUFSLENBQUEsSUFBQUwsQ0FBQSxHQUFBYyxDQUFBLENBQUFoUixNQUFBLEVBQUFrUSxDQUFBLFVBQUFLLENBQUEsRUFBQUUsQ0FBQSxHQUFBTyxDQUFBLENBQUFkLENBQUEsR0FBQW1CLENBQUEsR0FBQUgsQ0FBQSxDQUFBRixDQUFBLEVBQUFNLENBQUEsR0FBQWIsQ0FBQSxLQUFBTixDQUFBLFFBQUFJLENBQUEsR0FBQWUsQ0FBQSxLQUFBakIsQ0FBQSxNQUFBTyxDQUFBLEdBQUFILENBQUEsRUFBQUMsQ0FBQSxHQUFBRCxDQUFBLFlBQUFDLENBQUEsV0FBQUQsQ0FBQSxNQUFBQSxDQUFBLE1BQUFyUSxDQUFBLElBQUFxUSxDQUFBLE9BQUFZLENBQUEsTUFBQWQsQ0FBQSxHQUFBSixDQUFBLFFBQUFrQixDQUFBLEdBQUFaLENBQUEsUUFBQUMsQ0FBQSxNQUFBUSxDQUFBLENBQUFDLENBQUEsR0FBQWQsQ0FBQSxFQUFBYSxDQUFBLENBQUFiLENBQUEsR0FBQUksQ0FBQSxPQUFBWSxDQUFBLEdBQUFDLENBQUEsS0FBQWYsQ0FBQSxHQUFBSixDQUFBLFFBQUFNLENBQUEsTUFBQUosQ0FBQSxJQUFBQSxDQUFBLEdBQUFpQixDQUFBLE1BQUFiLENBQUEsTUFBQU4sQ0FBQSxFQUFBTSxDQUFBLE1BQUFKLENBQUEsRUFBQWEsQ0FBQSxDQUFBYixDQUFBLEdBQUFpQixDQUFBLEVBQUFaLENBQUEsY0FBQUgsQ0FBQSxJQUFBSixDQUFBLGFBQUFpQixDQUFBLFFBQUFILENBQUEsT0FBQVosQ0FBQSxxQkFBQUUsQ0FBQSxFQUFBUyxDQUFBLEVBQUFNLENBQUEsUUFBQVAsQ0FBQSxZQUFBUSxTQUFBLHVDQUFBTixDQUFBLFVBQUFELENBQUEsSUFBQUssQ0FBQSxDQUFBTCxDQUFBLEVBQUFNLENBQUEsR0FBQVosQ0FBQSxHQUFBTSxDQUFBLEVBQUFKLENBQUEsR0FBQVUsQ0FBQSxHQUFBcEIsQ0FBQSxHQUFBUSxDQUFBLE9BQUF0USxDQUFBLEdBQUF3USxDQUFBLE1BQUFLLENBQUEsS0FBQVIsQ0FBQSxLQUFBQyxDQUFBLEdBQUFBLENBQUEsUUFBQUEsQ0FBQSxTQUFBUSxDQUFBLENBQUFiLENBQUEsUUFBQWdCLENBQUEsQ0FBQVgsQ0FBQSxFQUFBRSxDQUFBLEtBQUFNLENBQUEsQ0FBQWIsQ0FBQSxHQUFBTyxDQUFBLEdBQUFNLENBQUEsQ0FBQUMsQ0FBQSxHQUFBUCxDQUFBLGFBQUFHLENBQUEsTUFBQU4sQ0FBQSxRQUFBQyxDQUFBLEtBQUFILENBQUEsWUFBQUwsQ0FBQSxHQUFBTyxDQUFBLENBQUFGLENBQUEsV0FBQUwsQ0FBQSxHQUFBQSxDQUFBLENBQUFqSyxJQUFBLENBQUF3SyxDQUFBLEVBQUFHLENBQUEsVUFBQVcsU0FBQSwyQ0FBQXJCLENBQUEsQ0FBQXNCLElBQUEsU0FBQXRCLENBQUEsRUFBQVUsQ0FBQSxHQUFBVixDQUFBLENBQUF4YSxLQUFBLEVBQUFnYixDQUFBLFNBQUFBLENBQUEsb0JBQUFBLENBQUEsS0FBQVIsQ0FBQSxHQUFBTyxDQUFBLGVBQUFQLENBQUEsQ0FBQWpLLElBQUEsQ0FBQXdLLENBQUEsR0FBQUMsQ0FBQSxTQUFBRSxDQUFBLEdBQUFXLFNBQUEsdUNBQUFoQixDQUFBLGdCQUFBRyxDQUFBLE9BQUFELENBQUEsR0FBQXJRLENBQUEsY0FBQThQLENBQUEsSUFBQWUsQ0FBQSxHQUFBQyxDQUFBLENBQUFiLENBQUEsUUFBQU8sQ0FBQSxHQUFBVCxDQUFBLENBQUFsSyxJQUFBLENBQUFvSyxDQUFBLEVBQUFhLENBQUEsT0FBQUUsQ0FBQSxrQkFBQWxCLENBQUEsSUFBQU8sQ0FBQSxHQUFBclEsQ0FBQSxFQUFBc1EsQ0FBQSxNQUFBRSxDQUFBLEdBQUFWLENBQUEsY0FBQWEsQ0FBQSxtQkFBQXJiLEtBQUEsRUFBQXdhLENBQUEsRUFBQXNCLElBQUEsRUFBQVAsQ0FBQSxTQUFBZCxDQUFBLEVBQUFJLENBQUEsRUFBQUUsQ0FBQSxRQUFBRyxDQUFBLFFBQUFRLENBQUEsZ0JBQUFULFVBQUEsY0FBQWMsa0JBQUEsY0FBQUMsMkJBQUEsS0FBQXhCLENBQUEsR0FBQW5FLE1BQUEsQ0FBQTRGLGNBQUEsTUFBQWpCLENBQUEsTUFBQUwsQ0FBQSxJQUFBSCxDQUFBLENBQUFBLENBQUEsSUFBQUcsQ0FBQSxTQUFBUyxtQkFBQSxDQUFBWixDQUFBLE9BQUFHLENBQUEsaUNBQUFILENBQUEsR0FBQVUsQ0FBQSxHQUFBYywwQkFBQSxDQUFBbFAsU0FBQSxHQUFBbU8sU0FBQSxDQUFBbk8sU0FBQSxHQUFBdUosTUFBQSxDQUFBOEUsTUFBQSxDQUFBSCxDQUFBLFlBQUFLLEVBQUEzUSxDQUFBLFdBQUEyTCxNQUFBLENBQUE2RixjQUFBLEdBQUE3RixNQUFBLENBQUE2RixjQUFBLENBQUF4UixDQUFBLEVBQUFzUiwwQkFBQSxLQUFBdFIsQ0FBQSxDQUFBeVIsU0FBQSxHQUFBSCwwQkFBQSxFQUFBWixtQkFBQSxDQUFBMVEsQ0FBQSxFQUFBbVEsQ0FBQSx5QkFBQW5RLENBQUEsQ0FBQW9DLFNBQUEsR0FBQXVKLE1BQUEsQ0FBQThFLE1BQUEsQ0FBQUQsQ0FBQSxHQUFBeFEsQ0FBQSxXQUFBcVIsaUJBQUEsQ0FBQWpQLFNBQUEsR0FBQWtQLDBCQUFBLEVBQUFaLG1CQUFBLENBQUFGLENBQUEsaUJBQUFjLDBCQUFBLEdBQUFaLG1CQUFBLENBQUFZLDBCQUFBLGlCQUFBRCxpQkFBQSxHQUFBQSxpQkFBQSxDQUFBSyxXQUFBLHdCQUFBaEIsbUJBQUEsQ0FBQVksMEJBQUEsRUFBQW5CLENBQUEsd0JBQUFPLG1CQUFBLENBQUFGLENBQUEsR0FBQUUsbUJBQUEsQ0FBQUYsQ0FBQSxFQUFBTCxDQUFBLGdCQUFBTyxtQkFBQSxDQUFBRixDQUFBLEVBQUFQLENBQUEsaUNBQUFTLG1CQUFBLENBQUFGLENBQUEsOERBQUFtQixZQUFBLFlBQUFBLGFBQUEsYUFBQUMsQ0FBQSxFQUFBdkIsQ0FBQSxFQUFBd0IsQ0FBQSxFQUFBbEIsQ0FBQTtBQUFBLFNBQUFELG9CQUFBMVEsQ0FBQSxFQUFBK1AsQ0FBQSxFQUFBRSxDQUFBLEVBQUFILENBQUEsUUFBQU8sQ0FBQSxHQUFBMUUsTUFBQSxDQUFBbUcsY0FBQSxRQUFBekIsQ0FBQSx1QkFBQXJRLENBQUEsSUFBQXFRLENBQUEsUUFBQUssbUJBQUEsWUFBQXFCLG1CQUFBL1IsQ0FBQSxFQUFBK1AsQ0FBQSxFQUFBRSxDQUFBLEVBQUFILENBQUEsYUFBQUssRUFBQUosQ0FBQSxFQUFBRSxDQUFBLElBQUFTLG1CQUFBLENBQUExUSxDQUFBLEVBQUErUCxDQUFBLFlBQUEvUCxDQUFBLGdCQUFBZ1MsT0FBQSxDQUFBakMsQ0FBQSxFQUFBRSxDQUFBLEVBQUFqUSxDQUFBLFNBQUErUCxDQUFBLEdBQUFNLENBQUEsR0FBQUEsQ0FBQSxDQUFBclEsQ0FBQSxFQUFBK1AsQ0FBQSxJQUFBemEsS0FBQSxFQUFBMmEsQ0FBQSxFQUFBZ0MsVUFBQSxHQUFBbkMsQ0FBQSxFQUFBb0MsWUFBQSxHQUFBcEMsQ0FBQSxFQUFBcUMsUUFBQSxHQUFBckMsQ0FBQSxNQUFBOVAsQ0FBQSxDQUFBK1AsQ0FBQSxJQUFBRSxDQUFBLElBQUFFLENBQUEsYUFBQUEsQ0FBQSxjQUFBQSxDQUFBLG1CQUFBTyxtQkFBQSxDQUFBMVEsQ0FBQSxFQUFBK1AsQ0FBQSxFQUFBRSxDQUFBLEVBQUFILENBQUE7QUFEQTtBQUNBO0FBQ0E7O0FBRXFEO0FBQ2Y7QUFDUTtBQUVhO0FBRTNELElBQU13QyxnQkFBZ0IsR0FBRyxJQUFJO0FBQUMsSUFlVCs4QixnQkFBZ0I7RUFPbkMsU0FBQUEsaUJBQVl0ckIsc0JBQThDLEVBQUU7SUFBQSxJQUFBbHVCLEtBQUE7SUFBQWpCLGlGQUFBLE9BQUF5NkMsZ0JBQUE7SUFBQXg2QyxpRkFBQTtJQUFBQSxpRkFBQSxnQkFKM0IsRUFBRTtJQUFBQSxpRkFBQSxxQkFDTCxLQUFLO0lBQUFBLGlGQUFBLGtCQUNqQixFQUFFO0lBR2xCLElBQUksQ0FBQ3NYLHVCQUF1QixHQUFHNFgsc0JBQXNCO0lBQ3JELElBQUksQ0FBQ3JSLGtDQUFrQyxDQUFDLENBQUMsQ0FBQ0MsSUFBSSxDQUFDLFVBQUFDLGdCQUFnQixFQUFJO01BQ2pFL2MsS0FBSSxDQUFDZ2QsT0FBTyxHQUFHRCxnQkFBZ0I7SUFDakMsQ0FBQyxDQUFDO0VBQ0o7RUFBQyxPQUFBemQsOEVBQUEsQ0FBQWs2QyxnQkFBQTtJQUFBajZDLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQUFzSixJQUFJQSxDQUFDOEosUUFBc0IsRUFBRUMsT0FBZSxFQUFFQyxRQUFnQixFQUFFdUssU0FBZSxFQUFRO01BQ3JGLElBQU10VSxPQUFPLEdBQUcsQ0FBQ3NVLFNBQVMsQ0FBQ284QixPQUFPLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQ3BqQyx1QkFBdUIsQ0FBQ3ZPLFlBQVksSUFBSSxJQUFJO01BQ3hGLElBQU00eEMsU0FBUyxHQUFHO1FBQ2hCcjhCLFNBQVMsRUFBRUEsU0FBUyxDQUFDcEssV0FBVyxDQUFDLENBQUM7UUFDbEM0RixPQUFPLEVBQUUsSUFBSSxDQUFDeEMsdUJBQXVCLENBQUN3QyxPQUFPO1FBQzdDaEUsS0FBSyxFQUFFdEMsd0RBQVksQ0FBQ0ssUUFBUSxDQUFDO1FBQzdCRSxRQUFRLEVBQVJBLFFBQVE7UUFDUkQsT0FBTyxFQUFQQSxPQUFPO1FBQ1BrRyxTQUFTLEVBQUUsSUFBSSxDQUFDMUMsdUJBQXVCLENBQUMwQyxTQUFTO1FBQ2pEblcsT0FBTyxFQUFFMlosbUVBQWMsQ0FBQ2dCLFVBQVU7UUFDbEM1RSxXQUFXLEVBQUUsSUFBSSxDQUFDdEMsdUJBQXVCLENBQUNzQyxXQUFXO1FBQ3JEMkUsaUJBQWlCLEVBQUUsSUFBSSxDQUFDUCxPQUFPO1FBQy9CaFUsT0FBTyxFQUFQQTtNQUNGLENBQUM7TUFFRCxJQUFJNkosUUFBUSxHQUFHTCx3REFBWSxDQUFDbE8sS0FBSyxFQUFFO1FBQ2pDLElBQUksQ0FBQ3MxQyxLQUFLLENBQUM3d0MsSUFBSSxDQUFDNHdDLFNBQVMsQ0FBQztNQUM1QixDQUFDLE1BQU07UUFDTCxJQUFJLENBQUNDLEtBQUssQ0FBQ3hwQixPQUFPLENBQUN1cEIsU0FBUyxDQUFDO01BQy9CO01BRUEsSUFBTWw4QixPQUFPLEdBQUcsSUFBSSxDQUFDbzhCLGNBQWMsQ0FBQyxDQUFDO0lBQ3ZDO0VBQUM7SUFBQXQ2QyxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFRb2Qsa0NBQWtDQSxDQUFBLEVBQW9CO01BQzVELE9BQU8sSUFBSWMsT0FBTyxDQUFTLFVBQUFDLHVCQUF1QixFQUFJO1FBQ3BELElBQU1DLHVCQUF1QixHQUFHcmYsZ0VBQVcsQ0FBQ2lSLFNBQVMsQ0FBQyxVQUFBNUIsV0FBVyxFQUFJO1VBQ25FLElBQUksQ0FBQ0EsV0FBVyxFQUFFO1lBQ2hCO1VBQ0Y7VUFFQStQLHVCQUF1QixDQUFDL1AsV0FBVyxDQUFDa1AsZ0JBQWdCLENBQUM7VUFDckRsUCxXQUFXLENBQUM5SSxVQUFVLENBQUM7WUFBQSxPQUFNOFksdUJBQXVCLENBQUMvZCxPQUFPLENBQUMsQ0FBQztVQUFBLEdBQUUsQ0FBQyxDQUFDO1FBQ3BFLENBQUMsQ0FBQztNQUNKLENBQUMsQ0FBQztJQUNKO0VBQUM7SUFBQVAsR0FBQTtJQUFBRSxLQUFBO01BQUEsSUFBQXFMLFNBQUEsR0FBQWdULG1GQUFBLGNBQUFoQyxZQUFBLEdBQUFFLENBQUEsQ0FFRCxTQUFBK0IsUUFBdUIrN0IsV0FBNEI7UUFBQSxJQUFBNzdCLFFBQUE7UUFBQSxPQUFBbkMsWUFBQSxHQUFBQyxDQUFBLFdBQUFtQyxRQUFBO1VBQUEsa0JBQUFBLFFBQUEsQ0FBQTlELENBQUE7WUFBQTtjQUMzQzZELFFBQVEsR0FBRyxJQUFJemYsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ3dPLFFBQVEsQ0FBQyxDQUFDO2NBRWpEZ1EsUUFBUSxDQUFDRSxNQUFNLENBQUMsVUFBVSxFQUFFbFUsSUFBSSxDQUFDb0wsU0FBUyxDQUFDO2dCQUFDK0ksT0FBTyxFQUFFMDdCO2NBQVcsQ0FBQyxDQUFDLENBQUM7Y0FBQzU3QixRQUFBLENBQUE5RCxDQUFBO2NBQUEsT0FFdkQ1YixnRUFBVyxDQUFDaUIsS0FBSyxDQUFDc1AsS0FBSyxDQUFDLElBQUksQ0FBQ3VILHVCQUF1QixDQUFDa0MsR0FBRyxFQUFFO2dCQUNyRTZGLE1BQU0sRUFBRSxNQUFNO2dCQUNkQyxJQUFJLEVBQUVMO2NBQ1IsQ0FBQyxDQUFDO1lBQUE7Y0FBQSxPQUFBQyxRQUFBLENBQUEvQyxDQUFBLElBQUErQyxRQUFBLENBQUFoRCxDQUFBO1VBQUE7UUFBQSxHQUFBNkMsT0FBQTtNQUFBLENBQ0g7TUFBQSxTQVRhMVMsUUFBUUEsQ0FBQWtULEVBQUE7UUFBQSxPQUFBelQsU0FBQSxDQUFBMFQsS0FBQSxPQUFBN0ssU0FBQTtNQUFBO01BQUEsT0FBUnRJLFFBQVE7SUFBQTtFQUFBO0lBQUE5TCxHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBczZDLGVBQUEsR0FBQWo4QixtRkFBQSxjQUFBaEMsWUFBQSxHQUFBRSxDQUFBLENBV3RCLFNBQUEwQyxTQUFBO1FBQUEsSUFBQTFKLE1BQUE7UUFBQSxJQUFBZ2xDLGtCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLFdBQUEsRUFBQUMsVUFBQSxFQUFBTCxXQUFBO1FBQUEsT0FBQWgrQixZQUFBLEdBQUFDLENBQUEsV0FBQTRDLFNBQUE7VUFBQSxrQkFBQUEsU0FBQSxDQUFBdkUsQ0FBQTtZQUFBO2NBQUEsTUFDTSxJQUFJLENBQUN3L0IsS0FBSyxDQUFDN3ZDLE1BQU0sSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDNlUsVUFBVSxJQUFJLENBQUNwZ0IsZ0VBQVcsQ0FBQ2lCLEtBQUs7Z0JBQUFrZixTQUFBLENBQUF2RSxDQUFBO2dCQUFBO2NBQUE7Y0FBQSxPQUFBdUUsU0FBQSxDQUFBeEQsQ0FBQTtZQUFBO2NBSS9ENitCLGtCQUFrQixHQUFHLENBQUM7Y0FDdEJDLGdCQUFnQixHQUFHLENBQUM7Y0FFeEIsSUFBSSxDQUFDcjdCLFVBQVUsR0FBRyxJQUFJO2NBRWhCczdCLFdBQVcsR0FBRyxTQUFkQSxXQUFXQSxDQUFJM25DLElBQXFCO2dCQUFBLE9BQUssT0FBT0EsSUFBSSxLQUFLLFFBQVEsR0FBR2xDLHFEQUFPLENBQUNDLGlCQUFpQixDQUFDaUMsSUFBSSxDQUFDLEdBQUdBLElBQUksQ0FBQ3hJLE1BQU07Y0FBQTtjQUNqSG93QyxVQUFVLEdBQUcsU0FBYkEsVUFBVUEsQ0FBSXZuQyxHQUFhO2dCQUFBLE9BQWFrRCxNQUFNLENBQUNrRSxNQUFNLENBQUNwSCxHQUFHLENBQUMsQ0FDN0RmLE1BQU0sQ0FBQyxVQUFDdW9DLEdBQUcsRUFBRTduQyxJQUFJO2tCQUFBLE9BQUs2bkMsR0FBRyxJQUFJN25DLElBQUksR0FBRzJuQyxXQUFXLENBQUMzbkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUFBLEdBQUUsQ0FBQyxDQUFDO2NBQUE7Y0FFakUsT0FBTyxJQUFJLENBQUNxbkMsS0FBSyxDQUFDN3ZDLE1BQU0sR0FBR2l3QyxrQkFBa0IsSUFBSUcsVUFBVSxDQUFDLElBQUksQ0FBQ1AsS0FBSyxDQUFDSSxrQkFBa0IsQ0FBQyxDQUFDLEdBQUdDLGdCQUFnQixHQUFHeDlCLGdCQUFnQixFQUFFO2dCQUNqSXc5QixnQkFBZ0IsSUFBSUUsVUFBVSxDQUFDLElBQUksQ0FBQ1AsS0FBSyxDQUFDSSxrQkFBa0IsQ0FBQyxDQUFDO2dCQUM5REEsa0JBQWtCLEVBQUU7Y0FDdEI7Y0FFQSxJQUFJLENBQUNBLGtCQUFrQixFQUFFO2dCQUN2QixJQUFJLENBQUNKLEtBQUssQ0FBQ0ksa0JBQWtCLENBQUMsQ0FBQ2xuQyxPQUFPLEdBQUcsSUFBSSxDQUFDOG1DLEtBQUssQ0FBQ0ksa0JBQWtCLENBQUMsQ0FBQ2xuQyxPQUFPLENBQUNuUSxTQUFTLENBQUMsQ0FBQyxFQUN6RnczQyxVQUFVLENBQUMsSUFBSSxDQUFDUCxLQUFLLENBQUNJLGtCQUFrQixDQUFDLENBQUMsSUFBSXY5QixnQkFBZ0IsR0FBRzA5QixVQUFVLENBQUMsSUFBSSxDQUFDUCxLQUFLLENBQUNJLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMvR0Esa0JBQWtCLEdBQUcsQ0FBQztjQUN4QjtjQUVNRixXQUFXLEdBQUcsSUFBSSxDQUFDRixLQUFLLENBQUMvNkIsS0FBSyxDQUFDLENBQUMsRUFBRW03QixrQkFBa0IsQ0FBQztjQUUzRCxJQUFJLENBQUNKLEtBQUssR0FBRyxJQUFJLENBQUNBLEtBQUssQ0FBQy82QixLQUFLLENBQUNtN0Isa0JBQWtCLENBQUM7Y0FBQyxPQUFBcjdCLFNBQUEsQ0FBQXhELENBQUEsSUFFM0MsSUFBSSxDQUFDOVAsUUFBUSxDQUFDeXVDLFdBQVcsQ0FBQyxDQUFDaDlCLElBQUksQ0FBQyxVQUFBZ0MsUUFBUSxFQUFJO2dCQUNqRDlKLE1BQUksQ0FBQzRKLFVBQVUsR0FBRyxLQUFLO2dCQUV2QixJQUFNbkIsT0FBTyxHQUFHekksTUFBSSxDQUFDNmtDLGNBQWMsQ0FBQyxDQUFDO2dCQUVyQyxPQUFPLzZCLFFBQVE7Y0FDakIsQ0FBQyxDQUFDLFNBQU0sQ0FBQyxZQUFNO2dCQUNiOUosTUFBSSxDQUFDNEosVUFBVSxHQUFHLEtBQUs7Z0JBRXZCLElBQU1uQixPQUFPLEdBQUd6SSxNQUFJLENBQUM2a0MsY0FBYyxDQUFDLENBQUM7Y0FDdkMsQ0FBQyxDQUFDO1VBQUE7UUFBQSxHQUFBbjdCLFFBQUE7TUFBQSxDQUNIO01BQUEsU0F4Q2FtN0IsY0FBY0EsQ0FBQTtRQUFBLE9BQUFFLGVBQUEsQ0FBQXY3QixLQUFBLE9BQUE3SyxTQUFBO01BQUE7TUFBQSxPQUFka21DLGNBQWM7SUFBQTtFQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdkY5QjtBQUNBO0FBQ0E7QUFGQSxJQUlxQmp5QyxTQUFTO0VBRzVCLFNBQUFBLFVBQUEsRUFBMEI7SUFBQSxJQUFkeXlDLFFBQVEsR0FBQTFtQyxTQUFBLENBQUE1SixNQUFBLFFBQUE0SixTQUFBLFFBQUFoTyxTQUFBLEdBQUFnTyxTQUFBLE1BQUcsQ0FBQztJQUFBNVUsaUZBQUEsT0FBQTZJLFNBQUE7SUFBQTVJLGlGQUFBO0lBQ3RCLElBQUksQ0FBQ3M3QyxTQUFTLEdBQUdELFFBQVE7RUFDM0I7RUFBQyxPQUFBLzZDLDhFQUFBLENBQUFzSSxTQUFBO0lBQUFySSxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBMkosV0FBV0EsQ0FBQSxFQUFXO01BQ3BCLElBQUksSUFBSSxDQUFDa3hDLFNBQVMsS0FBSyxDQUFDLEVBQUU7UUFDeEIsT0FBTyxLQUFLO01BQ2Q7TUFFQSxJQUFNQyxVQUFVLEdBQUcsSUFBSSxDQUFDRCxTQUFTLEdBQUcsQ0FBQztNQUNyQyxJQUFNRCxRQUFRLEdBQUdFLFVBQVUsR0FBRzdwQyxJQUFJLENBQUM4cEMsR0FBRyxDQUFDLElBQUksQ0FBQ0YsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDQSxTQUFTO01BQ3ZFLElBQUlHLE1BQU0sR0FBRy9wQyxJQUFJLENBQUNDLEtBQUssQ0FBQzBwQyxRQUFRLENBQUM7TUFDakMsSUFBTUssWUFBWSxHQUFHRCxNQUFNLEdBQUcsSUFBSTtNQUVsQ0EsTUFBTSxHQUFHL3BDLElBQUksQ0FBQ0MsS0FBSyxDQUFDOHBDLE1BQU0sR0FBRyxJQUFJLENBQUM7TUFFbEMsSUFBTUUsT0FBTyxHQUFHRixNQUFNLEdBQUcsRUFBRTtNQUUzQkEsTUFBTSxHQUFHL3BDLElBQUksQ0FBQ0MsS0FBSyxDQUFDOHBDLE1BQU0sR0FBRyxFQUFFLENBQUM7TUFFaEMsSUFBTUcsT0FBTyxHQUFHSCxNQUFNLEdBQUcsRUFBRTtNQUUzQkEsTUFBTSxHQUFHL3BDLElBQUksQ0FBQ0MsS0FBSyxDQUFDOHBDLE1BQU0sR0FBRyxFQUFFLENBQUM7TUFFaEMsSUFBTUksS0FBSyxHQUFHSixNQUFNLEdBQUcsRUFBRTtNQUN6QixJQUFNSyxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUM7TUFFcEIsSUFBSVAsVUFBVSxFQUFFO1FBQ2RPLEtBQUssQ0FBQzFxQixPQUFPLENBQUMsR0FBRyxDQUFDO01BQ3BCO01BRUEsSUFBSXlxQixLQUFLLEVBQUU7UUFDVEMsS0FBSyxDQUFDL3hDLElBQUksQ0FBQzh4QyxLQUFLLEdBQUcsR0FBRyxDQUFDO01BQ3pCO01BRUEsSUFBSUQsT0FBTyxFQUFFO1FBQ1hFLEtBQUssQ0FBQy94QyxJQUFJLENBQUM2eEMsT0FBTyxHQUFHLEdBQUcsQ0FBQztNQUMzQjtNQUVBLElBQUlELE9BQU8sSUFBSUQsWUFBWSxFQUFFO1FBQzNCSSxLQUFLLENBQUMveEMsSUFBSSxDQUFDZ3lDLE1BQU0sQ0FBQ0osT0FBTyxDQUFDLENBQUM7UUFFM0IsSUFBSUQsWUFBWSxFQUFFO1VBQ2hCSSxLQUFLLENBQUMveEMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUNpeUMsUUFBUSxDQUFDTixZQUFZLENBQUN2cUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDbEU7UUFFQTJxQyxLQUFLLENBQUMveEMsSUFBSSxDQUFDLEdBQUcsQ0FBQztNQUNqQjtNQUVBLE9BQU8reEMsS0FBSyxDQUFDeHFCLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDdkI7RUFBQztJQUFBL3dCLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQUF1N0MsUUFBUUEsQ0FBQ3pvQyxJQUFZLEVBQUUwb0MsWUFBb0IsRUFBRUMsU0FBaUIsRUFBVTtNQUN0RUQsWUFBWSxHQUFHQSxZQUFZLElBQUksQ0FBQztNQUNoQ0MsU0FBUyxHQUFHSCxNQUFNLENBQUUsT0FBT0csU0FBUyxLQUFLLFdBQVcsR0FBR0EsU0FBUyxHQUFHLEdBQUksQ0FBQztNQUV4RSxJQUFJM29DLElBQUksQ0FBQ3hJLE1BQU0sR0FBR2t4QyxZQUFZLEVBQUU7UUFDOUIsT0FBTzFvQyxJQUFJO01BQ2I7TUFFQTBvQyxZQUFZLEdBQUdBLFlBQVksR0FBRzFvQyxJQUFJLENBQUN4SSxNQUFNO01BRXpDLElBQUlreEMsWUFBWSxHQUFHQyxTQUFTLENBQUNueEMsTUFBTSxFQUFFO1FBQ25DbXhDLFNBQVMsSUFBSUEsU0FBUyxDQUFDQyxNQUFNLENBQUNGLFlBQVksR0FBR0MsU0FBUyxDQUFDbnhDLE1BQU0sQ0FBQztNQUNoRTtNQUVBLE9BQU9teEMsU0FBUyxDQUFDcjhCLEtBQUssQ0FBQyxDQUFDLEVBQUVvOEIsWUFBWSxDQUFDLEdBQUcxb0MsSUFBSTtJQUNoRDtFQUFDO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDMUVIO0FBQ0E7QUFDQTs7QUFFQSxJQUFNNm9DLG1DQUFtQyxHQUFHLElBQUk7QUFDaEQsSUFBTUMsc0NBQXNDLEdBQUcsQ0FBQztBQUNoRCxJQUFNQyxzQ0FBc0MsR0FBRyxNQUFNO0FBQUMsSUFFakMvK0Isa0JBQWtCO0VBS3JDLFNBQUFBLG1CQUFBLEVBSUU7SUFBQSxJQUhBZy9CLDRCQUFvQyxHQUFBNW5DLFNBQUEsQ0FBQTVKLE1BQUEsUUFBQTRKLFNBQUEsUUFBQWhPLFNBQUEsR0FBQWdPLFNBQUEsTUFBR3luQyxtQ0FBbUM7SUFBQSxJQUMxRUksK0JBQXVDLEdBQUE3bkMsU0FBQSxDQUFBNUosTUFBQSxRQUFBNEosU0FBQSxRQUFBaE8sU0FBQSxHQUFBZ08sU0FBQSxNQUFHMG5DLHNDQUFzQztJQUFBLElBQ2hGSSwrQkFBdUMsR0FBQTluQyxTQUFBLENBQUE1SixNQUFBLFFBQUE0SixTQUFBLFFBQUFoTyxTQUFBLEdBQUFnTyxTQUFBLE1BQUcybkMsc0NBQXNDO0lBQUF2OEMsaUZBQUEsT0FBQXdkLGtCQUFBO0lBQUF2ZCxpRkFBQTtJQUFBQSxpRkFBQTtJQUFBQSxpRkFBQTtJQUVoRixJQUFJLENBQUMwOEMsNkJBQTZCLEdBQUdILDRCQUE0QjtJQUNqRSxJQUFJLENBQUNJLGdDQUFnQyxHQUFHSCwrQkFBK0I7SUFDdkUsSUFBSSxDQUFDSSxnQ0FBZ0MsR0FBR0gsK0JBQStCO0VBQ3pFO0VBQUMsT0FBQW44Qyw4RUFBQSxDQUFBaWQsa0JBQUE7SUFBQWhkLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQUF5ZiwyQ0FBMkNBLENBQUNpVyxZQUFvQixFQUFVO01BQ3hFLElBQU0wbUIsd0JBQXdCLEdBQUcsSUFBSSxDQUFDSCw2QkFBNkIsR0FBRyxJQUFJO01BQzFFLElBQU1JLGFBQWEsR0FBRyxHQUFHLEdBQUksR0FBRyxHQUFHcHJDLElBQUksQ0FBQ2EsTUFBTSxDQUFDLENBQUUsQ0FBQyxDQUFDO01BQ25ELElBQU13cUMsa0JBQWtCLEdBQUdyckMsSUFBSSxDQUFDTSxHQUFHLENBQUM2cUMsd0JBQXdCLEVBQUUxbUIsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7TUFDakYsSUFBTTZtQixtQ0FBbUMsR0FBR3RyQyxJQUFJLENBQUNDLEtBQUssQ0FBQ29yQyxrQkFBa0IsQ0FBQyxHQUFHRCxhQUFhO01BQzFGLElBQU1HLGdEQUFnRCxHQUFHdnJDLElBQUksQ0FBQ2dCLElBQUksQ0FBQ2hCLElBQUksQ0FBQ3dyQyxHQUFHLENBQUNGLG1DQUFtQyxHQUFHLElBQUksRUFBRSxJQUFJLENBQUNMLGdDQUFnQyxDQUFDLENBQUM7TUFFL0osT0FBT2pyQyxJQUFJLENBQUN5ckMsR0FBRyxDQUFDRixnREFBZ0QsRUFBRSxJQUFJLENBQUNMLGdDQUFnQyxDQUFDO0lBQzFHO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMvQkg7QUFDQTtBQUNBO0FBRkEsSUFNcUJuckIsU0FBUztFQVE1QixTQUFBQSxVQUFZaUksS0FBYSxFQUFFRSxNQUFjLEVBQUU7SUFBQTc1QixpRkFBQSxPQUFBMHhCLFNBQUE7SUFBQXp4QixpRkFBQTtJQUFBQSxpRkFBQTtJQUN6QyxJQUFJLENBQUMwNUIsS0FBSyxHQUFHQSxLQUFLO0lBQ2xCLElBQUksQ0FBQ0UsTUFBTSxHQUFHQSxNQUFNO0VBQ3RCO0VBQUMsT0FBQXQ1Qiw4RUFBQSxDQUFBbXhCLFNBQUE7SUFBQWx4QixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBNnNCLE1BQU1BLENBQUM4dkIsS0FBZ0IsRUFBVztNQUNoQyxPQUFPQSxLQUFLLElBQUksSUFBSSxDQUFDMWpCLEtBQUssS0FBSzBqQixLQUFLLENBQUMxakIsS0FBSyxJQUFJLElBQUksQ0FBQ0UsTUFBTSxLQUFLd2pCLEtBQUssQ0FBQ3hqQixNQUFNO0lBQzVFO0VBQUM7SUFBQXI1QixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBMFEsUUFBUUEsQ0FBQSxFQUFXO01BQ2pCLFVBQUExTixNQUFBLENBQVUsSUFBSSxDQUFDaTJCLEtBQUssT0FBQWoyQixNQUFBLENBQUksSUFBSSxDQUFDbTJCLE1BQU07SUFDckM7RUFBQztJQUFBcjVCLEdBQUE7SUFBQUMsR0FBQSxFQWZELFNBQUFBLElBQUEsRUFBOEI7TUFDNUIsT0FBTyxJQUFJaXhCLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzVCO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDWkg7QUFDQTtBQUNBOztBQUUrRDtBQUVYO0FBQ0Q7QUFDdEI7QUFDb0I7QUFDUjtBQUVXO0FBQUEsSUFTL0JHLGdCQUFnQjtFQVNuQyxTQUFBQSxpQkFBWTdvQixZQUFvQixFQUFFRSxjQUE4QixFQUFFO0lBQUEsSUFBQWpJLEtBQUE7SUFBQWpCLGlGQUFBLE9BQUE2eEIsZ0JBQUE7SUFBQTV4QixpRkFBQSxrQkFSOUI2SSw2REFBYSxDQUFDRyxTQUFTLENBQUMsa0JBQWtCLENBQUM7SUFBQWhKLGlGQUFBO0lBQUFBLGlGQUFBLHNDQUVoQ29GLGdEQUFHLENBQUMwekIsMEJBQTBCO0lBQUE5NEIsaUZBQUEsMEJBQzFCLElBQUl5RywyREFBYyxDQUFDLENBQUM7SUFBQXpHLGlGQUFBO0lBQUFBLGlGQUFBLHVCQUV2QixJQUFJTiw0REFBYyxDQUFDLENBQUM7SUFBQU0saUZBQUEsaUNBQ2YsQ0FBQyxDQUFDO0lBR3JELElBQUksQ0FBQ21KLGFBQWEsR0FBR0osWUFBWTtJQUNqQyxJQUFJLENBQUNoSSxZQUFZLENBQUNRLEdBQUcsQ0FBQyxJQUFJLENBQUM4N0MsZUFBZSxDQUFDO0lBQzNDLElBQUksQ0FBQzF1QixlQUFlLEdBQUcxbEIsY0FBYztJQUVyQyxJQUFJLENBQUMsSUFBSSxDQUFDMmxCLDJCQUEyQixFQUFFO01BQ3JDLE1BQU0sSUFBSXRwQixLQUFLLENBQUMsOERBQThELENBQUM7SUFDakY7SUFFQSxJQUFJLENBQUMsSUFBSSxDQUFDKzNDLGVBQWUsQ0FBQ3oyQyxXQUFXLEVBQUU7TUFDckM7SUFDRjtJQUVBLElBQUksQ0FBQzdGLFlBQVksQ0FBQ1EsR0FBRyxDQUFDLElBQUksQ0FBQ3F0QiwyQkFBMkIsQ0FBQzdLLFlBQVksQ0FBQ3RULFNBQVMsQ0FBQyxVQUFBc1QsWUFBWSxFQUFJO01BQzVGL2lCLEtBQUksQ0FBQ3M4QyxzQkFBc0IsQ0FBQ3Y1QixZQUFZLENBQUM7SUFDM0MsQ0FBQyxDQUFDLENBQUM7SUFDSCxJQUFJLENBQUNoakIsWUFBWSxDQUFDUSxHQUFHLENBQUMsSUFBSSxDQUFDODdDLGVBQWUsQ0FBQ2oxQyxHQUFHLENBQUNxSSxTQUFTLENBQUMsVUFBQWhRLEtBQUssRUFBSTtNQUNoRSxJQUFJLENBQUNBLEtBQUssRUFBRTtRQUNWO01BQ0Y7TUFFQU8sS0FBSSxDQUFDdThDLHNCQUFzQixDQUFDOThDLEtBQUssQ0FBQztJQUNwQyxDQUFDLENBQUMsQ0FBQztJQUNILElBQUksQ0FBQ00sWUFBWSxDQUFDUSxHQUFHLENBQUMsSUFBSSxDQUFDODdDLGVBQWUsQ0FBQ3QxQyxhQUFhLENBQUMwSSxTQUFTLENBQUMsVUFBQWhRLEtBQUssRUFBSTtNQUMxRSxJQUFJLENBQUNBLEtBQUssRUFBRTtRQUNWO01BQ0Y7TUFFQU8sS0FBSSxDQUFDdzhDLDZCQUE2QixDQUFDLzhDLEtBQUssQ0FBQztJQUMzQyxDQUFDLENBQUMsQ0FBQztJQUNILElBQUksQ0FBQ00sWUFBWSxDQUFDUSxHQUFHLENBQUMsSUFBSSxDQUFDODdDLGVBQWUsQ0FBQ0ksMEJBQTBCLENBQUNodEMsU0FBUyxDQUFDLFVBQUFoUSxLQUFLLEVBQUk7TUFDdkYsSUFBSSxDQUFDQSxLQUFLLEVBQUU7UUFDVjtNQUNGO01BRUFPLEtBQUksQ0FBQzA4Qyw2Q0FBNkMsQ0FBQ2o5QyxLQUFLLENBQUM7SUFDM0QsQ0FBQyxDQUFDLENBQUM7RUFDTDtFQUFDLE9BQUFILDhFQUFBLENBQUFzeEIsZ0JBQUE7SUFBQXJ4QixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBNjdCLG1CQUFtQkEsQ0FBQSxFQUF3QjtNQUN6QyxPQUFPLElBQUl4ekIseUVBQW1CLENBQUMsSUFBSSxDQUFDSyxhQUFhLENBQUM7SUFDcEQ7RUFBQztJQUFBNUksR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQUssT0FBT0EsQ0FBQSxFQUFTO01BQ2QsSUFBSSxDQUFDQyxZQUFZLENBQUNELE9BQU8sQ0FBQyxDQUFDO0lBQzdCO0VBQUM7SUFBQVAsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBUTY4QyxzQkFBc0JBLENBQUN2NUIsWUFBcUIsRUFBUTtNQUFBLElBQUFpTixxQkFBQTtNQUMxRCxJQUFNOXdCLEdBQUcsR0FBR0QsSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQztNQUN0QixJQUFNeTlDLG1CQUFtQixJQUFBM3NCLHFCQUFBLEdBQUcsSUFBSSxDQUFDcEMsMkJBQTJCLGNBQUFvQyxxQkFBQSx1QkFBaENBLHFCQUFBLENBQWtDdHdCLHNCQUFzQixDQUFDLENBQUM7TUFFdEYsSUFBSSxDQUFDaTlDLG1CQUFtQixFQUFFO1FBQ3hCO01BQ0Y7TUFFQSxJQUFJLENBQUNodkIsZUFBZSxDQUFDNWtCLElBQUksQ0FBQztRQUN4QkwsVUFBVSxFQUFFcWEsWUFBWSxHQUFHcmIsNERBQVcsQ0FBQ3lRLHFCQUFxQixHQUFHelEsNERBQVcsQ0FBQzBRLHFCQUFxQjtRQUNoR3BQLE9BQU8sRUFBRSxDQUFDOUosR0FBRyxHQUFHLElBQUksQ0FBQ2lKLGFBQWEsSUFBSSxJQUFJO1FBQzFDMUksS0FBSyxFQUFFO1VBQUN3SixNQUFNLEVBQUUwekM7UUFBbUI7TUFDckMsQ0FBQyxDQUFDO01BRUYsSUFBSSxDQUFDenpDLE9BQU8sQ0FBQ0MsSUFBSSxDQUNmLGtEQUFrRCxFQUNsRDRaLFlBQVksR0FBRyxZQUFZLEdBQUcsWUFBWSxFQUMxQyxJQUFJbmIsc0RBQVMsQ0FBQyswQyxtQkFBbUIsQ0FBQyxDQUFDdnpDLFdBQVcsQ0FBQyxDQUNqRCxDQUFDO0lBQ0g7RUFBQztJQUFBN0osR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBUTg4QyxzQkFBc0JBLENBQUNLLE1BQWMsRUFBUTtNQUNuRCxJQUFNMTlDLEdBQUcsR0FBR0QsSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQztNQUN0QixJQUFNMjlDLE1BQU0sR0FBRyxJQUFJLENBQUNDLHNCQUFzQixDQUFDMTFDLEdBQUc7TUFFOUMsSUFBSSxDQUFDMDFDLHNCQUFzQixDQUFDMTFDLEdBQUcsR0FBR3cxQyxNQUFNO01BRXhDLElBQUksQ0FBQ2p2QixlQUFlLENBQUM1a0IsSUFBSSxDQUFDO1FBQ3hCTCxVQUFVLEVBQUVoQiw0REFBVyxDQUFDcVEsYUFBYTtRQUNyQy9PLE9BQU8sRUFBRSxDQUFDOUosR0FBRyxHQUFHLElBQUksQ0FBQ2lKLGFBQWEsSUFBSSxJQUFJO1FBQzFDMUksS0FBSyxFQUFFO1VBQUN3SixNQUFNLEVBQUUyekM7UUFBTSxDQUFDO1FBQ3ZCMS9CLGFBQWEsRUFBRTIvQixNQUFNLEdBQUc7VUFBQzV6QyxNQUFNLEVBQUU0ekM7UUFBTSxDQUFDLEdBQUdsM0MsU0FBUztRQUNwRHdYLFFBQVEsRUFBRTtNQUNaLENBQUMsQ0FBQztNQUVGLElBQUksQ0FBQ2pVLE9BQU8sQ0FBQ0MsSUFBSSxDQUNmLDRDQUE0QyxFQUM1QyxJQUFJdkIsc0RBQVMsQ0FBQzFJLEdBQUcsR0FBRyxJQUFJLENBQUNpSixhQUFhLENBQUMsQ0FBQ2lCLFdBQVcsQ0FBQyxDQUFDLEVBQ3JEd3pDLE1BQU0sRUFDTkMsTUFDRixDQUFDO0lBQ0g7RUFBQztJQUFBdDlDLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQVErOEMsNkJBQTZCQSxDQUFDTyxjQUFzQixFQUFRO01BQ2xFLElBQU03OUMsR0FBRyxHQUFHRCxJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDO01BQ3RCLElBQU04OUMsY0FBYyxHQUFHLElBQUksQ0FBQ0Ysc0JBQXNCLENBQUMvMUMsYUFBYTtNQUVoRSxJQUFJLENBQUMrMUMsc0JBQXNCLENBQUMvMUMsYUFBYSxHQUFHZzJDLGNBQWM7TUFFMUQsSUFBSSxDQUFDcHZCLGVBQWUsQ0FBQzVrQixJQUFJLENBQUM7UUFDeEJMLFVBQVUsRUFBRWhCLDREQUFXLENBQUN1USxXQUFXO1FBQ25DalAsT0FBTyxFQUFFLENBQUM5SixHQUFHLEdBQUcsSUFBSSxDQUFDaUosYUFBYSxJQUFJLElBQUk7UUFDMUMxSSxLQUFLLEVBQUU7VUFBQ3FTLE1BQU0sRUFBRWlyQztRQUFjLENBQUM7UUFDL0I3L0IsYUFBYSxFQUFFOC9CLGNBQWMsR0FBRztVQUFDbHJDLE1BQU0sRUFBRWtyQztRQUFjLENBQUMsR0FBR3IzQztNQUM3RCxDQUFDLENBQUM7TUFFRixJQUFJLENBQUN1RCxPQUFPLENBQUNDLElBQUksQ0FDZiwyREFBMkQsRUFDM0QsSUFBSXZCLHNEQUFTLENBQUMxSSxHQUFHLEdBQUcsSUFBSSxDQUFDaUosYUFBYSxDQUFDLENBQUNpQixXQUFXLENBQUMsQ0FBQyxFQUNyRDJ6QyxjQUFjLEVBQ2RDLGNBQ0YsQ0FBQztJQUNIO0VBQUM7SUFBQXo5QyxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFRaTlDLDZDQUE2Q0EsQ0FBQ08sV0FBbUIsRUFBUTtNQUMvRSxJQUFNLzlDLEdBQUcsR0FBR0QsSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQztNQUN0QixJQUFNZytDLFdBQVcsR0FBRyxJQUFJLENBQUNKLHNCQUFzQixDQUFDTCwwQkFBMEI7TUFFMUUsSUFBSSxDQUFDSyxzQkFBc0IsQ0FBQ0wsMEJBQTBCLEdBQUdRLFdBQVc7TUFFcEUsSUFBSSxDQUFDdHZCLGVBQWUsQ0FBQzVrQixJQUFJLENBQUM7UUFDeEJMLFVBQVUsRUFBRWhCLDREQUFXLENBQUNzUSwwQkFBMEI7UUFDbERoUCxPQUFPLEVBQUUsQ0FBQzlKLEdBQUcsR0FBRyxJQUFJLENBQUNpSixhQUFhLElBQUksSUFBSTtRQUMxQzFJLEtBQUssRUFBRTtVQUFDLFNBQU93OUM7UUFBVyxDQUFDO1FBQzNCLy9CLGFBQWEsRUFBRWdnQyxXQUFXLEdBQUc7VUFBQyxTQUFPQTtRQUFXLENBQUMsR0FBR3YzQztNQUN0RCxDQUFDLENBQUM7TUFFRixJQUFJLENBQUN1RCxPQUFPLENBQUNDLElBQUksQ0FDZixxRUFBcUUsRUFDckUsSUFBSXZCLHNEQUFTLENBQUMxSSxHQUFHLEdBQUcsSUFBSSxDQUFDaUosYUFBYSxDQUFDLENBQUNpQixXQUFXLENBQUMsQ0FBQyxFQUNyRDZ6QyxXQUFXLEVBQ1hDLFdBQ0YsQ0FBQztJQUNIO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2hLSDtBQUNBO0FBQ0E7O0FBRW9EO0FBRVg7QUFDRztBQUVLO0FBQ0c7QUFJcEQsSUFBTUMsSUFBSSxHQUFHLFNBQVBBLElBQUlBLENBQUE7RUFBQSxPQUFleDNDLFNBQVM7QUFBQTtBQUFDLElBRWRnckIsY0FBYztFQW1CakMsU0FBQUEsZUFBWXRvQixRQUFnQixFQUFFTixZQUFvQixFQUFFcTFDLGdCQUF3QixFQUFFbjFDLGNBQThCLEVBQUU7SUFBQWxKLGlGQUFBLE9BQUE0eEIsY0FBQTtJQUFBM3hCLGlGQUFBO0lBQUFBLGlGQUFBO0lBQUFBLGlGQUFBLGtCQWhCMUU2SSw2REFBYSxDQUFDRyxTQUFTLENBQUMsaUJBQWlCLENBQUM7SUFBQWhKLGlGQUFBLHVCQUM5QixJQUFJTiw0REFBYyxDQUFDLENBQUM7SUFBQU0saUZBQUE7SUFBQUEsaUZBQUE7SUFBQUEsaUZBQUEsNkJBRzNCbStDLElBQUk7SUFBQW4rQyxpRkFBQSwwQkFDUG0rQyxJQUFJO0lBQUFuK0MsaUZBQUEsaUNBQzJCbStDLElBQUk7SUFBQW4rQyxpRkFBQSw0QkFDckMsQ0FBQztJQUFBQSxpRkFBQSwyQ0FDYyxDQUFDO0lBQUFBLGlGQUFBLG9DQUNSLENBQUM7SUFBQUEsaUZBQUEsd0JBQ04sSUFBSTtJQUFBQSxpRkFBQSx3QkFDWCxDQUFDO0lBQUFBLGlGQUFBLDJCQUNFLEVBQUU7SUFBQUEsaUZBQUEseUNBQ2dCLElBQUlQLHdEQUFVLENBQUM7TUFBQSxPQUFNLElBQUk7SUFBQSxFQUFDO0lBQUFPLGlGQUFBLG9DQUMvQixJQUFJUCx3REFBVSxDQUFDO01BQUEsT0FBTSxJQUFJO0lBQUEsRUFBQztJQUd4RSxJQUFJLENBQUM0K0MsU0FBUyxHQUFHaDFDLFFBQVE7SUFDekIsSUFBSSxDQUFDRixhQUFhLEdBQUdKLFlBQVk7SUFDakMsSUFBSSxDQUFDb3JCLGlCQUFpQixHQUFHaXFCLGdCQUFnQjtJQUV6QyxJQUFJLENBQUN6dkIsZUFBZSxHQUFHMWxCLGNBQWM7RUFDdkM7RUFBQyxPQUFBM0ksOEVBQUEsQ0FBQXF4QixjQUFBO0lBQUFweEIsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQWczQiwrQkFBK0JBLENBQUN6VSxLQUF1QixFQUFRO01BQUEsSUFBQWhpQixLQUFBO01BQzdELElBQUksQ0FBQ3M5Qyx5QkFBeUIsR0FBR3IrQyxJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDO01BRTNDLElBQUksQ0FBQ3ErQyxrQkFBa0IsR0FBRztRQUFBLE9BQVl2OUMsS0FBSSxDQUFDdzlDLG9CQUFvQixDQUFDLENBQUM7TUFBQTtNQUVqRXg3QixLQUFLLENBQUN6YSxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDZzJDLGtCQUFrQixDQUFDO01BQzdEdjdCLEtBQUssQ0FBQ3phLGdCQUFnQixDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQ2cyQyxrQkFBa0IsQ0FBQztNQUVqRSxJQUFJLENBQUNFLDhCQUE4QixHQUFHLElBQUloL0Msd0RBQVUsQ0FBQyxZQUFNO1FBQ3pEdWpCLEtBQUssQ0FBQ3ZhLG1CQUFtQixDQUFDLFlBQVksRUFBRXpILEtBQUksQ0FBQ3U5QyxrQkFBa0IsQ0FBQztRQUNoRXY3QixLQUFLLENBQUN2YSxtQkFBbUIsQ0FBQyxnQkFBZ0IsRUFBRXpILEtBQUksQ0FBQ3U5QyxrQkFBa0IsQ0FBQztNQUN0RSxDQUFDLENBQUM7TUFDRixJQUFJLENBQUN4OUMsWUFBWSxDQUFDUSxHQUFHLENBQUMsSUFBSSxDQUFDazlDLDhCQUE4QixDQUFDO0lBQzVEO0VBQUM7SUFBQWwrQyxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBaTNCLDJCQUEyQkEsQ0FBQzFVLEtBQXVCLEVBQVE7TUFBQSxJQUFBaE4sTUFBQTtNQUN6RCxJQUFJLENBQUMwb0MsZUFBZSxHQUFHO1FBQUEsT0FBWTFvQyxNQUFJLENBQUMyb0MsT0FBTyxDQUFDLENBQUM7TUFBQTtNQUVqRCxJQUFJLENBQUNDLHNCQUFzQixHQUFHLFVBQUNDLEtBQXdCO1FBQUEsT0FBVzdvQyxNQUFJLENBQUM4b0MsY0FBYyxDQUFDRCxLQUFLLEVBQUU3N0IsS0FBSyxDQUFDO01BQUE7TUFFbkdBLEtBQUssQ0FBQ3phLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUNtMkMsZUFBZSxDQUFDO01BQ3ZEMTdCLEtBQUssQ0FBQ3phLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUNtMkMsZUFBZSxDQUFDO01BQ3JEMTdCLEtBQUssQ0FBQ3phLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUNtMkMsZUFBZSxDQUFDO01BQ3ZEMTdCLEtBQUssQ0FBQ3phLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUNxMkMsc0JBQXNCLENBQUM7TUFDM0Q1N0IsS0FBSyxDQUFDemEsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQ3EyQyxzQkFBc0IsQ0FBQztNQUM5RDU3QixLQUFLLENBQUN6YSxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDcTJDLHNCQUFzQixDQUFDO01BQy9ENTdCLEtBQUssQ0FBQ3phLGdCQUFnQixDQUFDLFlBQVksRUFBRSxJQUFJLENBQUNxMkMsc0JBQXNCLENBQUM7TUFFakUsSUFBSSxDQUFDRyx5QkFBeUIsR0FBRyxJQUFJdC9DLHdEQUFVLENBQUMsWUFBTTtRQUNwRHVqQixLQUFLLENBQUN2YSxtQkFBbUIsQ0FBQyxTQUFTLEVBQUV1TixNQUFJLENBQUMwb0MsZUFBZSxDQUFDO1FBQzFEMTdCLEtBQUssQ0FBQ3ZhLG1CQUFtQixDQUFDLE9BQU8sRUFBRXVOLE1BQUksQ0FBQzBvQyxlQUFlLENBQUM7UUFDeEQxN0IsS0FBSyxDQUFDdmEsbUJBQW1CLENBQUMsU0FBUyxFQUFFdU4sTUFBSSxDQUFDMG9DLGVBQWUsQ0FBQztRQUMxRDE3QixLQUFLLENBQUN2YSxtQkFBbUIsQ0FBQyxNQUFNLEVBQUV1TixNQUFJLENBQUM0b0Msc0JBQXNCLENBQUM7UUFDOUQ1N0IsS0FBSyxDQUFDdmEsbUJBQW1CLENBQUMsU0FBUyxFQUFFdU4sTUFBSSxDQUFDNG9DLHNCQUFzQixDQUFDO1FBQ2pFNTdCLEtBQUssQ0FBQ3ZhLG1CQUFtQixDQUFDLFVBQVUsRUFBRXVOLE1BQUksQ0FBQzRvQyxzQkFBc0IsQ0FBQztRQUNsRTU3QixLQUFLLENBQUN2YSxtQkFBbUIsQ0FBQyxZQUFZLEVBQUV1TixNQUFJLENBQUM0b0Msc0JBQXNCLENBQUM7TUFDdEUsQ0FBQyxDQUFDO01BRUYsSUFBSSxDQUFDNzlDLFlBQVksQ0FBQ1EsR0FBRyxDQUFDLElBQUksQ0FBQ3c5Qyx5QkFBeUIsQ0FBQztJQUN2RDtFQUFDO0lBQUF4K0MsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQUssT0FBT0EsQ0FBQSxFQUFTO01BQ2QsSUFBSSxDQUFDQyxZQUFZLENBQUNELE9BQU8sQ0FBQyxDQUFDO0lBQzdCO0VBQUM7SUFBQVAsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUE0QztNQUMxQyxJQUFNTixHQUFHLEdBQUdELElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUM7TUFFdEIsT0FBTyxJQUFJMEksc0RBQVMsQ0FBQzFJLEdBQUcsR0FBRyxJQUFJLENBQUNpSixhQUFhLENBQUMsQ0FBQ2lCLFdBQVcsQ0FBQyxDQUFDO0lBQzlEO0VBQUM7SUFBQTdKLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQVErOUMsb0JBQW9CQSxDQUFBLEVBQVM7TUFDbkMsSUFBTXQrQyxHQUFHLEdBQUdELElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUM7TUFFdEIsSUFBSSxDQUFDOCtDLG9CQUFvQixDQUFDOStDLEdBQUcsQ0FBQztNQUM5QixJQUFJLENBQUMrK0MsbUNBQW1DLENBQUMvK0MsR0FBRyxDQUFDO01BRTdDLElBQUksQ0FBQ3UrQyw4QkFBOEIsQ0FBQzM5QyxPQUFPLENBQUMsQ0FBQztJQUMvQztFQUFDO0lBQUFQLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQVF1K0Msb0JBQW9CQSxDQUFDOStDLEdBQVcsRUFBUTtNQUM5QyxJQUFJLENBQUNnL0MsaUJBQWlCLEdBQUdoL0MsR0FBRyxHQUFHLElBQUksQ0FBQ28rQyx5QkFBeUI7TUFFN0QsSUFBSSxDQUFDM3ZCLGVBQWUsQ0FBQzVrQixJQUFJLENBQUM7UUFDeEJMLFVBQVUsRUFBRWhCLDREQUFXLENBQUNnUSxnQkFBZ0I7UUFDeEMxTyxPQUFPLEVBQUUsQ0FBQzlKLEdBQUcsR0FBRyxJQUFJLENBQUNpSixhQUFhLElBQUksSUFBSTtRQUMxQzFJLEtBQUssRUFBRTtVQUFDd0osTUFBTSxFQUFFLElBQUksQ0FBQ2kxQztRQUFpQixDQUFDO1FBQ3ZDNzFDLFFBQVEsRUFBRSxJQUFJLENBQUNnMUM7TUFDakIsQ0FBQyxDQUFDO01BRUYsSUFBSSxDQUFDbjBDLE9BQU8sQ0FBQ0MsSUFBSSxDQUNmLDRCQUE0QixFQUM1QixJQUFJLENBQUNnMUMscUJBQXFCLEVBQzFCLElBQUksQ0FBQ2QsU0FBUyxFQUNkLElBQUl6MUMsc0RBQVMsQ0FBQyxJQUFJLENBQUNzMkMsaUJBQWlCLENBQUMsQ0FBQzkwQyxXQUFXLENBQUMsQ0FDcEQsQ0FBQztJQUNIO0VBQUM7SUFBQTdKLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQVF3K0MsbUNBQW1DQSxDQUFDLytDLEdBQVcsRUFBUTtNQUM3RCxJQUFJLENBQUNrL0MsZ0NBQWdDLEdBQUdsL0MsR0FBRyxHQUFHLElBQUksQ0FBQ2kwQixpQkFBaUI7TUFFcEUsSUFBSSxDQUFDeEYsZUFBZSxDQUFDNWtCLElBQUksQ0FBQztRQUN4QkwsVUFBVSxFQUFFaEIsNERBQVcsQ0FBQ2tRLCtCQUErQjtRQUN2RDVPLE9BQU8sRUFBRSxDQUFDOUosR0FBRyxHQUFHLElBQUksQ0FBQ2lKLGFBQWEsSUFBSSxJQUFJO1FBQzFDMUksS0FBSyxFQUFFO1VBQUN3SixNQUFNLEVBQUUsSUFBSSxDQUFDbTFDO1FBQWdDLENBQUM7UUFDdEQvMUMsUUFBUSxFQUFFLElBQUksQ0FBQ2cxQztNQUNqQixDQUFDLENBQUM7TUFFRixJQUFJLENBQUNuMEMsT0FBTyxDQUFDQyxJQUFJLENBQ2YsZ0RBQWdELEVBQ2hELElBQUksQ0FBQ2cxQyxxQkFBcUIsRUFDMUIsSUFBSSxDQUFDZCxTQUFTLEVBQ2QsSUFBSXoxQyxzREFBUyxDQUFDLElBQUksQ0FBQ3cyQyxnQ0FBZ0MsQ0FBQyxDQUFDaDFDLFdBQVcsQ0FBQyxDQUNuRSxDQUFDO0lBQ0g7RUFBQztJQUFBN0osR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBUWsrQyxPQUFPQSxDQUFBLEVBQVM7TUFDdEIsSUFBSSxJQUFJLENBQUNVLGFBQWEsRUFBRTtRQUN0QjtNQUNGO01BRUEsSUFBSSxDQUFDMXdCLGVBQWUsQ0FBQzVrQixJQUFJLENBQUM7UUFDeEJMLFVBQVUsRUFBRWhCLDREQUFXLENBQUNtUSxPQUFPO1FBQy9CN08sT0FBTyxFQUFFLENBQUMvSixJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDaUosYUFBYSxJQUFJLElBQUk7UUFDakRFLFFBQVEsRUFBRSxJQUFJLENBQUNnMUM7TUFDakIsQ0FBQyxDQUFDO01BRUYsSUFBSSxDQUFDZ0IsYUFBYSxHQUFHcC9DLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUM7TUFFL0IsSUFBSSxDQUFDZ0ssT0FBTyxDQUFDQyxJQUFJLENBQ2YsMENBQTBDLEVBQzFDLElBQUksQ0FBQ2cxQyxxQkFBcUIsRUFDMUIsSUFBSSxDQUFDZCxTQUNQLENBQUM7SUFDSDtFQUFDO0lBQUE5OUMsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBUXErQyxjQUFjQSxDQUFDRCxLQUF3QixFQUFFNzdCLEtBQXVCLEVBQVE7TUFDOUUsSUFBSSxDQUFDQSxLQUFLLENBQUNzOEIsUUFBUSxFQUFFO1FBQ25CO01BQ0Y7TUFFQSxJQUFNQyxZQUFZLEdBQUd2OEIsS0FBSyxDQUFDczhCLFFBQVEsQ0FBQ3YwQyxNQUFNO01BQzFDLElBQU15MEMsc0NBQXNDLEdBQUdYLEtBQUssQ0FBQzcyQyxJQUFJLEtBQUssU0FBUyxJQUNwRXUzQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLENBQUNWLEtBQUssQ0FBQzcyQyxJQUFJLEtBQUssVUFBVSxJQUMzQzYyQyxLQUFLLENBQUM3MkMsSUFBSSxLQUFLLFlBQVksS0FDM0JnYixLQUFLLENBQUNzOEIsUUFBUSxDQUFDRyxHQUFHLENBQUNGLFlBQVksR0FBRyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUNHLGFBQWEsR0FBRyxJQUFJO01BRXZFLElBQUksQ0FBQyxJQUFJLENBQUNMLGFBQWEsSUFBSUcsc0NBQXNDLEVBQUU7UUFDakU7TUFDRjtNQUVBLElBQUlYLEtBQUssQ0FBQzcyQyxJQUFJLEtBQUssVUFBVSxFQUFFO1FBQzdCLElBQUksQ0FBQzAzQyxhQUFhLEdBQUcxOEIsS0FBSyxDQUFDczhCLFFBQVEsQ0FBQ0csR0FBRyxDQUFDRixZQUFZLEdBQUcsQ0FBQyxDQUFDO01BQzNEO01BRUEsSUFBTUksYUFBYSxHQUFHMS9DLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUNtL0MsYUFBYTtNQUVyRCxJQUFJLENBQUMxd0IsZUFBZSxDQUFDNWtCLElBQUksQ0FBQztRQUN4QkwsVUFBVSxFQUFFaEIsNERBQVcsQ0FBQ29RLFNBQVM7UUFDakM5TyxPQUFPLEVBQUUsQ0FBQy9KLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUNpSixhQUFhLElBQUksSUFBSTtRQUNqRDFJLEtBQUssRUFBRTtVQUFDd0osTUFBTSxFQUFFMDFDO1FBQWEsQ0FBQztRQUM5QnQyQyxRQUFRLEVBQUUsSUFBSSxDQUFDZzFDO01BQ2pCLENBQUMsQ0FBQztNQUVGLElBQUksQ0FBQ24wQyxPQUFPLENBQUNDLElBQUksQ0FDZixrRUFBa0UsRUFDbEUsSUFBSSxDQUFDZzFDLHFCQUFxQixFQUMxQixJQUFJLENBQUNkLFNBQVMsRUFDZCxJQUFJejFDLHNEQUFTLENBQUMrMkMsYUFBYSxDQUFDLENBQUN2MUMsV0FBVyxDQUFDLENBQzNDLENBQUM7TUFDRCxJQUFJLENBQUNpMUMsYUFBYSxHQUFHLElBQUk7SUFDM0I7RUFBQztJQUFBOStDLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQUFzM0Isd0JBQXdCQSxDQUFDNm5CLGFBQXFCLEVBQVE7TUFDcEQsSUFBSSxDQUFDanhCLGVBQWUsQ0FBQzVrQixJQUFJLENBQUM7UUFDeEJMLFVBQVUsRUFBRWhCLDREQUFXLENBQUN3USxpQkFBaUI7UUFDekNsUCxPQUFPLEVBQUUsQ0FBQy9KLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUNpSixhQUFhLElBQUksSUFBSTtRQUNqRDFJLEtBQUssRUFBRTtVQUFDcVMsTUFBTSxFQUFFOHNDO1FBQWEsQ0FBQztRQUM5QjFoQyxhQUFhLEVBQUUsSUFBSSxDQUFDMmhDLGdCQUFnQixHQUFHO1VBQUMvc0MsTUFBTSxFQUFFLElBQUksQ0FBQytzQztRQUFnQixDQUFDLEdBQUdsNUMsU0FBUztRQUNsRjBDLFFBQVEsRUFBRSxJQUFJLENBQUNnMUM7TUFDakIsQ0FBQyxDQUFDO01BRUYsSUFBSSxDQUFDd0IsZ0JBQWdCLEdBQUdELGFBQWE7SUFDdkM7RUFBQztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztBQzdNa0Y7O0FBRXRFO0FBQ2YsU0FBUyx5RkFBTSx5QkFBeUIsK0NBQStDLHlDQUF5QywrUUFBK1Esc01BQXNNLDJGQUEyRixHQUFHLHNGQUFzRixXQUFXLGliQUFpYixxRUFBcUUsZ0VBQWdFLGdEQUFnRCw2REFBNkQsNENBQTRDLHdCQUF3QixFQUFFLCtMQUErTCwyRUFBMkUsd0ZBQXdGLGtHQUFrRyxnRkFBZ0YsMEVBQTBFLG9HQUFvRyxnQ0FBZ0MsR0FBRyxHQUFHLEVBQUUsbUZBQW1GLG9IQUFvSCwwR0FBMEcsMEdBQTBHLDhHQUE4Ryw4R0FBOEcsb0NBQW9DLEdBQUcsR0FBRyxFQUFFLFdBQVcsNllBQTZZLHFFQUFxRSxtREFBbUQsd0NBQXdDLHdCQUF3QixFQUFFLGtPQUFrTyx5TkFBeU4sZ1BBQWdQLGdOQUFnTiwrS0FBK0ssaUNBQWlDLGtIQUFrSCxLQUFLLHNIQUFzSCxvSEFBb0gsb0NBQW9DLDREQUE0RCx5RkFBeUYsc0NBQXNDLFdBQVcsU0FBUyxFQUFFLE9BQU8sS0FBSyxHQUFHLGtIQUFrSCwyREFBMkQsd0lBQXdJLGtDQUFrQyx3UUFBd1EsbUJBQW1CLFdBQVcseUNBQXlDLDJKQUEySixzRkFBc0YscUNBQXFDLHdHQUF3RyxtQkFBbUIsV0FBVywrQ0FBK0Msa0RBQWtELG9FQUFvRSxVQUFVLG9DQUFvQyw2Q0FBNkMseUlBQXlJLHNDQUFzQyxFQUFFLFdBQVcsaURBQWlELDJFQUEyRSw4QkFBOEIsMElBQTBJLDJKQUEySixtSkFBbUosZUFBZSxhQUFhLEdBQUcsaURBQWlELEVBQUUsV0FBVyxTQUFTLEVBQUUsT0FBTyxLQUFLLEdBQUcsa0hBQWtILDJEQUEyRCx5SUFBeUksbUNBQW1DLHdRQUF3USxtQkFBbUIsV0FBVyx5Q0FBeUMsOEpBQThKLHNGQUFzRixxQ0FBcUMsd0dBQXdHLG1CQUFtQixXQUFXLCtDQUErQyxrREFBa0Qsb0VBQW9FLFVBQVUsb0NBQW9DLDZDQUE2Qyx5SUFBeUksc0NBQXNDLEVBQUUsV0FBVyxpREFBaUQsMkVBQTJFLDhCQUE4QiwwSUFBMEksMkpBQTJKLG1KQUFtSixlQUFlLGFBQWEsR0FBRyxpREFBaUQsRUFBRSxXQUFXLFNBQVMsRUFBRSxPQUFPLEtBQUssR0FBRyw4RkFBOEYsb0NBQW9DLDREQUE0RCw2Q0FBNkMsV0FBVyxTQUFTLEVBQUUsT0FBTyxLQUFLLEdBQUcsR0FBRyxHQUFHLGFBQWEscWFBQXFhLG9PQUFvTyxnUEFBZ1AsZ0RBQWdELG1GQUFtRixVQUFVLDJHQUEyRyxjQUFjLGlDQUFpQyxTQUFTLHdCQUF3QiwwQkFBMEIsV0FBVyxJQUFJLDZCQUE2QixxQkFBcUIsVUFBVSxZQUFZLG1LQUFtSyx1QkFBdUIsU0FBUyxrQkFBa0IsZ0JBQWdCLG9CQUFvQixrQkFBa0IsdUJBQXVCLHFCQUFxQixnQkFBZ0Isb0JBQW9CLE1BQU0saURBQWlELFVBQVUsd0JBQXdCLCtDQUErQyxTQUFTLDREQUE0RCxVQUFVLGdDQUFnQyx3T0FBd08scUNBQXFDLCtDQUErQyw4QkFBOEIsT0FBTyxrQkFBa0IsV0FBVyw4SUFBOEksK05BQStOLDZCQUE2Qiw2R0FBNkcsNkNBQTZDLGlDQUFpQywyQkFBMkIsb0JBQW9CLE1BQU0scURBQXFELG1DQUFtQyxtQkFBbUIsU0FBUyxpRkFBaUYsbUJBQW1CLFNBQVMsT0FBTyxLQUFLLGNBQWMsR0FBRyxnREFBZ0QsMkJBQTJCLG9CQUFvQixrQ0FBa0MsZ0JBQWdCLGNBQWMsS0FBSyxvREFBb0QsMkNBQTJDLGtDQUFrQyxnQkFBZ0IsY0FBYyxLQUFLLG9EQUFvRCxZQUFZLHFJQUFxSSxHQUFHLGlEQUFpRCxvQkFBb0Isc0JBQXNCLGlFQUFpRSxTQUFTLDBCQUEwQiw4QkFBOEIsR0FBRyxnQ0FBZ0Msb0ZBQW9GLHlCQUF5QiwyREFBMkQsTUFBTSwrQkFBK0Isd0JBQXdCLFlBQVksTUFBTSwwQkFBMEIsV0FBVyw2QkFBNkIsU0FBUyxPQUFPLE1BQU0sYUFBYSx1QkFBdUIsTUFBTSxTQUFTLG9CQUFvQixLQUFLLGtDQUFrQyxHQUFHLG9EQUFvRCx3QkFBd0Isd0RBQXdELHdEQUF3RCx3REFBd0QsK0JBQStCLEtBQUssR0FBRywwQ0FBMEMsc0JBQXNCLG1DQUFtQyx1REFBdUQsMEZBQTBGLE9BQU8sb0JBQW9CLHFDQUFxQyxpQ0FBaUMsbURBQW1ELHNDQUFzQywyQ0FBMkMsOERBQThELHNDQUFzQyxxRUFBcUUsa0NBQWtDLHdDQUF3Qyw2QkFBNkIsaUNBQWlDLE9BQU8sbUJBQW1CLEtBQUssMEJBQTBCLDhDQUE4QyxpRkFBaUYsT0FBTyxxQkFBcUIsS0FBSyxpQ0FBaUMsMkNBQTJDLEtBQUssWUFBWSxnR0FBZ0csR0FBRyxvREFBb0Qsb0VBQW9FLG1CQUFtQixxQ0FBcUMsd0NBQXdDLG1CQUFtQixLQUFLLG9DQUFvQyxvRUFBb0UsbUJBQW1CLHFDQUFxQyx3Q0FBd0MsbUJBQW1CLEtBQUssb0NBQW9DLG9FQUFvRSxtQkFBbUIsbUNBQW1DLHdDQUF3QyxtQkFBbUIsS0FBSyxrQ0FBa0MsZ0JBQWdCLEdBQUcsd0NBQXdDLHVGQUF1RixrQkFBa0IsS0FBSyxjQUFjLHFUQUFxVCwrQkFBK0Isd0ZBQXdGLG9CQUFvQixPQUFPLHNDQUFzQyxzQ0FBc0Msb0NBQW9DLE1BQU0sTUFBTSxxREFBcUQsb0JBQW9CLE9BQU8sS0FBSyxtRkFBbUYsa0JBQWtCLEtBQUssd0NBQXdDLGNBQWMsR0FBRyw2Q0FBNkMsNkVBQTZFLGtCQUFrQixnQ0FBZ0MsZ0pBQWdKLDhEQUE4RCw2REFBNkQsS0FBSyxzQ0FBc0MseUNBQXlDLCtEQUErRCwrQkFBK0Isc0JBQXNCLGdCQUFnQixNQUFNLDRDQUE0QyxnQkFBZ0IsU0FBUywwREFBMEQsa0NBQWtDLGdDQUFnQyxnREFBZ0QsRUFBRSxtQkFBbUIsU0FBUyw2Q0FBNkMsaUJBQWlCLGdDQUFnQyw4RUFBOEUsRUFBRSxVQUFVLE1BQU0saUVBQWlFLFNBQVMsT0FBTywwQkFBMEIsK0VBQStFLEtBQUssa0JBQWtCLEdBQUcsNkNBQTZDLHNDQUFzQywrQ0FBK0Msc0RBQXNELGlDQUFpQyx1RUFBdUUsNkVBQTZFLHlFQUF5RSw4REFBOEQsNkRBQTZELDZEQUE2RCxnRkFBZ0YsbUVBQW1FLDBCQUEwQix1R0FBdUcsNkhBQTZILGtCQUFrQixXQUFXLHFFQUFxRSwrRUFBK0Usc0NBQXNDLDhFQUE4RSxrR0FBa0csRUFBRSwrTEFBK0wsMkhBQTJILGdIQUFnSCxpREFBaUQsbURBQW1ELGdFQUFnRSxzeEJBQXN4Qix5RUFBeUUsZ0NBQWdDLDhJQUE4SSx5UEFBeVAsaUJBQWlCLG1HQUFtRyxrQkFBa0IsZUFBZSxFQUFFLGFBQWEsV0FBVyx5Q0FBeUMsc0dBQXNHLGtCQUFrQixXQUFXLFNBQVMsT0FBTyxrQ0FBa0MsS0FBSyxHQUFHLDhGQUE4RixXQUFXLHFaQUFxWixxRUFBcUUsbURBQW1ELHlDQUF5Qyx3QkFBd0IsRUFBRSxvREFBb0QsU0FBUywwQ0FBMEMsTUFBTSxXQUFXLHVCQUF1QixLQUFLLGtEQUFrRCxHQUFHLGlDQUFpQyx3QkFBd0IseUNBQXlDLDBDQUEwQyw4QkFBOEIsMkJBQTJCLGtFQUFrRSxTQUFTLDRCQUE0QixtRUFBbUUsU0FBUyxzQkFBc0IsT0FBTyxFQUFFLE1BQU0sR0FBRyxhQUFhLDZZQUE2WSxxRUFBcUUsbURBQW1ELHVDQUF1Qyx3QkFBd0IsRUFBRSxrQ0FBa0Msc0ZBQXNGLEdBQUcsYUFBYSxpWUFBaVkscUVBQXFFLG1EQUFtRCxvQ0FBb0Msd0JBQXdCLEVBQUUsMExBQTBMLHNDQUFzQyxvQkFBb0IsY0FBYyxNQUFNLG1CQUFtQix1TUFBdU0sS0FBSyxHQUFHLGtDQUFrQywwSEFBMEgsdUJBQXVCLEtBQUssR0FBRyxhQUFhLDZZQUE2WSxxRUFBcUUsbURBQW1ELHVDQUF1Qyx3QkFBd0IsRUFBRSwwTEFBMEwsdUNBQXVDLHdIQUF3SCxrRkFBa0YsZ0JBQWdCLEdBQUcsYUFBYSxpWUFBaVkscUVBQXFFLG1EQUFtRCxtQ0FBbUMsd0JBQXdCLEVBQUUscUtBQXFLLGdDQUFnQyxrR0FBa0csa0NBQWtDLHVCQUF1QiwwQ0FBMEMsOEZBQThGLDRFQUE0RSxLQUFLLG1EQUFtRCxHQUFHLGFBQWEseVlBQXlZLHFFQUFxRSxtREFBbUQscUNBQXFDLHdCQUF3QixFQUFFLHFLQUFxSyxvTEFBb0wsaUNBQWlDLHlGQUF5RixvR0FBb0csR0FBRyxhQUFhLDZXQUE2VyxxRUFBcUUsbURBQW1ELCtCQUErQix3QkFBd0IsRUFBRSx1QkFBdUIsZ0NBQWdDLDZHQUE2RyxzQkFBc0IsTUFBTSxnQkFBZ0IsOEhBQThILEtBQUssYUFBYSxHQUFHLGFBQWEsaUJBQWlCLEVBQUUsMkpBQTJKLHNHQUFzRyxrSEFBa0gsZ0RBQWdELDZDQUE2QyxnQkFBZ0IsbUlBQW1JLDhHQUE4RyxpQkFBaUIsb0pBQW9KLG9HQUFvRyxjQUFjLDZLQUE2SyxtSUFBbUksNkNBQTZDLHVHQUF1RywyREFBMkQsd0NBQXdDLEVBQUUsb0JBQW9CLGtCQUFrQixpQkFBaUIsY0FBYyxHQUFHLGtHQUFrRyw2REFBNkQseURBQXlELGNBQWMsR0FBRyx3SEFBd0gsK3BCQUErcEIsa09BQWtPLHlOQUF5TixrT0FBa08sa0xBQWtMLCtPQUErTyxvTkFBb04sNkNBQTZDLDRCQUE0Qiw0TkFBNE4sNEVBQTRFLHlCQUF5QiwrRkFBK0YsZ0VBQWdFLCtDQUErQywrREFBK0QsNkNBQTZDLG1CQUFtQiwwQkFBMEIsK0JBQStCLE9BQU8sb0NBQW9DLDhPQUE4TywwQkFBMEIsbUJBQW1CLDRCQUE0Qiw4REFBOEQsNENBQTRDLDBCQUEwQixJQUFJLHVFQUF1RSxNQUFNLGdCQUFnQixxQ0FBcUMsZ0ZBQWdGLHVCQUF1QixpQ0FBaUMsNklBQTZJLFNBQVMsZ0VBQWdFLFlBQVksdUJBQXVCLFVBQVUsV0FBVyxTQUFTLHlCQUF5QixxQkFBcUIsWUFBWSx3QkFBd0IsZ0NBQWdDLHlDQUF5QywyQkFBMkIsMkRBQTJELG1CQUFtQixjQUFjLDBGQUEwRixnQkFBZ0IseU5BQXlOLHVjQUF1YyxjQUFjLHNEQUFzRCxnQ0FBZ0MsNkNBQTZDLFNBQVMsZUFBZSxNQUFNLDZDQUE2QywrQkFBK0IsTUFBTSxJQUFJLFVBQVUsS0FBSyxZQUFZLFNBQVMsZ0VBQWdFLG1CQUFtQix5Q0FBeUMsK0JBQStCLEtBQUssa0JBQWtCLDBEQUEwRCxxRUFBcUUsb0NBQW9DLDhJQUE4SSxrT0FBa08sOENBQThDLCtIQUErSCxLQUFLLG1JQUFtSSxrRkFBa0Ysa0VBQWtFLDBIQUEwSCxTQUFTLHVCQUF1QixxTkFBcU4sa0JBQWtCLDhNQUE4TSxrQkFBa0IsOE1BQThNLGtCQUFrQiw4TEFBOEwsa0JBQWtCLHVHQUF1RyxTQUFTLE9BQU8sS0FBSyxHQUFHLDJEQUEyRCxxTEFBcUwsdURBQXVELDJDQUEyQywwREFBMEQsaUNBQWlDLHdCQUF3QixpQkFBaUIscUlBQXFJLGtHQUFrRyxtRUFBbUUsaUJBQWlCLCtCQUErQiw2R0FBNkcseURBQXlELGlCQUFpQix1QkFBdUIsZ0dBQWdHLG9DQUFvQyw0SkFBNEosc0ZBQXNGLGlCQUFpQixFQUFFLDBEQUEwRCxhQUFhLFdBQVcsV0FBVyxTQUFTLEdBQUcsNkNBQTZDLDJEQUEyRCxTQUFTLGlDQUFpQyxPQUFPLE9BQU8sR0FBRyx3RUFBd0UsZ0NBQWdDLGdDQUFnQyx1QkFBdUIsK0xBQStMLGtCQUFrQiw2TkFBNk4sa0JBQWtCLGtJQUFrSSwrSEFBK0gsMEdBQTBHLFNBQVMsT0FBTyxLQUFLLEdBQUcsR0FBRyxHQUFHLGlFQUFpRSwwSUFBMEksdUpBQXVKLDhJQUE4SSxnQkFBZ0IsdUNBQXVDLGlGQUFpRixNQUFNLHlHQUF5RyxtQ0FBbUMsZ0RBQWdELDRDQUE0Qyw4RUFBOEUsMENBQTBDLHdDQUF3Qyx1RUFBdUUsUUFBUSxLQUFLLEdBQUcsSUFBSSw4RUFBOEUsWUFBWSxNQUFNO0FBQ3pxMUM7Ozs7Ozs7Ozs7O0FDTGE7O0FBRWI7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEU7Ozs7Ozs7Ozs7Ozs7QUN0Q0E7QUFDQTtBQUNBLGdDQUFnQyxPQUFPO0FBQ3ZDO0FBQ0E7Ozs7Ozs7Ozs7Ozs7O0FDSkE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7QUNGcUQ7QUFDckQ7QUFDQSwrQkFBK0IsZ0VBQWdCO0FBQy9DOzs7Ozs7Ozs7Ozs7OztBQ0hBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7OztBQ0hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUN4QkE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7QUNGK0M7QUFDL0M7QUFDQSxrQkFBa0IsY0FBYztBQUNoQztBQUNBLHdIQUF3SCw2REFBYTtBQUNySTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOzs7Ozs7Ozs7Ozs7Ozs7QUNYK0M7QUFDL0M7QUFDQSxjQUFjLDZEQUFhO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOzs7Ozs7Ozs7Ozs7OztBQ1JBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7Ozs7Ozs7Ozs7Ozs7O0FDSmlEO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHLFFBQVEsOERBQWM7QUFDekI7Ozs7Ozs7Ozs7Ozs7O0FDWkE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7OztBQ0ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLFlBQVksa0VBQWtFO0FBQ3RGLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUMxQkE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7OztBQ0ZBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7OztBQ0ZrQztBQUM2QjtBQUMvRDtBQUNBLHdCQUF3QixzREFBTztBQUMvQjtBQUNBLFNBQVMscUVBQXFCO0FBQzlCOzs7Ozs7Ozs7Ozs7OztBQ05BO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDSmlEO0FBQ1k7QUFDWTtBQUN0QjtBQUNuRDtBQUNBLFNBQVMsOERBQWMsT0FBTyxvRUFBb0IsVUFBVSwwRUFBMEIsVUFBVSwrREFBZTtBQUMvRzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDTnVEO0FBQ0o7QUFDc0I7QUFDbEI7QUFDdkQ7QUFDQSxTQUFTLGlFQUFpQixPQUFPLCtEQUFlLE9BQU8sMEVBQTBCLE9BQU8saUVBQWlCO0FBQ3pHOzs7Ozs7Ozs7Ozs7Ozs7QUNOa0M7QUFDbEM7QUFDQSxrQkFBa0Isc0RBQU87QUFDekI7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHNEQUFPO0FBQzNCO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7O0FDVmtDO0FBQ1M7QUFDM0M7QUFDQSxVQUFVLDJEQUFXO0FBQ3JCLHFCQUFxQixzREFBTztBQUM1Qjs7Ozs7Ozs7Ozs7Ozs7QUNMQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQSxHQUFHO0FBQ0g7Ozs7Ozs7Ozs7Ozs7OztBQ1JxRDtBQUNyRDtBQUNBO0FBQ0EscUNBQXFDLGdFQUFnQjtBQUNyRCxjQUFjO0FBQ2QsK0xBQStMLGdFQUFnQjtBQUMvTTtBQUNBOzs7Ozs7O1VDUEE7VUFDQTs7VUFFQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTs7VUFFQTtVQUNBOztVQUVBO1VBQ0E7VUFDQTs7Ozs7V0N0QkE7V0FDQTtXQUNBO1dBQ0EsZUFBZSw0QkFBNEI7V0FDM0MsZUFBZTtXQUNmLGlDQUFpQyxXQUFXO1dBQzVDO1dBQ0EsRTs7Ozs7V0NQQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLHlDQUF5Qyx3Q0FBd0M7V0FDakY7V0FDQTtXQUNBLEU7Ozs7O1dDUEE7V0FDQTtXQUNBO1dBQ0E7V0FDQSxHQUFHO1dBQ0g7V0FDQTtXQUNBLENBQUMsSTs7Ozs7V0NQRCw4Q0FBOEMseUQ7Ozs7O1dDQTlDO1dBQ0E7V0FDQTtXQUNBLHVEQUF1RCxpQkFBaUI7V0FDeEU7V0FDQSxnREFBZ0QsYUFBYTtXQUM3RCxFOzs7Ozs7Ozs7Ozs7QUNOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSxxQkFBTSxvQkFBb0IscUJBQU07QUFDMUM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLElBQUk7QUFDSjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxrQkFBa0IsaUJBQWlCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBO0FBQ0EscURBQXFEO0FBQ3JELFFBQVE7QUFDUjtBQUNBLFFBQVE7QUFDUiw0RUFBNEU7QUFDNUU7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0EsUUFBUTtBQUNSO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNEJBQTRCLHFCQUFxQjtBQUNqRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQSxxQ0FBcUMsNEJBQTRCO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNkJBQTZCLDBCQUEwQixlQUFlO0FBQ3RFOztBQUVPO0FBQ1A7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLE1BQU07QUFDTjtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7OztBQ2pvQkE7QUFDQTtBQUNBOztBQUV5QjtBQUNTO0FBQ1E7QUFLNUI7QUFHZCwrREFBZTtFQUNieDZDLEdBQUcsRUFBSEEsNENBQUc7RUFDSHk2QixRQUFRLEVBQVJBLGlEQUFRO0VBQ1JuTyxZQUFZLEVBQVpBLHFEQUFZQTtBQUNkLENBQUMsRSIsInNvdXJjZXMiOlsid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9BcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL0Jyb3dzZXJEZXRlY3Rvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL1BsYWluQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL0dhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9kb20vTmV0d29ya01vbml0b3IudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9TdHJlYW1TZXR1cExpc3RlbmVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lZGdlQXV0aC9FZGdlQXV0aFBhcnNlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZWRnZUF1dGgvRWRnZVRva2VuLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lbnZpcm9ubWVudC9CdWlsZEZlYXR1cmVzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZW52aXJvbm1lbnQvUGFyYW1ldGVycy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xhbmcvRGlzcG9zYWJsZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbGFuZy9EaXNwb3NhYmxlTGlzdC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbGFuZy9OdW1iZXJzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sYW5nL1N0cmluZ3MudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9BcHBlbmRlcnMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Db25zb2xlQXBwZW5kZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnZXJEZWZhdWx0cy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0xvZ2dlckZhY3RvcnkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnaW5nTGV2ZWxNYXBwaW5nLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sb2dnZXIvTG9nZ2luZ1RocmVzaG9sZC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbWV0cmljcy9NZXRyaWNUeXBlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NDb25maWd1cmF0aW9uLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NGYWN0b3J5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NTZXJ2aWNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NUeXBlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL1RlbGVtZXRyaWNMZXZlbE1hcHBpbmcudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvVGVsZW1ldHJ5RGVmYXVsdC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1BlZXJDb25uZWN0aW9uU2VydmljZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1J0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9ydGMvUnRjQ29ubmVjdGlvbk1vbml0b3IudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9TZHBQYXJzZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9WYW5pbGxhUGVlckNvbm5lY3Rpb24udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9WYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9yeC9SZWFkT25seVN1YmplY3QudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J4L1N1YmplY3QudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9FbnZpcm9ubWVudC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL1NESy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL1RlbGVtZXRyeVVybC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2FwaS9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NoYW5uZWxzL0NoYW5uZWwudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jaGFubmVscy9DaGFubmVsU3RhdGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jaGFubmVscy9DaGFubmVscy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NvbnRleHQvQ2hhbm5lbENvbnRleHQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jb250ZXh0L0ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvY29udGV4dC9QZWVyQ29ubmVjdGlvbkNvbnRleHQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jb250ZXh0L1N0YXRlQ29udGV4dC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NvbnRleHQvU3RyZWFtVHJhbnNmb3JtQ29udGV4dC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NvbnRleHQvVG9rZW5Db250ZXh0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9BdWRpb0NvZGVjLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9BdWRpb0NvZGVjTWFwcGluZy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvVmlkZW9Db2RlYy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvVmlkZW9Db2RlY01hcHBpbmcudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL2gyNjQvbmFsVW5pdC9Bbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2RlZmF1bHRzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0JpdHJhdGVNb2RlTWFwcGluZy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9CaXRyYXRlU3RhdGVNYXBwaW5nLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0Rpc2NvdmVyeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9EaXNjb3ZlcnlTZXJ2aWNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0Rpc2NvdmVyeVVyaS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9FbmRQb2ludC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2ZyYW1lVGltaW5nL0ZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvc3RyZWFtaW5nL1JlYWxUaW1lU3RyZWFtU3Vic2NyaWJlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3N0cmVhbWluZy9SZWFsVGltZVN0cmVhbVN1YnNjcmliZXJGYWN0b3J5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvc3RyZWFtaW5nL1ZpZGVvRnJhbWVEZXRlY3Rvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL0VuY29kZWRNZWRpYVRyYW5zZm9ybU1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi9FbmNvZGVkU3RyZWFtU2luay50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL0luc2VydGFibGVTdHJlYW1zLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vU3RyZWFtVHJhY2tUcmFuc2Zvcm0udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi9TdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vc3Vycm9nYXRlRnJhbWVzL2gyNjQvc3Vycm9nYXRlMjh4MTZJRnJhbWUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi9zdXJyb2dhdGVGcmFtZXMvaDI2NC9zdXJyb2dhdGUyOHgxNlBGcmFtZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci9NZXNzYWdlUm91dGVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3ZlcnNpb24vVmVyc2lvbk1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3RlbGVtZXRyeS9UZWxlbWV0cnlBcGVuZGVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy90ZWxlbWV0cnkvVGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdGVsZW1ldHJ5L1RlbGVtZXRyeVNlcnZpY2UudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3RpbWUvRHVyYXRpb24udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3RpbWUvRXhwb25lbnRpYWxCYWNrb2ZmLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy92aWRlby9EaW1lbnNpb24udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3ZpZGVvL1Nlc3Npb25UZWxlbWV0cnkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3ZpZGVvL1ZpZGVvVGVsZW1ldHJ5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lLndvcmtlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvd29ya2VyLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5saW5lLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hcnJheUxpa2VUb0FycmF5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hcnJheVdpdGhIb2xlcy5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXJyYXlXaXRob3V0SG9sZXMuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZC5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXN5bmNUb0dlbmVyYXRvci5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2suanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZ2V0UHJvdG90eXBlT2YuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pdGVyYWJsZVRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2l0ZXJhYmxlVG9BcnJheUxpbWl0LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9ub25JdGVyYWJsZVJlc3QuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL25vbkl0ZXJhYmxlU3ByZWFkLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9zZXRQcm90b3R5cGVPZi5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2xpY2VkVG9BcnJheS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9Db25zdW1hYmxlQXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvUHJpbWl0aXZlLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b1Byb3BlcnR5S2V5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90eXBlb2YuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzIiwid2VicGFjazovL3BoZW5peC93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9waGVuaXgvd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9waGVuaXgvd2VicGFjay9ydW50aW1lL2dsb2JhbCIsIndlYnBhY2s6Ly9waGVuaXgvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9waGVuaXgvd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvd2hhdHdnLWZldGNoL2ZldGNoLmpzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvY2hhbm5lbHMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wicGhlbml4XCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcInBoZW5peFwiXSA9IGZhY3RvcnkoKTtcbn0pKHNlbGYsIGZ1bmN0aW9uKCkge1xucmV0dXJuICIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtNaWxsaXNlY29uZH0gZnJvbSAnLi4vdW5pdHMvVW5pdHMnO1xuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi9yeC9TdWJqZWN0JztcbmltcG9ydCBSZWFkT25seVN1YmplY3QgZnJvbSAnLi4vcngvUmVhZE9ubHlTdWJqZWN0JztcblxuY29uc3QgdmlzaWJpbGl0eUNoYW5nZUV2ZW50ID0gJ3Zpc2liaWxpdHljaGFuZ2UnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUlzRm9yZWdyb3VuZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc0ZvcmVncm91bmQ6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RpbWVPZkxhc3RUYWJGb2N1c0NoYW5nZTogbnVtYmVyID0gRGF0ZS5ub3coKTtcbiAgcHJpdmF0ZSBfbGFzdEJhY2tncm91bmREdXJhdGlvbjogTWlsbGlzZWNvbmQgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9pc0ZvcmVncm91bmQgPSBuZXcgU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgICB0aGlzLl9yZWFkT25seUlzRm9yZWdyb3VuZCA9IG5ldyBSZWFkT25seVN1YmplY3QodGhpcy5faXNGb3JlZ3JvdW5kKTtcbiAgICB0aGlzLmluaXRpYWxpemUoKTtcbiAgfVxuXG4gIGdldCBpc0ZvcmVncm91bmQoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlJc0ZvcmVncm91bmQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0VGltZVNpbmNlTGFzdENoYW5nZSgpOiBudW1iZXIge1xuICAgIHJldHVybiBEYXRlLm5vdygpIC0gdGhpcy5fdGltZU9mTGFzdFRhYkZvY3VzQ2hhbmdlO1xuICB9XG5cbiAgcHVibGljIGdldExhc3RCYWNrZ3JvdW5kRHVyYXRpb24oKTogTWlsbGlzZWNvbmQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fbGFzdEJhY2tncm91bmREdXJhdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICBsZXQgYmFja2dyb3VuZEVudHJ5VGltZTogTWlsbGlzZWNvbmQgfCBudWxsID0gbnVsbDtcbiAgICBjb25zdCBoYW5kbGVWaXNpYmlsaXR5Q2hhbmdlID0gKCkgPT4ge1xuICAgICAgY29uc3QgaXNOb3dGb3JlZ3JvdW5kID0gIUdsb2JhbFNjb3BlLnZhbHVlLmRvY3VtZW50SXNIaWRkZW47XG5cbiAgICAgIGlmICghaXNOb3dGb3JlZ3JvdW5kKSB7XG4gICAgICAgIGJhY2tncm91bmRFbnRyeVRpbWUgPSBEYXRlLm5vdygpO1xuICAgICAgICB0aGlzLl9sYXN0QmFja2dyb3VuZER1cmF0aW9uID0gbnVsbDtcbiAgICAgIH0gZWxzZSBpZiAoYmFja2dyb3VuZEVudHJ5VGltZSkge1xuICAgICAgICB0aGlzLl9sYXN0QmFja2dyb3VuZER1cmF0aW9uID0gRGF0ZS5ub3coKSAtIGJhY2tncm91bmRFbnRyeVRpbWU7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2lzRm9yZWdyb3VuZC52YWx1ZSA9IGlzTm93Rm9yZWdyb3VuZDtcbiAgICB9O1xuXG4gICAgY29uc3QgdXNlRXZlbnRDYXB0dXJlUGhhc2UgPSBmYWxzZTtcblxuICAgIEdsb2JhbFNjb3BlLnZhbHVlLmFkZERvY3VtZW50RXZlbnRMaXN0ZW5lcih2aXNpYmlsaXR5Q2hhbmdlRXZlbnQsIGhhbmRsZVZpc2liaWxpdHlDaGFuZ2UsIHVzZUV2ZW50Q2FwdHVyZVBoYXNlKTtcblxuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiBHbG9iYWxTY29wZS52YWx1ZS5yZW1vdmVEb2N1bWVudEV2ZW50TGlzdGVuZXIodmlzaWJpbGl0eUNoYW5nZUV2ZW50LCBoYW5kbGVWaXNpYmlsaXR5Q2hhbmdlLCB1c2VFdmVudENhcHR1cmVQaGFzZSkpKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnJvd3NlckRldGVjdG9yIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2Jyb3dzZXJOYW1lQW5kVmVyc2lvblJlZ2V4ID0gLyhNU0lFfCg/IUdlY2tvLispRmlyZWZveHwoPyFBcHBsZVdlYktpdC4rQ2hyb21lLispU2FmYXJpfCg/IUFwcGxlV2ViS2l0LispQ2hyb21lfEFwcGxlV2ViS2l0KD8hLitDaHJvbWV8LitTYWZhcmkpfEdlY2tvKD8hLitGaXJlZm94KSkoPzogfFxcLykoW1xcZC5hcHJlXSspL2c7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9icm93c2VyTmFtZUFuZFZlcnNpb24gPSBCcm93c2VyRGV0ZWN0b3IucGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb24oKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2Jyb3dzZXJOYW1lID0gQnJvd3NlckRldGVjdG9yLnBhcnNlQnJvd3Nlck5hbWUoKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2Jyb3dzZXJNYWpvclZlcnNpb24gPSBCcm93c2VyRGV0ZWN0b3IucGFyc2VCcm93c2VyTWFqb3JWZXJzaW9uKCk7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzTW9iaWxlID0gKC9BbmRyb2lkfGlQaG9uZXxpUGFkfGlQb2R8QmxhY2tCZXJyeXxPcGVyYSBNaW5pL2kpLnRlc3QobmF2aWdhdG9yPy51c2VyQWdlbnQpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNBbmRyb2lkID0gKC9BbmRyb2lkL2kpLnRlc3QobmF2aWdhdG9yPy51c2VyQWdlbnQpO1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTY5ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS82OS4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzAgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzcwLicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3MSA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzEuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTcyID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83Mi4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzQgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzc0LicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3NSA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzUuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTc2ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83Ni4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzcgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzc3LicpO1xuXG4gIHN0YXRpYyBnZXQgYnJvd3Nlck5hbWVBbmRWZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uO1xuICB9XG5cbiAgc3RhdGljIGdldCBicm93c2VyTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9icm93c2VyTmFtZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYnJvd3Nlck1ham9yVmVyc2lvbigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9icm93c2VyTWFqb3JWZXJzaW9uO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0FuZHJvaWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNBbmRyb2lkO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTY5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNjk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzAoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3MDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3MSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTcxO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTcyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3NDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3NSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTc1O1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTc2KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzY7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3NztcbiAgfVxuXG4gIHN0YXRpYyBpc01vYmlsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc01vYmlsZTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgaWYgKCFuYXZpZ2F0b3IgfHwgIW5hdmlnYXRvci51c2VyQWdlbnQpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCBicm93c2VyTmFtZUFuZFZlcnNpb24gPSBuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uUmVnZXgpO1xuXG4gICAgaWYgKGJyb3dzZXJOYW1lQW5kVmVyc2lvbiAmJiBicm93c2VyTmFtZUFuZFZlcnNpb25bMF0pIHtcbiAgICAgIHJldHVybiBicm93c2VyTmFtZUFuZFZlcnNpb25bMF07XG4gICAgfVxuXG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5wYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbkZvcklFKCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBwYXJzZUJyb3dzZXJOYW1lKCk6IHN0cmluZyB7XG4gICAgaWYgKCFCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbikge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGJyb3dzZXJOYW1lTGlzdCA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLnNwbGl0KCcvJyk7XG5cbiAgICBpZiAoIWJyb3dzZXJOYW1lTGlzdCB8fCAhYnJvd3Nlck5hbWVMaXN0WzBdKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJyb3dzZXJOYW1lTGlzdFswXTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHBhcnNlQnJvd3Nlck1ham9yVmVyc2lvbigpOiBudW1iZXIge1xuICAgIGlmICghQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24pIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIGNvbnN0IGJyb3dzZXJWZXJzaW9uTGlzdCA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLnNwbGl0KCcvJyk7XG5cbiAgICBpZiAoIWJyb3dzZXJWZXJzaW9uTGlzdCB8fCAhYnJvd3NlclZlcnNpb25MaXN0WzFdKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBjb25zdCBmdWxsVmVyc2lvbiA9IGJyb3dzZXJWZXJzaW9uTGlzdFsxXTtcblxuICAgIGlmICghZnVsbFZlcnNpb24pIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIHJldHVybiBOdW1iZXIoZnVsbFZlcnNpb24uc3BsaXQoJy4nKVswXSkgfHwgMDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uRm9ySUUoKTogc3RyaW5nIHtcbiAgICBpZiAoIW5hdmlnYXRvciB8fCAhbmF2aWdhdG9yLnVzZXJBZ2VudCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IHVzZXJBZ2VudCA9IG5hdmlnYXRvci51c2VyQWdlbnQ7XG4gICAgY29uc3QgbXNpZSA9IHVzZXJBZ2VudC5pbmRleE9mKCdNU0lFICcpO1xuXG4gICAgaWYgKG1zaWUgPiAwKSB7XG4gICAgICAvLyBJRSAxMCBvciBvbGRlciA9PiByZXR1cm4gdmVyc2lvbiBudW1iZXJcbiAgICAgIHJldHVybiBgSUUvJHtwYXJzZUludCh1c2VyQWdlbnQuc3Vic3RyaW5nKG1zaWUgKyA1LCB1c2VyQWdlbnQuaW5kZXhPZignLicsIG1zaWUpKSwgMTApfWA7XG4gICAgfVxuXG4gICAgY29uc3QgdHJpZGVudCA9IHVzZXJBZ2VudC5pbmRleE9mKCdUcmlkZW50LycpO1xuXG4gICAgaWYgKHRyaWRlbnQgPiAwKSB7XG4gICAgICAvLyBJRSAxMSA9PiByZXR1cm4gdmVyc2lvbiBudW1iZXJcbiAgICAgIGNvbnN0IHZlcnNpb24gPSB1c2VyQWdlbnQuaW5kZXhPZigncnY6Jyk7XG5cbiAgICAgIHJldHVybiBgSUUvJHtwYXJzZUludCh1c2VyQWdlbnQuc3Vic3RyaW5nKHZlcnNpb24gKyAzLCB1c2VyQWdlbnQuaW5kZXhPZignLicsIHZlcnNpb24pKSwgMTApfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuICcnO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nIGZyb20gJy4uL21ldHJpY3MvVGVsZW1ldHJpY0xldmVsTWFwcGluZyc7XG5pbXBvcnQgVGVsZW1ldHJ5RGVmYXVsdCBmcm9tICcuLi9tZXRyaWNzL1RlbGVtZXRyeURlZmF1bHQnO1xuaW1wb3J0IExvZ2dpbmdMZXZlbE1hcHBpbmcgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dpbmdMZXZlbE1hcHBpbmcnO1xuaW1wb3J0IExvZ2dlckRlZmF1bHRzIGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJEZWZhdWx0cyc7XG5cbi8vIFRoZSBQbGFpbkNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIgZmlsZSBpcyB1c2VkIGluIHRoZSBzaWxlbnQgYnVpbGRcbi8vIHRvIGNvbnN0cmFpbiB0aGUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIHRvIHRoZSBzcGVjaWZpZWQgdmFsdWVzLlxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGxhaW5Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIHtcbiAgcHVibGljIHN0YXRpYyBnZXRTdHJpbmdWYWx1ZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBQbGFpbkNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZGVmYXVsdFN0cmluZ1ZhbHVlW25hbWVdO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRCb29sZWFuVmFsdWUobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFBsYWluQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5kZWZhdWx0Qm9vbGVhblZhbHVlW25hbWVdO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0IGRlZmF1bHRTdHJpbmdWYWx1ZSgpOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdwaGVuaXgtbWV0cmljcy1sZXZlbCc6IFRlbGVtZXRyeUxldmVsTWFwcGluZy5jb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUb1RlbGVtZXRyeUxldmVsVHlwZShUZWxlbWV0cnlEZWZhdWx0LmRlZmF1bHRUZWxlbWV0cnlMZXZlbCksXG4gICAgICAncGhlbml4LWxvZ2dpbmctbGV2ZWwnOiBMb2dnaW5nTGV2ZWxNYXBwaW5nLmNvbnZlcnRMb2dnaW5nTGV2ZWxUb0xvZ2dpbmdMZXZlbFR5cGUoTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdExvZ2dpbmdMZXZlbCksXG4gICAgICAncGhlbml4LWNvbnNvbGUtbG9nZ2luZy1sZXZlbCc6IExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZShMb2dnZXJEZWZhdWx0cy5kZWZhdWx0Q29uc29sZUxvZ2dpbmdMZXZlbCksXG4gICAgICAncGhlbml4LXRlbGVtZXRyeS1sb2dnaW5nLWxldmVsJzogTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlKExvZ2dlckRlZmF1bHRzLmRlZmF1bHRUZWxlbWV0cnlMb2dnaW5nTGV2ZWwpLFxuICAgICAgJ3BoZW5peC1jaGFubmVsLXRva2VuJzogJycsXG4gICAgICAncGhlbml4LXVyaSc6ICcnLFxuICAgICAgJ3BoZW5peC1iYXNlLXVyaSc6ICcnXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldCBkZWZhdWx0Qm9vbGVhblZhbHVlKCk6IHsgW25hbWU6IHN0cmluZ106IGJvb2xlYW4gfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdwaGVuaXgtYXV0b21hdGljYWxseS1yZXRyeS1vbi1mYWlsdXJlJzogdHJ1ZSxcbiAgICAgICdwaGVuaXgtYXV0b21hdGljYWxseS1yZWNvbm5lY3QtcGVlci1jb25uZWN0aW9uJzogdHJ1ZSxcbiAgICAgICdwaGVuaXgtZm9yY2UtZ2FyYmFnZS1jb2xsZWN0aW9uLW9uLXJlc3RhcnQnOiB0cnVlLFxuICAgICAgJ3BoZW5peC1za2lwLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1tb2JpbGUtZGV2aWNlcyc6IHRydWVcbiAgICB9O1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCBTREsgZnJvbSAnLi4vc2RrL1NESyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyIHtcbiAgc3RhdGljIGZvcmNlR2FyYmFnZUNvbGxlY3Rpb24oKTogdm9pZCB7XG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmlzTW9iaWxlICYmIFNESy5za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuaXNGb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uU3VwcG9ydGVkKSB7XG4gICAgICB0aGlzLmZvcmNlQ2hyb21lR2FyYmFnZUNvbGxlY3Rpb24oKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBmb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uKCk6IHZvaWQge1xuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5pc1F1ZXVlTWljcm90YXNrU3VwcG9ydGVkKSB7XG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5xdWV1ZU1pY3JvdGFzayh0aGlzLm92ZXJsb2FkTWVtb3J5VG9JbnZva2VHYXJiYWdlQ29sbGVjdGlvbi5iaW5kKHRoaXMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCh0aGlzLm92ZXJsb2FkTWVtb3J5VG9JbnZva2VHYXJiYWdlQ29sbGVjdGlvbi5iaW5kKHRoaXMpLCAwKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBvdmVybG9hZE1lbW9yeVRvSW52b2tlR2FyYmFnZUNvbGxlY3Rpb24oKTogdm9pZCB7XG4gICAgbGV0IGltZzogSFRNTEltYWdlRWxlbWVudCB8IG51bGwgPSBHbG9iYWxTY29wZS52YWx1ZS5kb2N1bWVudENyZWF0ZUVsZW1lbnQ8SFRNTEltYWdlRWxlbWVudD4oJ2ltZycpO1xuXG4gICAgaW1nLnNyYyA9IEdsb2JhbFNjb3BlLnZhbHVlLlVSTC5jcmVhdGVPYmplY3RVUkwobmV3IEJsb2IoW25ldyBBcnJheUJ1ZmZlcigxMGUrNyldKSk7IC8vIDEwME1iIG9yIGxlc3Mgb3IgbW9yZSBkZXBlbmRpbmcgb24gYXMgeW91IHdpc2ggdG8gZm9yY2UvaW52b2tlIEdDIGN5Y2xlIHJ1blxuICAgIGltZy5vbmVycm9yID0gZnVuY3Rpb24oKSB7XG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5VUkwucmV2b2tlT2JqZWN0VVJMKHRoaXMuc3JjKTtcblxuICAgICAgaW1nID0gbnVsbDtcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0dhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0lEaXNwb3NhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi9yeC9TdWJqZWN0JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmV0d29ya01vbml0b3IgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc1N1cHBvcnRlZDogYm9vbGVhbiA9IEdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvckNvbm5lY3Rpb24gIT09IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSByZWFkb25seSBfcnR0OiBTdWJqZWN0PG51bWJlciB8IHVuZGVmaW5lZD4gPSBuZXcgU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VmZmVjdGl2ZVR5cGU6IFN1YmplY3Q8c3RyaW5nIHwgdW5kZWZpbmVkPiA9IG5ldyBTdWJqZWN0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHk6IFN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPiA9IG5ldyBTdWJqZWN0PG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBpZiAoIXRoaXMuaXNTdXBwb3J0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNldHVwTmV0d29ya0NoYW5nZUxpc3RlbmVycygpO1xuICAgIHRoaXMudXBkYXRlU3RhdGlzdGljcygpO1xuICB9XG5cbiAgZ2V0IGlzU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc1N1cHBvcnRlZDtcbiAgfVxuXG4gIGdldCBydHQoKTogU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fcnR0O1xuICB9XG5cbiAgZ2V0IGVmZmVjdGl2ZVR5cGUoKTogU3ViamVjdDxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fZWZmZWN0aXZlVHlwZTtcbiAgfVxuXG4gIGdldCBkb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSgpOiBTdWJqZWN0PG51bWJlciB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0aGlzLl9kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eTtcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSgpOiBudW1iZXIge1xuICAgIHJldHVybiBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uPy5kb3dubGluayA/PyBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uPy5kb3dubGlua01heCA/PyAtMTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RWZmZWN0aXZlVHlwZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uPy5lZmZlY3RpdmVUeXBlID8/IEdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvckNvbm5lY3Rpb24/LnR5cGUgPz8gJ1Vua25vd24nO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRSb3VuZFRyaXBUaW1lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIEdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvckNvbm5lY3Rpb24/LnJ0dCA/PyAtMTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBOZXR3b3JrQ2hhbmdlTGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIGNvbnN0IGxpc3RlbmVyID0gKCk6IHZvaWQgPT4gdGhpcy51cGRhdGVTdGF0aXN0aWNzKCk7XG5cbiAgICBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uPy5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBsaXN0ZW5lcik7XG5cbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgbGlzdGVuZXIpKSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVN0YXRpc3RpY3MoKTogdm9pZCB7XG4gICAgdGhpcy5fcnR0LnZhbHVlID0gdGhpcy5nZXRSb3VuZFRyaXBUaW1lKCk7XG4gICAgdGhpcy5fZWZmZWN0aXZlVHlwZS52YWx1ZSA9IHRoaXMuZ2V0RWZmZWN0aXZlVHlwZSgpO1xuICAgIHRoaXMuX2Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5LnZhbHVlID0gdGhpcy5nZXREb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSgpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgTWV0cmljc1R5cGUgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzVHlwZSc7XG5pbXBvcnQgTWV0cmljVHlwZSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY1R5cGUnO1xuaW1wb3J0IER1cmF0aW9ucyBmcm9tICcuLi90aW1lL0R1cmF0aW9uJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL3Nkay9TREsnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuXG5leHBvcnQgY2xhc3MgU3RyZWFtU2V0dXBMaXN0ZW5lciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdTdHJlYW1TZXR1cExpc3RlbmVyJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbWV0cmljc1NlcnZpY2UgPSBTREsubWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BhZ2VMb2FkVGltZTogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdGFydFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSBfbWV0cmljU3VibWl0dGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocGFnZUxvYWRUaW1lOiBudW1iZXIpIHtcbiAgICB0aGlzLl9zdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgIHRoaXMuX3BhZ2VMb2FkVGltZSA9IHBhZ2VMb2FkVGltZTtcbiAgfVxuXG4gIHN1Y2Nlc3Moc3RyZWFtSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMucmVjb3JkU3RyZWFtTWV0cmljKE1ldHJpY3NUeXBlLlNldHVwQ29tcGxldGVkLCBzdHJlYW1JZCk7XG4gIH1cblxuICBmYWlsKCk6IHZvaWQge1xuICAgIHRoaXMucmVjb3JkU3RyZWFtTWV0cmljKE1ldHJpY3NUeXBlLlNldHVwRmFpbGVkKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb3JkU3RyZWFtTWV0cmljKG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLCBzdHJlYW1JZD86IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9tZXRyaWNTdWJtaXR0ZWQpIHtcbiAgICAgIHJldHVybiA7XG4gICAgfVxuXG4gICAgdGhpcy5fbWV0cmljU3VibWl0dGVkID0gdHJ1ZTtcblxuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgc2V0dXBUaW1lID0gbm93IC0gdGhpcy5fc3RhcnRUaW1lO1xuICAgIGNvbnN0IG1ldHJpY05hbWUgPSBuZXcgTWV0cmljVHlwZShtZXRyaWNUeXBlKS5nZXROYW1lKCk7XG5cbiAgICB0aGlzLm1ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZSxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7dWludDY0OiBzZXR1cFRpbWV9LFxuICAgICAgc3RyZWFtSWRcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gWyVzXSBTdHJlYW0gbWV0cmljIFslc10gaW4gWyVzXScsXG4gICAgICBuZXcgRHVyYXRpb25zKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkudG9Jc29TdHJpbmcoKSxcbiAgICAgIHN0cmVhbUlkLFxuICAgICAgbWV0cmljTmFtZSxcbiAgICAgIG5ldyBEdXJhdGlvbnMoc2V0dXBUaW1lKS50b0lzb1N0cmluZygpXG4gICAgKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBFZGdlVG9rZW4gZnJvbSAnLi9FZGdlVG9rZW4nO1xuaW1wb3J0IHtFbmNvZGVkRWRnZVRva2VufSBmcm9tICcuL0VuY29kZWRFZGdlVG9rZW4nO1xuXG5jb25zdCBlZGdlQXV0aFRva2VuUHJlZml4ID0gJ0RJR0VTVDonO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFZGdlQXV0aFBhcnNlciB7XG4gIHByaXZhdGUgc3RhdGljIF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignRWRnZUF1dGhQYXJzZXInKTtcblxuICBzdGF0aWMgcGFyc2VUb2tlbih0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbik6IEVkZ2VUb2tlbiB7XG4gICAgaWYgKCF0aGlzLmlzRW5jb2RlZEVkZ2VUb2tlblZhbGlkKHRva2VuKSkge1xuICAgICAgRWRnZUF1dGhQYXJzZXIuX2xvZ2dlci5lcnJvcignVG9rZW4gaXMgbm90IHZhbGlkIFslc10nLCB0b2tlbik7XG5cbiAgICAgIHJldHVybiBuZXcgRWRnZVRva2VuKG51bGwpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBkZWNvZGVkVG9rZW4gPSBhdG9iKHRva2VuLnN1YnN0cihlZGdlQXV0aFRva2VuUHJlZml4Lmxlbmd0aCkpO1xuICAgICAgY29uc3QgZWRnZVRva2VuID0gSlNPTi5wYXJzZShkZWNvZGVkVG9rZW4pO1xuXG4gICAgICBlZGdlVG9rZW4udG9rZW4gPSBKU09OLnBhcnNlKGVkZ2VUb2tlbi50b2tlbik7XG5cbiAgICAgIHJldHVybiBuZXcgRWRnZVRva2VuKGVkZ2VUb2tlbik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgRWRnZUF1dGhQYXJzZXIuX2xvZ2dlci5lcnJvcignQ2Fubm90IHBhcnNlIHRva2VuIHZhbHVlJywgZSk7XG5cbiAgICAgIHJldHVybiBuZXcgRWRnZVRva2VuKG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBpc0VuY29kZWRFZGdlVG9rZW5WYWxpZCh0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRva2VuICYmIHRva2VuLnN0YXJ0c1dpdGgoZWRnZUF1dGhUb2tlblByZWZpeCk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5cbmludGVyZmFjZSBJVG9rZW4ge1xuICB1cmk6IFVSTCB8IG51bGw7XG4gIGNhcGFiaWxpdGllczogc3RyaW5nW107XG59XG5cbmludGVyZmFjZSBJRWRnZVRva2VuIHtcbiAgYXBwbGljYXRpb25JZDogc3RyaW5nO1xuICB0b2tlbjogSVRva2VuO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFZGdlVG9rZW4ge1xuICBwcml2YXRlIHJlYWRvbmx5IF9hcHBsaWNhdGlvbklkOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Rva2VuOiBJVG9rZW47XG5cbiAgY29uc3RydWN0b3IoZWRnZVRva2VuOiBJRWRnZVRva2VuIHwgbnVsbCkge1xuICAgIHRoaXMuX2FwcGxpY2F0aW9uSWQgPSBlZGdlVG9rZW4/LmFwcGxpY2F0aW9uSWQgfHwgJyc7XG4gICAgdGhpcy5fdG9rZW4gPSB7XG4gICAgICB1cmk6IGVkZ2VUb2tlbj8udG9rZW4/LnVyaSA/IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwoZWRnZVRva2VuLnRva2VuLnVyaSkgOiBudWxsLFxuICAgICAgY2FwYWJpbGl0aWVzOiBlZGdlVG9rZW4/LnRva2VuPy5jYXBhYmlsaXRpZXMgfHwgW11cbiAgICB9O1xuICB9XG5cbiAgZ2V0IHVyaSgpOiBVUkwgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fdG9rZW4udXJpO1xuICB9XG5cbiAgZ2V0IGNhcGFiaWxpdGllcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3Rva2VuLmNhcGFiaWxpdGllcztcbiAgfVxuXG4gIGdldCB0ZW5hbmN5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2FwcGxpY2F0aW9uSWQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7TG9nZ2luZ0xldmVsVHlwZX0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlcic7XG5pbXBvcnQge1RlbGVtZXRyeUxldmVsVHlwZX0gZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5cbmRlY2xhcmUgY29uc3QgX19GRUFUVVJFU19fOiB7XG4gIHNlbmRMb2NhbENhbmRpZGF0ZXM6IGJvb2xlYW47XG4gIHNlbmRMb2dzOiBMb2dnaW5nTGV2ZWxUeXBlO1xuICBzZW5kTWV0cmljczogVGVsZW1ldHJ5TGV2ZWxUeXBlO1xuICBsb2dUb0NvbnNvbGU6IExvZ2dpbmdMZXZlbFR5cGU7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCdWlsZEZlYXR1cmVzIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX3NlbmRMb2NhbENhbmRpZGF0ZXM6IGJvb2xlYW47XG4gIHByaXZhdGUgc3RhdGljIF9zZW5kTG9nczogTG9nZ2luZ0xldmVsVHlwZTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3NlbmRNZXRyaWNzOiBUZWxlbWV0cnlMZXZlbFR5cGU7XG4gIHByaXZhdGUgc3RhdGljIF9sb2dUb0NvbnNvbGU6IExvZ2dpbmdMZXZlbFR5cGU7XG5cbiAgc3RhdGljIGdldCBzZW5kTG9jYWxDYW5kaWRhdGVzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zZW5kTG9jYWxDYW5kaWRhdGVzO1xuICB9XG5cbiAgc3RhdGljIGdldCBzZW5kTG9ncygpOiBMb2dnaW5nTGV2ZWxUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5fc2VuZExvZ3M7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHNlbmRNZXRyaWNzKCk6IFRlbGVtZXRyeUxldmVsVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbmRNZXRyaWNzO1xuICB9XG5cbiAgc3RhdGljIGdldCBsb2dUb0NvbnNvbGUoKTogTG9nZ2luZ0xldmVsVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX2xvZ1RvQ29uc29sZTtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUZlYXR1cmVzKCk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBmZWF0dXJlcyA9IF9fRkVBVFVSRVNfXztcblxuICAgICAgdGhpcy5fc2VuZExvY2FsQ2FuZGlkYXRlcyA9ICdzZW5kTG9jYWxDYW5kaWRhdGVzJyBpbiBmZWF0dXJlcyA/IGZlYXR1cmVzLnNlbmRMb2NhbENhbmRpZGF0ZXMgOiB0cnVlO1xuICAgICAgdGhpcy5fc2VuZExvZ3MgPSAnc2VuZExvZ3MnIGluIGZlYXR1cmVzID8gZmVhdHVyZXMuc2VuZExvZ3MgOiAnQWxsJztcbiAgICAgIHRoaXMuX3NlbmRNZXRyaWNzID0gJ3NlbmRNZXRyaWNzJyBpbiBmZWF0dXJlcyA/IGZlYXR1cmVzLnNlbmRNZXRyaWNzIDogJ0FsbCc7XG4gICAgICB0aGlzLl9sb2dUb0NvbnNvbGUgPSAnbG9nVG9Db25zb2xlJyBpbiBmZWF0dXJlcyA/IGZlYXR1cmVzLmxvZ1RvQ29uc29sZSA6ICdBbGwnO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX3NlbmRMb2NhbENhbmRpZGF0ZXMgPSB0cnVlO1xuICAgICAgdGhpcy5fc2VuZExvZ3MgPSAnQWxsJztcbiAgICAgIHRoaXMuX3NlbmRNZXRyaWNzID0gJ0FsbCc7XG4gICAgICB0aGlzLl9sb2dUb0NvbnNvbGUgPSAnQWxsJztcbiAgICB9XG4gIH1cbn1cblxuQnVpbGRGZWF0dXJlcy5hcHBseUZlYXR1cmVzKCk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IEJyb3dzZXJEZXRlY3RvciBmcm9tICcuLi9kb20vQnJvd3NlckRldGVjdG9yJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRmVhdHVyZUVuYWJsZW1lbnQge1xuICBzdGF0aWMgZ2V0IGNsaWVudE9mZmVyRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgLy8gQ2xpZW50IG9mZmVyIHdvcmtmbG93IGRvZXMgbm90IHdvcmsgY29ycmVjdGx5IGluIHRoZSBmb2xsb3dpbmcgYnJvd3NlcnNcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzQgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTc1IHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3NiB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGdldFRyYW5zY2VpdmVyc0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBGZWF0dXJlRW5hYmxlbWVudC5hZGRUcmFuY2VpdmVyRGlzYWJsZWQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGFkZFRyYW5jZWl2ZXJEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAvLyBDaHJvbWUgNjksIDcwLCA3MSwgNzIgZXhwb3NlcyBgYWRkVHJhbmNlaXZlcmAgYnV0IGl0IGRvZXMgbm90IHdvcmsgY29ycmVjdGx5XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTY5IHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3MCB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzEgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTcyO1xuICB9XG5cbiAgc3RhdGljIGdldCBnZXRTdGF0c1Byb21pc2VCYXNlZERpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDY2O1xuICB9XG5cbiAgc3RhdGljIGdldCBnZXRDdXJyZW50T2ZmZXJEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA2OSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnRmlyZWZveCcgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNTY7XG4gIH1cblxuICBzdGF0aWMgZ2V0IG9uVHJhY2tEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA2MyB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnRmlyZWZveCcgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNTI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA1NTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgcHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0ZpcmVmb3gnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDUyO1xuICB9XG5cbiAgc3RhdGljIGdldCBzaG91bGRVc2VOYXRpdmVIbHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ1NhZmFyaScgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ1NhbXN1bmdCcm93c2VyJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNQcmVjYWNoaW5nRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lICE9PSAnSUUnO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0ZvcmNlQ2hyb21lR2FyYmFnZUNvbGxlY3Rpb25TdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgdHlwZW9mIEdsb2JhbFNjb3BlLnZhbHVlPy5kb2N1bWVudENyZWF0ZUVsZW1lbnQgPT09ICdmdW5jdGlvbic7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzUXVldWVNaWNyb3Rhc2tTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPj0gNzEgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0ZpcmVmb3gnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uID49IDY5IHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdTYWZhcmknO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc01vYmlsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmlzTW9iaWxlKCk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEodHlwZW9mIE1lZGlhU3RyZWFtVHJhY2tQcm9jZXNzb3IgPT09ICd1bmRlZmluZWQnIHx8XG4gICAgICB0eXBlb2YgTWVkaWFTdHJlYW1UcmFja0dlbmVyYXRvciA9PT0gJ3VuZGVmaW5lZCcpO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIFJUQ1J0cFJlY2VpdmVyICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgUlRDUnRwUmVjZWl2ZXIucHJvdG90eXBlLmNyZWF0ZUVuY29kZWRTdHJlYW1zICE9PSAndW5kZWZpbmVkJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNSVENSdHBTY3JpcHRUcmFuc2Zvcm1TdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiBSVENSdHBTY3JpcHRUcmFuc2Zvcm0gIT09ICd1bmRlZmluZWQnO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc1JlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2tTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiBHbG9iYWxTY29wZS52YWx1ZT8uSFRNTFZpZGVvRWxlbWVudC5wcm90b3R5cGUucmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayAhPT0gJ3VuZGVmaW5lZCc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgR2xvYmFsU2NvcGUudmFsdWU/LnJlcXVlc3RBbmltYXRpb25GcmFtZSA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaGFubmVsRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gRmVhdHVyZUVuYWJsZW1lbnQuaXNSZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrU3VwcG9ydGVkXG4gICAgICAmJiAoRmVhdHVyZUVuYWJsZW1lbnQuaXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQgfHwgRmVhdHVyZUVuYWJsZW1lbnQuaXNSVENSdHBTY3JpcHRUcmFuc2Zvcm1TdXBwb3J0ZWQpO1xuICB9XG5cbiAgc3RhdGljIGdldCBlcnJvclN0YWNrQWxzb0hhc0Vycm9yTWVzc2FnZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lICE9PSAnRmlyZWZveCcgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lICE9PSAnU2FmYXJpJztcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZGVjbGFyZSBjb25zdCBfX1BBUkFNRVRFUlNfXzoge1xuICBkaXNjb3Zlcnk6IElEaXNjb3ZlcnlQYXJhbWV0ZXI7XG59O1xuXG5pbnRlcmZhY2UgSURpc2NvdmVyeVBhcmFtZXRlcntcbiAgaW50ZW50aW9uczogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQYXJhbWV0ZXJzIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2Rpc2NvdmVyeVBhcmFtZXRlcnM6IElEaXNjb3ZlcnlQYXJhbWV0ZXIgO1xuXG4gIHN0YXRpYyBnZXQgZGlzY292ZXJ5UGFyYW1ldGVycygpOiBJRGlzY292ZXJ5UGFyYW1ldGVyIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzY292ZXJ5UGFyYW1ldGVycztcbiAgfVxuXG4gIHN0YXRpYyBhcHBseVBhcmFtZXRlcnMoKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBhcmFtZXRlcnMgPSBfX1BBUkFNRVRFUlNfXztcblxuICAgICAgdGhpcy5fZGlzY292ZXJ5UGFyYW1ldGVycyA9ICdkaXNjb3ZlcnknIGluIHBhcmFtZXRlcnMgPyBwYXJhbWV0ZXJzLmRpc2NvdmVyeSA6IHtpbnRlbnRpb25zOiAnJ307XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fZGlzY292ZXJ5UGFyYW1ldGVycyA9IHtpbnRlbnRpb25zOiAnJ307XG4gICAgfVxuICB9XG59XG5cblBhcmFtZXRlcnMuYXBwbHlQYXJhbWV0ZXJzKCk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgSUdsb2JhbFNjb3BlIGZyb20gJy4vSUdsb2JhbFNjb3BlJztcbmltcG9ydCBJRG9jdW1lbnQgZnJvbSAnLi9JRG9jdW1lbnQnO1xuaW1wb3J0IElMb2NhdGlvbiBmcm9tICcuL0lMb2NhdGlvbic7XG5pbXBvcnQgSU5ldHdvcmtJbmZvcm1hdGlvbiBmcm9tICcuL0lOZXR3b3JrSW5mb3JtYXRpb24nO1xuaW1wb3J0IElOYXZpZ2F0b3IgZnJvbSAnLi9JTmF2aWdhdG9yJztcbmltcG9ydCBJV2luZG93IGZyb20gJy4vSVdpbmRvdyc7XG5pbXBvcnQgSVByb3ZpZGVkR2xvYmFsU2NvcGUgZnJvbSAnLi9JUHJvdmlkZWRHbG9iYWxTY29wZSc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi9yeC9TdWJqZWN0JztcbmltcG9ydCBSZWFkT25seVN1YmplY3QgZnJvbSAnLi4vcngvUmVhZE9ubHlTdWJqZWN0JztcblxudHlwZSBCcm93c2VyR2xvYmFsU2NvcGUgPSBJUHJvdmlkZWRHbG9iYWxTY29wZTtcblxuY29uc3QgYnJvd3Nlckdsb2JhbFNjb3BlOiBCcm93c2VyR2xvYmFsU2NvcGUgPSB7XG4gIGRvY3VtZW50LFxuICBsb2NhdGlvbixcbiAgbmF2aWdhdG9yLFxuICB3aW5kb3dcbn07XG5cbmV4cG9ydCBjbGFzcyBHbG9iYWxTY29wZSBpbXBsZW1lbnRzIElHbG9iYWxTY29wZSB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pbnN0YW5jZSA9IG5ldyBTdWJqZWN0PElHbG9iYWxTY29wZT4obmV3IEdsb2JhbFNjb3BlKGJyb3dzZXJHbG9iYWxTY29wZSkpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfcmVhZE9ubHlJbnN0YW5jZTogUmVhZE9ubHlTdWJqZWN0PElHbG9iYWxTY29wZT4gPSBuZXcgUmVhZE9ubHlTdWJqZWN0KEdsb2JhbFNjb3BlLl9pbnN0YW5jZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2RvY3VtZW50OiBJRG9jdW1lbnQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvY2F0aW9uOiBJTG9jYXRpb247XG4gIHByaXZhdGUgcmVhZG9ubHkgX25hdmlnYXRvcjogSU5hdmlnYXRvcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfd2luZG93OiBJV2luZG93O1xuXG4gIGNvbnN0cnVjdG9yKGdsb2JhbFNjb3BlOiBCcm93c2VyR2xvYmFsU2NvcGUpIHtcbiAgICB0aGlzLl9kb2N1bWVudCA9IGdsb2JhbFNjb3BlLmRvY3VtZW50O1xuICAgIHRoaXMuX2xvY2F0aW9uID0gZ2xvYmFsU2NvcGUubG9jYXRpb247XG4gICAgdGhpcy5fbmF2aWdhdG9yID0gZ2xvYmFsU2NvcGUubmF2aWdhdG9yO1xuICAgIHRoaXMuX3dpbmRvdyA9IGdsb2JhbFNjb3BlLndpbmRvdztcbiAgfVxuXG4gIC8vIFRoaXMgbWV0aG9kIGlzIHJlcXVpcmVkIHRvIG1haW50YWluIEFQSSBjb25zaXN0ZW5jeSB3aXRoIFByb3ZpZGVkR2xvYmFsU2NvcGVcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAvLyBAdHMtaWdub3JlXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgcHVibGljIHN0YXRpYyBzZXRJbnN0YW5jZShwcm92aWRlZEdsb2JhbFNjb3BlOiBJUHJvdmlkZWRHbG9iYWxTY29wZSk6IHZvaWQge1xuICAgIHRocm93IG5ldyBFcnJvcignVGhpcyBidWlsZCBkb2VzIG5vdCBzdXBwb3J0IHNldHRpbmcgdGhlIEdsb2JhbFNjb3BlJyk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldEluc3RhbmNlKCk6IFJlYWRPbmx5U3ViamVjdDxJR2xvYmFsU2NvcGU+IHtcbiAgICByZXR1cm4gR2xvYmFsU2NvcGUuX3JlYWRPbmx5SW5zdGFuY2U7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHN1YnNjcmliZShjYWxsYmFjazogKHZhbHVlOiBJR2xvYmFsU2NvcGUgfCBudWxsKSA9PiB2b2lkKTogSURpc3Bvc2FibGUge1xuICAgIHJldHVybiBHbG9iYWxTY29wZS5fcmVhZE9ubHlJbnN0YW5jZS5zdWJzY3JpYmUoY2FsbGJhY2spO1xuICB9XG5cbiAgZ2V0IEZvcm1EYXRhKCk6IHR5cGVvZiBGb3JtRGF0YSB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5Gb3JtRGF0YTtcbiAgfVxuXG4gIGdldCBIVE1MVmlkZW9FbGVtZW50KCk6IHR5cGVvZiBIVE1MVmlkZW9FbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LkhUTUxWaWRlb0VsZW1lbnQ7XG4gIH1cblxuICBnZXQgTWVkaWFTdHJlYW0oKTogdHlwZW9mIE1lZGlhU3RyZWFtIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93Lk1lZGlhU3RyZWFtO1xuICB9XG5cbiAgZ2V0IE1lZGlhU3RyZWFtVHJhY2soKTogdHlwZW9mIE1lZGlhU3RyZWFtVHJhY2sge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuTWVkaWFTdHJlYW1UcmFjaztcbiAgfVxuXG4gIGdldCBNZWRpYVNvdXJjZSgpOiB0eXBlb2YgTWVkaWFTb3VyY2Uge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuTWVkaWFTb3VyY2U7XG4gIH1cblxuICBnZXQgUlRDUGVlckNvbm5lY3Rpb24oKTogdHlwZW9mIFJUQ1BlZXJDb25uZWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LlJUQ1BlZXJDb25uZWN0aW9uO1xuICB9XG5cbiAgZ2V0IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbigpOiB0eXBlb2YgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LlJUQ1Nlc3Npb25EZXNjcmlwdGlvbjtcbiAgfVxuXG4gIGdldCBSVENJY2VDYW5kaWRhdGUoKTogdHlwZW9mIFJUQ0ljZUNhbmRpZGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5SVENJY2VDYW5kaWRhdGU7XG4gIH1cblxuICBnZXQgVVJMKCk6IHR5cGVvZiBVUkwge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuVVJMO1xuICB9XG5cbiAgZ2V0IFVSTFNlYXJjaFBhcmFtcygpOiB0eXBlb2YgVVJMU2VhcmNoUGFyYW1zIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LlVSTFNlYXJjaFBhcmFtcztcbiAgfVxuXG4gIGdldCBhZGREb2N1bWVudEV2ZW50TGlzdGVuZXIoKTogKHR5cGU6IHN0cmluZywgbGlzdGVuZXI6IChldmVudDogRXZlbnQpID0+IHZvaWQsIG9wdGlvbnM/OiBib29sZWFuIHwgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl9kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyLmJpbmQodGhpcy5fZG9jdW1lbnQpO1xuICB9XG5cbiAgZ2V0IGFkZFdpbmRvd0V2ZW50TGlzdGVuZXIoKTogKHR5cGU6IHN0cmluZywgbGlzdGVuZXI6IChldmVudDogRXZlbnQpID0+IHZvaWQsIG9wdGlvbnM/OiBib29sZWFuIHwgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuYWRkRXZlbnRMaXN0ZW5lci5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cblxuICBnZXQgY2xlYXJJbnRlcnZhbCgpOiAoaWQ/OiBudW1iZXIgfCB1bmRlZmluZWQpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuY2xlYXJJbnRlcnZhbC5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cblxuICBnZXQgY2xlYXJUaW1lb3V0KCk6IChpZD86IG51bWJlciB8IHVuZGVmaW5lZCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5jbGVhclRpbWVvdXQuYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IGRvY3VtZW50Q3JlYXRlRWxlbWVudCgpOiA8RWxlbWVudCBleHRlbmRzIEhUTUxFbGVtZW50Pih0YWc6IHN0cmluZykgPT4gRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQuYmluZCh0aGlzLl9kb2N1bWVudCk7XG4gIH1cblxuICBnZXQgZG9jdW1lbnRIYXNGb2N1cygpOiAoKSA9PiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZG9jdW1lbnQuaGFzRm9jdXMuYmluZCh0aGlzLl9kb2N1bWVudCk7XG4gIH1cblxuICBnZXQgZG9jdW1lbnRJc0hpZGRlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLl9kb2N1bWVudC5oaWRkZW47XG4gIH1cblxuICBnZXQgZG9jdW1lbnRRdWVyeVNlbGVjdG9yKCk6IDxFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQ+KHRhZzogc3RyaW5nKSA9PiBFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IuYmluZCh0aGlzLl9kb2N1bWVudCk7XG4gIH1cblxuICBnZXQgZmV0Y2goKTogKGlucHV0OiBzdHJpbmcgfCBVUkwgfCBSZXF1ZXN0LCBpbml0PzogUmVxdWVzdEluaXQpID0+IFByb21pc2U8UmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LmZldGNoLmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCBsb2NhdGlvbkhvc3RuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2xvY2F0aW9uLmhvc3RuYW1lO1xuICB9XG5cbiAgZ2V0IGxvY2F0aW9uU2VhcmNoKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2xvY2F0aW9uLnNlYXJjaDtcbiAgfVxuXG4gIGdldCBuYXZpZ2F0b3JDb25uZWN0aW9uKCk6IElOZXR3b3JrSW5mb3JtYXRpb24gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9uYXZpZ2F0b3IuY29ubmVjdGlvbjtcbiAgfVxuXG4gIGdldCBuYXZpZ2F0b3JJc09uTGluZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbmF2aWdhdG9yLm9uTGluZTtcbiAgfVxuXG4gIGdldCBwYWdlTG9hZFRpbWUoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93WydfX3BoZW5peFBhZ2VMb2FkVGltZSddIHx8IHRoaXMuX3dpbmRvd1snX19wYWdlTG9hZFRpbWUnXTtcbiAgfVxuXG4gIGdldCBxdWV1ZU1pY3JvdGFzaygpOiAobWljcm90YXNrOiAoKSA9PiB2b2lkKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LnF1ZXVlTWljcm90YXNrLmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCByZW1vdmVEb2N1bWVudEV2ZW50TGlzdGVuZXIoKTogKHR5cGU6IHN0cmluZywgbGlzdGVuZXI6IChldmVudDogRXZlbnQpID0+IHZvaWQsIG9wdGlvbnM/OiBib29sZWFuIHwgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl9kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyLmJpbmQodGhpcy5fZG9jdW1lbnQpO1xuICB9XG5cbiAgZ2V0IHJlcXVlc3RBbmltYXRpb25GcmFtZSgpOiAoY2FsbGJhY2s6IEZyYW1lUmVxdWVzdENhbGxiYWNrKSA9PiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lLmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCByZW1vdmVXaW5kb3dFdmVudExpc3RlbmVyKCk6ICh0eXBlOiBzdHJpbmcsIGxpc3RlbmVyOiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkLCBvcHRpb25zPzogYm9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIuYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IHNldEludGVydmFsKCk6IChoYW5kbGVyOiBzdHJpbmcgfCBGdW5jdGlvbiwgdGltZW91dD86IG51bWJlciB8IHVuZGVmaW5lZCkgPT4gbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LnNldEludGVydmFsLmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCBzZXRUaW1lb3V0KCk6IChoYW5kbGVyOiBzdHJpbmcgfCBGdW5jdGlvbiwgdGltZW91dD86IG51bWJlciB8IHVuZGVmaW5lZCkgPT4gbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LnNldFRpbWVvdXQuYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEdsb2JhbFNjb3BlLmdldEluc3RhbmNlKCk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi9JRGlzcG9zYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERpc3Bvc2FibGUgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgX2Rpc3Bvc2VkOiBib29sZWFuO1xuICBwcml2YXRlIF9kaXNwb3NhYmxlOiAoKSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKGRpc3Bvc2FibGU6ICgpID0+IHZvaWQpIHtcbiAgICB0aGlzLl9kaXNwb3NlZCA9IGZhbHNlO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGUgPSBkaXNwb3NhYmxlO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZGlzcG9zZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9kaXNwb3NlZCA9IHRydWU7XG5cbiAgICByZXR1cm4gdGhpcy5fZGlzcG9zYWJsZS5jYWxsKHRoaXMpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi9JRGlzcG9zYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERpc3Bvc2FibGVMaXN0IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbGlzdDogSURpc3Bvc2FibGVbXSA9IFtdO1xuXG4gIGFkZChkaXNwb3NhYmxlOiBJRGlzcG9zYWJsZSk6IHZvaWQge1xuICAgIHRoaXMuX2xpc3QucHVzaChkaXNwb3NhYmxlKTtcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fbGlzdC5mb3JFYWNoKGRpc3Bvc2FibGUgPT4gZGlzcG9zYWJsZS5kaXNwb3NlKCkpO1xuICAgIHRoaXMuX2xpc3QubGVuZ3RoID0gMDtcbiAgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBEaXNwb3NhYmxlTGlzdFtkaXNwb3NhYmxlcz0ke3RoaXMuX2xpc3QubGVuZ3RofV1gO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG4vLyBBcyBmbG9hdCBpbiBFQ01BU2NyaXB0IHVzZSA2NC1iaXQgZm9ybWF0IGl0IGNhbm5vdCBoYXZlL2hhbmRsZSBtb3JlIHRoYW4gMTUgc3ltYm9scyBhZnRlciBkb3QuXG5jb25zdCBtYXhEaWdpdHNJbkZsb2F0QWZ0ZXJEb3QgPSAxNTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTnVtYmVycyB7XG4gIHN0YXRpYyBjb3VudE51bWJlckxlbmd0aCh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBsZXQgaW5jcmVtZW50Rm9yTmVnYXRpdmVWYWx1ZSA9IDA7XG4gICAgbGV0IG51bWJlciA9IHZhbHVlO1xuXG4gICAgaWYgKG51bWJlciA8IDApIHtcbiAgICAgIG51bWJlciAqPSAtMTtcbiAgICAgIGluY3JlbWVudEZvck5lZ2F0aXZlVmFsdWUrKztcbiAgICB9XG5cbiAgICByZXR1cm4gTnVtYmVycy5jb3VudERpZ2l0c0JlZm9yZURlY2ltYWwobnVtYmVyKSArIGluY3JlbWVudEZvck5lZ2F0aXZlVmFsdWUgKyAobnVtYmVyICE9PSBNYXRoLmZsb29yKG51bWJlcikgPyBOdW1iZXJzLmNvdW50RGlnaXRzQWZ0ZXJEZWNpbWFsKG51bWJlcikgKyAxIDogMCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBmaXhSb3VuZGluZyh2YWx1ZTogbnVtYmVyLCBwcmVjaXNpb246IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgcG93ZXIgPSBNYXRoLnBvdygxMCwgcHJlY2lzaW9uKTtcblxuICAgIHJldHVybiBNYXRoLnJvdW5kKHZhbHVlICogcG93ZXIpIC8gcG93ZXI7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBjb3VudERpZ2l0c0JlZm9yZURlY2ltYWwodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgbGV0IGRpZ2l0c0JlZm9yZURlY2ltYWwgPSAxO1xuICAgIGxldCBudW1iZXIgPSB2YWx1ZTtcblxuICAgIHdoaWxlIChudW1iZXIgPj0gMTApIHtcbiAgICAgIG51bWJlciA9IG51bWJlciAvIDEwO1xuICAgICAgZGlnaXRzQmVmb3JlRGVjaW1hbCsrO1xuICAgIH1cblxuICAgIHJldHVybiBkaWdpdHNCZWZvcmVEZWNpbWFsO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgY291bnREaWdpdHNBZnRlckRlY2ltYWwodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3Qgb3JpZ2luYWxWYWx1ZSA9IHZhbHVlO1xuICAgIGxldCBtb2RpZmllZFZhbHVlID0gTWF0aC5mbG9vcih2YWx1ZSk7XG4gICAgbGV0IGNvdW50ID0gMDtcblxuICAgIHdoaWxlIChtb2RpZmllZFZhbHVlICE9PSBvcmlnaW5hbFZhbHVlICYmIGNvdW50IDwgbWF4RGlnaXRzSW5GbG9hdEFmdGVyRG90KSB7XG4gICAgICBjb3VudCsrO1xuICAgICAgbW9kaWZpZWRWYWx1ZSA9IE51bWJlcnMuZml4Um91bmRpbmcob3JpZ2luYWxWYWx1ZSwgY291bnQpO1xuICAgIH1cblxuICAgIHJldHVybiBjb3VudDtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOdW1iZXJzIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3RyaW5ncyB7XG4gIHN0YXRpYyByYW5kb20obGVuZ3RoOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJhbmRvbTEzQ2hhcmFjdGVycyA9ICgpOiBzdHJpbmcgPT4ge1xuICAgICAgcmV0dXJuIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMTYpLnN1YnN0cmluZygyLCAxNSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGxvb3BzOiBudW1iZXIgPSBNYXRoLmNlaWwobGVuZ3RoIC8gMTMpO1xuXG4gICAgcmV0dXJuIG5ldyBBcnJheShsb29wcykuZmlsbChyYW5kb20xM0NoYXJhY3RlcnMpLnJlZHVjZSgoc3RyaW5nLCBmdW5jKSA9PiB7XG4gICAgICByZXR1cm4gc3RyaW5nICsgZnVuYygpO1xuICAgIH0sICcnKS5zdWJzdHJpbmcoMCwgbGVuZ3RoKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTdHJpbmdzIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydFVucmVhY2hhYmxlKHg6IG5ldmVyKTogbmV2ZXIge1xuICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgdmFsdWUgWyR7eH1dLiBUaGlzIHNob3VsZCBuZXZlciBiZSByZWFjaGVkYCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGFzc2VydFVucmVhY2hhYmxlOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtJQXBwZW5kZXJ9IGZyb20gJy4vSUFwcGVuZGVyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXBwZW5kZXJzIHtcbiAgcHJpdmF0ZSBfYXBwZW5kZXJzOiBBcnJheTxJQXBwZW5kZXI+ID0gW107XG5cbiAgZ2V0IHZhbHVlKCk6IEFycmF5PElBcHBlbmRlcj4ge1xuICAgIHJldHVybiB0aGlzLl9hcHBlbmRlcnM7XG4gIH1cblxuICBhZGQoYXBwZW5kZXI6IElBcHBlbmRlcik6IHZvaWQge1xuICAgIHRoaXMuX2FwcGVuZGVycy5wdXNoKGFwcGVuZGVyKTtcbiAgfVxuXG4gIHJlbW92ZShhcHBlbmRlcjogSUFwcGVuZGVyKTogdm9pZCB7XG4gICAgdGhpcy5fYXBwZW5kZXJzID0gdGhpcy5fYXBwZW5kZXJzLnJlZHVjZSgoaXRlbXMsIGl0ZW0pID0+IHtcbiAgICAgIGlmICghKGl0ZW0gPT09IGFwcGVuZGVyKSkge1xuICAgICAgICBpdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaXRlbXM7XG4gICAgfSwgW10gYXMgQXJyYXk8SUFwcGVuZGVyPik7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7SUFwcGVuZGVyfSBmcm9tICcuL0lBcHBlbmRlcic7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbH0gZnJvbSAnLi9Mb2dnZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb25zb2xlQXBwZW5kZXIgaW1wbGVtZW50cyBJQXBwZW5kZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF90aHJlc2hvbGQ6IExvZ2dpbmdMZXZlbDtcblxuICBsb2cobG9nTGV2ZWw6IExvZ2dpbmdMZXZlbCwgbWVzc2FnZTogc3RyaW5nLCBjYXRlZ29yeTogc3RyaW5nLCBkYXRlOiBEYXRlKTogdm9pZCB7XG4gICAgaWYgKGxvZ0xldmVsIDwgdGhpcy5fdGhyZXNob2xkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZnVsbE1lc3NhZ2UgPSBgJHtkYXRlLnRvSVNPU3RyaW5nKCl9IFske2NhdGVnb3J5fV0gWyR7TG9nZ2luZ0xldmVsW2xvZ0xldmVsXX1dICR7bWVzc2FnZX1gO1xuXG4gICAgaWYgKGxvZ0xldmVsIDwgTG9nZ2luZ0xldmVsLldhcm4pIHtcbiAgICAgIGNvbnNvbGUubG9nKGZ1bGxNZXNzYWdlKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnNvbGUuZXJyb3IoZnVsbE1lc3NhZ2UpO1xuICB9XG5cbiAgY29uc3RydWN0b3IodGhyZXNob2xkOiBMb2dnaW5nTGV2ZWwpIHtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7SUFwcGVuZGVyfSBmcm9tICcuL0lBcHBlbmRlcic7XG5pbXBvcnQgQXBwZW5kZXJzIGZyb20gJy4vQXBwZW5kZXJzJztcbmltcG9ydCBMb2dnaW5nVGhyZXNob2xkIGZyb20gJy4vTG9nZ2luZ1RocmVzaG9sZCc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuXG5leHBvcnQgZW51bSBMb2dnaW5nTGV2ZWwge1xuICBBbGwgPSAtMSxcbiAgVHJhY2UgPSAxMCxcbiAgRGVidWcgPSAyMCxcbiAgSW5mbyA9IDMwLFxuICBXYXJuID0gNDAsXG4gIEVycm9yID0gNTAsXG4gIEZhdGFsID0gNjAsXG4gIE9mZiA9IDEwMCxcbn1cblxuZXhwb3J0IHR5cGUgTG9nZ2luZ0xldmVsVHlwZSA9ICdPZmYnIHwgJ1RyYWNlJyB8ICdEZWJ1ZycgfCAnSW5mbycgfCAnV2FybicgfCAnRXJyb3InIHwgJ0ZhdGFsJyB8ICdBbGwnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2dnZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF9jYXRlZ29yeTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hcHBlbmRlcnM6IEFwcGVuZGVycztcbiAgcHJpdmF0ZSByZWFkb25seSBfdGhyZXNob2xkOiBMb2dnaW5nVGhyZXNob2xkO1xuXG4gIGdldCBjYXRlZ29yeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9jYXRlZ29yeTtcbiAgfVxuXG4gIGdldCBhcHBlbmRlcnMoKTogQXBwZW5kZXJzIHtcbiAgICByZXR1cm4gdGhpcy5fYXBwZW5kZXJzO1xuICB9XG5cbiAgZ2V0IHRocmVzaG9sZCgpOiBMb2dnaW5nVGhyZXNob2xkIHtcbiAgICByZXR1cm4gdGhpcy5fdGhyZXNob2xkO1xuICB9XG5cbiAgdHJhY2UoLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLlRyYWNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLlRyYWNlLCBhcmdzKTtcbiAgfVxuXG4gIGRlYnVnKC4uLmFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGhyZXNob2xkLnZhbHVlIHx8IHRoaXMuX3RocmVzaG9sZC52YWx1ZSA+IExvZ2dpbmdMZXZlbC5EZWJ1Zykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nKExvZ2dpbmdMZXZlbC5EZWJ1ZywgYXJncyk7XG4gIH1cblxuICBpbmZvKC4uLmFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGhyZXNob2xkLnZhbHVlIHx8IHRoaXMuX3RocmVzaG9sZC52YWx1ZSA+IExvZ2dpbmdMZXZlbC5JbmZvKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLkluZm8sIGFyZ3MpO1xuICB9XG5cbiAgd2FybiguLi5hcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RocmVzaG9sZC52YWx1ZSB8fCB0aGlzLl90aHJlc2hvbGQudmFsdWUgPiBMb2dnaW5nTGV2ZWwuV2Fybikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nKExvZ2dpbmdMZXZlbC5XYXJuLCBhcmdzKTtcbiAgfVxuXG4gIGVycm9yKC4uLmFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGhyZXNob2xkLnZhbHVlIHx8IHRoaXMuX3RocmVzaG9sZC52YWx1ZSA+IExvZ2dpbmdMZXZlbC5FcnJvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nKExvZ2dpbmdMZXZlbC5FcnJvciwgYXJncyk7XG4gIH1cblxuICBmYXRhbCguLi5hcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RocmVzaG9sZC52YWx1ZSB8fCB0aGlzLl90aHJlc2hvbGQudmFsdWUgPiBMb2dnaW5nTGV2ZWwuRmF0YWwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuRmF0YWwsIGFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2cobGV2ZWw6IG51bWJlciwgYXJnczogYW55KTogdm9pZCB7XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgbWVzc2FnZSA9IHRoaXMucmVwbGFjZVBsYWNlaG9sZGVycyhhcmdzKTtcblxuICAgIHRoaXMuX2FwcGVuZGVycy52YWx1ZS5mb3JFYWNoKChhcHBlbmRlcjogSUFwcGVuZGVyKSA9PiB7XG4gICAgICBhcHBlbmRlci5sb2cobGV2ZWwsIG1lc3NhZ2UsIHRoaXMuY2F0ZWdvcnksIGRhdGUpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZXBsYWNlUGxhY2Vob2xkZXJzKGFyZ3M6IGFueSk6IHN0cmluZyB7XG4gICAgbGV0IHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcgPSBhcmdzWzBdO1xuICAgIGxldCBpbmRleCA9IDA7XG5cbiAgICB3aGlsZSAocmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5pbmRleE9mICYmIGFyZ3MubGVuZ3RoID4gMSAmJiBpbmRleCA+PSAwKSB7XG4gICAgICBpbmRleCA9IHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuaW5kZXhPZignJScsIGluZGV4KTtcblxuICAgICAgaWYgKGluZGV4ID4gMCkge1xuICAgICAgICBjb25zdCB0eXBlID0gcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5zdWJzdHJpbmcoaW5kZXggKyAxLCBpbmRleCArIDIpO1xuXG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgIGNhc2UgJyUnOlxuICAgICAgICAgICAgLy8gRXNjYXBlZCAnJSUnIHR1cm5zIGludG8gJyUnXG4gICAgICAgICAgICByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nID0gcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5zdWJzdHJpbmcoMCwgaW5kZXgpICsgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5zdWJzdHJpbmcoaW5kZXggKyAxKTtcbiAgICAgICAgICAgIGluZGV4Kys7XG5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ3MnOlxuICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgLy8gUmVwbGFjZSAnJWQnIG9yICclcycgd2l0aCB0aGUgYXJndW1lbnRcbiAgICAgICAgICAgIGFyZ3NbMF0gPSByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nID0gdGhpcy5yZXBsYWNlQXJndW1lbnQoXG4gICAgICAgICAgICAgIHRoaXMudG9TdHJpbmcoYXJnc1sxXSksXG4gICAgICAgICAgICAgIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcsXG4gICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgYXJncy5zcGxpY2UoMSwgMSk7XG5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2onOlxuICAgICAgICAgICAgLy8gUmVwbGFjZSAlaicgd2l0aCB0aGUgYXJndW1lbnRcbiAgICAgICAgICAgIGFyZ3NbMF0gPSByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nID0gdGhpcy5yZXBsYWNlQXJndW1lbnQoXG4gICAgICAgICAgICAgIHRoaXMuc3RyaW5naWZ5KGFyZ3NbMV0pLFxuICAgICAgICAgICAgICByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLFxuICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgYXJncy5zcGxpY2UoMSwgMSk7XG5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gYXJncy50b1N0cmluZygpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGFyZ3MubGVuZ3RoID4gMSkge1xuICAgICAgYXJncyA9IGFyZ3MucmVkdWNlKChhY2N1bXVsYXRvcjogc3RyaW5nLCBjdXJyZW50VmFsdWU6IHN0cmluZyB8IEVycm9yLCBpbmRleDogbnVtYmVyLCBhcnJheTogc3RyaW5nW10pID0+IHtcbiAgICAgICAgaWYgKGluZGV4ICsgMSA9PT0gYXJyYXkubGVuZ3RoICYmIGN1cnJlbnRWYWx1ZSBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmVycm9yU3RhY2tBbHNvSGFzRXJyb3JNZXNzYWdlKSB7XG4gICAgICAgICAgICByZXR1cm4gYWNjdW11bGF0b3IgKyAnXFxuJyArIHRoaXMudG9TdHJpbmcoY3VycmVudFZhbHVlLnN0YWNrKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gYWNjdW11bGF0b3IgKyAnXFxuJyArIHRoaXMudG9TdHJpbmcoY3VycmVudFZhbHVlLm1lc3NhZ2UpICsgJ1xcbicgKyB0aGlzLnRvU3RyaW5nKGN1cnJlbnRWYWx1ZS5zdGFjayk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYWNjdW11bGF0b3IgKyBgWyR7dGhpcy50b1N0cmluZyhjdXJyZW50VmFsdWUpfV1gO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFyZ3MudG9TdHJpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RyaW5naWZ5KGFyZzogYW55KTogc3RyaW5nIHtcbiAgICBjb25zdCBjYWNoZTogb2JqZWN0W10gPSBbXTtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoXG4gICAgICAgIGFyZyBpbnN0YW5jZW9mIEVycm9yID8gdGhpcy50b1N0cmluZyhhcmcpIDogYXJnLFxuICAgICAgICAoXywgdmFsdWUpID0+IHtcbiAgICAgICAgICBpZiAoISF2YWx1ZSAmJiB2YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgICAgICAgICAgaWYgKGNhY2hlLmluY2x1ZGVzKHZhbHVlKSkge1xuICAgICAgICAgICAgICByZXR1cm4gJzxyZWN1cnNpdmU+JztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2FjaGUucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9LFxuICAgICAgICAyXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiAnW29iamVjdCBpbnZhbGlkIEpTT04uc3RyaW5naWZ5XSc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXBsYWNlQXJndW1lbnQoYXJndW1lbnQ6IGFueSwgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZzogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5zdWJzdHJpbmcoMCwgaW5kZXgpICsgdGhpcy50b1N0cmluZyhhcmd1bWVudCkgKyByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLnN1YnN0cmluZyhpbmRleCArIDIpO1xuICB9XG5cbiAgcHJpdmF0ZSB0b1N0cmluZyhkYXRhOiBhbnkpOiBzdHJpbmcge1xuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICByZXR1cm4gZGF0YSA/ICd0cnVlJyA6ICdmYWxzZSc7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBkYXRhID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIGRhdGEudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBsZXQgdG9TdHJpbmdTdHIgPSAnJztcblxuICAgIGlmIChkYXRhKSB7XG4gICAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdG9TdHJpbmdTdHIgPSBkYXRhLnRvU3RyaW5nKCk7XG4gICAgICB9IGVsc2UgaWYgKGRhdGEgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0b1N0cmluZ1N0ciA9IGRhdGEudG9TdHJpbmcoKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHRvU3RyaW5nU3RyID0gJ1tvYmplY3QgaW52YWxpZCB0b1N0cmluZygpXSc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdG9TdHJpbmdTdHI7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihjYXRlZ29yeTogc3RyaW5nLCBhcHBlbmRlcnM6IEFwcGVuZGVycywgdGhyZXNob2xkOiBMb2dnaW5nVGhyZXNob2xkKSB7XG4gICAgdGhpcy5fY2F0ZWdvcnkgPSBjYXRlZ29yeTtcbiAgICB0aGlzLl9hcHBlbmRlcnMgPSBhcHBlbmRlcnM7XG4gICAgdGhpcy5fdGhyZXNob2xkID0gdGhyZXNob2xkO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgQnVpbGRGZWF0dXJlcyBmcm9tICcuLi9lbnZpcm9ubWVudC9CdWlsZEZlYXR1cmVzJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2VyRGVmYXVsdHMge1xuICBzdGF0aWMgZ2V0IGRlZmF1bHRMb2dnaW5nTGV2ZWwoKTogTG9nZ2luZ0xldmVsIHtcbiAgICByZXR1cm4gTG9nZ2luZ0xldmVsW0J1aWxkRmVhdHVyZXMuc2VuZExvZ3NdO1xuICB9XG5cbiAgc3RhdGljIGdldCBkZWZhdWx0Q29uc29sZUxvZ2dpbmdMZXZlbCgpOiBMb2dnaW5nTGV2ZWwge1xuICAgIHJldHVybiBMb2dnaW5nTGV2ZWxbQnVpbGRGZWF0dXJlcy5sb2dUb0NvbnNvbGVdO1xuICB9XG5cbiAgc3RhdGljIGdldCBkZWZhdWx0VGVsZW1ldHJ5TG9nZ2luZ0xldmVsKCk6IExvZ2dpbmdMZXZlbCB7XG4gICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5JbmZvO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4vTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXIsIHtMb2dnaW5nTGV2ZWwsIExvZ2dpbmdMZXZlbFR5cGV9IGZyb20gJy4vTG9nZ2VyJztcbmltcG9ydCBBcHBlbmRlcnMgZnJvbSAnLi9BcHBlbmRlcnMnO1xuaW1wb3J0IExvZ2dpbmdUaHJlc2hvbGQgZnJvbSAnLi9Mb2dnaW5nVGhyZXNob2xkJztcbmltcG9ydCBDb25zb2xlQXBwZW5kZXIgZnJvbSAnLi9Db25zb2xlQXBwZW5kZXInO1xuaW1wb3J0IFRlbGVtZXRyeUFwcGVuZGVyIGZyb20gJy4uL3RlbGVtZXRyeS9UZWxlbWV0cnlBcGVuZGVyJztcbmltcG9ydCBUZWxlbWV0cnlDb25maWd1cmF0aW9uIGZyb20gJy4uL3RlbGVtZXRyeS9UZWxlbWV0cnlDb25maWd1cmF0aW9uJztcbmltcG9ydCBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIGZyb20gJy4uL2RvbS9Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyJztcbmltcG9ydCBMb2dnZXJEZWZhdWx0cyBmcm9tICcuL0xvZ2dlckRlZmF1bHRzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2VyRmFjdG9yeSB7XG4gIHByaXZhdGUgc3RhdGljIF9sb2dnZXJzOiB7W2NhdGVnb3J5OiBzdHJpbmddOiBJTG9nZ2VyfSA9IHt9O1xuICBwcml2YXRlIHN0YXRpYyBfYXBwZW5kZXJzOiBBcHBlbmRlcnMgPSBuZXcgQXBwZW5kZXJzKCk7XG4gIHByaXZhdGUgc3RhdGljIF90aHJlc2hvbGQ6IExvZ2dpbmdUaHJlc2hvbGQgPSBuZXcgTG9nZ2luZ1RocmVzaG9sZCgpO1xuICBwcml2YXRlIHN0YXRpYyBfdGVsZW1ldHJ5Q29uZmlndXJhdGlvbjogVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiA9IG5ldyBUZWxlbWV0cnlDb25maWd1cmF0aW9uKCk7XG5cbiAgc3RhdGljIGdldCB0ZWxlbWV0cnlDb25maWd1cmF0aW9uKCk6IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24ge1xuICAgIHJldHVybiBMb2dnZXJGYWN0b3J5Ll90ZWxlbWV0cnlDb25maWd1cmF0aW9uO1xuICB9XG5cbiAgc3RhdGljIGdldExvZ2dlcihjYXRlZ29yeTogc3RyaW5nKTogSUxvZ2dlciB7XG4gICAgaWYgKHR5cGVvZiBjYXRlZ29yeSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIGNhdGVnb3J5ID0gJ1NESyc7XG4gICAgfVxuXG4gICAgY29uc3QgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5fbG9nZ2Vyc1tjYXRlZ29yeV07XG5cbiAgICBpZiAobG9nZ2VyKSB7XG4gICAgICByZXR1cm4gbG9nZ2VyO1xuICAgIH1cblxuICAgIHJldHVybiBMb2dnZXJGYWN0b3J5Ll9sb2dnZXJzW2NhdGVnb3J5XSA9IG5ldyBMb2dnZXIoY2F0ZWdvcnksIHRoaXMuX2FwcGVuZGVycywgdGhpcy5fdGhyZXNob2xkKTtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUxvZ2dlckNvbmZpZ0Zyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIExvZ2dlckZhY3RvcnkuYXBwbHlMb2dnaW5nTGV2ZWwoKTtcbiAgICBMb2dnZXJGYWN0b3J5LmFwcGx5QXBwZW5kZXJMb2dnaW5nTGV2ZWwoJ2NvbnNvbGUnLCBMb2dnZXJGYWN0b3J5LmFwcGx5Q29uc29sZUxvZ2dlci5iaW5kKHRoaXMpKTtcbiAgICBMb2dnZXJGYWN0b3J5LmFwcGx5QXBwZW5kZXJMb2dnaW5nTGV2ZWwoJ3RlbGVtZXRyeScsIExvZ2dlckZhY3RvcnkuYXBwbHlUZWxlbWV0cnlMb2dnZXIuYmluZCh0aGlzKSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBhcHBseUxvZ2dpbmdMZXZlbCgpOiB2b2lkIHtcbiAgICBjb25zdCBwYXJhbWV0ZXJWYWx1ZSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0U3RyaW5nVmFsdWUoJ3BoZW5peC1sb2dnaW5nLWxldmVsJykgYXMgTG9nZ2luZ0xldmVsVHlwZTtcblxuICAgIGlmIChMb2dnaW5nTGV2ZWxbcGFyYW1ldGVyVmFsdWVdKSB7XG4gICAgICB0aGlzLl90aHJlc2hvbGQuc2V0VGhyZXNob2xkKExvZ2dpbmdMZXZlbFtwYXJhbWV0ZXJWYWx1ZV0pO1xuICAgIH1cblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFwcGx5QXBwZW5kZXJMb2dnaW5nTGV2ZWwobmFtZTogc3RyaW5nLCBhcHBseUFwcGVuZGVyOiAobGV2ZWw6IExvZ2dpbmdMZXZlbCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIGNvbnN0IHBhcmFtZXRlclZhbHVlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZShgcGhlbml4LSR7bmFtZX0tbG9nZ2luZy1sZXZlbGApIGFzIExvZ2dpbmdMZXZlbFR5cGU7XG5cbiAgICBpZiAocGFyYW1ldGVyVmFsdWUgPT09ICdPZmYnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXBwbHlBcHBlbmRlcihMb2dnaW5nTGV2ZWxbcGFyYW1ldGVyVmFsdWVdKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFwcGx5Q29uc29sZUxvZ2dlcihsZXZlbDogTG9nZ2luZ0xldmVsKTogdm9pZCB7XG4gICAgdGhpcy5fYXBwZW5kZXJzLmFkZChuZXcgQ29uc29sZUFwcGVuZGVyKGxldmVsIHx8IExvZ2dlckRlZmF1bHRzLmRlZmF1bHRDb25zb2xlTG9nZ2luZ0xldmVsKSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBhcHBseVRlbGVtZXRyeUxvZ2dlcihsZXZlbDogTG9nZ2luZ0xldmVsKTogdm9pZCB7XG4gICAgdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50aHJlc2hvbGQgPSBsZXZlbCB8fCBMb2dnZXJEZWZhdWx0cy5kZWZhdWx0VGVsZW1ldHJ5TG9nZ2luZ0xldmVsO1xuXG4gICAgdGhpcy5fYXBwZW5kZXJzLmFkZChuZXcgVGVsZW1ldHJ5QXBwZW5kZXIodGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbikpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0xvZ2dlckZhY3RvcnkgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59XG5cbkxvZ2dlckZhY3RvcnkuYXBwbHlMb2dnZXJDb25maWdGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWwsIExvZ2dpbmdMZXZlbFR5cGV9IGZyb20gJy4vTG9nZ2VyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2luZ0xldmVsTWFwcGluZyB7XG4gIHN0YXRpYyBjb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlKGxvZ2dpbmdMZXZlbDogTG9nZ2luZ0xldmVsKTogTG9nZ2luZ0xldmVsVHlwZSB7XG4gICAgc3dpdGNoIChsb2dnaW5nTGV2ZWwpIHtcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLk9mZjpcbiAgICAgICAgcmV0dXJuICdPZmYnO1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuVHJhY2U6XG4gICAgICAgIHJldHVybiAnVHJhY2UnO1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuRGVidWc6XG4gICAgICAgIHJldHVybiAnRGVidWcnO1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuSW5mbzpcbiAgICAgICAgcmV0dXJuICdJbmZvJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLldhcm46XG4gICAgICAgIHJldHVybiAnV2Fybic7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5FcnJvcjpcbiAgICAgICAgcmV0dXJuICdFcnJvcic7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5GYXRhbDpcbiAgICAgICAgcmV0dXJuICdGYXRhbCc7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5BbGw6XG4gICAgICAgIHJldHVybiAnQWxsJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGxvZ2dpbmdMZXZlbCk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGNvbnZlcnRMb2dnaW5nTGV2ZWxUeXBlVG9Mb2dnaW5nTGV2ZWwobG9nZ2luZ0xldmVsVHlwZTogTG9nZ2luZ0xldmVsVHlwZSk6IExvZ2dpbmdMZXZlbCB7XG4gICAgc3dpdGNoIChsb2dnaW5nTGV2ZWxUeXBlKSB7XG4gICAgICBjYXNlICdPZmYnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLk9mZjtcbiAgICAgIGNhc2UgJ1RyYWNlJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5UcmFjZTtcbiAgICAgIGNhc2UgJ0RlYnVnJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5EZWJ1ZztcbiAgICAgIGNhc2UgJ0luZm8nOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkluZm87XG4gICAgICBjYXNlICdXYXJuJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5XYXJuO1xuICAgICAgY2FzZSAnRXJyb3InOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkVycm9yO1xuICAgICAgY2FzZSAnRmF0YWwnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkZhdGFsO1xuICAgICAgY2FzZSAnQWxsJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5BbGw7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShsb2dnaW5nTGV2ZWxUeXBlKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBMb2dnZXJEZWZhdWx0cyBmcm9tICcuL0xvZ2dlckRlZmF1bHRzJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsfSBmcm9tICcuL0xvZ2dlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvZ2dpbmdUaHJlc2hvbGQge1xuICBwcml2YXRlIF90aHJlc2hvbGQ6IExvZ2dpbmdMZXZlbCA9IExvZ2dlckRlZmF1bHRzLmRlZmF1bHRMb2dnaW5nTGV2ZWw7XG5cbiAgZ2V0IHZhbHVlKCk6IExvZ2dpbmdMZXZlbCB7XG4gICAgcmV0dXJuIHRoaXMuX3RocmVzaG9sZDtcbiAgfVxuXG4gIHNldFRocmVzaG9sZCh0aHJlc2hvbGQ6IExvZ2dpbmdMZXZlbCk6IHZvaWQge1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRocmVzaG9sZDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtUZWxlbWV0cnlMZXZlbH0gZnJvbSAnLi9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQgTWV0cmljc1R5cGUgZnJvbSAnLi9NZXRyaWNzVHlwZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1ldHJpY1R5cGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZXRyaWNzOiBNZXRyaWNzVHlwZTtcblxuICBjb25zdHJ1Y3RvcihtZXRyaWNzOiBNZXRyaWNzVHlwZSkge1xuICAgIHRoaXMuX21ldHJpY3MgPSBtZXRyaWNzO1xuICB9XG5cbiAgZ2V0TmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBNZXRyaWNzVHlwZVt0aGlzLl9tZXRyaWNzXTtcbiAgfVxuXG4gIGdldFRlbGVtZXRyeUxldmVsKCk6IFRlbGVtZXRyeUxldmVsIHtcbiAgICBzd2l0Y2ggKHRoaXMuX21ldHJpY3MpIHtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuVGltZVRvRmlyc3RGcmFtZTpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkVzc2VudGlhbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuQ2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZTpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkVzc2VudGlhbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuU3RhbGxlZDpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuQnVmZmVyaW5nOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5TZXR1cENvbXBsZXRlZDpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuU2V0dXBGYWlsZWQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlJvdW5kVHJpcFRpbWU6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLkRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5OlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5OZXR3b3JrVHlwZTpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuUmVzb2x1dGlvbkNoYW5nZWQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLkFwcGxpY2F0aW9uRm9yZWdyb3VuZDpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuQXBwbGljYXRpb25CYWNrZ3JvdW5kOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUodGhpcy5fbWV0cmljcyk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IFRlbGVtZXRyeURlZmF1bHQgZnJvbSAnLi9UZWxlbWV0cnlEZWZhdWx0JztcblxuZXhwb3J0IGVudW0gVGVsZW1ldHJ5TGV2ZWwge1xuICBPZmYgPSAxMDAsXG4gIEVzc2VudGlhbCA9IDEwLFxuICBBbGwgPSAtMVxufVxuXG5leHBvcnQgdHlwZSBUZWxlbWV0cnlMZXZlbFR5cGUgPSAnT2ZmJyB8ICdFc3NlbnRpYWwnIHwgJ0FsbCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1ldHJpY3NDb25maWd1cmF0aW9uIHtcbiAgcHJpdmF0ZSBfdXJsID0gJ2h0dHBzOi8vdGVsZW1ldHJ5LnBoZW5peHJ0cy5jb20vdGVsZW1ldHJ5L21ldHJpY3MnO1xuICBwcml2YXRlIF90ZW5hbmN5OiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX3Nlc3Npb25JZDogc3RyaW5nID0gJy0nO1xuICBwcml2YXRlIF9lbnZpcm9ubWVudDogc3RyaW5nID0gJy0nO1xuICBwcml2YXRlIF90aHJlc2hvbGQ6IFRlbGVtZXRyeUxldmVsID0gVGVsZW1ldHJ5RGVmYXVsdC5kZWZhdWx0VGVsZW1ldHJ5TGV2ZWw7XG5cbiAgZ2V0IHVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl91cmw7XG4gIH1cblxuICBzZXQgdXJsKHVybDogc3RyaW5nKSB7XG4gICAgY29uc3QgbWV0cmljc1VybCA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodXJsKTtcblxuICAgIG1ldHJpY3NVcmwucGF0aG5hbWUgPSBtZXRyaWNzVXJsLnBhdGhuYW1lICsgJy9tZXRyaWNzJztcblxuICAgIHRoaXMuX3VybCA9IG1ldHJpY3NVcmwudG9TdHJpbmcoKTtcbiAgfVxuXG4gIGdldCBlbnZpcm9ubWVudCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9lbnZpcm9ubWVudDtcbiAgfVxuXG4gIHNldCBlbnZpcm9ubWVudChlbnZpcm9ubWVudDogc3RyaW5nKSB7XG4gICAgdGhpcy5fZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgfVxuXG4gIGdldCB0ZW5hbmN5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3RlbmFuY3k7XG4gIH1cblxuICBzZXQgdGVuYW5jeSh0ZW5hbmN5OiBzdHJpbmcpIHtcbiAgICB0aGlzLl90ZW5hbmN5ID0gdGVuYW5jeTtcbiAgfVxuXG4gIGdldCBzZXNzaW9uSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc2Vzc2lvbklkO1xuICB9XG5cbiAgc2V0IHNlc3Npb25JZChzZXNzaW9uSWQ6IHN0cmluZykge1xuICAgIHRoaXMuX3Nlc3Npb25JZCA9IHNlc3Npb25JZDtcbiAgfVxuXG4gIGdldCB0aHJlc2hvbGQoKTogVGVsZW1ldHJ5TGV2ZWwge1xuICAgIHJldHVybiB0aGlzLl90aHJlc2hvbGQ7XG4gIH1cblxuICBzZXQgdGhyZXNob2xkKHRocmVzaG9sZDogVGVsZW1ldHJ5TGV2ZWwpIHtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBNZXRyaWNzU2VydmljZSBmcm9tICcuL01ldHJpY3NTZXJ2aWNlJztcbmltcG9ydCBNZXRyaWNzQ29uZmlndXJhdGlvbiwge1RlbGVtZXRyeUxldmVsfSBmcm9tICcuL01ldHJpY3NDb25maWd1cmF0aW9uJztcbmltcG9ydCBTREsgZnJvbSAnLi4vc2RrL1NESyc7XG5pbXBvcnQgVGVsZW1ldHJ5VXJsIGZyb20gJy4uL3Nkay9UZWxlbWV0cnlVcmwnO1xuaW1wb3J0IEVudmlyb25tZW50IGZyb20gJy4uL3Nkay9FbnZpcm9ubWVudCc7XG5pbXBvcnQgVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nIGZyb20gJy4vVGVsZW1ldHJpY0xldmVsTWFwcGluZyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1ldHJpY3NGYWN0b3J5IHtcbiAgcHJpdmF0ZSBzdGF0aWMgX21ldHJpY3NTZXJ2aWNlczoge1tjYXRlZ29yeTogc3RyaW5nXTogTWV0cmljc1NlcnZpY2V9ID0ge307XG5cbiAgc3RhdGljIGdldE1ldHJpY3NTZXJ2aWNlKHVybDogc3RyaW5nKTogTWV0cmljc1NlcnZpY2Uge1xuICAgIGlmICh0eXBlb2YgdXJsICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGB1cmwgbXVzdCBiZSBhIHN0cmluZyBpbnN0ZWFkIHJlY2VpdmVkIFske3R5cGVvZiB1cmx9XWApO1xuICAgIH1cblxuICAgIGNvbnN0IG1ldHJpY3NTZXJ2aWNlcyA9IE1ldHJpY3NGYWN0b3J5Ll9tZXRyaWNzU2VydmljZXNbdXJsXTtcblxuICAgIGlmIChtZXRyaWNzU2VydmljZXMpIHtcbiAgICAgIHJldHVybiBtZXRyaWNzU2VydmljZXM7XG4gICAgfVxuXG4gICAgY29uc3QgbWV0cmljc0NvbmZpZ3VyYXRpb24gPSBuZXcgTWV0cmljc0NvbmZpZ3VyYXRpb24oKTtcblxuICAgIG1ldHJpY3NDb25maWd1cmF0aW9uLnNlc3Npb25JZCA9IFNESy5jbGllbnRTZXNzaW9uSWQ7XG4gICAgbWV0cmljc0NvbmZpZ3VyYXRpb24udGVuYW5jeSA9IFNESy50ZW5hbmN5LnZhbHVlO1xuICAgIG1ldHJpY3NDb25maWd1cmF0aW9uLnVybCA9IFRlbGVtZXRyeVVybC5nZXRUZWxlbWV0cnlVcmwodXJsKTtcbiAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi5lbnZpcm9ubWVudCA9IEVudmlyb25tZW50LmdldEVudmlyb25tZW50RnJvbVVybCh1cmwpO1xuXG4gICAgbWV0cmljc0NvbmZpZ3VyYXRpb24udGhyZXNob2xkID0gVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nLmNvbnZlcnRUZWxlbWV0cnlMZXZlbFR5cGVUb1RlbGVtZXRyeUxldmVsKFNESy50ZWxlbWV0cnlMZXZlbCk7XG5cbiAgICByZXR1cm4gTWV0cmljc0ZhY3RvcnkuX21ldHJpY3NTZXJ2aWNlc1t1cmxdID0gbmV3IE1ldHJpY3NTZXJ2aWNlKG1ldHJpY3NDb25maWd1cmF0aW9uKTtcbiAgfVxuXG4gIHN0YXRpYyBzZXRUZWxlbWV0cnlMZXZlbCh0ZWxlbWV0cnlMZXZlbDogVGVsZW1ldHJ5TGV2ZWwpOiB2b2lkIHtcbiAgICBjb25zdCBtZXRyaWNzU2VydmljZXMgPSBPYmplY3QudmFsdWVzKE1ldHJpY3NGYWN0b3J5Ll9tZXRyaWNzU2VydmljZXMpO1xuXG4gICAgaWYgKG1ldHJpY3NTZXJ2aWNlcyAmJiBtZXRyaWNzU2VydmljZXMubGVuZ3RoKSB7XG4gICAgICBtZXRyaWNzU2VydmljZXMuZm9yRWFjaChtZXRyaWNzU2VydmljZSA9PiB7XG4gICAgICAgIGNvbnN0IG1ldHJpY3NDb25maWd1cmF0aW9uID0gbWV0cmljc1NlcnZpY2UubWV0cmljc0NvbmZpZ3VyYXRpb247XG5cbiAgICAgICAgbWV0cmljc0NvbmZpZ3VyYXRpb24udGhyZXNob2xkID0gdGVsZW1ldHJ5TGV2ZWw7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0cmljc0ZhY3RvcnkgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBFeHBvbmVudGlhbEJhY2tvZmYgZnJvbSAnLi4vdGltZS9FeHBvbmVudGlhbEJhY2tvZmYnO1xuaW1wb3J0IFZlcnNpb25NYW5hZ2VyIGZyb20gJy4uL3Nkay92ZXJzaW9uL1ZlcnNpb25NYW5hZ2VyJztcbmltcG9ydCBNZXRyaWNUeXBlIGZyb20gJy4vTWV0cmljVHlwZSc7XG5pbXBvcnQgTWV0cmljc1R5cGUgZnJvbSAnLi9NZXRyaWNzVHlwZSc7XG5pbXBvcnQgTWV0cmljc0NvbmZpZ3VyYXRpb24gZnJvbSAnLi9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5cbmNvbnN0IHJlcXVlc3RTaXplTGltaXQgPSAxMDI0O1xuY29uc3QgbWF4QnVmZmVyZWRSZWNvcmRzID0gMjA0ODtcblxuaW50ZXJmYWNlIElWYWx1ZSB7XG4gIHN0cmluZz86IHN0cmluZztcbiAgdWludDY0PzogbnVtYmVyO1xuICBmbG9hdD86IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIElNZXRyaWNSZWNvcmQge1xuICB0aW1lc3RhbXA6IHN0cmluZztcbiAgdGVuYW5jeTogc3RyaW5nO1xuICBzZXNzaW9uSWQ6IHN0cmluZztcbiAgc3RyZWFtSWQ/OiBzdHJpbmc7XG4gIG1ldHJpYzogc3RyaW5nO1xuICB2YWx1ZT86IElWYWx1ZTtcbiAgcHJldmlvdXNWYWx1ZT86IElWYWx1ZTtcbiAgZnVsbFF1YWxpZmllZE5hbWU6IHN0cmluZztcbiAgZW52aXJvbm1lbnQ6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBydW50aW1lOiBudW1iZXI7XG4gIHJlc291cmNlPzogc3RyaW5nO1xuICBraW5kPzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgSU1ldHJpYyB7XG4gIHN0cmVhbUlkPzogc3RyaW5nO1xuICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZTtcbiAgdmFsdWU/OiBJVmFsdWU7XG4gIHByZXZpb3VzVmFsdWU/OiBJVmFsdWU7XG4gIHJ1bnRpbWU6IG51bWJlcjtcbiAgcmVzb3VyY2U/OiBzdHJpbmc7XG4gIGtpbmQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1ldHJpY3NTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ01ldHJpY3NTZXJ2aWNlJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21ldHJpY3NDb25maWd1cmF0aW9uOiBNZXRyaWNzQ29uZmlndXJhdGlvbjtcbiAgcHJpdmF0ZSByZWFkb25seSBfZXhwb25lbnRpYWxCYWNrb2ZmOiBFeHBvbmVudGlhbEJhY2tvZmY7XG4gIHByaXZhdGUgX21ldHJpY3M6IEFycmF5PElNZXRyaWNSZWNvcmQ+ID0gW107XG4gIHByaXZhdGUgX2lzU2VuZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9mYWlsdXJlQ291bnQgPSAwO1xuICBwcml2YXRlIF9kb21haW4gPSAnJztcblxuICBjb25zdHJ1Y3RvcihtZXRyaWNzQ29uZmlndXJhdGlvbjogTWV0cmljc0NvbmZpZ3VyYXRpb24pIHtcbiAgICB0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbiA9IG1ldHJpY3NDb25maWd1cmF0aW9uO1xuICAgIHRoaXMuX2V4cG9uZW50aWFsQmFja29mZiA9IG5ldyBFeHBvbmVudGlhbEJhY2tvZmYoKTtcbiAgICB0aGlzLmdldExvY2F0aW9uSG9zdG5hbWVGcm9tR2xvYmFsU2NvcGUoKS50aGVuKGxvY2F0aW9uSG9zdG5hbWUgPT4ge1xuICAgICAgdGhpcy5fZG9tYWluID0gbG9jYXRpb25Ib3N0bmFtZTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBtZXRyaWNzQ29uZmlndXJhdGlvbigpOiBNZXRyaWNzQ29uZmlndXJhdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uO1xuICB9XG5cbiAgcHVzaChtZXRyaWM6IElNZXRyaWMpOiB2b2lkIHtcbiAgICBjb25zdCB7c3RyZWFtSWQsIHZhbHVlLCBwcmV2aW91c1ZhbHVlLCBydW50aW1lLCByZXNvdXJjZSwga2luZH0gPSBtZXRyaWM7XG4gICAgY29uc3QgbWV0cmljVHlwZSA9IG5ldyBNZXRyaWNUeXBlKG1ldHJpYy5tZXRyaWNUeXBlKTtcblxuICAgIGlmICh0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbi50aHJlc2hvbGQgPiBtZXRyaWNUeXBlLmdldFRlbGVtZXRyeUxldmVsKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBtZXRyaWNSZWNvcmQgPSB7XG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIHRlbmFuY3k6IHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uLnRlbmFuY3ksXG4gICAgICBzZXNzaW9uSWQ6IHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uLnNlc3Npb25JZCxcbiAgICAgIHN0cmVhbUlkLFxuICAgICAgbWV0cmljOiBtZXRyaWNUeXBlLmdldE5hbWUoKSxcbiAgICAgIHZhbHVlLFxuICAgICAgcHJldmlvdXNWYWx1ZSxcbiAgICAgIGZ1bGxRdWFsaWZpZWROYW1lOiB0aGlzLl9kb21haW4sXG4gICAgICBlbnZpcm9ubWVudDogdGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb24uZW52aXJvbm1lbnQsXG4gICAgICB2ZXJzaW9uOiBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uLFxuICAgICAgcnVudGltZSxcbiAgICAgIHJlc291cmNlLFxuICAgICAga2luZFxuICAgIH07XG5cbiAgICB0aGlzLl9tZXRyaWNzLnB1c2gobWV0cmljUmVjb3JkKTtcblxuICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRNZXRyaWNzSWZBYmxlKCk7XG4gIH1cblxuICBwcml2YXRlIGdldExvY2F0aW9uSG9zdG5hbWVGcm9tR2xvYmFsU2NvcGUoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8c3RyaW5nPihyZXNvbHZlTG9jYXRpb25Ib3N0bmFtZSA9PiB7XG4gICAgICBjb25zdCBnbG9iYWxTY29wZVN1YnNjcmlwdGlvbiA9IEdsb2JhbFNjb3BlLnN1YnNjcmliZShnbG9iYWxTY29wZSA9PiB7XG4gICAgICAgIGlmICghZ2xvYmFsU2NvcGUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXNvbHZlTG9jYXRpb25Ib3N0bmFtZShnbG9iYWxTY29wZS5sb2NhdGlvbkhvc3RuYW1lKTtcbiAgICAgICAgZ2xvYmFsU2NvcGUuc2V0VGltZW91dCgoKSA9PiBnbG9iYWxTY29wZVN1YnNjcmlwdGlvbi5kaXNwb3NlKCksIDApO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNlbmRNZXRyaWNzKG1ldHJpY3NNZXNzYWdlczogQXJyYXk8SU1ldHJpY1JlY29yZD4pOiBQcm9taXNlPFJlc3BvbnNlPiB7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeSh7cmVjb3JkczogbWV0cmljc01lc3NhZ2VzfSkpO1xuXG4gICAgcmV0dXJuIGF3YWl0IEdsb2JhbFNjb3BlLnZhbHVlLmZldGNoKHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uLnVybCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBmb3JtRGF0YVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kTWV0cmljc0lmQWJsZSgpOiBQcm9taXNlPFJlc3BvbnNlIHwgdm9pZD4ge1xuICAgIGlmICh0aGlzLl9tZXRyaWNzLmxlbmd0aCA8PSAwIHx8IHRoaXMuX2lzU2VuZGluZyB8fCAhR2xvYmFsU2NvcGUudmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9pc1NlbmRpbmcgPSB0cnVlO1xuXG4gICAgY29uc3QgbWV0cmljc01lc3NhZ2VzID0gdGhpcy5fbWV0cmljcy5zbGljZSgwLCByZXF1ZXN0U2l6ZUxpbWl0KTtcblxuICAgIHRoaXMuX21ldHJpY3MgPSB0aGlzLl9tZXRyaWNzLnNsaWNlKHJlcXVlc3RTaXplTGltaXQpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2VuZE1ldHJpY3MobWV0cmljc01lc3NhZ2VzKS50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgIGlmICh0aGlzLmlzUmVzcG9uc2VTdGF0dXNDb2RlUmV0cnlhYmxlKHJlc3BvbnNlKSkge1xuICAgICAgICBpZiAodGhpcy5fbWV0cmljcy5sZW5ndGggPD0gbWF4QnVmZmVyZWRSZWNvcmRzKSB7XG4gICAgICAgICAgdGhpcy5fZmFpbHVyZUNvdW50Kys7XG5cbiAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX21ldHJpY3MgPSBbLi4ubWV0cmljc01lc3NhZ2VzLCAuLi50aGlzLl9tZXRyaWNzXTtcblxuICAgICAgICAgICAgdGhpcy5faXNTZW5kaW5nID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRNZXRyaWNzSWZBYmxlKCk7XG4gICAgICAgICAgfSwgdGhpcy5fZXhwb25lbnRpYWxCYWNrb2ZmLmdldEV4cG9uZW50aWFsQmFja29mZkludGVydmFsQnlGYWlsdXJlQ291bnQodGhpcy5fZmFpbHVyZUNvdW50KSk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ1RvbyBtYW55IGNhY2hlZCBtZXRyaWMgcmVjb3JkcyBbJXNdLCBkcm9wcGluZyBbJXNdIHJlY29yZHMnLCB0aGlzLl9tZXRyaWNzLmxlbmd0aCwgbWV0cmljc01lc3NhZ2VzLmxlbmd0aCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2lzU2VuZGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5fZmFpbHVyZUNvdW50ID0gMDtcblxuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZE1ldHJpY3NJZkFibGUoKTtcblxuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgIHRoaXMuX2lzU2VuZGluZyA9IGZhbHNlO1xuXG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTWV0cmljc0lmQWJsZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1Jlc3BvbnNlU3RhdHVzQ29kZVJldHJ5YWJsZSh7c3RhdHVzfTogUmVzcG9uc2UpOiBib29sZWFuIHtcbiAgICByZXR1cm4gL141XFxkezJ9JC8udGVzdChzdGF0dXMudG9TdHJpbmcoKSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmVudW0gTWV0cmljc1R5cGUge1xuICBUaW1lVG9GaXJzdEZyYW1lLFxuICBDaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lLFxuICBTdGFsbGVkLFxuICBCdWZmZXJpbmcsXG4gIFNldHVwQ29tcGxldGVkLFxuICBTZXR1cEZhaWxlZCxcbiAgUm91bmRUcmlwVGltZSxcbiAgRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHksXG4gIE5ldHdvcmtUeXBlLFxuICBSZXNvbHV0aW9uQ2hhbmdlZCxcbiAgQXBwbGljYXRpb25Gb3JlZ3JvdW5kLFxuICBBcHBsaWNhdGlvbkJhY2tncm91bmRcbn1cblxuZXhwb3J0IGRlZmF1bHQgTWV0cmljc1R5cGU7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge1RlbGVtZXRyeUxldmVsLCBUZWxlbWV0cnlMZXZlbFR5cGV9IGZyb20gJy4vTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlMZXZlbE1hcHBpbmcge1xuICBzdGF0aWMgY29udmVydFRlbGVtZXRyeUxldmVsVG9UZWxlbWV0cnlMZXZlbFR5cGUodGVsZW1ldHJ5TGV2ZWw6IFRlbGVtZXRyeUxldmVsKTogVGVsZW1ldHJ5TGV2ZWxUeXBlIHtcbiAgICBzd2l0Y2ggKHRlbGVtZXRyeUxldmVsKSB7XG4gICAgICBjYXNlIFRlbGVtZXRyeUxldmVsLk9mZjpcbiAgICAgICAgcmV0dXJuICdPZmYnO1xuICAgICAgY2FzZSBUZWxlbWV0cnlMZXZlbC5Fc3NlbnRpYWw6XG4gICAgICAgIHJldHVybiAnRXNzZW50aWFsJztcbiAgICAgIGNhc2UgVGVsZW1ldHJ5TGV2ZWwuQWxsOlxuICAgICAgICByZXR1cm4gJ0FsbCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh0ZWxlbWV0cnlMZXZlbCk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGNvbnZlcnRUZWxlbWV0cnlMZXZlbFR5cGVUb1RlbGVtZXRyeUxldmVsKHRlbGVtZXRyeUxldmVsVHlwZTogVGVsZW1ldHJ5TGV2ZWxUeXBlKTogVGVsZW1ldHJ5TGV2ZWwge1xuICAgIHN3aXRjaCAodGVsZW1ldHJ5TGV2ZWxUeXBlKSB7XG4gICAgICBjYXNlICdPZmYnOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuT2ZmO1xuICAgICAgY2FzZSAnRXNzZW50aWFsJzpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkVzc2VudGlhbDtcbiAgICAgIGNhc2UgJ0FsbCc6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh0ZWxlbWV0cnlMZXZlbFR5cGUpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEJ1aWxkRmVhdHVyZXMgZnJvbSAnLi4vZW52aXJvbm1lbnQvQnVpbGRGZWF0dXJlcyc7XG5pbXBvcnQge1RlbGVtZXRyeUxldmVsfSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NDb25maWd1cmF0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVsZW1ldHJ5RGVmYXVsdCB7XG4gIHN0YXRpYyBnZXQgZGVmYXVsdFRlbGVtZXRyeUxldmVsKCk6IFRlbGVtZXRyeUxldmVsIHtcbiAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWxbQnVpbGRGZWF0dXJlcy5zZW5kTWV0cmljc107XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi9yeC9TdWJqZWN0JztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4vSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb25GYWN0b3J5IGZyb20gJy4vSVBlZXJDb25uZWN0aW9uRmFjdG9yeSc7XG5pbXBvcnQgVmFuaWxsYVBlZXJDb25uZWN0aW9uRmFjdG9yeSBmcm9tICcuL1ZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3RvcnknO1xuXG5leHBvcnQgaW50ZXJmYWNlIElQZWVyQ29ubmVjdGlvbk9mZmVySW5pdCB7XG4gIGF1ZGlvVHJhbnNjZWl2ZXJzPzogUlRDUnRwVHJhbnNjZWl2ZXJbXTtcbiAgdmlkZW9UcmFuc2NlaXZlcnM/OiBSVENSdHBUcmFuc2NlaXZlcltdO1xuICBwZWVyQ29ubmVjdGlvbjogSVBlZXJDb25uZWN0aW9uO1xuICBsb2NhbE9mZmVyOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xufVxuXG5leHBvcnQgZW51bSBFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMge1xuICBEaXNhYmxlZCxcbiAgRW5hYmxlZFxufVxuXG5leHBvcnQgY29uc3QgZGVmYXVsdFRyYWNrS2luZHM6ICgnYXVkaW8nIHwgJ3ZpZGVvJylbXSA9IFsnYXVkaW8nLCAndmlkZW8nXTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGVlckNvbm5lY3Rpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdQZWVyQ29ubmVjdGlvblNlcnZpY2UnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3BlZXJDb25uZWN0aW9uRmFjdG9yeTogU3ViamVjdDxJUGVlckNvbm5lY3Rpb25GYWN0b3J5PiA9IG5ldyBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+KG5ldyBWYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5KCkpO1xuICBwcml2YXRlIHN0YXRpYyBfY2FjaGVkOiB7XG4gICAgZGlyZWN0aW9uPzogUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb247XG4gICAgcGVlckNvbm5lY3Rpb246IFByb21pc2U8SVBlZXJDb25uZWN0aW9uT2ZmZXJJbml0PjtcbiAgfSB8IG51bGw7XG5cbiAgc3RhdGljIGdldCBwZWVyQ29ubmVjdGlvbkZhY3RvcnkoKTogU3ViamVjdDxJUGVlckNvbm5lY3Rpb25GYWN0b3J5PiB7XG4gICAgcmV0dXJuIFBlZXJDb25uZWN0aW9uU2VydmljZS5fcGVlckNvbm5lY3Rpb25GYWN0b3J5O1xuICB9XG5cbiAgc3RhdGljIGluaXRpYXRlSW5pdGlhbFByZWNhY2hpbmcoKTogdm9pZCB7XG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmlzUHJlY2FjaGluZ0VuYWJsZWQpIHtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSBQZWVyQ29ubmVjdGlvblNlcnZpY2UucHJlY2FjaGVDcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyKClcbiAgICAgICAgLmNhdGNoKGUgPT4gUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBwcmUtY2FjaGUgcGVlciBjb25uZWN0aW9uIG9mZmVyJywgZSkpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBwcmVjYWNoZUNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIoKTogUHJvbWlzZTx7IHBlZXJDb25uZWN0aW9uOiBQcm9taXNlPElQZWVyQ29ubmVjdGlvbk9mZmVySW5pdCB8IHZvaWQ+OyBkaXJlY3Rpb246IFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uIH0+IHtcbiAgICByZXR1cm4gUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9jYWNoZWQgPSB7XG4gICAgICBkaXJlY3Rpb246ICdyZWN2b25seScsXG4gICAgICBwZWVyQ29ubmVjdGlvbjogUGVlckNvbm5lY3Rpb25TZXJ2aWNlLmNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIoKVxuICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9jYWNoZWQgPSBudWxsO1xuXG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfSlcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIoZGlyZWN0aW9uOiBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbiA9ICdyZWN2b25seScsIHRyYWNrS2luZHMgPSBkZWZhdWx0VHJhY2tLaW5kcywgZW5jb2RlZEluc2VydGFibGVTdHJlYW1zOiBFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgPSBFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMuRGlzYWJsZWQpOiBQcm9taXNlPElQZWVyQ29ubmVjdGlvbk9mZmVySW5pdD4ge1xuICAgIGlmIChQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZCAmJiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZC5kaXJlY3Rpb24gPT09IGRpcmVjdGlvbiAmJiBlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgPT09IEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy5EaXNhYmxlZCAmJiB0aGlzLmlzVHJhY2tzS2luZHNFcXVpdmFsZW50VG9EZWZhdWx0KHRyYWNrS2luZHMpKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkLnBlZXJDb25uZWN0aW9uO1xuXG4gICAgICBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZCA9IG51bGw7XG5cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBjb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkID0gRmVhdHVyZUVuYWJsZW1lbnQuaXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQgPyB7ZW5jb2RlZEluc2VydGFibGVTdHJlYW1zOiBlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgPT09IEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy5FbmFibGVkfSA6IHVuZGVmaW5lZDtcblxuICAgIHJldHVybiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX3BlZXJDb25uZWN0aW9uRmFjdG9yeS52YWx1ZS5jcmVhdGVQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uKVxuICAgICAgLnRoZW4oYXN5bmMgcGVlckNvbm5lY3Rpb24gPT4ge1xuICAgICAgICBjb25zdCBzdXBwb3J0c0FkZFRyYW5zY2VpdmVyID0gcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNBZGRUcmFuc2NlaXZlcjtcbiAgICAgICAgY29uc3QgYXVkaW9UcmFuc2NlaXZlcnM6IFJUQ1J0cFRyYW5zY2VpdmVyW10gPSBbXTtcbiAgICAgICAgY29uc3QgdmlkZW9UcmFuc2NlaXZlcnM6IFJUQ1J0cFRyYW5zY2VpdmVyW10gPSBbXTtcblxuICAgICAgICBpZiAoc3VwcG9ydHNBZGRUcmFuc2NlaXZlcikge1xuICAgICAgICAgIHRyYWNrS2luZHMuZm9yRWFjaChraW5kID0+IHtcbiAgICAgICAgICAgIGlmIChraW5kID09PSAnYXVkaW8nKSB7XG4gICAgICAgICAgICAgIGF1ZGlvVHJhbnNjZWl2ZXJzLnB1c2gocGVlckNvbm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIoa2luZCwge2RpcmVjdGlvbn0pKTtcblxuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChraW5kID09PSAndmlkZW8nKSB7XG4gICAgICAgICAgICAgIHZpZGVvVHJhbnNjZWl2ZXJzLnB1c2gocGVlckNvbm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIoa2luZCwge2RpcmVjdGlvbn0pKTtcblxuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYXVkaW9UcmFuc2NlaXZlcnMsXG4gICAgICAgICAgICB2aWRlb1RyYW5zY2VpdmVycyxcbiAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uOiBwZWVyQ29ubmVjdGlvbixcbiAgICAgICAgICAgIGxvY2FsT2ZmZXI6IGF3YWl0IHBlZXJDb25uZWN0aW9uLmNyZWF0ZU9mZmVyKHVuZGVmaW5lZClcbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IGRpcmVjdGlvbiA9PT0gJ3JlY3Zvbmx5JyA/IHtcbiAgICAgICAgICBvZmZlclRvUmVjZWl2ZUF1ZGlvOiB0cnVlLFxuICAgICAgICAgIG9mZmVyVG9SZWNlaXZlVmlkZW86IHRydWVcbiAgICAgICAgfSA6IHt9O1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGVlckNvbm5lY3Rpb246IHBlZXJDb25uZWN0aW9uLFxuICAgICAgICAgIGxvY2FsT2ZmZXI6IGF3YWl0IHBlZXJDb25uZWN0aW9uLmNyZWF0ZU9mZmVyKG9wdGlvbnMpXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGlzVHJhY2tzS2luZHNFcXVpdmFsZW50VG9EZWZhdWx0KHRyYWNrc0tpbmRzOiAoJ2F1ZGlvJyB8ICd2aWRlbycpW10pOiBib29sZWFuIHtcbiAgICBpZiAodHJhY2tzS2luZHMubGVuZ3RoICE9PSBkZWZhdWx0VHJhY2tLaW5kcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBjb3VudFRyYWNrS2luZHMgPSAoYXJyYXk6ICgnYXVkaW8nIHwgJ3ZpZGVvJylbXSkgPT4gYXJyYXkucmVkdWNlKCh0cmFja0tpbmRDb3VudCwga2luZCkgPT4ge1xuICAgICAgdHJhY2tLaW5kQ291bnRba2luZF0gPSAodHJhY2tLaW5kQ291bnRba2luZF0gfHwgMCkgKyAxO1xuXG4gICAgICByZXR1cm4gdHJhY2tLaW5kQ291bnQ7XG4gICAgfSwge1xuICAgICAgYXVkaW86IDAsXG4gICAgICB2aWRlbzogMFxuICAgIH0pO1xuICAgIGNvbnN0IGNvdW50ZWRUcmFja0tpbmRzID0gY291bnRUcmFja0tpbmRzKHRyYWNrc0tpbmRzKTtcbiAgICBjb25zdCBjb3VudGVkRGVmYXVsdFRyYWNrS2luZHMgPSBjb3VudFRyYWNrS2luZHMoZGVmYXVsdFRyYWNrS2luZHMpO1xuXG4gICAgcmV0dXJuIGNvdW50ZWRUcmFja0tpbmRzLmF1ZGlvID09PSBjb3VudGVkRGVmYXVsdFRyYWNrS2luZHMuYXVkaW8gJiYgY291bnRlZFRyYWNrS2luZHMudmlkZW8gPT09IGNvdW50ZWREZWZhdWx0VHJhY2tLaW5kcy52aWRlbztcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdQZWVyQ29ubmVjdGlvblNlcnZpY2UgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59XG5cblBlZXJDb25uZWN0aW9uU2VydmljZS5pbml0aWF0ZUluaXRpYWxQcmVjYWNoaW5nKCk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSdGNDb25maWd1cmF0aW9uTWFuYWdlciB7XG4gIHN0YXRpYyB0cnVuY2F0ZUljZVNlcnZlcnMoY29uZmlndXJhdGlvbjogUlRDQ29uZmlndXJhdGlvbik6IFJUQ0NvbmZpZ3VyYXRpb24ge1xuICAgIGNvbnN0IGljZVNlcnZlcnM6IFJUQ0ljZVNlcnZlcltdID0gW107XG5cbiAgICBpZiAoIWNvbmZpZ3VyYXRpb24uaWNlU2VydmVycykge1xuICAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25maWd1cmF0aW9uLmljZVNlcnZlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHVybHM6IHN0cmluZ1tdID0gW107XG5cbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCAyOyBpbmRleCsrKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS51cmxzW2luZGV4XTtcblxuICAgICAgICBpZiAodXJsKSB7XG4gICAgICAgICAgdXJscy5wdXNoKGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS51cmxzW2luZGV4XSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWNlU2VydmVycy5wdXNoKHtcbiAgICAgICAgdXJsczogdXJscyxcbiAgICAgICAgdXNlcm5hbWU6IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS51c2VybmFtZSxcbiAgICAgICAgY3JlZGVudGlhbDogY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLmNyZWRlbnRpYWxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbmZpZ3VyYXRpb24uaWNlU2VydmVycyA9IGljZVNlcnZlcnM7XG5cbiAgICByZXR1cm4gY29uZmlndXJhdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdSdGNDb25maWd1cmF0aW9uTWFuYWdlciBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQgU2RwUGFyc2VyIGZyb20gJy4vU2RwUGFyc2VyJztcbmltcG9ydCBSZWFkT25seVN1YmplY3QgZnJvbSAnLi4vcngvUmVhZE9ubHlTdWJqZWN0JztcblxuZXhwb3J0IGludGVyZmFjZSBJUnRjTW9uaXRvclN0YXRpc3RpYyB7XG4gIFtraW5kOiBzdHJpbmddOiBJUnRjU3RhdGlzdGljO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElMZWdhY3lSVENTdGF0c1JlcG9ydCB7XG4gIHJlc3VsdDogKCkgPT4gSUxlZ2FjeVJUQ1N0YXRzUmVwb3J0SXRlbVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElMZWdhY3lSVENTdGF0c1JlcG9ydEl0ZW0gZXh0ZW5kcyBSVENTdGF0c1JlcG9ydCB7XG4gIHR5cGU6IHN0cmluZztcbiAgbmFtZXM6ICgpID0+IHN0cmluZ1tdO1xuICBzdGF0OiAobmFtZTogc3RyaW5nKSA9PiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVJ0Y1N0YXRpc3RpYyB7XG4gIHNzcmM/OiBzdHJpbmc7XG4gIG1lZGlhVHlwZT86IHN0cmluZztcbiAgdGltZXN0YW1wOiBudW1iZXI7XG4gIGJpdHJhdGU/OiBudW1iZXI7XG4gIGJ5dGVzUmVjZWl2ZWQ/OiBudW1iZXI7XG4gIGZyYW1lc0RlY29kZWQ/OiBudW1iZXI7XG4gIHBhY2tldHNMb3N0PzogbnVtYmVyO1xuICBwYWNrZXRzUmVjZWl2ZWQ/OiBudW1iZXI7XG4gIGNvZGVjPzogc3RyaW5nO1xuICBmcHM/OiBudW1iZXI7XG4gIHJvdW5kVHJpcFRpbWU/OiBudW1iZXI7XG4gIGxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcD86IG51bWJlcjtcbn1cblxuY29uc3QgdXBkYXRlU3RhdGlzdGljVGltZW91dCA9IDEwMDA7XG5jb25zdCBnZXRTdGF0c1RpbWVvdXREdXJhdGlvbiA9IDUwMDA7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJ0Y0Nvbm5lY3Rpb25Nb25pdG9yIGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignUnRjQ29ubmVjdGlvbk1vbml0b3InKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZXN0aW1hdGVkUm91bmRUcmlwVGltZTogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lc3RpbWF0ZWRWaWRlb0NvZGVjOiBzdHJpbmcgPSAndW5rbm93bic7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VzdGltYXRlZEF1ZGlvQ29kZWM6IHN0cmluZyA9ICd1bmtub3duJztcbiAgcHJpdmF0ZSByZWFkb25seSBfcnRjU3RhdGlzdGljOiBTdWJqZWN0PElSdGNNb25pdG9yU3RhdGlzdGljIHwgbnVsbD4gPSBuZXcgU3ViamVjdDxJUnRjTW9uaXRvclN0YXRpc3RpYyB8IG51bGw+KHt9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gIHByaXZhdGUgX3BlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb24gfCBudWxsO1xuICBwcml2YXRlIF9pc01vbml0b3JSdW5uaW5nID0gdHJ1ZTtcbiAgcHJpdmF0ZSBfdXBkYXRlVGltZW91dDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX3RyYWNrc1RvTW9uaXRvcjogc3RyaW5nW107XG4gIHByaXZhdGUgX21vbml0b3JHZW5lcmF0aW9uID0gMDtcblxuICBjb25zdHJ1Y3RvcihwZWVyQ29ubmVjdGlvbjogSVBlZXJDb25uZWN0aW9uLCBtZWRpYVN0cmVhbTogTWVkaWFTdHJlYW0sIGVzdGltYXRlZFJvdW5kVHJpcFRpbWU6IG51bWJlciwgaXNGb3JlZ3JvdW5kOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4pIHtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbiA9IHBlZXJDb25uZWN0aW9uO1xuICAgIHRoaXMuX2VzdGltYXRlZFJvdW5kVHJpcFRpbWUgPSBlc3RpbWF0ZWRSb3VuZFRyaXBUaW1lO1xuICAgIHRoaXMuX3RyYWNrc1RvTW9uaXRvciA9IG1lZGlhU3RyZWFtLmdldFRyYWNrcygpLm1hcCh0cmFjayA9PiB0cmFjay5raW5kKSB8fCBbXTtcblxuICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgaWYgKCFGZWF0dXJlRW5hYmxlbWVudC5nZXRDdXJyZW50T2ZmZXJEaXNhYmxlZCAmJiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uY3VycmVudFJlbW90ZURlc2NyaXB0aW9uPy5zZHApIHtcbiAgICAgICAgY29uc3QgcGFyc2VkU0RQID0gbmV3IFNkcFBhcnNlcih0aGlzLl9wZWVyQ29ubmVjdGlvbi5jdXJyZW50UmVtb3RlRGVzY3JpcHRpb24uc2RwKTtcblxuICAgICAgICB0aGlzLl9lc3RpbWF0ZWRBdWRpb0NvZGVjID0gcGFyc2VkU0RQLmF1ZGlvQ29kZWM7XG4gICAgICAgIHRoaXMuX2VzdGltYXRlZFZpZGVvQ29kZWMgPSBwYXJzZWRTRFAudmlkZW9Db2RlYztcbiAgICAgIH1cblxuICAgICAgbGV0IGlzSW5pdGlhbFN1YnNjcmlwdGlvbkNhbGxiYWNrID0gdHJ1ZTtcblxuICAgICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKFxuICAgICAgICBpc0ZvcmVncm91bmQuc3Vic2NyaWJlKGZvcmVncm91bmQgPT4ge1xuICAgICAgICAgIGlmIChpc0luaXRpYWxTdWJzY3JpcHRpb25DYWxsYmFjaykge1xuICAgICAgICAgICAgaXNJbml0aWFsU3Vic2NyaXB0aW9uQ2FsbGJhY2sgPSBmYWxzZTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghZm9yZWdyb3VuZCB8fCAhdGhpcy5faXNNb25pdG9yUnVubmluZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEludmFsaWRhdGUgYW55IGluLWZsaWdodCBwb2xsIGZyb20gYmVmb3JlIHRoZSBmcmVlemVcbiAgICAgICAgICB0aGlzLl9tb25pdG9yR2VuZXJhdGlvbisrO1xuXG4gICAgICAgICAgaWYgKHRoaXMuX3VwZGF0ZVRpbWVvdXQpIHtcbiAgICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aGlzLl91cGRhdGVUaW1lb3V0KTtcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVRpbWVvdXQgPSBudWxsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygnUmVzdGFydGluZyBzdGF0cyBwb2xsaW5nIGFmdGVyIGZvcmVncm91bmQgdHJhbnNpdGlvbicpO1xuICAgICAgICAgIHRoaXMudXBkYXRlU3RhdGlzdGljKCk7XG4gICAgICAgIH0pXG4gICAgICApO1xuXG4gICAgICB0aGlzLnVwZGF0ZVN0YXRpc3RpYygpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBydGNTdGF0aXN0aWMoKTogU3ViamVjdDxJUnRjTW9uaXRvclN0YXRpc3RpYyB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5fcnRjU3RhdGlzdGljO1xuICB9XG5cbiAgcHVibGljIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fbW9uaXRvckdlbmVyYXRpb24rKztcbiAgICB0aGlzLl9pc01vbml0b3JSdW5uaW5nID0gZmFsc2U7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24gPSBudWxsO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcblxuICAgIGlmICh0aGlzLl91cGRhdGVUaW1lb3V0KSB7XG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGhpcy5fdXBkYXRlVGltZW91dCk7XG4gICAgICB0aGlzLl91cGRhdGVUaW1lb3V0ID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZVN0YXRpc3RpYygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuZ2V0U3RhdHNQcm9taXNlQmFzZWREaXNhYmxlZCkge1xuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlU3RhdGlzdGljTGVnYWN5KCk7XG4gICAgfVxuXG4gICAgLy8gU2FmYXJpIDExIGRvZXNudCBoYXZlIGtpbmQgb3IgbWVkaWFUeXBlIHNvIHdlIG5lZWQgdG8gdGFrZSBpdCBmcm9tIHRoZSBpbmJvdW5kLXJ0cCBvYmplY3QgaWRcbiAgICBjb25zdCBnZXRLaW5kRm9yU2FmYXJpMTEgPSAoaXRlbToge2lkOiBzdHJpbmd9KTogc3RyaW5nID0+IGl0ZW0uaWQuaW5jbHVkZXMoJ0F1ZGlvJykgPyAnYXVkaW8nIDogaXRlbS5pZC5pbmNsdWRlcygnVmlkZW8nKSA/ICd2aWRlbycgOiAnJztcbiAgICBjb25zdCBnZW5lcmF0aW9uID0gdGhpcy5fbW9uaXRvckdlbmVyYXRpb247XG4gICAgbGV0IHRpbWVvdXRIYW5kbGU6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBzdGF0c1Byb21pc2UgPSB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uZ2V0U3RhdHMobnVsbCk7XG5cbiAgICAgIGlmICghc3RhdHNQcm9taXNlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdGltZW91dFByb21pc2UgPSBuZXcgUHJvbWlzZTxudWxsPihyZXNvbHZlID0+IHtcbiAgICAgICAgdGltZW91dEhhbmRsZSA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4gcmVzb2x2ZShudWxsKSwgZ2V0U3RhdHNUaW1lb3V0RHVyYXRpb24pO1xuICAgICAgfSk7XG4gICAgICBjb25zdCBzdGF0cyA9IGF3YWl0IFByb21pc2UucmFjZShbc3RhdHNQcm9taXNlLCB0aW1lb3V0UHJvbWlzZV0pO1xuXG4gICAgICBpZiAoZ2VuZXJhdGlvbiAhPT0gdGhpcy5fbW9uaXRvckdlbmVyYXRpb24gfHwgIXRoaXMuX2lzTW9uaXRvclJ1bm5pbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXN0YXRzKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygnZ2V0U3RhdHMoKSB0aW1lZCBvdXQsIHNraXBwaW5nIHN0YXRzIHByb2Nlc3NpbmcnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHJ0Y1N0YXRpc3RpY3M6IElSdGNNb25pdG9yU3RhdGlzdGljID0ge307XG4gICAgICAgIGxldCByb3VuZFRyaXBUaW1lID0gdGhpcy5fZXN0aW1hdGVkUm91bmRUcmlwVGltZTtcbiAgICAgICAgbGV0IGxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gICAgICAgIHN0YXRzLmZvckVhY2gocmVwb3J0ID0+IHtcbiAgICAgICAgICBpZiAocmVwb3J0LnR5cGUgPT09ICdjYW5kaWRhdGUtcGFpcicgJiYgcmVwb3J0LmN1cnJlbnRSb3VuZFRyaXBUaW1lKSB7XG4gICAgICAgICAgICByb3VuZFRyaXBUaW1lID0gcmVwb3J0LmN1cnJlbnRSb3VuZFRyaXBUaW1lICogMTAwMDtcblxuICAgICAgICAgICAgaWYgKHJ0Y1N0YXRpc3RpY3NbJ2F1ZGlvJ10pIHtcbiAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1snYXVkaW8nXS5yb3VuZFRyaXBUaW1lID0gcm91bmRUcmlwVGltZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJ0Y1N0YXRpc3RpY3NbJ3ZpZGVvJ10pIHtcbiAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1sndmlkZW8nXS5yb3VuZFRyaXBUaW1lID0gcm91bmRUcmlwVGltZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocmVwb3J0LnR5cGUgPT09ICdjYW5kaWRhdGUtcGFpcicgJiYgcmVwb3J0Lmxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCkge1xuICAgICAgICAgICAgbGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wID0gcmVwb3J0Lmxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcDtcblxuICAgICAgICAgICAgaWYgKHJ0Y1N0YXRpc3RpY3NbJ2F1ZGlvJ10pIHtcbiAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1snYXVkaW8nXS5sYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXAgPSBsYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChydGNTdGF0aXN0aWNzWyd2aWRlbyddKSB7XG4gICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbJ3ZpZGVvJ10ubGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wID0gbGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChyZXBvcnQudHlwZSA9PT0gJ2luYm91bmQtcnRwJykge1xuICAgICAgICAgICAgY29uc3Qga2luZCA9IHJlcG9ydC5raW5kIHx8IHJlcG9ydC5tZWRpYVR5cGUgfHwgZ2V0S2luZEZvclNhZmFyaTExKHJlcG9ydCk7XG4gICAgICAgICAgICBsZXQgY29kZWMgPSAnJztcblxuICAgICAgICAgICAgc3RhdHMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgaWYgKGl0ZW0uaWQgPT09IHJlcG9ydC5jb2RlY0lkKSB7XG4gICAgICAgICAgICAgICAgY29kZWMgPSBpdGVtLm1pbWVUeXBlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKGtpbmQgJiYgdGhpcy5fdHJhY2tzVG9Nb25pdG9yLmluY2x1ZGVzKGtpbmQpKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGJ5dGVzID0gcmVwb3J0LmJ5dGVzUmVjZWl2ZWQgfHwgMDtcbiAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNCeXRlc1JlY2VpdmVkID0gdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlPy5ba2luZF0/LmJ5dGVzUmVjZWl2ZWQgPz8gMDtcbiAgICAgICAgICAgICAgY29uc3QgYnl0ZXNEZWx0YSA9IGJ5dGVzIC0gcHJldmlvdXNCeXRlc1JlY2VpdmVkO1xuICAgICAgICAgICAgICBjb25zdCB0aW1lRGVsdGEgPSByZXBvcnQudGltZXN0YW1wIC0gKHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZT8uW2tpbmRdPy50aW1lc3RhbXAgfHwgMCk7XG4gICAgICAgICAgICAgIGNvbnN0IGJpdHJhdGUgPSBieXRlc0RlbHRhICYmIHRpbWVEZWx0YSA/IE1hdGguZmxvb3IoOCAqIGJ5dGVzRGVsdGEgL1xuICAgICAgICAgICAgICAgIHRpbWVEZWx0YSAqIDEwMDApIDogMDtcblxuICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdID0ge1xuICAgICAgICAgICAgICAgIHNzcmM6IHJlcG9ydC5zc3JjLFxuICAgICAgICAgICAgICAgIG1lZGlhVHlwZToga2luZCxcbiAgICAgICAgICAgICAgICB0aW1lc3RhbXA6IHJlcG9ydC50aW1lc3RhbXAsXG4gICAgICAgICAgICAgICAgYml0cmF0ZSxcbiAgICAgICAgICAgICAgICBieXRlc1JlY2VpdmVkOiByZXBvcnQuYnl0ZXNSZWNlaXZlZCxcbiAgICAgICAgICAgICAgICBwYWNrZXRzTG9zdDogcmVwb3J0LnBhY2tldHNMb3N0LFxuICAgICAgICAgICAgICAgIHBhY2tldHNSZWNlaXZlZDogcmVwb3J0LnBhY2tldHNSZWNlaXZlZCxcbiAgICAgICAgICAgICAgICBjb2RlYzogY29kZWMgfHwgdGhpcy5nZXRDb2RlY0J5VHlwZShraW5kKSxcbiAgICAgICAgICAgICAgICByb3VuZFRyaXBUaW1lXG4gICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgaWYgKHJlcG9ydC5sYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXAgfHwgbGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wKSB7XG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXS5sYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXAgPSByZXBvcnQubGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wIHx8IGxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcDtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChraW5kID09PSAndmlkZW8nICYmIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZT8udmlkZW8/LmZyYW1lc0RlY29kZWQpIHtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydmcmFtZXNEZWNvZGVkJ10gPSByZXBvcnQuZnJhbWVzRGVjb2RlZDtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGZwcyA9IChyZXBvcnQuZnJhbWVzRGVjb2RlZCAtIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZS52aWRlby5mcmFtZXNEZWNvZGVkKSAvXG4gICAgICAgICAgICAgICAgICAocnRjU3RhdGlzdGljc1traW5kXS50aW1lc3RhbXAgLSB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWUudmlkZW8udGltZXN0YW1wKSAqXG4gICAgICAgICAgICAgICAgICAxMDAwO1xuXG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsnZnBzJ10gPSBmcHMgPyBNYXRoLnJvdW5kKGZwcyAqIDEwMCkgLyAxMDAgOiAwO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWUgPSBydGNTdGF0aXN0aWNzO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoZ2VuZXJhdGlvbiAhPT0gdGhpcy5fbW9uaXRvckdlbmVyYXRpb24gfHwgIXRoaXMuX2lzTW9uaXRvclJ1bm5pbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9sb2dnZXIud2FybignZ2V0U3RhdHMoKSByZWplY3RlZCcsIGVycm9yKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXRIYW5kbGUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9pc01vbml0b3JSdW5uaW5nICYmIGdlbmVyYXRpb24gPT09IHRoaXMuX21vbml0b3JHZW5lcmF0aW9uKSB7XG4gICAgICB0aGlzLl91cGRhdGVUaW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dChcbiAgICAgICAgKCkgPT4gdGhpcy51cGRhdGVTdGF0aXN0aWMoKSwgdXBkYXRlU3RhdGlzdGljVGltZW91dCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB1cGRhdGVTdGF0aXN0aWNMZWdhY3koKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZ2VuZXJhdGlvbiA9IHRoaXMuX21vbml0b3JHZW5lcmF0aW9uO1xuICAgIGxldCB0aW1lb3V0SGFuZGxlOiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qgc3RhdHNQcm9taXNlID0gdGhpcy5fcGVlckNvbm5lY3Rpb24/LmdldFN0YXRzTGVnYWN5KCk7XG5cbiAgICAgIGlmICghc3RhdHNQcm9taXNlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdGltZW91dFByb21pc2UgPSBuZXcgUHJvbWlzZTxudWxsPihyZXNvbHZlID0+IHtcbiAgICAgICAgdGltZW91dEhhbmRsZSA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4gcmVzb2x2ZShudWxsKSwgZ2V0U3RhdHNUaW1lb3V0RHVyYXRpb24pO1xuICAgICAgfSk7XG4gICAgICBjb25zdCBzdGF0cyA9IGF3YWl0IFByb21pc2UucmFjZShbc3RhdHNQcm9taXNlLCB0aW1lb3V0UHJvbWlzZV0pO1xuXG4gICAgICBpZiAoZ2VuZXJhdGlvbiAhPT0gdGhpcy5fbW9uaXRvckdlbmVyYXRpb24gfHwgIXRoaXMuX2lzTW9uaXRvclJ1bm5pbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXN0YXRzKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygnZ2V0U3RhdHNMZWdhY3koKSB0aW1lZCBvdXQsIHNraXBwaW5nIHN0YXRzIHByb2Nlc3NpbmcnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHJ0Y1N0YXRpc3RpY3M6IElSdGNNb25pdG9yU3RhdGlzdGljID0ge307XG4gICAgICAgIGxldCByb3VuZFRyaXBUaW1lID0gdGhpcy5fZXN0aW1hdGVkUm91bmRUcmlwVGltZTtcblxuICAgICAgICBzdGF0cy5yZXN1bHQoKS5mb3JFYWNoKHJlcG9ydCA9PiB7XG4gICAgICAgICAgcmVwb3J0Lm5hbWVzKCkuZm9yRWFjaChuYW1lID0+IHtcbiAgICAgICAgICAgIGlmIChuYW1lID09PSAnZ29vZ1JUVCcpIHtcbiAgICAgICAgICAgICAgcm91bmRUcmlwVGltZSA9IHJlcG9ydC5zdGF0KG5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgaWYgKHJlcG9ydC50eXBlID09PSAnc3NyYycpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lZGlhVHlwZSA9IHJlcG9ydC5zdGF0KCdtZWRpYVR5cGUnKS50b1N0cmluZygpO1xuXG4gICAgICAgICAgICBydGNTdGF0aXN0aWNzW21lZGlhVHlwZV0gPSB7dGltZXN0YW1wOiBEYXRlLm5vdygpfTtcbiAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXVsnc3NyYyddID0gcmVwb3J0LnN0YXQoJ3NzcmMnKS50b1N0cmluZygpO1xuICAgICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydtZWRpYVR5cGUnXSA9IG1lZGlhVHlwZTtcbiAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXVsnYnl0ZXNSZWNlaXZlZCddID0gcmVwb3J0LnN0YXQoJ2J5dGVzUmVjZWl2ZWQnKTtcbiAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXVsncGFja2V0c0xvc3QnXSA9IHJlcG9ydC5zdGF0KCdwYWNrZXRzTG9zdCcpO1xuICAgICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydwYWNrZXRzUmVjZWl2ZWQnXSA9IHJlcG9ydC5zdGF0KCdwYWNrZXRzUmVjZWl2ZWQnKTtcbiAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXVsnY29kZWMnXSA9IHJlcG9ydC5zdGF0KCdnb29nQ29kZWNOYW1lJykudG9TdHJpbmcoKSB8fCB0aGlzLmdldENvZGVjQnlUeXBlKG1lZGlhVHlwZSk7XG4gICAgICAgICAgICBydGNTdGF0aXN0aWNzW21lZGlhVHlwZV1bJ3JvdW5kVHJpcFRpbWUnXSA9IHJvdW5kVHJpcFRpbWU7XG5cbiAgICAgICAgICAgIGlmIChtZWRpYVR5cGUgPT09ICd2aWRlbycgJiYgdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlPy52aWRlbz8uZnJhbWVzRGVjb2RlZCkge1xuICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW21lZGlhVHlwZV1bJ2ZyYW1lc0RlY29kZWQnXSA9IHJlcG9ydC5zdGF0KCdmcmFtZXNEZWNvZGVkJyk7XG4gICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXVsnZnBzJ10gPSAocnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdLmZyYW1lc0RlY29kZWQgLSB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWUudmlkZW8uZnJhbWVzRGVjb2RlZCkgL1xuICAgICAgICAgICAgICAgIChydGNTdGF0aXN0aWNzW21lZGlhVHlwZV0udGltZXN0YW1wIC0gdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlLnZpZGVvLnRpbWVzdGFtcCkgKlxuICAgICAgICAgICAgICAxMDAwIHx8IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWUgPSBydGNTdGF0aXN0aWNzO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoZ2VuZXJhdGlvbiAhPT0gdGhpcy5fbW9uaXRvckdlbmVyYXRpb24gfHwgIXRoaXMuX2lzTW9uaXRvclJ1bm5pbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9sb2dnZXIud2FybignZ2V0U3RhdHNMZWdhY3koKSByZWplY3RlZCcsIGVycm9yKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXRIYW5kbGUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9pc01vbml0b3JSdW5uaW5nICYmIGdlbmVyYXRpb24gPT09IHRoaXMuX21vbml0b3JHZW5lcmF0aW9uKSB7XG4gICAgICB0aGlzLl91cGRhdGVUaW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dChcbiAgICAgICAgKCkgPT4gdGhpcy51cGRhdGVTdGF0aXN0aWMoKSwgdXBkYXRlU3RhdGlzdGljVGltZW91dCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb2RlY0J5VHlwZSh0eXBlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnYXVkaW8nOlxuICAgICAgICByZXR1cm4gdGhpcy5fZXN0aW1hdGVkQXVkaW9Db2RlYyB8fCAndW5rbm93bic7XG4gICAgICBjYXNlICd2aWRlbyc6XG4gICAgICAgIHJldHVybiB0aGlzLl9lc3RpbWF0ZWRWaWRlb0NvZGVjIHx8ICd1bmtub3duJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAndW5rbm93bic7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZHBQYXJzZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF9zZHA6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfYXVkaW9Db2RlYzogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF92aWRlb0NvZGVjOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzQXVkaW9UcmFja0VuYWJsZWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzVmlkZW9UcmFja0VuYWJsZWQ6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3Ioc2RwOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zZHAgPSBzZHA7XG5cbiAgICBjb25zdCBzZHBTcGxpdEJ5TGluZXMgPSB0aGlzLl9zZHAuc3BsaXQoLyhcXHJcXG58XFxyfFxcbikvKTtcbiAgICBjb25zdCBzZHBTcGxpdEJ5VHJhY2tzID0gdGhpcy5fc2RwLnNwbGl0KC8oPzpefFtcXHJcXG5dKW09Lyk7XG5cbiAgICB0aGlzLl9hdWRpb0NvZGVjID0gdGhpcy5hcHBseUNvZGVjKCdhdWRpbycsIHNkcFNwbGl0QnlMaW5lcyk7XG4gICAgdGhpcy5fdmlkZW9Db2RlYyA9IHRoaXMuYXBwbHlDb2RlYygndmlkZW8nLCBzZHBTcGxpdEJ5TGluZXMpO1xuICAgIHRoaXMuX2lzQXVkaW9UcmFja0VuYWJsZWQgPSB0aGlzLmlzVHJhY2tCeVR5cGVFbmFibGVkKCdhdWRpbycsIHNkcFNwbGl0QnlUcmFja3MpO1xuICAgIHRoaXMuX2lzVmlkZW9UcmFja0VuYWJsZWQgPSB0aGlzLmlzVHJhY2tCeVR5cGVFbmFibGVkKCd2aWRlbycsIHNkcFNwbGl0QnlUcmFja3MpO1xuICB9XG5cbiAgZ2V0IGF1ZGlvQ29kZWMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fYXVkaW9Db2RlYztcbiAgfVxuXG4gIGdldCB2aWRlb0NvZGVjKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3ZpZGVvQ29kZWM7XG4gIH1cblxuICBnZXQgaXNBdWRpb1RyYWNrRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNBdWRpb1RyYWNrRW5hYmxlZDtcbiAgfVxuXG4gIGdldCBpc1ZpZGVvVHJhY2tFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc1ZpZGVvVHJhY2tFbmFibGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1RyYWNrQnlUeXBlRW5hYmxlZCh0eXBlOiBzdHJpbmcsIHNkcFNwbGl0QnlUcmFja3M6IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc2RwU2VjdGlvbkZvclR5cGUgPSBzZHBTcGxpdEJ5VHJhY2tzLmZpbmQoc2RwVHJhY2sgPT4gc2RwVHJhY2suc3RhcnRzV2l0aCh0eXBlKSk7XG5cbiAgICBpZiAoIXNkcFNlY3Rpb25Gb3JUeXBlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuICFzZHBTZWN0aW9uRm9yVHlwZS5pbmNsdWRlcyhgYT1pbmFjdGl2ZWApO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUNvZGVjKHR5cGU6IHN0cmluZywgc2RwU3BsaXRCeUxpbmVzOiBzdHJpbmcgW10pOiBzdHJpbmcge1xuICAgIGNvbnN0IHJ0bWFwID0gc2RwU3BsaXRCeUxpbmVzLmZpbmQoc2RwTGluZSA9PiBzZHBMaW5lLmluY2x1ZGVzKGBtPSR7dHlwZX1gKSk/LnNwbGl0KCcgJylbM10gfHwgJyc7XG4gICAgY29uc3QgdXNlZENvZGVjTGluZSA9IHNkcFNwbGl0QnlMaW5lcy5maW5kKHNkcExpbmUgPT4gc2RwTGluZS5pbmNsdWRlcyhgYT1ydHBtYXA6JHtydG1hcH1gKSk7XG4gICAgY29uc3QgdXNlZENvZGVjID0gdXNlZENvZGVjTGluZT8uc3BsaXQoJyAnKVsxXSB8fCAnJztcbiAgICBjb25zdCBjb2RlY05hbWUgPSB1c2VkQ29kZWMuc3BsaXQoJy8nKVswXTtcblxuICAgIHJldHVybiBjb2RlY05hbWU7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4vSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuaW1wb3J0IHtJTGVnYWN5UlRDU3RhdHNSZXBvcnR9IGZyb20gJy4vUnRjQ29ubmVjdGlvbk1vbml0b3InO1xuXG5jbGFzcyBWYW5pbGxhUGVlckNvbm5lY3Rpb24gaW1wbGVtZW50cyBJUGVlckNvbm5lY3Rpb24ge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignVmFuaWxsYVBlZXJDb25uZWN0aW9uJyk7XG4gIHByaXZhdGUgX3BlZXJDb25uZWN0aW9uOiBSVENQZWVyQ29ubmVjdGlvbiB8IG51bGw7XG5cbiAgY29uc3RydWN0b3IoY29uZmlndXJhdGlvbj86IFJUQ0NvbmZpZ3VyYXRpb24pIHtcbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQud2Via2l0UlRDUGVlckNvbm5lY3Rpb25FbmFibGVkKSB7XG4gICAgICAvLyBJZ25vcmVkIGFzIGxlZ2FjeSB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbiBjbGFzcyBpcyBkZXByZWNhdGVkXG4gICAgICAvLyBUaGlzIHdhcyBhIENocm9tZSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvblxuICAgICAgLy8gUmVxdWlyZXMgYSB0cy1pZ25vcmUgZGlyZWN0aXZlIHRvIHByZXZlbnQgdHlwZXNjcmlwdCBlcnJvcnNcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uID0gbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb24pO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24gPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuUlRDUGVlckNvbm5lY3Rpb24oY29uZmlndXJhdGlvbik7XG4gIH1cblxuICBnZXQgbmF0aXZlKCk6IFJUQ1BlZXJDb25uZWN0aW9uIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRMb2NhbERlc2NyaXB0aW9uKCk6IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uY3VycmVudExvY2FsRGVzY3JpcHRpb24gfHwgbnVsbDtcbiAgfVxuXG4gIGdldCBjdXJyZW50UmVtb3RlRGVzY3JpcHRpb24oKTogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5jdXJyZW50UmVtb3RlRGVzY3JpcHRpb24gfHwgbnVsbDtcbiAgfVxuXG4gIGdldCBjb25uZWN0aW9uU3RhdGUoKTogUlRDUGVlckNvbm5lY3Rpb25TdGF0ZSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uY29ubmVjdGlvblN0YXRlIHx8IG51bGw7XG4gIH1cblxuICBnZXQgaWNlQ29ubmVjdGlvblN0YXRlKCk6IFJUQ0ljZUNvbm5lY3Rpb25TdGF0ZSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uaWNlQ29ubmVjdGlvblN0YXRlIHx8IG51bGw7XG4gIH1cblxuICBnZXQgc3VwcG9ydHNHZXRDb25maWd1cmF0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgdGhpcy5fcGVlckNvbm5lY3Rpb24/LmdldENvbmZpZ3VyYXRpb24gPT09ICdmdW5jdGlvbic7XG4gIH1cblxuICBnZXQgc3VwcG9ydHNTZXRDb25maWd1cmF0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgdGhpcy5fcGVlckNvbm5lY3Rpb24/LnNldENvbmZpZ3VyYXRpb24gPT09ICdmdW5jdGlvbic7XG4gIH1cblxuICBnZXQgc3VwcG9ydHNHZXRUcmFuc2NlaXZlcnMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICFGZWF0dXJlRW5hYmxlbWVudC5nZXRUcmFuc2NlaXZlcnNEaXNhYmxlZCAmJiB0eXBlb2YgdGhpcy5fcGVlckNvbm5lY3Rpb24/LmdldFRyYW5zY2VpdmVycyA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIGdldCBzdXBwb3J0c0FkZFRyYW5zY2VpdmVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhRmVhdHVyZUVuYWJsZW1lbnQuYWRkVHJhbmNlaXZlckRpc2FibGVkICYmIHR5cGVvZiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uYWRkVHJhbnNjZWl2ZXIgPT09ICdmdW5jdGlvbic7XG4gIH1cblxuICBhc3luYyBjcmVhdGVPZmZlcihvcHRpb25zPzogUlRDT2ZmZXJPcHRpb25zKTogUHJvbWlzZTxSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0PiB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5wcm9taXNlQmFzZWRQQ01ldGhvZHNEaXNhYmxlZCkge1xuICAgICAgLy8gSWdub3JlZCBhcyBsZWdhY3kgY3JlYXRlT2ZmZXIgbWV0aG9kIHdpdGggY2FsbGJhY2tzIGlzIGRlcHJlY2F0ZWRcbiAgICAgIC8vIFJlcXVpcmVzIGEgdHMtaWdub3JlIGRpcmVjdGl2ZSB0byBwcmV2ZW50IHR5cGVzY3JpcHQgZXJyb3JzXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gdGhpcy5fcGVlckNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIocmVzb2x2ZSwgcmVqZWN0LCBvcHRpb25zKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmNyZWF0ZU9mZmVyKG9wdGlvbnMpO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlQW5zd2VyKG9wdGlvbnM/OiBSVENBbnN3ZXJPcHRpb25zKTogUHJvbWlzZTxSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0PiB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5wcm9taXNlQmFzZWRQQ01ldGhvZHNEaXNhYmxlZCkge1xuICAgICAgLy8gSWdub3JlZCBhcyBsZWdhY3kgY3JlYXRlQW5zd2VyIG1ldGhvZCB3aXRoIGNhbGxiYWNrcyBpcyBkZXByZWNhdGVkXG4gICAgICAvLyBSZXF1aXJlcyBhIHRzLWlnbm9yZSBkaXJlY3RpdmUgdG8gcHJldmVudCB0eXBlc2NyaXB0IGVycm9yc1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHRoaXMuX3BlZXJDb25uZWN0aW9uLmNyZWF0ZUFuc3dlcihyZXNvbHZlLCByZWplY3QsIG9wdGlvbnMpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uY3JlYXRlQW5zd2VyKG9wdGlvbnMpO1xuICB9XG5cbiAgYXN5bmMgc2V0TG9jYWxEZXNjcmlwdGlvbihkZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihGZWF0dXJlRW5hYmxlbWVudC5wcm9taXNlQmFzZWRQQ01ldGhvZHNEaXNhYmxlZCA/XG4gICAgICBuZXcgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKSA6IGRlc2NyaXB0aW9uKTtcbiAgfVxuXG4gIGFzeW5jIHNldFJlbW90ZURlc2NyaXB0aW9uKGRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGhhc0NyeXB0byA9IGRlc2NyaXB0aW9uLnNkcD8ubWF0Y2goL2E9Y3J5cHRvOi9pKTtcblxuICAgIGlmIChoYXNDcnlwdG8pIHtcbiAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdTRFAgYT1jcnlwdG8gaXMgbm90IHN1cHBvcnRlZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5zZXRSZW1vdGVEZXNjcmlwdGlvbihGZWF0dXJlRW5hYmxlbWVudC5wcm9taXNlQmFzZWRQQ01ldGhvZHNEaXNhYmxlZCA/XG4gICAgICBuZXcgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKSA6IGRlc2NyaXB0aW9uKTtcbiAgfVxuXG4gIGdldFNlbmRlcnMoKTogUlRDUnRwU2VuZGVyW10ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uZ2V0U2VuZGVycygpO1xuICB9XG5cbiAgZ2V0UmVjZWl2ZXJzKCk6IFJUQ1J0cFJlY2VpdmVyW10ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uZ2V0UmVjZWl2ZXJzKCk7XG4gIH1cblxuICBnZXRTdGF0cyhzZWxlY3Rvcj86IE1lZGlhU3RyZWFtVHJhY2sgfCBudWxsKTogUHJvbWlzZTxSVENTdGF0c1JlcG9ydD4ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uZ2V0U3RhdHMoc2VsZWN0b3IpO1xuICB9XG5cbiAgZ2V0U3RhdHNMZWdhY3koKTogUHJvbWlzZTxJTGVnYWN5UlRDU3RhdHNSZXBvcnQ+IHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgLy8gSWdub3JlZCBkdWUgdG8gdHlwZXNjcmlwdCBub3QgaGF2aW5nIGxlZ2FjeSAnZ2V0U3RhdHMnIG1ldGhvZCB0eXBlIGRlZmluaXRpb25cbiAgICAgIC8vIFRoaXMgd2FzIGEgQ2hyb21lIHNwZWNpZmljIGltcGxlbWVudGF0aW9uIG9mIHRoZSAnZ2V0U3RhdHMnIG1ldGhvZCBmb3JcbiAgICAgIC8vIENocm9tZUA8PSA2NiBkZXRhaWxlZCBoZXJlOiBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD02Mjc4MTZcbiAgICAgIC8vIFJlcXVpcmVzIGEgdHMtaWdub3JlIGRpcmVjdGl2ZSB0byBwcmV2ZW50IHR5cGVzY3JpcHQgZXJyb3JzXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5fcGVlckNvbm5lY3Rpb24uZ2V0U3RhdHMocmVzb2x2ZSk7XG4gICAgfSk7XG4gIH1cblxuICBhZGRFdmVudExpc3RlbmVyPFQgZXh0ZW5kcyBrZXlvZiBSVENQZWVyQ29ubmVjdGlvbkV2ZW50TWFwPih0eXBlOiBULCBsaXN0ZW5lcjogKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogUlRDUGVlckNvbm5lY3Rpb25FdmVudE1hcFtUXSkgPT4gdW5rbm93biwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5hZGRFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyLCBvcHRpb25zKTtcbiAgfVxuXG4gIHJlbW92ZUV2ZW50TGlzdGVuZXI8VCBleHRlbmRzIGtleW9mIFJUQ1BlZXJDb25uZWN0aW9uRXZlbnRNYXA+KHR5cGU6IFQsIGxpc3RlbmVyOiAodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBSVENQZWVyQ29ubmVjdGlvbkV2ZW50TWFwW1RdKSA9PiB1bmtub3duLCBvcHRpb25zPzogYm9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIsIG9wdGlvbnMpO1xuICB9XG5cbiAgZ2V0VHJhbnNjZWl2ZXJzKCk6IFJUQ1J0cFRyYW5zY2VpdmVyW10ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uZ2V0VHJhbnNjZWl2ZXJzKCk7XG4gIH1cblxuICBhZGRUcmFuc2NlaXZlcihuYW1lOiBzdHJpbmcsIG9wdGlvbnM6IFJUQ1J0cFRyYW5zY2VpdmVySW5pdCk6IFJUQ1J0cFRyYW5zY2VpdmVyIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmFkZFRyYW5zY2VpdmVyKG5hbWUsIG9wdGlvbnMpO1xuICB9XG5cbiAgYWRkU3RyZWFtKG1lZGlhU3RyZWFtOiBNZWRpYVN0cmVhbSk6IHZvaWQge1xuICAgIG1lZGlhU3RyZWFtLmdldFRyYWNrcygpLmZvckVhY2godHJhY2sgPT4ge1xuICAgICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLmFkZFRyYWNrKHRyYWNrKTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldENvbmZpZ3VyYXRpb24oKTogUlRDQ29uZmlndXJhdGlvbiB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRDb25maWd1cmF0aW9uKCk7XG4gIH1cblxuICBzZXRDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24uc2V0Q29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKTtcbiAgfVxuXG4gIHNldCBvbnRyYWNrKGhhbmRsZXI6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBSVENUcmFja0V2ZW50KSA9PiB1bmtub3duKSB8IG51bGwpIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24ub250cmFjayA9IGhhbmRsZXI7XG4gIH1cblxuICBnZXQgb250cmFjaygpOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogUlRDVHJhY2tFdmVudCkgPT4gdW5rbm93bikgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9udHJhY2s7XG4gIH1cblxuICBzZXQgb25pY2VjYW5kaWRhdGUoaGFuZGxlcjogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IFJUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCkge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbmljZWNhbmRpZGF0ZSA9IGhhbmRsZXI7XG4gIH1cblxuICBnZXQgb25pY2VjYW5kaWRhdGUoKTogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IFJUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbmljZWNhbmRpZGF0ZTtcbiAgfVxuXG4gIHNldCBvbmNvbm5lY3Rpb25zdGF0ZWNoYW5nZShoYW5kbGVyOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCkge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbmNvbm5lY3Rpb25zdGF0ZWNoYW5nZSA9IGhhbmRsZXI7XG4gIH1cblxuICBnZXQgb25jb25uZWN0aW9uc3RhdGVjaGFuZ2UoKTogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IEV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24ub25jb25uZWN0aW9uc3RhdGVjaGFuZ2U7XG4gIH1cblxuICBzZXQgb25pY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2UoaGFuZGxlcjogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IEV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwpIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24ub25pY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2UgPSBoYW5kbGVyO1xuICB9XG5cbiAgZ2V0IG9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlKCk6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBFdmVudCkgPT4gdW5rbm93bikgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlO1xuICB9XG5cbiAgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24/LmNsb3NlKCk7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uID0gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBWYW5pbGxhUGVlckNvbm5lY3Rpb247IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbkZhY3RvcnkgZnJvbSAnLi9JUGVlckNvbm5lY3Rpb25GYWN0b3J5JztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi9JUGVlckNvbm5lY3Rpb24nO1xuaW1wb3J0IFZhbmlsbGFQZWVyQ29ubmVjdGlvbiBmcm9tICcuL1ZhbmlsbGFQZWVyQ29ubmVjdGlvbic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3RvcnkgaW1wbGVtZW50cyBJUGVlckNvbm5lY3Rpb25GYWN0b3J5IHtcbiAgYXN5bmMgY3JlYXRlUGVlckNvbm5lY3Rpb24oY29uZmlndXJhdGlvbj86IFJUQ0NvbmZpZ3VyYXRpb24pOiBQcm9taXNlPElQZWVyQ29ubmVjdGlvbj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxJUGVlckNvbm5lY3Rpb24+KHJlc29sdmVQZWVyQ29ubmVjdGlvblByb21pc2UgPT4ge1xuICAgICAgY29uc3QgZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24gPSBHbG9iYWxTY29wZS5zdWJzY3JpYmUoZ2xvYmFsU2NvcGUgPT4ge1xuICAgICAgICBpZiAoIWdsb2JhbFNjb3BlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzb2x2ZVBlZXJDb25uZWN0aW9uUHJvbWlzZShuZXcgVmFuaWxsYVBlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb24pKTtcbiAgICAgICAgZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24uZGlzcG9zZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4vU3ViamVjdCc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlYWRPbmx5U3ViamVjdDxUPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1YmplY3Q6IFN1YmplY3Q8VD47XG5cbiAgY29uc3RydWN0b3Ioc3ViamVjdDogU3ViamVjdDxUPikge1xuICAgIHRoaXMuX3N1YmplY3QgPSBzdWJqZWN0O1xuICB9XG5cbiAgZ2V0IHZhbHVlKCk6IFQge1xuICAgIHJldHVybiB0aGlzLl9zdWJqZWN0LnZhbHVlO1xuICB9XG5cbiAgc3Vic2NyaWJlKGxpc3RlbmVyOiAodmFsdWU6IFQpID0+IHZvaWQpOiBJRGlzcG9zYWJsZSB7XG4gICAgcmV0dXJuIHRoaXMuX3N1YmplY3Quc3Vic2NyaWJlKGxpc3RlbmVyKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCBJQ29tcGFyYWJsZSBmcm9tICcuLi9sYW5nL0lDb21wYXJhYmxlJztcblxuY2xhc3MgRGlzcG9zYWJsZUxpc3RlbmVyPFQ+IGV4dGVuZHMgRGlzcG9zYWJsZSB7XG4gIGNvbnN0cnVjdG9yKGxpc3RlbmVyczogVFtdLCBsaXN0ZW5lcjogVCkge1xuICAgIHN1cGVyKCgpID0+IHtcbiAgICAgIGNvbnN0IGlkeCA9IGxpc3RlbmVycy5pbmRleE9mKGxpc3RlbmVyKTtcblxuICAgICAgaWYgKGlkeCA+PSAwKSB7XG4gICAgICAgIGxpc3RlbmVycy5zcGxpY2UoaWR4LCAxKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdWJqZWN0PFQ+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbGlzdGVuZXJzOiAoKHZhbHVlOiBUKSA9PiB2b2lkKVtdO1xuICBwcml2YXRlIF92YWx1ZTogVDtcblxuICBjb25zdHJ1Y3Rvcih2YWx1ZTogVCkge1xuICAgIHRoaXMuX2xpc3RlbmVycyA9IFtdO1xuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBzZXQgdmFsdWUodmFsdWU6IFQpIHtcbiAgICBsZXQgY2hhbmdlZCA9IHRoaXMuX3ZhbHVlICE9PSB2YWx1ZTtcblxuICAgIGlmIChjaGFuZ2VkICYmIHZhbHVlKSB7XG4gICAgICBjb25zdCBjb21wYXJhYmxlID0gdmFsdWUgYXMgdW5rbm93biBhcyBJQ29tcGFyYWJsZTxUPjtcblxuICAgICAgaWYgKHR5cGVvZiBjb21wYXJhYmxlLmVxdWFscyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjaGFuZ2VkID0gIWNvbXBhcmFibGUuZXF1YWxzKHRoaXMuX3ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWNoYW5nZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuXG4gICAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiBbLi4udGhpcy5fbGlzdGVuZXJzXSkge1xuICAgICAgbGlzdGVuZXIodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGdldCB2YWx1ZSgpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBzdWJzY3JpYmUobGlzdGVuZXI6ICh2YWx1ZTogVCkgPT4gdm9pZCk6IElEaXNwb3NhYmxlIHtcbiAgICB0aGlzLl9saXN0ZW5lcnMucHVzaChsaXN0ZW5lcik7XG5cbiAgICBsaXN0ZW5lcih0aGlzLl92YWx1ZSk7XG5cbiAgICByZXR1cm4gbmV3IERpc3Bvc2FibGVMaXN0ZW5lcjwodmFsdWU6IFQpID0+IHZvaWQ+KHRoaXMuX2xpc3RlbmVycywgbGlzdGVuZXIpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFbnZpcm9ubWVudCB7XG4gIHN0YXRpYyBnZXRFbnZpcm9ubWVudEZyb21VcmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBiYXNlVVJMID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh1cmwpO1xuXG4gICAgICByZXR1cm4gYmFzZVVSTC5vcmlnaW47XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IElHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9JR2xvYmFsU2NvcGUnO1xuaW1wb3J0IHtHbG9iYWxTY29wZX0gZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IFN0cmluZ3MgZnJvbSAnLi4vbGFuZy9TdHJpbmdzJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IFJlYWRPbmx5U3ViamVjdCBmcm9tICcuLi9yeC9SZWFkT25seVN1YmplY3QnO1xuaW1wb3J0IEVkZ2VBdXRoUGFyc2VyIGZyb20gJy4uL2VkZ2VBdXRoL0VkZ2VBdXRoUGFyc2VyJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbCwgTG9nZ2luZ0xldmVsVHlwZX0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlcic7XG5pbXBvcnQgQ29uc29sZUFwcGVuZGVyIGZyb20gJy4uL2xvZ2dlci9Db25zb2xlQXBwZW5kZXInO1xuaW1wb3J0IFRlbGVtZXRyeUFwcGVuZGVyIGZyb20gJy4uL3RlbGVtZXRyeS9UZWxlbWV0cnlBcGVuZGVyJztcbmltcG9ydCBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIGZyb20gJy4uL2RvbS9Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyJztcbmltcG9ydCBNZXRyaWNzQ29uZmlndXJhdGlvbiwge1RlbGVtZXRyeUxldmVsLCBUZWxlbWV0cnlMZXZlbFR5cGV9IGZyb20gJy4uL21ldHJpY3MvTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IE1ldHJpY3NTZXJ2aWNlIGZyb20gJy4uL21ldHJpY3MvTWV0cmljc1NlcnZpY2UnO1xuaW1wb3J0IFRlbGVtZXRyeUxldmVsTWFwcGluZyBmcm9tICcuLi9tZXRyaWNzL1RlbGVtZXRyaWNMZXZlbE1hcHBpbmcnO1xuaW1wb3J0IExvZ2dpbmdMZXZlbE1hcHBpbmcgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dpbmdMZXZlbE1hcHBpbmcnO1xuaW1wb3J0IEJ1aWxkRmVhdHVyZXMgZnJvbSAnLi4vZW52aXJvbm1lbnQvQnVpbGRGZWF0dXJlcyc7XG5pbXBvcnQgQnJvd3NlckRldGVjdG9yIGZyb20gJy4uL2RvbS9Ccm93c2VyRGV0ZWN0b3InO1xuaW1wb3J0IEFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIGZyb20gJy4uL2RvbS9BcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcic7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uRmFjdG9yeSBmcm9tICcuLi9ydGMvSVBlZXJDb25uZWN0aW9uRmFjdG9yeSc7XG5pbXBvcnQgUGVlckNvbm5lY3Rpb25TZXJ2aWNlIGZyb20gJy4uL3J0Yy9QZWVyQ29ubmVjdGlvblNlcnZpY2UnO1xuaW1wb3J0IFRlbGVtZXRyeVVybCBmcm9tICcuL1RlbGVtZXRyeVVybCc7XG5pbXBvcnQgRW52aXJvbm1lbnQgZnJvbSAnLi9FbnZpcm9ubWVudCc7XG5pbXBvcnQgRGlzY292ZXJ5VXJpIGZyb20gJy4vZGlzY292ZXJ5L0Rpc2NvdmVyeVVyaSc7XG5pbXBvcnQgTWV0cmljc0ZhY3RvcnkgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzRmFjdG9yeSc7XG5pbXBvcnQgVGVsZW1ldHJ5RGVmYXVsdCBmcm9tICcuLi9tZXRyaWNzL1RlbGVtZXRyeURlZmF1bHQnO1xuaW1wb3J0IHtTaGFrYVBsYXllclR5cGV9IGZyb20gJy4vc3RyZWFtaW5nL0lTaGFrYVBsYXllcic7XG5pbXBvcnQge0hsc1BsYXllclR5cGV9IGZyb20gJy4vc3RyZWFtaW5nL0lIbHNQbGF5ZXInO1xuaW1wb3J0IHtXZWJQbGF5ZXJUeXBlfSBmcm9tICcuL3N0cmVhbWluZy9JV2ViUGxheWVyJztcbmltcG9ydCBJUHJvdmlkZWRHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9JUHJvdmlkZWRHbG9iYWxTY29wZSc7XG5cbmNvbnN0IHBhZ2VMb2FkVGltZSA9IEdsb2JhbFNjb3BlLmdldEluc3RhbmNlKCkudmFsdWU/LnBhZ2VMb2FkVGltZSB8fCBEYXRlLm5vdygpO1xuXG5pbnRlcmZhY2UgSUluaXRPcHRpb25zIHtcbiAgZGlzY292ZXJ5VXJpPzogc3RyaW5nO1xuICBwZWVyQ29ubmVjdGlvbkZhY3Rvcnk/OiBJUGVlckNvbm5lY3Rpb25GYWN0b3J5O1xuICB0ZWxlbWV0cnlMZXZlbD86IFRlbGVtZXRyeUxldmVsVHlwZTtcbiAgbG9nZ2luZ0xldmVsPzogTG9nZ2luZ0xldmVsVHlwZTtcbiAgY29uc29sZUxvZ2dpbmdMZXZlbD86IExvZ2dpbmdMZXZlbFR5cGU7XG4gIGF1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0/OiBib29sZWFuO1xuICBhdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZT86IGJvb2xlYW47XG4gIHdlYlBsYXllckxvYWRlcj86ICh2YWx1ZTogKHBsYXllcjogV2ViUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgc2hha2FQbGF5ZXJMb2FkZXI/OiAodmFsdWU6IChwbGF5ZXI6IFNoYWthUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgaGxzSnNMb2FkZXI/OiAodmFsdWU6IChwbGF5ZXI6IEhsc1BsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNESyB7XG4gIHByaXZhdGUgc3RhdGljIF9hdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmUgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LWF1dG9tYXRpY2FsbHktcmV0cnktb24tZmFpbHVyZScpO1xuICBwcml2YXRlIHN0YXRpYyBfYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1hdXRvbWF0aWNhbGx5LXJlY29ubmVjdC1wZWVyLWNvbm5lY3Rpb24nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2F1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0gPSB0cnVlO1xuICBwcml2YXRlIHN0YXRpYyBfYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmUgPSB0cnVlO1xuICBwcml2YXRlIHN0YXRpYyBfZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtZm9yY2UtZ2FyYmFnZS1jb2xsZWN0aW9uLW9uLXJlc3RhcnQnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3NraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcyA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtc2tpcC1nYXJiYWdlLWNvbGxlY3Rpb24tb24tbW9iaWxlLWRldmljZXMnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3dlYlBsYXllckxvYWRlcjogKHZhbHVlOiAocGxheWVyOiBXZWJQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkO1xuICBwcml2YXRlIHN0YXRpYyBfc2hha2FQbGF5ZXJMb2FkZXI6ICh2YWx1ZTogKHBsYXllcjogU2hha2FQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkO1xuICBwcml2YXRlIHN0YXRpYyBfaGxzSnNMb2FkZXI6ICh2YWx1ZTogKHBsYXllcjogSGxzUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBzdGF0aWMgX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yOiBBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciB8IG51bGw7XG4gIHByaXZhdGUgc3RhdGljIF9lbnZpcm9ubWVudDogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPignJyk7XG4gIHByaXZhdGUgc3RhdGljIF90ZWxlbWV0cnlVcmw6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oJ2h0dHBzOi8vdGVsZW1ldHJ5LnBoZW5peHJ0cy5jb20vdGVsZW1ldHJ5Jyk7XG4gIHByaXZhdGUgc3RhdGljIF9tYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gODtcbiAgcHJpdmF0ZSBzdGF0aWMgX3RlbGVtZXRyeUxldmVsOiBTdWJqZWN0PFRlbGVtZXRyeUxldmVsPiA9IG5ldyBTdWJqZWN0PFRlbGVtZXRyeUxldmVsPihUZWxlbWV0cnlEZWZhdWx0LmRlZmF1bHRUZWxlbWV0cnlMZXZlbCk7XG4gIHByaXZhdGUgc3RhdGljIF9tZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgc3RhdGljIF9tZXRyaWNzQ29uZmlndXJhdGlvbjogTWV0cmljc0NvbmZpZ3VyYXRpb247XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9zZW5kTG9jYWxDYW5kaWRhdGVzOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3QoQnVpbGRGZWF0dXJlcy5zZW5kTG9jYWxDYW5kaWRhdGVzKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3RlbmFuY3k6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oJycpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfY2xpZW50U2Vzc2lvbklkOiBzdHJpbmcgPSBTdHJpbmdzLnJhbmRvbSgzMik7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9sb2FkZWRUaW1lc3RhbXA6IERhdGUgPSBuZXcgRGF0ZSgpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1NESycpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaW5pdGlhbGl6ZWQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9yZWFkT25seUluaXRpYWxpemVkOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KFNESy5faW5pdGlhbGl6ZWQpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfcmVhZE9ubHlEaXNjb3ZlcnlVcmk6IFJlYWRPbmx5U3ViamVjdDxzdHJpbmc+ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxzdHJpbmc+KERpc2NvdmVyeVVyaS51cmkpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfcmVhZE9ubHlQZWVyQ29ubmVjdGlvbkZhY3Rvcnk6IFJlYWRPbmx5U3ViamVjdDxJUGVlckNvbm5lY3Rpb25GYWN0b3J5PiA9IG5ldyBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uRmFjdG9yeT4oUGVlckNvbm5lY3Rpb25TZXJ2aWNlLnBlZXJDb25uZWN0aW9uRmFjdG9yeSk7XG5cbiAgc3RhdGljIGdldCBwYWdlTG9hZFRpbWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gcGFnZUxvYWRUaW1lO1xuICB9XG5cbiAgc3RhdGljIGdldCBzZW5kTG9jYWxDYW5kaWRhdGVzKCk6IFN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9zZW5kTG9jYWxDYW5kaWRhdGVzO1xuICB9XG5cbiAgc3RhdGljIGdldCB0ZW5hbmN5KCk6IFN1YmplY3Q8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuX3RlbmFuY3k7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGNsaWVudFNlc3Npb25JZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBTREsuX2NsaWVudFNlc3Npb25JZDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgbG9hZGVkVGltZXN0YW1wKCk6IERhdGUge1xuICAgIHJldHVybiBTREsuX2xvYWRlZFRpbWVzdGFtcDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaW5pdGlhbGl6ZWQoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gU0RLLl9yZWFkT25seUluaXRpYWxpemVkO1xuICB9XG5cbiAgc3RhdGljIGdldCBkaXNjb3ZlcnlVcmkoKTogUmVhZE9ubHlTdWJqZWN0PHN0cmluZz4ge1xuICAgIHJldHVybiBTREsuX3JlYWRPbmx5RGlzY292ZXJ5VXJpO1xuICB9XG5cbiAgc3RhdGljIGdldCBwZWVyQ29ubmVjdGlvbkZhY3RvcnkoKTogUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+IHtcbiAgICByZXR1cm4gU0RLLl9yZWFkT25seVBlZXJDb25uZWN0aW9uRmFjdG9yeTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYXV0b21hdGljUmV0cnlPbkZhaWx1cmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFNESy5fYXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlO1xuICB9XG5cbiAgc3RhdGljIGdldCBhdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFNESy5fYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uO1xuICB9XG5cbiAgc3RhdGljIGdldCBhdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBTREsuX2F1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW07XG4gIH1cblxuICBzdGF0aWMgZ2V0IGF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBTREsuX2F1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlO1xuICB9XG5cbiAgc3RhdGljIGdldCBmb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0O1xuICB9XG5cbiAgc3RhdGljIGdldCBza2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3NraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgd2ViUGxheWVyTG9hZGVyKCk6ICh2YWx1ZTogKHBsYXllcjogV2ViUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dlYlBsYXllckxvYWRlcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2hha2FQbGF5ZXJMb2FkZXIoKTogKHZhbHVlOiAocGxheWVyOiBTaGFrYVBsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl9zaGFrYVBsYXllckxvYWRlcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaGxzSnNMb2FkZXIoKTogKHZhbHVlOiAocGxheWVyOiBIbHNQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5faGxzSnNMb2FkZXI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IG1ldHJpY3NTZXJ2aWNlKCk6IE1ldHJpY3NTZXJ2aWNlIHtcbiAgICByZXR1cm4gU0RLLl9tZXRyaWNzU2VydmljZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IoKTogQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3I7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHRlbGVtZXRyeVVybCgpOiBTdWJqZWN0PHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLl90ZWxlbWV0cnlVcmw7XG4gIH1cblxuICBzdGF0aWMgZ2V0IG1heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cztcbiAgfVxuXG4gIHN0YXRpYyBzZXQgbWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyhyZXRyaWVzQW1vdW50OiBudW1iZXIpIHtcbiAgICB0aGlzLl9tYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gcmV0cmllc0Ftb3VudDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgbG9nZ2luZ0xldmVsKCk6IExvZ2dpbmdMZXZlbFR5cGUge1xuICAgIHJldHVybiBMb2dnaW5nTGV2ZWxNYXBwaW5nLmNvbnZlcnRMb2dnaW5nTGV2ZWxUb0xvZ2dpbmdMZXZlbFR5cGUodGhpcy5fbG9nZ2VyLnRocmVzaG9sZC52YWx1ZSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHRlbGVtZXRyeUxldmVsKCk6IFRlbGVtZXRyeUxldmVsVHlwZSB7XG4gICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsTWFwcGluZy5jb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUb1RlbGVtZXRyeUxldmVsVHlwZShTREsuX3RlbGVtZXRyeUxldmVsLnZhbHVlKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYnJvd3NlckRldGVjdG9yKCk6IEJyb3dzZXJEZXRlY3RvciB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3RvcjtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseVRlbGVtZXRyeUNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgY29uc3QgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbiA9IExvZ2dlckZhY3RvcnkudGVsZW1ldHJ5Q29uZmlndXJhdGlvbjtcblxuICAgIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24uc2Vzc2lvbklkID0gU0RLLmNsaWVudFNlc3Npb25JZDtcbiAgICB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnBhZ2VMb2FkVGltZSA9IFNESy5wYWdlTG9hZFRpbWU7XG5cbiAgICBjb25zdCBpZ25vcmVkRW52aXJvbm1lbnQgPSBTREsuX2Vudmlyb25tZW50LnN1YnNjcmliZShlbnZpcm9ubWVudCA9PiB7XG4gICAgICB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLmVudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XG4gICAgfSk7XG4gICAgY29uc3QgaWdub3JlZERpc2NvdmVyeVVyaSA9IFNESy50ZWxlbWV0cnlVcmwuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIGNvbnN0IHRlbGVtZXRyeUFwcGVuZGVyID0gdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy52YWx1ZS5maW5kKGFwcGVuZGVyID0+IGFwcGVuZGVyIGluc3RhbmNlb2YgVGVsZW1ldHJ5QXBwZW5kZXIpO1xuXG4gICAgICBpZiAodGVsZW1ldHJ5QXBwZW5kZXIpIHtcbiAgICAgICAgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi51cmwgPSB2YWx1ZTtcblxuICAgICAgICB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLnJlbW92ZSh0ZWxlbWV0cnlBcHBlbmRlcik7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMuYWRkKG5ldyBUZWxlbWV0cnlBcHBlbmRlcih0ZWxlbWV0cnlDb25maWd1cmF0aW9uKSk7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdUZWxlbWV0cnkgVVJMIHdhcyBzZXQgdG8gWyVzXScsIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udXJsKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBpZ25vcmVkVGVuYW5jeSA9IFNESy5fdGVuYW5jeS5zdWJzY3JpYmUodGVuYW5jeSA9PiB7XG4gICAgICBjb25zdCB0ZWxlbWV0cnlBcHBlbmRlciA9IHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMudmFsdWUuZmluZChhcHBlbmRlciA9PiBhcHBlbmRlciBpbnN0YW5jZW9mIFRlbGVtZXRyeUFwcGVuZGVyKTtcblxuICAgICAgaWYgKHRlbGVtZXRyeUFwcGVuZGVyICYmIHRlbmFuY3kpIHtcbiAgICAgICAgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50ZW5hbmN5ID0gdGVuYW5jeTtcblxuICAgICAgICB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLnJlbW92ZSh0ZWxlbWV0cnlBcHBlbmRlcik7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMuYWRkKG5ldyBUZWxlbWV0cnlBcHBlbmRlcih0ZWxlbWV0cnlDb25maWd1cmF0aW9uKSk7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdUZWxlbWV0cnkgdGVuYW5jeSB3YXMgc2V0IHRvIFslc10nLCB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnRlbmFuY3kpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5TWV0cmljc0NvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgU0RLLl9tZXRyaWNzU2VydmljZSA9IE1ldHJpY3NGYWN0b3J5LmdldE1ldHJpY3NTZXJ2aWNlKERpc2NvdmVyeVVyaS51cmkudmFsdWUpO1xuICAgIFNESy5fbWV0cmljc0NvbmZpZ3VyYXRpb24gPSBTREsuX21ldHJpY3NTZXJ2aWNlLm1ldHJpY3NDb25maWd1cmF0aW9uO1xuXG4gICAgU0RLLl9tZXRyaWNzQ29uZmlndXJhdGlvbi5zZXNzaW9uSWQgPSBTREsuY2xpZW50U2Vzc2lvbklkO1xuXG4gICAgY29uc3QgaWdub3JlZEVudmlyb25tZW50ID0gU0RLLl9lbnZpcm9ubWVudC5zdWJzY3JpYmUoZW52aXJvbm1lbnQgPT4ge1xuICAgICAgU0RLLl9tZXRyaWNzQ29uZmlndXJhdGlvbi5lbnZpcm9ubWVudCA9IGVudmlyb25tZW50O1xuICAgIH0pO1xuICAgIGNvbnN0IGlnbm9yZWREaXNjb3ZlcnlVcmkgPSBTREsudGVsZW1ldHJ5VXJsLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBTREsuX21ldHJpY3NDb25maWd1cmF0aW9uLnVybCA9IHZhbHVlO1xuICAgIH0pO1xuICAgIGNvbnN0IGlnbm9yZWRUZW5hbmN5ID0gU0RLLl90ZW5hbmN5LnN1YnNjcmliZSh0ZW5hbmN5ID0+IHtcbiAgICAgIFNESy5fbWV0cmljc0NvbmZpZ3VyYXRpb24udGVuYW5jeSA9IHRlbmFuY3k7XG4gICAgfSk7XG4gICAgY29uc3QgdmFsdWUgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldFN0cmluZ1ZhbHVlKCdwaGVuaXgtbWV0cmljcy1sZXZlbCcpIGFzIFRlbGVtZXRyeUxldmVsVHlwZTtcblxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgTWV0cmljc0ZhY3Rvcnkuc2V0VGVsZW1ldHJ5TGV2ZWwoVGVsZW1ldHJ5TGV2ZWxbdmFsdWVdKTtcbiAgICB9XG5cbiAgICBjb25zdCBpZ25vcmVkVGVsZW1ldHJ5TGV2ZWwgPSBTREsuX3RlbGVtZXRyeUxldmVsLnN1YnNjcmliZSh0ZWxlbWV0cnlMZXZlbCA9PiB7XG4gICAgICBNZXRyaWNzRmFjdG9yeS5zZXRUZWxlbWV0cnlMZXZlbCh0ZWxlbWV0cnlMZXZlbCk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlBdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmVGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9hdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmUgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LWF1dG9tYXRpY2FsbHktcmV0cnktb24tZmFpbHVyZScpO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdBdXRvbWF0aWNhbGx5IHJldHJ5IG9uIGZhaWx1cmUgaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fYXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUF1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbkZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX2F1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbiA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtYXV0b21hdGljYWxseS1yZWNvbm5lY3QtcGVlci1jb25uZWN0aW9uJyk7XG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0F1dG9tYXRpY2FsbHkgcmVjb25uZWN0IHBlZXIgY29ubmVjdGlvbiBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24pO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5Rm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydEZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LWZvcmNlLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1yZXN0YXJ0Jyk7XG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0ZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbiBvbiByZXN0YXJ0IGlzIHNldCB0bzogWyVzXScsIHRoaXMuX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5U2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1za2lwLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1tb2JpbGUtZGV2aWNlcycpO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdTa2lwIGdhcmJhZ2UgY29sbGVjdGlvbiBvbiBtb2JpbGUgZGV2aWNlcyBvbiByZXN0YXJ0IGlzIHNldCB0bzogWyVzXScsIHRoaXMuX3NraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcyk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBzdGF0aWMgYXBwbHlEaXNjb3ZlcnlVcmlEZWZhdWx0RnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgU0RLLmRpc2NvdmVyeVVyaS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgU0RLLnRlbGVtZXRyeVVybC52YWx1ZSA9IFNESy5nZXRUZWxlbWV0cnlVcmwodmFsdWUpO1xuICAgICAgU0RLLl9lbnZpcm9ubWVudC52YWx1ZSA9IEVudmlyb25tZW50LmdldEVudmlyb25tZW50RnJvbVVybCh2YWx1ZSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBjaGFubmVsVG9rZW4gPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldFN0cmluZ1ZhbHVlKCdwaGVuaXgtY2hhbm5lbC10b2tlbicpO1xuXG4gICAgaWYgKGNoYW5uZWxUb2tlbikge1xuICAgICAgY29uc3QgZWRnZVRva2VuID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbihjaGFubmVsVG9rZW4pO1xuXG4gICAgICBTREsuX3RlbmFuY3kudmFsdWUgPSBlZGdlVG9rZW4udGVuYW5jeTtcbiAgICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSAoZWRnZVRva2VuLnVyaSB8fCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKS50b1N0cmluZygpO1xuXG4gICAgICB0aGlzLl9sb2dnZXIuaW5mbygnRGlzY292ZXJ5IFVSSSBzZXQgZnJvbSBjb25maWd1cmF0aW9uIHBhcmFtZXRlciB0byBbJXNdJywgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB1cmlWYWx1ZSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0U3RyaW5nVmFsdWUoJ3BoZW5peC11cmknKTtcblxuICAgIGlmICh1cmlWYWx1ZSkge1xuICAgICAgRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSA9IHVyaVZhbHVlO1xuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Rpc2NvdmVyeSBVUkkgc2V0IGZyb20gXCJwaGVuaXgtdXJpXCIgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgdGFnIHRvIFslc10nLCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGJhc2VVUklWYWx1ZSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0U3RyaW5nVmFsdWUoJ3BoZW5peC1iYXNlLXVyaScpO1xuXG4gICAgaWYgKGJhc2VVUklWYWx1ZSkge1xuICAgICAgY29uc3QgZ2xvYmFsU2NvcGUgPSBHbG9iYWxTY29wZS5nZXRJbnN0YW5jZSgpLnZhbHVlO1xuICAgICAgY29uc3QgdXJpID0gbmV3IGdsb2JhbFNjb3BlLlVSTChiYXNlVVJJVmFsdWUpO1xuXG4gICAgICB1cmkucGF0aG5hbWUgPSAnL3BjYXN0L2VuZFBvaW50cyc7XG4gICAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gdXJpLnRvU3RyaW5nKCk7XG4gICAgICB0aGlzLl9sb2dnZXIuaW5mbygnRGlzY292ZXJ5IFVSSSBzZXQgZnJvbSBcInBoZW5peC1iYXNlLXVyaVwiIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIHRhZyB0byBbJXNdJywgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgb25Mb2FkKGdsb2JhbFNjb3BlOiBJR2xvYmFsU2NvcGUgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKCFnbG9iYWxTY29wZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9pbml0aWFsaXplZC52YWx1ZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ1NESyBoYXMgYWxyZWFkeSBiZWVuIGxvYWRlZCcpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZ2xvYmFsU2NvcGUuYWRkV2luZG93RXZlbnRMaXN0ZW5lcigndW5sb2FkJywgKCkgPT4ge1xuICAgICAgU0RLLmRpc3Bvc2UoKTtcbiAgICB9KTtcblxuICAgIFNESy5hcHBseURpc2NvdmVyeVVyaURlZmF1bHRGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpO1xuICAgIFNESy5hcHBseU1ldHJpY3NDb25maWd1cmF0aW9uKCk7XG4gICAgU0RLLmFwcGx5VGVsZW1ldHJ5Q29uZmlndXJhdGlvbigpO1xuXG4gICAgdGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IgPSBuZXcgQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IoKTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdBdXRvbWF0aWNhbGx5IHJldHJ5IG9uIGZhaWx1cmUgaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fYXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlKTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnQXV0b21hdGljYWxseSByZWNvbm5lY3QgcGVlciBjb25uZWN0aW9uIGlzIHNldCB0bzogWyVzXScsIHRoaXMuX2F1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbik7XG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0ZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbiBvbiByZXN0YXJ0IGlzIHNldCB0bzogWyVzXScsIHRoaXMuX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQpO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdTa2lwIGdhcmJhZ2UgY29sbGVjdGlvbiBvbiBtb2JpbGUgZGV2aWNlcyBvbiByZXN0YXJ0IGlzIHNldCB0bzogWyVzXScsIHRoaXMuX3NraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcyk7XG5cbiAgICB0aGlzLl9pbml0aWFsaXplZC52YWx1ZSA9IHRydWU7XG4gIH1cblxuICBzdGF0aWMgaW5pdChvcHRpb25zPzogSUluaXRPcHRpb25zKTogdm9pZCB7XG4gICAgaWYgKCFvcHRpb25zKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb3B0aW9uc1dpdGhPcHRpb25hbGdsb2JhbFNjb3BlOiBJSW5pdE9wdGlvbnMgJiB7Z2xvYmFsU2NvcGU/OiBJUHJvdmlkZWRHbG9iYWxTY29wZX0gPSBvcHRpb25zO1xuXG4gICAgaWYgKG9wdGlvbnNXaXRoT3B0aW9uYWxnbG9iYWxTY29wZS5nbG9iYWxTY29wZSkge1xuICAgICAgR2xvYmFsU2NvcGUuc2V0SW5zdGFuY2Uob3B0aW9uc1dpdGhPcHRpb25hbGdsb2JhbFNjb3BlLmdsb2JhbFNjb3BlKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5kaXNjb3ZlcnlVcmkpIHtcbiAgICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSBvcHRpb25zLmRpc2NvdmVyeVVyaTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5wZWVyQ29ubmVjdGlvbkZhY3RvcnkpIHtcbiAgICAgIFBlZXJDb25uZWN0aW9uU2VydmljZS5wZWVyQ29ubmVjdGlvbkZhY3RvcnkudmFsdWUgPSBvcHRpb25zLnBlZXJDb25uZWN0aW9uRmFjdG9yeTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy50ZWxlbWV0cnlMZXZlbCAmJiBUZWxlbWV0cnlMZXZlbFtvcHRpb25zLnRlbGVtZXRyeUxldmVsXSkge1xuICAgICAgU0RLLl90ZWxlbWV0cnlMZXZlbC52YWx1ZSA9IFRlbGVtZXRyeUxldmVsTWFwcGluZy5jb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUeXBlVG9UZWxlbWV0cnlMZXZlbChvcHRpb25zLnRlbGVtZXRyeUxldmVsKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5sb2dnaW5nTGV2ZWwgJiYgTG9nZ2luZ0xldmVsW29wdGlvbnMubG9nZ2luZ0xldmVsXSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLnRocmVzaG9sZC5zZXRUaHJlc2hvbGQoTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVHlwZVRvTG9nZ2luZ0xldmVsKG9wdGlvbnMubG9nZ2luZ0xldmVsKSk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuY29uc29sZUxvZ2dpbmdMZXZlbCAmJiBMb2dnaW5nTGV2ZWxbb3B0aW9ucy5jb25zb2xlTG9nZ2luZ0xldmVsXSkge1xuICAgICAgY29uc3QgY29uc29sZUFwcGVuZGVyID0gdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy52YWx1ZS5maW5kKGFwcGVuZGVyID0+IGFwcGVuZGVyIGluc3RhbmNlb2YgQ29uc29sZUFwcGVuZGVyKTtcblxuICAgICAgaWYgKGNvbnNvbGVBcHBlbmRlcikge1xuICAgICAgICB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLnJlbW92ZShjb25zb2xlQXBwZW5kZXIpO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5jb25zb2xlTG9nZ2luZ0xldmVsICE9PSAnT2ZmJykge1xuICAgICAgICB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLmFkZChuZXcgQ29uc29sZUFwcGVuZGVyKExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFR5cGVUb0xvZ2dpbmdMZXZlbChvcHRpb25zLmNvbnNvbGVMb2dnaW5nTGV2ZWwpKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmF1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0gPT09ICdib29sZWFuJykge1xuICAgICAgdGhpcy5fYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSA9IG9wdGlvbnMuYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMuYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmUgPT09ICdib29sZWFuJykge1xuICAgICAgdGhpcy5fYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmUgPSBvcHRpb25zLmF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLndlYlBsYXllckxvYWRlcikge1xuICAgICAgdGhpcy5fd2ViUGxheWVyTG9hZGVyID0gb3B0aW9ucy53ZWJQbGF5ZXJMb2FkZXI7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuc2hha2FQbGF5ZXJMb2FkZXIpIHtcbiAgICAgIHRoaXMuX3NoYWthUGxheWVyTG9hZGVyID0gb3B0aW9ucy5zaGFrYVBsYXllckxvYWRlcjtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5obHNKc0xvYWRlcikge1xuICAgICAgdGhpcy5faGxzSnNMb2FkZXIgPSBvcHRpb25zLmhsc0pzTG9hZGVyO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBkaXNwb3NlKCk6IHZvaWQge1xuICAgIFNESy5faW5pdGlhbGl6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcj8uZGlzcG9zZSgpO1xuICAgIHRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yID0gbnVsbDtcbiAgfVxuXG4gIHN0YXRpYyBnZXRUZWxlbWV0cnlVcmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBUZWxlbWV0cnlVcmwuZ2V0VGVsZW1ldHJ5VXJsKHVybCk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignU0RLIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufVxuXG5HbG9iYWxTY29wZS5zdWJzY3JpYmUoU0RLLm9uTG9hZC5iaW5kKFNESykpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVsZW1ldHJ5VXJsIHtcbiAgc3RhdGljIGdldFRlbGVtZXRyeVVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGJhc2VVUkwgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHVybCk7XG4gICAgICBjb25zdCBzZWdtZW50cyA9IGJhc2VVUkwuaG9zdG5hbWUuc3BsaXQoJy4nKTtcblxuICAgICAgc3dpdGNoIChiYXNlVVJMLnByb3RvY29sKSB7XG4gICAgICAgIGNhc2UgJ3dzOic6XG4gICAgICAgICAgYmFzZVVSTC5wcm90b2NvbCA9ICdodHRwOic7XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnd3NzOic6XG4gICAgICAgICAgYmFzZVVSTC5wcm90b2NvbCA9ICdodHRwczonO1xuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKHNlZ21lbnRzLmxlbmd0aCA9PT0gMiB8fFxuICAgICAgICAgIChzZWdtZW50cy5sZW5ndGggPT09IDMgJiYgc2VnbWVudHNbc2VnbWVudHMubGVuZ3RoIC0gMl0ubGVuZ3RoIDw9IDIgJiYgc2VnbWVudHNbc2VnbWVudHMubGVuZ3RoIC0gMV0ubGVuZ3RoIDw9IDMpXG4gICAgICApIHtcbiAgICAgICAgc2VnbWVudHMudW5zaGlmdCgndGVsZW1ldHJ5Jyk7XG4gICAgICB9IGVsc2UgaWYgKHNlZ21lbnRzWzBdLnN0YXJ0c1dpdGgoJ3N0Zy0nKSB8fCBzZWdtZW50c1swXS5lbmRzV2l0aCgnLXN0ZycpIHx8IHNlZ21lbnRzWzBdLmluY2x1ZGVzKCctc3RnLScpIHx8IHNlZ21lbnRzWzBdID09PSAnc3RnJykge1xuICAgICAgICBzZWdtZW50c1swXSA9ICd0ZWxlbWV0cnktc3RnJztcbiAgICAgIH0gZWxzZSBpZiAoc2VnbWVudHNbMF0uc3RhcnRzV2l0aCgnbG9jYWwnKSB8fCBzZWdtZW50c1swXS5lbmRzV2l0aCgnLWxvY2FsJykpIHtcbiAgICAgICAgLy8gTGVhdmUgVVJMIHVuY2hhbmdlZFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VnbWVudHNbMF0gPSAndGVsZW1ldHJ5JztcbiAgICAgIH1cblxuICAgICAgYmFzZVVSTC5ob3N0bmFtZSA9IHNlZ21lbnRzLmpvaW4oJy4nKTtcblxuICAgICAgcmV0dXJuIGAke2Jhc2VVUkwub3JpZ2lufS90ZWxlbWV0cnlgO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB1cmw7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgdHlwZSBCaXRyYXRlU3RhdGVUeXBlID0gJ0tlZXAnIHwgJ1Jlc2V0JztcbmV4cG9ydCB0eXBlIEJpdHJhdGVNb2RlVHlwZSA9ICdOb3JtYWwnIHwgJ0ZvcmNlJyB8ICdSZXNldCc7XG5cbmV4cG9ydCBlbnVtIEJpdHJhdGVTdGF0ZSB7XG4gIEtlZXAsXG4gIFJlc2V0XG59XG5cbmV4cG9ydCBlbnVtIEJpdHJhdGVNb2RlIHtcbiAgTm9ybWFsLFxuICBGb3JjZSxcbiAgUmVzZXRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUge1xuICBhcGlWZXJzaW9uOiBudW1iZXI7XG4gIHNoYXJlZFNlY3JldDogc3RyaW5nO1xuICBlbGFwc2VkSW5NaWxsaXNlY29uZHM6IG51bWJlcjtcbiAgYml0cmF0ZUluQml0c1BlclNlY29uZDogbnVtYmVyO1xuICBiaXRyYXRlU3RhdGU6IEJpdHJhdGVTdGF0ZVR5cGU7XG4gIGJpdHJhdGVNb2RlOiBCaXRyYXRlTW9kZVR5cGU7XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IFJlYWRPbmx5U3ViamVjdCBmcm9tICcuLi8uLi9yeC9SZWFkT25seVN1YmplY3QnO1xuaW1wb3J0IERpbWVuc2lvbiBmcm9tICcuLi8uLi92aWRlby9EaW1lbnNpb24nO1xuaW1wb3J0IEV4cG9uZW50aWFsQmFja29mZiBmcm9tICcuLi8uLi90aW1lL0V4cG9uZW50aWFsQmFja29mZic7XG5pbXBvcnQgRW5kUG9pbnQsIHtJU3RyZWFtfSBmcm9tICcuLi9kaXNjb3ZlcnkvRW5kUG9pbnQnO1xuaW1wb3J0IHtJT25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFja30gZnJvbSAnLi9JT25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayc7XG5pbXBvcnQge0lPblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFja30gZnJvbSAnLi9JT25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2snO1xuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuLi8uLi9ydGMvSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCB7SUNoYW5uZWx9IGZyb20gJy4vSUNoYW5uZWwnO1xuaW1wb3J0IENoYW5uZWxTdGF0ZSBmcm9tICcuL0NoYW5uZWxTdGF0ZSc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBWaWRlb1RlbGVtZXRyeSBmcm9tICcuLi8uLi92aWRlby9WaWRlb1RlbGVtZXRyeSc7XG5pbXBvcnQgU2Vzc2lvblRlbGVtZXRyeSBmcm9tICcuLi8uLi92aWRlby9TZXNzaW9uVGVsZW1ldHJ5JztcbmltcG9ydCB7SVJ0Y01vbml0b3JTdGF0aXN0aWN9IGZyb20gJy4uLy4uL3J0Yy9SdGNDb25uZWN0aW9uTW9uaXRvcic7XG5pbXBvcnQge0JpdHJhdGVNb2RlLCBCaXRyYXRlU3RhdGV9IGZyb20gJy4uL2FwaS9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSc7XG5pbXBvcnQgRWRnZUF1dGhQYXJzZXIgZnJvbSAnLi4vLi4vZWRnZUF1dGgvRWRnZUF1dGhQYXJzZXInO1xuaW1wb3J0IHtFbmNvZGVkRWRnZVRva2VufSBmcm9tICcuLi8uLi9lZGdlQXV0aC9FbmNvZGVkRWRnZVRva2VuJztcbmltcG9ydCB7Qml0c1BlclNlY29uZCwgTWlsbGlzZWNvbmR9IGZyb20gJy4uLy4uL3VuaXRzL1VuaXRzJztcbmltcG9ydCBUb2tlbkNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9Ub2tlbkNvbnRleHQnO1xuaW1wb3J0IENoYW5uZWxDb250ZXh0LCB7Q2hhbm5lbENvbnRleHRPcHRpb25zfSBmcm9tICcuLi9jb250ZXh0L0NoYW5uZWxDb250ZXh0JztcbmltcG9ydCBFbmNvZGVkU3RyZWFtU2luaywge0lFbmNvZGVkU3RyZWFtU2lua30gZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vRW5jb2RlZFN0cmVhbVNpbmsnO1xuaW1wb3J0IFN0cmVhbVRyYWNrVHJhbnNmb3JtLCB7SVN0cmVhbVRyYWNrVHJhbnNmb3JtfSBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi9TdHJlYW1UcmFja1RyYW5zZm9ybSc7XG5pbXBvcnQgU3RyZWFtVHJhbnNmb3JtQ29udGV4dCwge1N0cmVhbVRyYW5zZm9ybUNvbnRleHRPcHRpb25zfSBmcm9tICcuLi9jb250ZXh0L1N0cmVhbVRyYW5zZm9ybUNvbnRleHQnO1xuaW1wb3J0IFBlZXJDb25uZWN0aW9uQ29udGV4dCwge1BlZXJDb25uZWN0aW9uQ29udGV4dE9wdGlvbnN9IGZyb20gJy4uL2NvbnRleHQvUGVlckNvbm5lY3Rpb25Db250ZXh0JztcbmltcG9ydCBTdGF0ZUNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9TdGF0ZUNvbnRleHQnO1xuaW1wb3J0IEZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0IGZyb20gJy4uL2NvbnRleHQvRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQnO1xuaW1wb3J0IHtEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiwgUmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9ufSBmcm9tICcuLi9mcmFtZVRpbWluZy9GcmFtZVRpbWluZ0luZm9ybWF0aW9uJztcbmltcG9ydCB7SVN0cmVhbVN1YnNjcmliZXJ9IGZyb20gJy4uL3N0cmVhbWluZy9JU3RyZWFtU3Vic2NyaWJlcic7XG5pbXBvcnQgU3RyZWFtU3Vic2NyaWJlckZhY3RvcnkgZnJvbSAnLi4vc3RyZWFtaW5nL1N0cmVhbVN1YnNjcmliZXJGYWN0b3J5JztcbmltcG9ydCBEaXNjb3ZlcnkgZnJvbSAnLi4vZGlzY292ZXJ5L0Rpc2NvdmVyeSc7XG5pbXBvcnQgRGlzY292ZXJ5VXJpIGZyb20gJy4uL2Rpc2NvdmVyeS9EaXNjb3ZlcnlVcmknO1xuaW1wb3J0IE1ldHJpY3NGYWN0b3J5IGZyb20gJy4uLy4uL21ldHJpY3MvTWV0cmljc0ZhY3RvcnknO1xuaW1wb3J0IE1ldHJpY3NTZXJ2aWNlIGZyb20gJy4uLy4uL21ldHJpY3MvTWV0cmljc1NlcnZpY2UnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uLy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcblxuY29uc3QgZGVmYXVsdFN0cmVhbVRlcm1pbmF0aW9uUmVhc29uID0gJ2NsaWVudDp0ZXJtaW5hdGlvbic7XG5jb25zdCBmb3JlZ3JvdW5kUmVzdGFydFJlYXNvbkJhY2tncm91bmRUaW1lb3V0ID0gJ2NsaWVudDpmb3JlZ3JvdW5kZWQ6YmFja2dyb3VuZC10aW1lb3V0JztcbmNvbnN0IGZvcmVncm91bmRSZXN0YXJ0UmVhc29uVW5oZWFsdGh5ID0gJ2NsaWVudDpmb3JlZ3JvdW5kZWQ6dW5oZWFsdGh5JztcbmNvbnN0IGZvcmVncm91bmRSZXN0YXJ0UmVhc29uVW5oZWFsdGh5SGVhbHRoQ2hlY2sgPSAnY2xpZW50OmZvcmVncm91bmRlZDp1bmhlYWx0aHktaGVhbHRoLWNoZWNrJztcbmNvbnN0IGZhaWx1cmVDb3VudENsZWFuVXBJbnRlcnZhbEluTWlsbGlzZWNvbmRzID0gMzAwMDtcbmNvbnN0IHN0YW5kYnlQb2xsaW5nSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyA9IDE1MDAwO1xuY29uc3QgYmFja2dyb3VuZFJlY292ZXJ5RmFpbHNhZmVJbnRlcnZhbEluTWlsbGlzZWNvbmRzID0gNTAwMDtcbmNvbnN0IHN0cmVhbURlbGV0aW9uVGhyZXNob2xkSW5NaWxsaXNlY29uZHMgPSAzMDAwMDtcblxuZXhwb3J0IHR5cGUgQ2hhbm5lbE9wdGlvbnMgPSB7XG4gIHRhcmdldExhZz86IE1pbGxpc2Vjb25kO1xuICB2aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrPzogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPFZpZGVvRnJhbWU+O1xuICBhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrPzogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPEF1ZGlvRGF0YT47XG4gIGVuY29kZWRWaWRlb1N0cmVhbVNpbms/OiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZFZpZGVvRnJhbWU+O1xuICBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rPzogSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRBdWRpb0ZyYW1lPjtcbiAgb25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaz86IElPblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrO1xuICBvblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaz86IElPblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaztcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENoYW5uZWwgaW1wbGVtZW50cyBJQ2hhbm5lbCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdDaGFubmVsJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Rva2VuQ29udGV4dDogVG9rZW5Db250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9jaGFubmVsQ29udGV4dDogQ2hhbm5lbENvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BlZXJDb25uZWN0aW9uQ29udGV4dDogUGVlckNvbm5lY3Rpb25Db250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0OiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdGF0ZUNvbnRleHQ6IFN0YXRlQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQ6IEZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9leHBvbmVudGlhbEJhY2tvZmY6IEV4cG9uZW50aWFsQmFja29mZjtcbiAgcHJpdmF0ZSByZWFkb25seSBfY2hhbm5lbFN0YXJ0VGltZTogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVBlZXJDb25uZWN0aW9uOiBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uIHwgbnVsbD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5U3RhdGU6IFJlYWRPbmx5U3ViamVjdDxDaGFubmVsU3RhdGU+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUV4aXN0czogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4gfCBudWxsPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlBdXRvTXV0ZWQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlBdXRvUGF1c2VkOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5VG9rZW5FeHBpcmluZzogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUF1dGhvcml6ZWQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlPbmxpbmU6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlMb2FkaW5nOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5UGxheWluZzogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVN0YW5kYnk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlTdG9wcGVkOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5VGFyZ2V0TGFnOiBSZWFkT25seVN1YmplY3Q8TWlsbGlzZWNvbmQ+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUxhZzogUmVhZE9ubHlTdWJqZWN0PG51bWJlciB8IHVuZGVmaW5lZD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5Qml0cmF0ZUxpbWl0OiBSZWFkT25seVN1YmplY3Q8Qml0c1BlclNlY29uZD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5UmVzb2x1dGlvbjogUmVhZE9ubHlTdWJqZWN0PERpbWVuc2lvbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5RmFpbHVyZUNvdW50OiBSZWFkT25seVN1YmplY3Q8bnVtYmVyPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlFbmRQb2ludDogUmVhZE9ubHlTdWJqZWN0PEVuZFBvaW50IHwgbnVsbD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5U3RyZWFtOiBSZWFkT25seVN1YmplY3Q8SVN0cmVhbSB8IG51bGw+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVJ0Y1N0YXRpc3RpY3M6IFJlYWRPbmx5U3ViamVjdDxJUnRjTW9uaXRvclN0YXRpc3RpYyB8IG51bGw+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seU1lZGlhU3RyZWFtOiBSZWFkT25seVN1YmplY3Q8TWVkaWFTdHJlYW0gfCBudWxsPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlJc0ZyYW1lVGltaW5nSW5mb3JtYXRpb25FbmFibGVkOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb246IFJlYWRPbmx5U3ViamVjdDxEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbjogUmVhZE9ubHlTdWJqZWN0PFJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+O1xuXG4gIHByaXZhdGUgX21ldHJpY3NTZXJ2aWNlOiBNZXRyaWNzU2VydmljZTtcbiAgcHJpdmF0ZSBfc3RyZWFtU3Vic2NyaWJlcjogSVN0cmVhbVN1YnNjcmliZXIgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2Vzc2lvblRlbGVtZXRyeTogU2Vzc2lvblRlbGVtZXRyeTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdmlkZW9NZXRhRGF0YUNoYW5nZWRIYW5kbGVyOiAoKSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKHZpZGVvRWxlbWVudDogSFRNTFZpZGVvRWxlbWVudCwgdG9rZW46IEVuY29kZWRFZGdlVG9rZW4sIG9wdGlvbnM/OiBDaGFubmVsT3B0aW9ucykge1xuICAgIGNvbnN0IGVkZ2VUb2tlbiA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4odG9rZW4pO1xuICAgIGNvbnN0IGNoYW5uZWxDb250ZXh0T3B0aW9uczogQ2hhbm5lbENvbnRleHRPcHRpb25zID0ge1xuICAgICAgdGFyZ2V0TGFnOiBvcHRpb25zPy50YXJnZXRMYWcsXG4gICAgICBvblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrOiBvcHRpb25zPy5vblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrLFxuICAgICAgb25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s6IG9wdGlvbnM/Lm9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrXG4gICAgfTtcbiAgICBjb25zdCBwZWVyQ29ubmVjdGlvbkNvbnRleHRPcHRpb25zOiBQZWVyQ29ubmVjdGlvbkNvbnRleHRPcHRpb25zID0ge2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQ6IFNESy5mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0fTtcbiAgICBjb25zdCBzdHJlYW1UcmFuc2Zvcm1Db250ZXh0T3B0aW9uczogU3RyZWFtVHJhbnNmb3JtQ29udGV4dE9wdGlvbnMgPSB7XG4gICAgICBoYXNJbnNlcnRhYmxlU3RyZWFtczogZWRnZVRva2VuLmNhcGFiaWxpdGllcy5pbmNsdWRlcygnaW5zZXJ0YWJsZS1zdHJlYW1zJyksXG4gICAgICBoYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXM6IGVkZ2VUb2tlbi5jYXBhYmlsaXRpZXMuaW5jbHVkZXMoJ2VuY29kZWQtaW5zZXJ0YWJsZS1zdHJlYW1zJyksXG4gICAgICB2aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBvcHRpb25zPy52aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrLFxuICAgICAgYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogb3B0aW9ucz8uYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayxcbiAgICAgIGVuY29kZWRWaWRlb1N0cmVhbVNpbms6IG9wdGlvbnM/LmVuY29kZWRWaWRlb1N0cmVhbVNpbmssXG4gICAgICBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rOiBvcHRpb25zPy5lbmNvZGVkQXVkaW9TdHJlYW1TaW5rXG4gICAgfTtcblxuICAgIHRoaXMuX3Rva2VuQ29udGV4dCA9IG5ldyBUb2tlbkNvbnRleHQodG9rZW4pO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0ID0gbmV3IENoYW5uZWxDb250ZXh0KGNoYW5uZWxDb250ZXh0T3B0aW9ucyk7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0ID0gbmV3IFBlZXJDb25uZWN0aW9uQ29udGV4dChwZWVyQ29ubmVjdGlvbkNvbnRleHRPcHRpb25zKTtcbiAgICB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0ID0gbmV3IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQoc3RyZWFtVHJhbnNmb3JtQ29udGV4dE9wdGlvbnMpO1xuICAgIHRoaXMuX3N0YXRlQ29udGV4dCA9IG5ldyBTdGF0ZUNvbnRleHQoKTtcbiAgICB0aGlzLl9leHBvbmVudGlhbEJhY2tvZmYgPSBuZXcgRXhwb25lbnRpYWxCYWNrb2ZmKCk7XG4gICAgdGhpcy5fY2hhbm5lbFN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgdGhpcy5fcmVhZE9ubHlQZWVyQ29ubmVjdGlvbiA9IG5ldyBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uIHwgbnVsbD4odGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uKTtcbiAgICB0aGlzLl9yZWFkT25seVN0YXRlID0gbmV3IFJlYWRPbmx5U3ViamVjdDxDaGFubmVsU3RhdGU+KHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlKTtcbiAgICB0aGlzLl9yZWFkT25seUV4aXN0cyA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbiB8IG51bGw+KHRoaXMuX2NoYW5uZWxDb250ZXh0LmV4aXN0cyk7XG4gICAgdGhpcy5fcmVhZE9ubHlBdXRvTXV0ZWQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9NdXRlZCk7XG4gICAgdGhpcy5fcmVhZE9ubHlBdXRvUGF1c2VkID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvUGF1c2VkKTtcbiAgICB0aGlzLl9yZWFkT25seVRva2VuRXhwaXJpbmcgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbkV4cGlyaW5nKTtcbiAgICB0aGlzLl9yZWFkT25seUF1dGhvcml6ZWQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQpO1xuICAgIHRoaXMuX3JlYWRPbmx5T25saW5lID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9jaGFubmVsQ29udGV4dC5vbmxpbmUpO1xuICAgIHRoaXMuX3JlYWRPbmx5TG9hZGluZyA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZyk7XG4gICAgdGhpcy5fcmVhZE9ubHlQbGF5aW5nID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nKTtcbiAgICB0aGlzLl9yZWFkT25seVN0YW5kYnkgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YW5kYnkpO1xuICAgIHRoaXMuX3JlYWRPbmx5U3RvcHBlZCA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fY2hhbm5lbENvbnRleHQuc3RvcHBlZCk7XG4gICAgdGhpcy5fcmVhZE9ubHlUYXJnZXRMYWcgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PG51bWJlcj4odGhpcy5fY2hhbm5lbENvbnRleHQudGFyZ2V0TGFnKTtcbiAgICB0aGlzLl9yZWFkT25seUxhZyA9IG5ldyBSZWFkT25seVN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPih0aGlzLl9jaGFubmVsQ29udGV4dC5sYWcpO1xuICAgIHRoaXMuX3JlYWRPbmx5Qml0cmF0ZUxpbWl0ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxCaXRzUGVyU2Vjb25kPih0aGlzLl9jaGFubmVsQ29udGV4dC5iaXRyYXRlTGltaXQpO1xuICAgIHRoaXMuX3JlYWRPbmx5UmVzb2x1dGlvbiA9IG5ldyBSZWFkT25seVN1YmplY3Q8RGltZW5zaW9uPih0aGlzLl9jaGFubmVsQ29udGV4dC5yZXNvbHV0aW9uKTtcbiAgICB0aGlzLl9yZWFkT25seUZhaWx1cmVDb3VudCA9IG5ldyBSZWFkT25seVN1YmplY3Q8bnVtYmVyPih0aGlzLl9jaGFubmVsQ29udGV4dC5mYWlsdXJlQ291bnQpO1xuICAgIHRoaXMuX3JlYWRPbmx5RW5kUG9pbnQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PEVuZFBvaW50IHwgbnVsbD4odGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQpO1xuICAgIHRoaXMuX3JlYWRPbmx5U3RyZWFtID0gbmV3IFJlYWRPbmx5U3ViamVjdDxJU3RyZWFtIHwgbnVsbD4odGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtKTtcbiAgICB0aGlzLl9yZWFkT25seVJ0Y1N0YXRpc3RpY3MgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PElSdGNNb25pdG9yU3RhdGlzdGljIHwgbnVsbD4odGhpcy5fY2hhbm5lbENvbnRleHQucnRjU3RhdGlzdGljcyk7XG4gICAgdGhpcy5fcmVhZE9ubHlNZWRpYVN0cmVhbSA9IG5ldyBSZWFkT25seVN1YmplY3Q8TWVkaWFTdHJlYW0gfCBudWxsPih0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0pO1xuXG4gICAgY29uc3QgZGlzY292ZXJ5VXJpID0gKGVkZ2VUb2tlbi51cmkgfHwgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSkudG9TdHJpbmcoKTtcblxuICAgIFNESy50ZW5hbmN5LnZhbHVlID0gZWRnZVRva2VuLnRlbmFuY3kgfHwgU0RLLnRlbmFuY3kudmFsdWU7XG4gICAgRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSA9IGRpc2NvdmVyeVVyaTtcbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZSA9IE1ldHJpY3NGYWN0b3J5LmdldE1ldHJpY3NTZXJ2aWNlKGRpc2NvdmVyeVVyaSk7XG4gICAgdGhpcy5fc2Vzc2lvblRlbGVtZXRyeSA9IG5ldyBTZXNzaW9uVGVsZW1ldHJ5KFNESy5wYWdlTG9hZFRpbWUsIHRoaXMuX21ldHJpY3NTZXJ2aWNlKTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsRGlzcG9zYWJsZXMuYWRkKHRoaXMuX3Nlc3Npb25UZWxlbWV0cnkpO1xuICAgIHRoaXMuX3ZpZGVvTWV0YURhdGFDaGFuZ2VkSGFuZGxlciA9IHRoaXMuaGFuZGxlVmlkZW9NZXRhRGF0YUNoYW5nZWQuYmluZCh0aGlzKTtcbiAgICB0aGlzLnZpZGVvRWxlbWVudCA9IHZpZGVvRWxlbWVudDtcblxuICAgIHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0ID0gbmV3IEZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0KCk7XG4gICAgdGhpcy5jb25maWd1cmVGcmFtZVRpbWluZ0luZm9ybWF0aW9uKGVkZ2VUb2tlbi5jYXBhYmlsaXRpZXMpO1xuICAgIHRoaXMuX3JlYWRPbmx5SXNGcmFtZVRpbWluZ0luZm9ybWF0aW9uRW5hYmxlZCA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuaXNFbmFibGVkKTtcbiAgICB0aGlzLl9yZWFkT25seURlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uID0gbmV3IFJlYWRPbmx5U3ViamVjdDxEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+KHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LmRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uKTtcbiAgICB0aGlzLl9yZWFkT25seVJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiA9IG5ldyBSZWFkT25seVN1YmplY3Q8UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD4odGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQucmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uKTtcblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxEaXNwb3NhYmxlcy5hZGQoXG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQuc3Vic2NyaWJlKHZpZGVvRWxlbWVudCA9PiB7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlbmRlcmVyRGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuXG4gICAgICAgIGlmICghdmlkZW9FbGVtZW50KSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucmVuZGVyZXJEaXNwb3NhYmxlcy5hZGQodGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnN1YnNjcmliZShzdHJlYW0gPT4ge1xuICAgICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb1RlbGVtZXRyeSkge1xuICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9UZWxlbWV0cnkuZGlzcG9zZSgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghc3RyZWFtKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCF0aGlzLnZpZGVvRWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0aGlzLnZpZGVvRWxlbWVudC5kYXRhc2V0KSB7XG4gICAgICAgICAgICB0aGlzLnZpZGVvRWxlbWVudC5kYXRhc2V0LnNlc3Npb25JZCA9IFNESy5jbGllbnRTZXNzaW9uSWQ7XG4gICAgICAgICAgICB0aGlzLnZpZGVvRWxlbWVudC5kYXRhc2V0LnN0cmVhbUlkID0gdGhpcy5zdHJlYW1JZDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb1RlbGVtZXRyeSA9IG5ldyBWaWRlb1RlbGVtZXRyeSh0aGlzLnN0cmVhbUlkLCBTREsucGFnZUxvYWRUaW1lLCB0aGlzLl9jaGFubmVsU3RhcnRUaW1lLCB0aGlzLl9tZXRyaWNzU2VydmljZSk7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9UZWxlbWV0cnkuc2V0dXBMaXN0ZW5lckZvclRpbWVUb0ZpcnN0VGltZSh0aGlzLnZpZGVvRWxlbWVudCk7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9UZWxlbWV0cnkuc2V0dXBMaXN0ZW5lckZvclJlYnVmZmVyaW5nKHRoaXMudmlkZW9FbGVtZW50KTtcblxuICAgICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9PT0gQ2hhbm5lbFN0YXRlLlN0b3BwZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnJlc3RhcnRBZnRlclN0b3AoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pKTtcblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsRGlzcG9zYWJsZXMuYWRkKHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlbmRlcmVyRGlzcG9zYWJsZXMpO1xuICAgICAgfSkpO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxEaXNwb3NhYmxlcy5hZGQoXG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS5zdWJzY3JpYmUoc3RhdGUgPT4ge1xuICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0KSB7XG4gICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRoaXMuX2NoYW5uZWxDb250ZXh0LmNsZWFyRmFpbHVyZUNvdW50VGltZW91dCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuX2NoYW5uZWxDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdGF0ZSAhPT0gQ2hhbm5lbFN0YXRlLlBsYXlpbmcpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5jbGVhckZhaWx1cmVDb3VudFRpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUgPSAwO1xuICAgICAgICB9LCBmYWlsdXJlQ291bnRDbGVhblVwSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyk7XG4gICAgICB9KSk7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuY2hhbm5lbERpc3Bvc2FibGVzLmFkZChcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlc29sdXRpb24uc3Vic2NyaWJlKHJlc29sdXRpb24gPT4ge1xuICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9UZWxlbWV0cnkpIHtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb1RlbGVtZXRyeS5vblZpZGVvUmVzb2x1dGlvbkNoYW5nZXMocmVzb2x1dGlvbi50b1N0cmluZygpKTtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxEaXNwb3NhYmxlcy5hZGQoXG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5iaXRyYXRlTGltaXQuc3Vic2NyaWJlKGJpdHJhdGVMaW1pdCA9PiB7XG4gICAgICAgIGlmIChiaXRyYXRlTGltaXQgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlKSB7XG4gICAgICAgICAgY29uc3QgZWxhcHNlZEluTWlsbGlzZWNvbmRzID0gRGF0ZS5ub3coKSAtIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxJbml0aWFsaXphdGlvbi5nZXRUaW1lKCk7XG4gICAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlLmxpbWl0Qml0cmF0ZShcbiAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSxcbiAgICAgICAgICAgIGVsYXBzZWRJbk1pbGxpc2Vjb25kcyxcbiAgICAgICAgICAgIGJpdHJhdGVMaW1pdCxcbiAgICAgICAgICAgIEJpdHJhdGVTdGF0ZS5LZWVwLFxuICAgICAgICAgICAgQml0cmF0ZU1vZGUuTm9ybWFsXG4gICAgICAgICAgKVxuICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0Vycm9yIHdoaWxlIHNldHRpbmcgbGltaXQgYml0cmF0ZScsIGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGNvbnN0IGRlc3Ryb3lTdHJlYW1PblVubW91bnQgPSAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZS5kZXN0cm95U3RyZWFtT25Vbm1vdW50KHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSwgJ2NsaWVudDp0ZXJtaW5hdGlvbi1vbi13aW5kb3ctdW5sb2FkJyk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIEdsb2JhbFNjb3BlLnZhbHVlLmFkZFdpbmRvd0V2ZW50TGlzdGVuZXIoJ2JlZm9yZXVubG9hZCcsIGRlc3Ryb3lTdHJlYW1PblVubW91bnQpO1xuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuY2hhbm5lbERpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5yZW1vdmVXaW5kb3dFdmVudExpc3RlbmVyKCdiZWZvcmV1bmxvYWQnLCBkZXN0cm95U3RyZWFtT25Vbm1vdW50KTtcbiAgICB9KSk7XG5cbiAgICB0aGlzLnN0YXJ0KCk7XG5cbiAgICBpZiAoU0RLLmF1dG9tYXRpY1JldHJ5T25GYWlsdXJlKSB7XG4gICAgICBjb25zdCB0cnlSZXN0YXJ0ID0gKHJlYXNvbjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSkge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygnWyVzXSBTa2lwcGluZyBmYWlsdXJlQ291bnQgcmVzZXQgYW5kIENoYW5uZWwgcmVzdGFydCBkdWUgdG8gQ2hhbm5lbCBhbHJlYWR5IHN0YXJ0aW5nIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgcmVhc29uKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRlcm1pbmFsIHN0YXRlcyAoU3RvcHBlZCwgVW5hdXRob3JpemVkLCBHZW9CbG9ja2VkLCBldGMuKSByZWZsZWN0IGV4cGxpY2l0IHVzZXJcbiAgICAgICAgLy8gaW50ZW50IG9yIHBlcm1hbmVudCBmYWlsdXJlcyBhbmQgbXVzdCBub3QgYmUgb3ZlcnJpZGRlbiBieSBhbiBhdXRvbWF0aWMgcmVzdGFydFxuICAgICAgICBpZiAodGhpcy5pc1Rlcm1pbmFsU3RhdGUoKSkge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygnWyVzXSBTa2lwcGluZyBmYWlsdXJlQ291bnQgcmVzZXQgYW5kIENoYW5uZWwgcmVzdGFydCBkdWUgdG8gdGVybWluYWwgQ2hhbm5lbFN0YXRlIFslc10gWyVzXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBDaGFubmVsU3RhdGVbdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWVdLCByZWFzb24pO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZmFpbHVyZUNvdW50LnZhbHVlID0gMDtcblxuICAgICAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ1slc10gUmVzZXQgZmFpbHVyZUNvdW50IHRvIDAgYW5kIHJlc3RhcnRpbmcgQ2hhbm5lbCBkdWUgdG8gWyVzXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCByZWFzb24pO1xuXG4gICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnN0YXJ0KCk7XG4gICAgICB9O1xuXG4gICAgICAvLyBTREsuaW5pdGlhbGl6ZSgpIGd1YXJhbnRlZXMgYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IgaXMgY3JlYXRlZCBiZWZvcmUgYW55IENoYW5uZWwgY2FuIGJlIGluc3RhbnRpYXRlZFxuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuY2hhbm5lbERpc3Bvc2FibGVzLmFkZChcbiAgICAgICAgU0RLLmFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIS5pc0ZvcmVncm91bmQuc3Vic2NyaWJlKGlzRm9yZWdyb3VuZCA9PiB7XG4gICAgICAgICAgaWYgKCFpc0ZvcmVncm91bmQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBsYXN0QmFja2dyb3VuZER1cmF0aW9uID0gU0RLLmFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIS5nZXRMYXN0QmFja2dyb3VuZER1cmF0aW9uKCk7XG4gICAgICAgICAgY29uc3Qgc2hvdWxkRm9yY2VSZXN0YXJ0ID0gRmVhdHVyZUVuYWJsZW1lbnQuaXNNb2JpbGVcbiAgICAgICAgICAgICYmIGxhc3RCYWNrZ3JvdW5kRHVyYXRpb24gIT09IG51bGxcbiAgICAgICAgICAgICYmIGxhc3RCYWNrZ3JvdW5kRHVyYXRpb24gPiBiYWNrZ3JvdW5kUmVjb3ZlcnlGYWlsc2FmZUludGVydmFsSW5NaWxsaXNlY29uZHM7XG4gICAgICAgICAgLy8gUGxhdGZvcm0gZGVzdHJveXMgc3RyZWFtcyBhZnRlciAzMHMgb2Ygbm8gbWVkaWEgZGF0YS4gSWYgdGhlIGNoYW5uZWwgaXMgYWxyZWFkeVxuICAgICAgICAgIC8vIHJlY29ubmVjdGluZyBhbmQgdGhlIHRhYiB3YXMgYmFja2dyb3VuZGVkIGxvbmdlciB0aGFuIHRoYXQgdGhyZXNob2xkLCB0aGUgc2VydmVyLXNpZGVcbiAgICAgICAgICAvLyBzdHJlYW0gaXMgZ29uZSBhbmQgd2UgbXVzdCBkbyBhIGZ1bGwgcmVzdGFydCByYXRoZXIgdGhhbiB3YWl0aW5nIGZvciB0aGUgcmVjb25uZWN0LlxuICAgICAgICAgIGNvbnN0IGlzU3RyZWFtRGVsZXRlZEJ5UGxhdGZvcm0gPSB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9PT0gQ2hhbm5lbFN0YXRlLlJlY29ubmVjdGluZ1xuICAgICAgICAgICAgJiYgbGFzdEJhY2tncm91bmREdXJhdGlvbiAhPT0gbnVsbFxuICAgICAgICAgICAgJiYgbGFzdEJhY2tncm91bmREdXJhdGlvbiA+IHN0cmVhbURlbGV0aW9uVGhyZXNob2xkSW5NaWxsaXNlY29uZHM7XG5cbiAgICAgICAgICBpZiAoc2hvdWxkRm9yY2VSZXN0YXJ0IHx8IGlzU3RyZWFtRGVsZXRlZEJ5UGxhdGZvcm0pIHtcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZvcmVncm91bmRlZCBhZnRlciBbJXNdIG1zIGluIGJhY2tncm91bmQsIHRyeWluZyByZXN0YXJ0JywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIGxhc3RCYWNrZ3JvdW5kRHVyYXRpb24pO1xuICAgICAgICAgICAgdHJ5UmVzdGFydChmb3JlZ3JvdW5kUmVzdGFydFJlYXNvbkJhY2tncm91bmRUaW1lb3V0KTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0aGlzLmlzUmV0cnlhYmxlU3RhdGUoKSkge1xuICAgICAgICAgICAgdHJ5UmVzdGFydChmb3JlZ3JvdW5kUmVzdGFydFJlYXNvblVuaGVhbHRoeSk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBUaGUgaGVhbHRoIGNoZWNrIGNhdGNoZXMgc3RyZWFtcyB0aGF0IGFyZSB1bmhlYWx0aHkgd2hpbGUgc3RpbGwgaW4gUGxheWluZyBzdGF0ZVxuICAgICAgICAgIC8vIChlLmcuLCB2aWRlbyBzdGFsbGVkIGJ1dCBubyBzdGF0ZSB0cmFuc2l0aW9uIHlldClcbiAgICAgICAgICBpZiAoIXRoaXMuX3N0cmVhbVN1YnNjcmliZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5pc1N1YnNjcmliZXJIZWFsdGh5KClcbiAgICAgICAgICAgIC50aGVuKGlzSGVhbHRoeSA9PiB7XG4gICAgICAgICAgICAgIGlmIChpc0hlYWx0aHkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAvLyBPbmx5IHJlc3RhcnQgZnJvbSBQbGF5aW5nIHN0YXRlIOKAlCB0ZXJtaW5hbCBzdGF0ZXMgKFVuYXV0aG9yaXplZCwgR2VvQmxvY2tlZCxcbiAgICAgICAgICAgICAgLy8gU3RvcHBlZCwgZXRjLikgc2hvdWxkIG5vdCB0cmlnZ2VyIGhlYWx0aC1jaGVjayByZXN0YXJ0c1xuICAgICAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgIT09IENoYW5uZWxTdGF0ZS5QbGF5aW5nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdHJ5UmVzdGFydChmb3JlZ3JvdW5kUmVzdGFydFJlYXNvblVuaGVhbHRoeUhlYWx0aENoZWNrKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignWyVzXSBVbmV4cGVjdGVkIGVycm9yIG9jY3VycmVkIHdoZW4gY2hlY2tpbmcgc3Vic2NyaWJlciBoZWFsdGggd2hpbGUgZm9yZWdyb3VuZGluZycsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHZpZGVvRWxlbWVudCgpOiBIVE1MVmlkZW9FbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZTtcbiAgfVxuXG4gIHNldCB2aWRlb0VsZW1lbnQodmlkZW9FbGVtZW50OiBIVE1MVmlkZW9FbGVtZW50KSB7XG4gICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZSkge1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2xvYWRlZGRhdGEnLCB0aGlzLl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIpO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2xvYWRlZG1ldGFkYXRhJywgdGhpcy5fdmlkZW9NZXRhRGF0YUNoYW5nZWRIYW5kbGVyKTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIpO1xuXG4gICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLmRhdGFzZXQpIHtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLmRhdGFzZXQuc2Vzc2lvbklkID0gJyc7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5kYXRhc2V0LnN0cmVhbUlkID0gJyc7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlbmRlcmVyRGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuXG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUucGF1c2UoKTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5zcmNPYmplY3QgPSBudWxsO1xuICAgIH1cblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9NdXRlZC52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlICE9PSBDaGFubmVsU3RhdGUuSW5pdGlhbGl6aW5nKSB7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5TdG9wcGVkO1xuICAgIH1cblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZSA9IHZpZGVvRWxlbWVudDtcblxuICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUpIHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdsb2FkZWRkYXRhJywgdGhpcy5fdmlkZW9NZXRhRGF0YUNoYW5nZWRIYW5kbGVyKTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdsb2FkZWRtZXRhZGF0YScsIHRoaXMuX3ZpZGVvTWV0YURhdGFDaGFuZ2VkSGFuZGxlcik7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5fdmlkZW9NZXRhRGF0YUNoYW5nZWRIYW5kbGVyKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVZpZGVvTWV0YURhdGFDaGFuZ2VkKCk6IHZvaWQge1xuICAgIGNvbnN0IHZpZGVvRWxlbWVudCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZTtcblxuICAgIGlmICh2aWRlb0VsZW1lbnQpIHtcbiAgICAgIGlmICh0aGlzLnJlc29sdXRpb24udmFsdWUud2lkdGggIT09IHZpZGVvRWxlbWVudC52aWRlb1dpZHRoIHx8IHRoaXMucmVzb2x1dGlvbi52YWx1ZS5oZWlnaHQgIT09IHZpZGVvRWxlbWVudC52aWRlb0hlaWdodCkge1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5yZXNvbHV0aW9uLnZhbHVlID0gbmV3IERpbWVuc2lvbih2aWRlb0VsZW1lbnQudmlkZW9XaWR0aCwgdmlkZW9FbGVtZW50LnZpZGVvSGVpZ2h0KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucmVzb2x1dGlvbi52YWx1ZSA9IERpbWVuc2lvbi5lbXB0eTtcbiAgICB9XG4gIH1cblxuICBnZXQgdG9rZW4oKTogRW5jb2RlZEVkZ2VUb2tlbiB7XG4gICAgcmV0dXJuIHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbi52YWx1ZTtcbiAgfVxuXG4gIHNldCB0b2tlbih0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbikge1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmRpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcblxuICAgIHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbi52YWx1ZSA9IHRva2VuO1xuICAgIHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbkV4cGlyaW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICBjb25zdCBlZGdlVG9rZW4gPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbi52YWx1ZSk7XG4gICAgY29uc3QgZGlzY292ZXJ5VXJpID0gKGVkZ2VUb2tlbi51cmkgfHwgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSkudG9TdHJpbmcoKTtcblxuICAgIFNESy50ZW5hbmN5LnZhbHVlID0gZWRnZVRva2VuLnRlbmFuY3kgfHwgU0RLLnRlbmFuY3kudmFsdWU7XG4gICAgRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSA9IGRpc2NvdmVyeVVyaTtcblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlID0gTWV0cmljc0ZhY3RvcnkuZ2V0TWV0cmljc1NlcnZpY2UoZGlzY292ZXJ5VXJpKTtcblxuICAgIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzSW5zZXJ0YWJsZVN0cmVhbXMudmFsdWUgPSBlZGdlVG9rZW4uY2FwYWJpbGl0aWVzLmluY2x1ZGVzKCdpbnNlcnRhYmxlLXN0cmVhbXMnKTtcbiAgICB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0Lmhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZSA9IGVkZ2VUb2tlbi5jYXBhYmlsaXRpZXMuaW5jbHVkZXMoJ2VuY29kZWQtaW5zZXJ0YWJsZS1zdHJlYW1zJyk7XG5cbiAgICB0aGlzLmNvbmZpZ3VyZUZyYW1lVGltaW5nSW5mb3JtYXRpb24oZWRnZVRva2VuLmNhcGFiaWxpdGllcyk7XG5cbiAgICB0aGlzLnN0YXJ0KCk7XG4gIH1cblxuICBnZXQgcGVlckNvbm5lY3Rpb24oKTogUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbiB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlQZWVyQ29ubmVjdGlvbjtcbiAgfVxuXG4gIGdldCBzdGF0ZSgpOiBSZWFkT25seVN1YmplY3Q8Q2hhbm5lbFN0YXRlPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5U3RhdGU7XG4gIH1cblxuICBnZXQgZXhpc3RzKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUV4aXN0cztcbiAgfVxuXG4gIGdldCBhdXRvTXV0ZWQoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlBdXRvTXV0ZWQ7XG4gIH1cblxuICBnZXQgYXV0b1BhdXNlZCgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUF1dG9QYXVzZWQ7XG4gIH1cblxuICBnZXQgdG9rZW5FeHBpcmluZygpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVRva2VuRXhwaXJpbmc7XG4gIH1cblxuICBnZXQgYXV0aG9yaXplZCgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUF1dGhvcml6ZWQ7XG4gIH1cblxuICBnZXQgb25saW5lKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5T25saW5lO1xuICB9XG5cbiAgZ2V0IGxvYWRpbmcoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlMb2FkaW5nO1xuICB9XG5cbiAgZ2V0IHBsYXlpbmcoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlQbGF5aW5nO1xuICB9XG5cbiAgZ2V0IHN0YW5kYnkoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlTdGFuZGJ5O1xuICB9XG5cbiAgZ2V0IHN0b3BwZWQoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlTdG9wcGVkO1xuICB9XG5cbiAgZ2V0IHRhcmdldExhZygpOiBSZWFkT25seVN1YmplY3Q8TWlsbGlzZWNvbmQ+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlUYXJnZXRMYWc7XG4gIH1cblxuICBnZXQgbGFnKCk6IFJlYWRPbmx5U3ViamVjdDxNaWxsaXNlY29uZCB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUxhZztcbiAgfVxuXG4gIGdldCBiaXRyYXRlTGltaXQoKTogQml0c1BlclNlY29uZCB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5Qml0cmF0ZUxpbWl0LnZhbHVlO1xuICB9XG5cbiAgZ2V0IHJlc29sdXRpb24oKTogUmVhZE9ubHlTdWJqZWN0PERpbWVuc2lvbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVJlc29sdXRpb247XG4gIH1cblxuICBnZXQgZmFpbHVyZUNvdW50KCk6IFJlYWRPbmx5U3ViamVjdDxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlGYWlsdXJlQ291bnQ7XG4gIH1cblxuICBnZXQgZW5kUG9pbnQoKTogUmVhZE9ubHlTdWJqZWN0PEVuZFBvaW50IHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUVuZFBvaW50O1xuICB9XG5cbiAgZ2V0IHN0cmVhbSgpOiBSZWFkT25seVN1YmplY3Q8SVN0cmVhbSB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlTdHJlYW07XG4gIH1cblxuICBnZXQgc3RyZWFtSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQ7XG4gIH1cblxuICBnZXQgcnRjU3RhdGlzdGljcygpOiBSZWFkT25seVN1YmplY3Q8SVJ0Y01vbml0b3JTdGF0aXN0aWMgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5UnRjU3RhdGlzdGljcztcbiAgfVxuXG4gIGdldCBtZWRpYVN0cmVhbSgpOiBSZWFkT25seVN1YmplY3Q8TWVkaWFTdHJlYW0gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5TWVkaWFTdHJlYW07XG4gIH1cblxuICBnZXQgaXNGcmFtZVRpbWluZ0luZm9ybWF0aW9uRW5hYmxlZCgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUlzRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkVuYWJsZWQ7XG4gIH1cblxuICBnZXQgZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24oKTogUmVhZE9ubHlTdWJqZWN0PERlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seURlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uO1xuICB9XG5cbiAgZ2V0IHJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbigpOiBSZWFkT25seVN1YmplY3Q8UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbjtcbiAgfVxuXG4gIHNldEJpdHJhdGVMaW1pdChiaXRyYXRlTGltaXQ6IEJpdHNQZXJTZWNvbmQpOiB2b2lkIHtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5iaXRyYXRlTGltaXQudmFsdWUgPSBiaXRyYXRlTGltaXQ7XG4gIH1cblxuICBjbGVhckJpdHJhdGVMaW1pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuYml0cmF0ZUxpbWl0LnZhbHVlICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSkge1xuICAgICAgY29uc3QgZWxhcHNlZEluTWlsbGlzZWNvbmRzID0gRGF0ZS5ub3coKSAtIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxJbml0aWFsaXphdGlvbi5nZXRUaW1lKCk7XG4gICAgICBjb25zdCBiaXRyYXRlSW5CaXRzUGVyU2Vjb25kID0gMDtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZS5saW1pdEJpdHJhdGUoXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSxcbiAgICAgICAgZWxhcHNlZEluTWlsbGlzZWNvbmRzLFxuICAgICAgICBiaXRyYXRlSW5CaXRzUGVyU2Vjb25kLFxuICAgICAgICBCaXRyYXRlU3RhdGUuS2VlcCxcbiAgICAgICAgQml0cmF0ZU1vZGUuUmVzZXRcbiAgICAgIClcbiAgICAgICAgLnRoZW4oKHtzdGF0dXN9KSA9PiB7XG4gICAgICAgICAgaWYgKHN0YXR1cyA9PT0gJ29rJykge1xuICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYml0cmF0ZUxpbWl0LnZhbHVlID0gMDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0Vycm9yIHdoaWxlIHNldHRpbmcgbGltaXQgYml0cmF0ZScsIGUpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVUYXJnZXRMYWcobGFnOiBNaWxsaXNlY29uZCk6IHZvaWQge1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnRhcmdldExhZy52YWx1ZSA9IGxhZztcbiAgfVxuXG4gIGFzeW5jIHN0b3AocmVhc29uOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICBpZiAoIXRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlKSB7XG4gICAgICAgIHRoaXMucHJvY2Vzc1N0b3AocmVhc29uKTtcblxuICAgICAgICByZXNvbHZlKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5yZW5kZXJlckRpc3Bvc2FibGVzLmFkZCh0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy5zdWJzY3JpYmUoaXNTdGFydGluZyA9PiB7XG4gICAgICAgIGlmICghaXNTdGFydGluZykge1xuICAgICAgICAgIHRoaXMucHJvY2Vzc1N0b3AocmVhc29uKTtcbiAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcHJvY2Vzc1N0b3AocmVhc29uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlKSB7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUucGF1c2UoKTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5zcmNPYmplY3QgPSBudWxsO1xuICAgIH1cblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlbmRlcmVyRGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuXG4gICAgdGhpcy5jbGVhblVwUmVzb3VyY2VzKHJlYXNvbik7XG5cbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5TdG9wcGVkO1xuICB9XG5cbiAgYXN5bmMgcmVzdW1lKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUpIHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuIHRoaXMucGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBtdXRlKCk6IHZvaWQge1xuICAgIGNvbnN0IHZpZGVvRWxlbWVudCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZTtcblxuICAgIGlmICh2aWRlb0VsZW1lbnQpIHtcbiAgICAgIHZpZGVvRWxlbWVudC5tdXRlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgdW5tdXRlKCk6IHZvaWQge1xuICAgIGNvbnN0IHZpZGVvRWxlbWVudCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZTtcblxuICAgIGlmICh2aWRlb0VsZW1lbnQpIHtcbiAgICAgIHZpZGVvRWxlbWVudC5tdXRlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZGlzcG9zZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5zdG9wKCdjbGllbnQ6Y2hhbm5lbC1kaXNwb3NlJykudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsRGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzRGlzcG9zZWQgPSB0cnVlO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0VXJpKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuKTogVVJMIHtcbiAgICBjb25zdCB1cmwgPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKHRva2VuKS51cmk7XG5cbiAgICBpZiAodXJsKSB7XG4gICAgICByZXR1cm4gdXJsO1xuICAgIH1cblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdGYWxsIGJhY2sgdG8gdGhlIGRlZmF1bHQgZGlzY292ZXIgVVJJIFslc10nLCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKTtcblxuICAgIHJldHVybiBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuICB9XG5cbiAgYXN5bmMgc3RhcnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuX3N0YXRlQ29udGV4dC5pc0Rpc3Bvc2VkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NoYW5uZWwgd2FzIGFscmVhZHkgZGlzcG9zZWQnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIGFscmVhZHkgc3RhcnRpbmcsIHNraXBwaW5nIHN0YXJ0Jyk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IHRydWU7XG5cbiAgICByZXR1cm4gdGhpcy5wcm9jZXNzU3RhcnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNUZXJtaW5hbFN0YXRlKCk6IGJvb2xlYW4ge1xuICAgIHN3aXRjaCAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUpIHtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlN0b3BwZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5VbmF1dGhvcml6ZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5HZW9SZXN0cmljdGVkOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuR2VvQmxvY2tlZDpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlVuc3VwcG9ydGVkRmVhdHVyZTpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjpcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5Jbml0aWFsaXppbmc6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5PZmZsaW5lOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuU3RhcnRpbmc6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5QYXVzZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5QbGF5aW5nOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuUmVjb3ZlcmluZzpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlJlY29ubmVjdGluZzpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlN0YW5kQnk6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5UcmFuc2llbnRDb25maWd1cmF0aW9uRXJyb3I6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5Db25uZWN0aW9uRXJyb3I6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5DbGllbnRTdGFydEVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuRXJyb3I6XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzUmV0cnlhYmxlU3RhdGUoKTogYm9vbGVhbiB7XG4gICAgc3dpdGNoICh0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSkge1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuRXJyb3I6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5SZWNvbm5lY3Rpbmc6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5TdGFuZEJ5OlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuT2ZmbGluZTpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlJlY292ZXJpbmc6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5UcmFuc2llbnRDb25maWd1cmF0aW9uRXJyb3I6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5Db25uZWN0aW9uRXJyb3I6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5DbGllbnRTdGFydEVycm9yOlxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlVuYXV0aG9yaXplZDpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkdlb1Jlc3RyaWN0ZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5HZW9CbG9ja2VkOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuU3RvcHBlZDpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlBhdXNlZDpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkluaXRpYWxpemluZzpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlN0YXJ0aW5nOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuUGxheWluZzpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlVuc3VwcG9ydGVkRmVhdHVyZTpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjpcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNTdWJzY3JpYmVySGVhbHRoeSgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAoIXRoaXMuX3N0cmVhbVN1YnNjcmliZXIpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZmFsc2UpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9zdHJlYW1TdWJzY3JpYmVyLmlzU3RyZWFtSGVhbHRoeSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcm9jZXNzU3RhcnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgaXNSZWNvdmVyeSA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlICE9PSBDaGFubmVsU3RhdGUuSW5pdGlhbGl6aW5nO1xuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBpc1JlY292ZXJ5ID8gQ2hhbm5lbFN0YXRlLlJlY292ZXJpbmcgOiBDaGFubmVsU3RhdGUuU3RhcnRpbmc7XG4gICAgdGhpcy5jbGVhblVwUmVzb3VyY2VzKGlzUmVjb3ZlcnkgPyAnY2xpZW50OnJlY292ZXInIDogJ2NsaWVudDpzdGFydCcpO1xuXG4gICAgY29uc3QgdG9rZW46IEVuY29kZWRFZGdlVG9rZW4gPSB0aGlzLl90b2tlbkNvbnRleHQudG9rZW4udmFsdWU7XG4gICAgY29uc3QgbGlzdGVuT25TdHJlYW1TZXR1cCA9IHRoaXMuX3Nlc3Npb25UZWxlbWV0cnkubGlzdGVuT25TdHJlYW1TZXR1cCgpO1xuXG4gICAgaWYgKCFFZGdlQXV0aFBhcnNlci5pc0VuY29kZWRFZGdlVG9rZW5WYWxpZCh0b2tlbikpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHBhcnNlIHRva2VuIFslc10nLCB0b2tlbik7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5VbmF1dGhvcml6ZWQ7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaykge1xuICAgICAgY29uc3Qge3ZhbGlkLCB2YWxpZGF0aW9uUmVzdWx0fSA9IFN0cmVhbVRyYWNrVHJhbnNmb3JtLnZhbGlkYXRlTWVkaWFTdHJlYW1UcmFja1RyYW5zZm9ybTxWaWRlb0ZyYW1lPigndmlkZW8nLCB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2spO1xuXG4gICAgICBpZiAoIXZhbGlkKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcih2YWxpZGF0aW9uUmVzdWx0KTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2spIHtcbiAgICAgIGNvbnN0IHt2YWxpZCwgdmFsaWRhdGlvblJlc3VsdH0gPSBTdHJlYW1UcmFja1RyYW5zZm9ybS52YWxpZGF0ZU1lZGlhU3RyZWFtVHJhY2tUcmFuc2Zvcm08QXVkaW9EYXRhPignYXVkaW8nLCB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2spO1xuXG4gICAgICBpZiAoIXZhbGlkKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcih2YWxpZGF0aW9uUmVzdWx0KTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmVuY29kZWRWaWRlb1N0cmVhbVNpbmspIHtcbiAgICAgIGNvbnN0IHt2YWxpZCwgdmFsaWRhdGlvblJlc3VsdH0gPSBFbmNvZGVkU3RyZWFtU2luay52YWxpZGF0ZUVuY29kZWRTdHJlYW1TaW5rKCd2aWRlbycsIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuZW5jb2RlZFZpZGVvU3RyZWFtU2luayk7XG5cbiAgICAgIGlmICghdmFsaWQpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKHZhbGlkYXRpb25SZXN1bHQpO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuZW5jb2RlZEF1ZGlvU3RyZWFtU2luaykge1xuICAgICAgY29uc3Qge3ZhbGlkLCB2YWxpZGF0aW9uUmVzdWx0fSA9IEVuY29kZWRTdHJlYW1TaW5rLnZhbGlkYXRlRW5jb2RlZFN0cmVhbVNpbmsoJ2F1ZGlvJywgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5lbmNvZGVkQXVkaW9TdHJlYW1TaW5rKTtcblxuICAgICAgaWYgKCF2YWxpZCkge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IodmFsaWRhdGlvblJlc3VsdCk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZSAmJiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0Lmhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdCb3RoIGluc2VydGFibGUtc3RyZWFtcyBhbmQgZW5jb2RlZC1pbnNlcnRhYmxlLXN0cmVhbXMgYXJlIGVuYWJsZWQsIG9ubHkgdXNlIG9uZSBvciB0aGUgb3RoZXInKTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBoYXNUcmFuc2Zvcm1TdHJlYW1DYWxsYmFjayA9IHR5cGVvZiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2sgPT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBoYXNFbmNvZGVkU3RyZWFtU2luayA9IHR5cGVvZiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmVuY29kZWRWaWRlb1N0cmVhbVNpbmsgPT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuZW5jb2RlZEF1ZGlvU3RyZWFtU2luayA9PT0gJ2Z1bmN0aW9uJztcblxuICAgIGlmIChoYXNUcmFuc2Zvcm1TdHJlYW1DYWxsYmFjayAmJiBoYXNFbmNvZGVkU3RyZWFtU2luaykge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdCb3RoIE1lZGlhIFN0cmVhbSBUcmFjayB0cmFuc2Zvcm0gY2FsbGJhY2sgYW5kIGVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyBzaW5rIGZ1bmN0aW9uIGZvdW5kLCBvbmx5IHVzZSBvbmUgdHlwZSBvciB0aGUgb3RoZXInKTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZSkge1xuICAgICAgaWYgKCFGZWF0dXJlRW5hYmxlbWVudC5pc0luc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignQnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IE1lZGlhIFN0cmVhbSBUcmFjayBBUEknKTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuVW5zdXBwb3J0ZWRGZWF0dXJlO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWhhc1RyYW5zZm9ybVN0cmVhbUNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignQ3JlYXRlQ2hhbm5lbE9wdGlvbnMgdHJhbnNmb3JtIGNhbGxiYWNrIGZ1bmN0aW9uIGlzIG1pc3Npbmc7IGhvd2V2ZXIsIGluc2VydGFibGUtc3RyZWFtcyBpcyBlbmFibGVkJyk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGhhc1RyYW5zZm9ybVN0cmVhbUNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcihgQ3JlYXRlQ2hhbm5lbE9wdGlvbnMgdHJhbnNmb3JtIGNhbGxiYWNrIGZ1bmN0aW9uIGZvdW5kOyBob3dldmVyLCBpbnNlcnRhYmxlLXN0cmVhbXMgaXMgbm90IGVuYWJsZWRgKTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0Lmhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZSkge1xuICAgICAgaWYgKCEoRmVhdHVyZUVuYWJsZW1lbnQuaXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQgfHwgRmVhdHVyZUVuYWJsZW1lbnQuaXNSVENSdHBTY3JpcHRUcmFuc2Zvcm1TdXBwb3J0ZWQpKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignQnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IGVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyBBUEknKTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuVW5zdXBwb3J0ZWRGZWF0dXJlO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWhhc0VuY29kZWRTdHJlYW1TaW5rKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignQ3JlYXRlQ2hhbm5lbE9wdGlvbnMgdHJhbnNmb3JtIHNpbmsgZnVuY3Rpb24gaXMgbWlzc2luZzsgaG93ZXZlciwgZW5jb2RlZC1pbnNlcnRhYmxlLXN0cmVhbXMgaXMgZW5hYmxlZCcpO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChoYXNFbmNvZGVkU3RyZWFtU2luaykge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoYENyZWF0ZUNoYW5uZWxPcHRpb25zIHRyYW5zZm9ybSBzaW5rIGZ1bmN0aW9uIGZvdW5kOyBob3dldmVyLCBlbmNvZGVkLWluc2VydGFibGUtc3RyZWFtcyBpcyBub3QgZW5hYmxlZGApO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IHRydWU7XG5cbiAgICBjb25zdCB1cmkgPSB0aGlzLmdldFVyaSh0b2tlbik7XG5cbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5kaXNwb3NhYmxlcy5hZGQoXG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS5zdWJzY3JpYmUoc3RhdGUgPT4ge1xuICAgICAgICBpZiAoc3RhdGUgPT09IENoYW5uZWxTdGF0ZS5FcnJvciB8fCBzdGF0ZSA9PT0gQ2hhbm5lbFN0YXRlLlJlY292ZXJpbmcpIHtcbiAgICAgICAgICBEaXNjb3ZlcnkuY2xlYXJDYWNoZWRDbG9zZXN0RW5kcG9pbnQodXJpKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgY29uc3QgaGFuZGxlU3RyZWFtRmFpbHVyZUNhbGxiYWNrOiAoKSA9PiBQcm9taXNlPHZvaWQ+ID0gKCkgPT4gbmV3IFByb21pc2UoKHJlc29sdmUpOiB2b2lkID0+IHtcbiAgICAgIGlmICghdGhpcy5pc1JldHJ5YWJsZVN0YXRlKCkpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdbJXNdIElnbm9yaW5nIHN0cmVhbSBmYWlsdXJlIGNhbGxiYWNrIGR1ZSB0byBDaGFubmVsU3RhdGUgYmVpbmcgWyVzXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBDaGFubmVsU3RhdGVbdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWVdKTtcblxuICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29ubmVjdGlvbkVycm9yO1xuXG4gICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlKSB7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5wYXVzZSgpO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUuc3JjT2JqZWN0ID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IHRydWU7XG5cbiAgICAgIGlmICghU0RLLmFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIS5pc0ZvcmVncm91bmQudmFsdWUpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdbJXNdIERlZmVycmluZyBzdHJlYW0gZmFpbHVyZSBoYW5kbGluZyB0byBmb3JlZ3JvdW5kIHJlY292ZXJ5JywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQpO1xuXG4gICAgICAgIGNvbnN0IHRpbWVvdXRJZCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLmhhbmRsZVN0cmVhbUZhaWx1cmUoKVxuICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCBoYW5kbGluZyBzdHJlYW0gZmFpbHVyZScsIGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIGJhY2tncm91bmRSZWNvdmVyeUZhaWxzYWZlSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyk7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXNvbHZlKHRoaXMuaGFuZGxlU3RyZWFtRmFpbHVyZSgpKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX3N0cmVhbVN1YnNjcmliZXIgPSBTdHJlYW1TdWJzY3JpYmVyRmFjdG9yeS5jcmVhdGUodG9rZW4sIHRoaXMuX2NoYW5uZWxDb250ZXh0LCB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQsIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQsIHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LCBoYW5kbGVTdHJlYW1GYWlsdXJlQ2FsbGJhY2spO1xuXG4gICAgaWYgKCF0aGlzLl9zdHJlYW1TdWJzY3JpYmVyKSB7XG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZGlzcG9zYWJsZXMuYWRkKHRoaXMuX3N0cmVhbVN1YnNjcmliZXIpO1xuXG4gICAgcmV0dXJuIHRoaXMuX3N0cmVhbVN1YnNjcmliZXIuc3RhcnQoXG4gICAgICB1cmksXG4gICAgICB0b2tlbixcbiAgICAgIGxpc3Rlbk9uU3RyZWFtU2V0dXAsXG4gICAgICB0aGlzLnBsYXlNZWRpYVN0cmVhbUluVmlkZW9FbGVtZW50LmJpbmQodGhpcykpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgIGxpc3Rlbk9uU3RyZWFtU2V0dXAuZmFpbCgpO1xuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSsrO1xuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0Lm9ubGluZS52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuY2xlYW5VcFJlc291cmNlcygnY2xpZW50OmNsZWFudXAtYWZ0ZXItZmFpbGVkLXNldHVwJyk7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ2xpZW50U3RhcnRFcnJvcjtcblxuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBzdGFydCBjaGFubmVsJywgZSk7XG4gICAgICB9KVxuICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9PT0gQ2hhbm5lbFN0YXRlLlBsYXlpbmcgfHwgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPT09IENoYW5uZWxTdGF0ZS5QYXVzZWQgfHwgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPT09IENoYW5uZWxTdGF0ZS5TdG9wcGVkIHx8ICFTREsuYXV0b21hdGljUmV0cnlPbkZhaWx1cmUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0aW1lb3V0SWQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5oYW5kbGVTdHJlYW1GYWlsdXJlKClcbiAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgaGFuZGxpbmcgc3RyZWFtIGZhaWx1cmUnLCBlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LCB0aGlzLmdldFJldHJ5SW50ZXJ2YWwoKSk7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgfSkpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlc3RhcnRBZnRlclN0b3AoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuX3N0YXRlQ29udGV4dC5pc0Rpc3Bvc2VkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NoYW5uZWwgd2FzIGFscmVhZHkgZGlzcG9zZWQnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5wbGF5TWVkaWFTdHJlYW1JblZpZGVvRWxlbWVudCh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl90b2tlbkNvbnRleHQudG9rZW4udmFsdWUpIHtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnN0YXJ0KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIHBsYXkoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgbWVkaWFTdHJlYW0gPSB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWU7XG5cbiAgICBpZiAoIW1lZGlhU3RyZWFtKSB7XG4gICAgICByZXR1cm4gdGhpcy5zdGFydCgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnBsYXlNZWRpYVN0cmVhbUluVmlkZW9FbGVtZW50KG1lZGlhU3RyZWFtKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UmV0cnlJbnRlcnZhbCgpOiBudW1iZXIge1xuICAgIHN3aXRjaCAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUpIHtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkluaXRpYWxpemluZzpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlN0YW5kQnk6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5PZmZsaW5lOlxuICAgICAgICByZXR1cm4gc3RhbmRieVBvbGxpbmdJbnRlcnZhbEluTWlsbGlzZWNvbmRzO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuRXJyb3I6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5SZWNvdmVyaW5nOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuVW5hdXRob3JpemVkOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuR2VvUmVzdHJpY3RlZDpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkdlb0Jsb2NrZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5TdG9wcGVkOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuU3RhcnRpbmc6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5QbGF5aW5nOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuUGF1c2VkOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuUmVjb25uZWN0aW5nOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuVW5zdXBwb3J0ZWRGZWF0dXJlOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuQ29ubmVjdGlvbkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuQ2xpZW50U3RhcnRFcnJvcjpcbiAgICAgICAgLy8gRmlyc3QgYW5kIHNlY29uZCBhdHRlbXB0IGZhc3QsIGFmdGVyIHRoYXQgZXhwb25lbnRpYWwgd2l0aCBiYWNrb2ZmIGludGVydmFsXG4gICAgICAgIHJldHVybiB0aGlzLl9leHBvbmVudGlhbEJhY2tvZmYuZ2V0RXhwb25lbnRpYWxCYWNrb2ZmSW50ZXJ2YWxCeUZhaWx1cmVDb3VudCh0aGlzLl9jaGFubmVsQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaGFuZGxlU3RyZWFtRmFpbHVyZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBzd2l0Y2ggKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlKSB7XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5FcnJvcjpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlJlY29ubmVjdGluZzpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlN0YW5kQnk6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5PZmZsaW5lOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuUmVjb3ZlcmluZzpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlRyYW5zaWVudENvbmZpZ3VyYXRpb25FcnJvcjpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkNvbm5lY3Rpb25FcnJvcjpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkNsaWVudFN0YXJ0RXJyb3I6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdSZXRyeSBzdGFydCB3aXRoIGluaXRpYWwgc3RhdGUgWyVzXSBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUsIENoYW5uZWxTdGF0ZVt0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZV0pO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuVW5hdXRob3JpemVkOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyB1bmF1dGhvcml6ZWQsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LiBQbGVhc2UgcHJvdmlkZSBhIG5ldyB0b2tlbiBhbmQgaW52b2tlIHN0YXJ0KCknKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5HZW9SZXN0cmljdGVkOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyBnZW8gcmVzdHJpY3RlZCwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuIFBsZWFzZSBwcm92aWRlIGEgbmV3IHRva2VuIGFuZCBpbnZva2Ugc3RhcnQoKScpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkdlb0Jsb2NrZWQ6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIGdlbyBibG9ja2VkLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4gUGxlYXNlIHByb3ZpZGUgYSBuZXcgdG9rZW4gYW5kIGludm9rZSBzdGFydCgpJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuU3RvcHBlZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgc3RvcHBlZCwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuSW5pdGlhbGl6aW5nOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyBhbHJlYWR5IGluaXRpYWxpemluZywgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQnKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5QbGF5aW5nOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyBwbGF5aW5nLCBza2lwcGluZyByZXRyeSBvZiBzdGFydCcpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlBhdXNlZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgcGF1c2VkLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4gUGxlYXNlIGludm9rZSBwbGF5KCknKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5TdGFydGluZzpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgYWxyZWFkeSBzdGFydGluZywgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQnKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5VbnN1cHBvcnRlZEZlYXR1cmU6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIHN0b3BwZWQgZHVlIHRvIHVuc3VwcG9ydGVkIGZlYXR1cmUsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LicpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgc3RvcHBlZCBkdWUgdG8gY29uZmlndXJhdGlvbiBlcnJvciwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0YXJ0KCk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFuVXBSZXNvdXJjZXMocmVhc29uOiBzdHJpbmcgPSBkZWZhdWx0U3RyZWFtVGVybWluYXRpb25SZWFzb24pOiB2b2lkIHtcbiAgICB0aGlzLl9zdHJlYW1TdWJzY3JpYmVyID0gbnVsbDtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LmRpc3Bvc2VQZWVyQ29ubmVjdGlvbigpO1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5kaXNwb3NlTWVkaWFTdHJlYW0oKTtcblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RvcHBlZC52YWx1ZSA9IHRydWU7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhbmRieS52YWx1ZSA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSAmJiB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZSkge1xuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlLmRlc3Ryb3lTdHJlYW0odGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlLCByZWFzb24pXG4gICAgICAgIC50aGVuKCh7c3RhdHVzfSkgPT4ge1xuICAgICAgICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdbJXNdIEZhaWxlZCB0byBkZXN0cm95IHN0cmVhbSB3aXRoIHJlYXNvbiBbJXNdJywgdGhpcy5zdHJlYW1JZCwgc3RhdHVzKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIERlc3Ryb3llZCBzdHJlYW0gd2l0aCByZWFzb24gWyVzXScsIHRoaXMuc3RyZWFtSWQsIHN0YXR1cyk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ1slc10gRmFpbGVkIHRvIGRlc3Ryb3kgc3RyZWFtJywgdGhpcy5zdHJlYW1JZCwgZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnZpZGVvRWxlbWVudCAmJiB0aGlzLnZpZGVvRWxlbWVudC5kYXRhc2V0KSB7XG4gICAgICB0aGlzLnZpZGVvRWxlbWVudC5kYXRhc2V0LnNlc3Npb25JZCA9ICcnO1xuICAgICAgdGhpcy52aWRlb0VsZW1lbnQuZGF0YXNldC5zdHJlYW1JZCA9ICcnO1xuICAgIH1cblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSA9IG51bGw7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUgPSBudWxsO1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gMDtcbiAgfVxuXG4gIHByaXZhdGUgY29uZmlndXJlRnJhbWVUaW1pbmdJbmZvcm1hdGlvbihjYXBhYmlsaXRpZXM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgY29uc3QgZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNhcGFiaWxpdHkgPSBjYXBhYmlsaXRpZXMuZmluZChjYXBhYmlsaXR5ID0+IGNhcGFiaWxpdHkuc3RhcnRzV2l0aCgnZnJhbWUtdGltaW5nLWluZm9ybWF0aW9uPScpKTtcblxuICAgIHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnNob3VsZEV4dHJhY3RUaW1lY29kZS52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnNob3VsZEV4dHJhY3RUaW1lc3RhbXBzLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuaXNFbmFibGVkLnZhbHVlID0gZmFsc2U7XG5cbiAgICBpZiAoIWZyYW1lVGltaW5nSW5mb3JtYXRpb25DYXBhYmlsaXR5KSB7XG4gICAgICB0aGlzLl9sb2dnZXIuaW5mbygnRGlzYWJsaW5nIGZyYW1lIHRpbWluZyBpbmZvcm1hdGlvbiBhcyBubyBjYXBhYmlsaXR5IHdhcyBmb3VuZCcpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFGZWF0dXJlRW5hYmxlbWVudC5pc0NoYW5uZWxGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3VwcG9ydGVkKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuaW5mbygnRGlzYWJsaW5nIGZyYW1lIHRpbWluZyBpbmZvcm1hdGlvbiBhcyB0aGUgZW52aXJvbm1lbnQgZG9lcyBub3Qgc3VwcG9ydCBpdCBbJXNdJywgZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNhcGFiaWxpdHkpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNhcGFiaWxpdHkuc3BsaXQoJz0nKVsxXVxuICAgICAgLnNwbGl0KCcsJylcbiAgICAgIC5tYXAob3B0aW9uID0+IG9wdGlvbi50cmltKCkpXG4gICAgICAuZm9yRWFjaChvcHRpb24gPT4ge1xuICAgICAgICBzd2l0Y2ggKG9wdGlvbikge1xuICAgICAgICAgIGNhc2UgJ3RpbWVjb2RlJzpcbiAgICAgICAgICAgIHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnNob3VsZEV4dHJhY3RUaW1lY29kZS52YWx1ZSA9IHRydWU7XG5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ3RpbWVzdGFtcHMnOlxuICAgICAgICAgICAgdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuc2hvdWxkRXh0cmFjdFRpbWVzdGFtcHMudmFsdWUgPSB0cnVlO1xuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0lnbm9yaW5nIHVua25vd24gZnJhbWUgdGltaW5nIGluZm9ybWF0aW9uIG9wdGlvbiBbJXNdJywgb3B0aW9uKTtcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0ZyYW1lIHRpbWluZyBpbmZvcm1hdGlvbiBjb25maWd1cmF0aW9uIFsodGltZWNvZGUgWyVzXSwgdGltZXN0YW1wcyBbJXNdKV0nLCB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5zaG91bGRFeHRyYWN0VGltZWNvZGUudmFsdWUsIHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnNob3VsZEV4dHJhY3RUaW1lc3RhbXBzLnZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQobWVkaWFTdHJlYW06IE1lZGlhU3RyZWFtKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdmlkZW9FbGVtZW50ID0gdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlO1xuXG4gICAgaWYgKCF2aWRlb0VsZW1lbnQpIHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9NdXRlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuU3RvcHBlZDtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMudmFsdWUpIHtcbiAgICAgIHZpZGVvRWxlbWVudC5zcmNPYmplY3QgPSBtZWRpYVN0cmVhbTtcbiAgICB9XG5cbiAgICBjb25zdCBwbGF5UHJvbWlzZSA9IHZpZGVvRWxlbWVudC5wbGF5KCk7XG5cbiAgICBpZiAocGxheVByb21pc2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvUGF1c2VkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlBsYXlpbmc7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gcGxheVByb21pc2UudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSB0cnVlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuUGxheWluZztcbiAgICB9KS5jYXRjaChlID0+IHtcbiAgICAgIGNvbnN0IGhhc0F1ZGlvVHJhY2sgPSAhIW1lZGlhU3RyZWFtLmdldFRyYWNrcygpLmZpbHRlcih0cmFjayA9PiB7XG4gICAgICAgIHJldHVybiB0cmFjay5raW5kID09PSAnYXVkaW8nO1xuICAgICAgfSkubGVuZ3RoO1xuICAgICAgY29uc3QgYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmVPZmYgPSAhU0RLLmF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlO1xuXG4gICAgICBpZiAoYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmVPZmYgfHwgdmlkZW9FbGVtZW50Lm11dGVkIHx8ICFoYXNBdWRpb1RyYWNrKSB7XG4gICAgICAgIHZpZGVvRWxlbWVudC5zcmNPYmplY3QgPSBudWxsO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IHRydWU7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5QYXVzZWQ7XG5cbiAgICAgICAgaWYgKGF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlT2ZmKSB7XG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gUGF1c2VkIHZpZGVvIGFmdGVyIHBsYXkgZmFpbGVkLiBNYW51YWwgdXNlciBhY3Rpb24gcmVxdWlyZWQuJywgdGhpcy5zdHJlYW1JZCwgZSk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaGFzQXVkaW9UcmFjaykge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBwbGF5IHZpZGVvLiBNYW51YWwgdXNlciBhY3Rpb24gcmVxdWlyZWQuJywgdGhpcy5zdHJlYW1JZCwgZSk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gcGxheSBtdXRlZCB2aWRlby4gTWFudWFsIHVzZXIgYWN0aW9uIHJlcXVpcmVkLicsIHRoaXMuc3RyZWFtSWQsIGUpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmlkZW9FbGVtZW50Lm11dGVkID0gdHJ1ZTtcblxuICAgICAgcmV0dXJuIHZpZGVvRWxlbWVudC5wbGF5KClcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFBsYXllZCB2aWRlbyBhZnRlciBhdXRvIG11dGluZy4gTWFudWFsIHVzZXIgYWN0aW9uIHJlcXVpcmVkIHRvIHVubXV0ZS4nLCB0aGlzLnN0cmVhbUlkKTtcblxuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9NdXRlZC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5QbGF5aW5nO1xuICAgICAgICB9KS5jYXRjaChlID0+IHtcbiAgICAgICAgICB2aWRlb0VsZW1lbnQubXV0ZWQgPSBmYWxzZTtcblxuICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBwbGF5IHZpZGVvLiBNYW51YWwgdXNlciBhY3Rpb24gcmVxdWlyZWQuJywgdGhpcy5zdHJlYW1JZCwgZSk7XG5cbiAgICAgICAgICB2aWRlb0VsZW1lbnQuc3JjT2JqZWN0ID0gbnVsbDtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvUGF1c2VkLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlBhdXNlZDtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmVudW0gQ2hhbm5lbFN0YXRlIHtcbiAgSW5pdGlhbGl6aW5nID0gMCxcbiAgT2ZmbGluZSA9IDEsXG4gIFN0YXJ0aW5nID0gMixcbiAgUGF1c2VkID0gMyxcbiAgUGxheWluZyA9IDQsXG4gIFJlY292ZXJpbmcgPSA1LFxuICBSZWNvbm5lY3RpbmcgPSA2LFxuICBTdGFuZEJ5ID0gNyxcbiAgU3RvcHBlZCA9IDgsXG4gIFVuYXV0aG9yaXplZCA9IDksXG4gIEdlb1Jlc3RyaWN0ZWQgPSAxMCxcbiAgR2VvQmxvY2tlZCA9IDExLFxuICBVbnN1cHBvcnRlZEZlYXR1cmUgPSAxMixcbiAgQ29uZmlndXJhdGlvbkVycm9yID0gMTMsXG4gIFRyYW5zaWVudENvbmZpZ3VyYXRpb25FcnJvciA9IDE0LFxuICBDb25uZWN0aW9uRXJyb3IgPSAxNSxcbiAgQ2xpZW50U3RhcnRFcnJvciA9IDE2LFxuICBFcnJvciA9IDE3XG59XG5cbmV4cG9ydCBkZWZhdWx0IENoYW5uZWxTdGF0ZTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7TWlsbGlzZWNvbmR9IGZyb20gJy4uLy4uL3VuaXRzL1VuaXRzJztcbmltcG9ydCB7RW5jb2RlZEVkZ2VUb2tlbn0gZnJvbSAnLi4vLi4vZWRnZUF1dGgvRW5jb2RlZEVkZ2VUb2tlbic7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuaW1wb3J0IHtJRW5jb2RlZFN0cmVhbVNpbmt9IGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL0VuY29kZWRTdHJlYW1TaW5rJztcbmltcG9ydCB7SVN0cmVhbVRyYWNrVHJhbnNmb3JtfSBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi9TdHJlYW1UcmFja1RyYW5zZm9ybSc7XG5pbXBvcnQgQ2hhbm5lbCwge0NoYW5uZWxPcHRpb25zfSBmcm9tICcuL0NoYW5uZWwnO1xuaW1wb3J0IHtJT25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFja30gZnJvbSAnLi9JT25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayc7XG5pbXBvcnQge0lPblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFja30gZnJvbSAnLi9JT25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2snO1xuXG5leHBvcnQgdHlwZSBDcmVhdGVDaGFubmVsT3B0aW9ucyA9IHtcbiAgdmlkZW9FbGVtZW50OiBIVE1MVmlkZW9FbGVtZW50O1xuICB0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbjtcbiAgdGFyZ2V0TGFnPzogTWlsbGlzZWNvbmQ7XG4gIHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s/OiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08VmlkZW9GcmFtZT47XG4gIGF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s/OiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08QXVkaW9EYXRhPjtcbiAgZW5jb2RlZFZpZGVvU3RyZWFtU2luaz86IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkVmlkZW9GcmFtZT47XG4gIGVuY29kZWRBdWRpb1N0cmVhbVNpbms/OiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2hhbm5lbHMge1xuICBzdGF0aWMgY3JlYXRlQ2hhbm5lbChvcHRpb25zOiBDcmVhdGVDaGFubmVsT3B0aW9ucyk6IENoYW5uZWwge1xuICAgIGlmICghU0RLLmluaXRpYWxpemVkLnZhbHVlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NESyBpcyBub3QgbG9hZGVkLicpO1xuICAgIH1cblxuICAgIGNvbnN0IGNoYW5uZWxPcHRpb25zOiBDaGFubmVsT3B0aW9ucyA9IHtcbiAgICAgIHRhcmdldExhZzogb3B0aW9ucy50YXJnZXRMYWcsXG4gICAgICB2aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBvcHRpb25zLnZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2ssXG4gICAgICBhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBvcHRpb25zLmF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2ssXG4gICAgICBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rOiBvcHRpb25zLmVuY29kZWRWaWRlb1N0cmVhbVNpbmssXG4gICAgICBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rOiBvcHRpb25zLmVuY29kZWRBdWRpb1N0cmVhbVNpbmtcbiAgICB9O1xuICAgIGNvbnN0IG9wdGlvbnNXaXRoUmVhbFRpbWVTdWJzY3JpYmVDYWxsYmFja3M6IENoYW5uZWxPcHRpb25zICYge1xuICAgICAgb25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaz86IElPblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrO1xuICAgICAgb25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s/OiBJT25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s7XG4gICAgfSA9IG9wdGlvbnM7XG5cbiAgICBpZiAob3B0aW9uc1dpdGhSZWFsVGltZVN1YnNjcmliZUNhbGxiYWNrcy5vblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrKSB7XG4gICAgICBjaGFubmVsT3B0aW9ucy5vblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrID0gb3B0aW9uc1dpdGhSZWFsVGltZVN1YnNjcmliZUNhbGxiYWNrcy5vblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zV2l0aFJlYWxUaW1lU3Vic2NyaWJlQ2FsbGJhY2tzLm9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrKSB7XG4gICAgICBjaGFubmVsT3B0aW9ucy5vblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjayA9IG9wdGlvbnNXaXRoUmVhbFRpbWVTdWJzY3JpYmVDYWxsYmFja3Mub25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBDaGFubmVsKG9wdGlvbnMudmlkZW9FbGVtZW50LCBvcHRpb25zLnRva2VuLCBjaGFubmVsT3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldCBpc0ZyYW1lVGltaW5nSW5mb3JtYXRpb25TdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEZlYXR1cmVFbmFibGVtZW50LmlzQ2hhbm5lbEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdXBwb3J0ZWQ7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignQ2hhbm5lbHMgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcbmltcG9ydCBDaGFubmVsU3RhdGUgZnJvbSAnLi4vY2hhbm5lbHMvQ2hhbm5lbFN0YXRlJztcbmltcG9ydCBEaW1lbnNpb24gZnJvbSAnLi4vLi4vdmlkZW8vRGltZW5zaW9uJztcbmltcG9ydCBFbmRQb2ludCwge0lTdHJlYW0sIFN1YnNjcmliZVN0YXR1c30gZnJvbSAnLi4vZGlzY292ZXJ5L0VuZFBvaW50JztcbmltcG9ydCB7SU9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2t9IGZyb20gJy4uL2NoYW5uZWxzL0lPblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrJztcbmltcG9ydCB7SU9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrfSBmcm9tICcuLi9jaGFubmVscy9JT25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2snO1xuaW1wb3J0IFZpZGVvVGVsZW1ldHJ5IGZyb20gJy4uLy4uL3ZpZGVvL1ZpZGVvVGVsZW1ldHJ5JztcbmltcG9ydCB7SVJ0Y01vbml0b3JTdGF0aXN0aWMsIElSdGNTdGF0aXN0aWN9IGZyb20gJy4uLy4uL3J0Yy9SdGNDb25uZWN0aW9uTW9uaXRvcic7XG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQge0JpdHNQZXJTZWNvbmQsIE1pbGxpc2Vjb25kfSBmcm9tICcuLi8uLi91bml0cy9Vbml0cyc7XG5cbmNvbnN0IGRlZmF1bHRUYXJnZXRMYWcgPSAwO1xuXG5leHBvcnQgdHlwZSBDaGFubmVsQ29udGV4dE9wdGlvbnMgPSB7XG4gIHRhcmdldExhZz86IG51bWJlcjtcbiAgb25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaz86IElPblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrO1xuICBvblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaz86IElPblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaztcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENoYW5uZWxDb250ZXh0IHtcbiAgY2hhbm5lbEluaXRpYWxpemF0aW9uOiBEYXRlO1xuICBkaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3Q7XG4gIGNoYW5uZWxEaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3Q7XG4gIHJlbmRlcmVyRGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0O1xuICB2aWRlb0VsZW1lbnQ6IFN1YmplY3Q8SFRNTFZpZGVvRWxlbWVudCB8IG51bGw+O1xuICBzdGF0ZTogU3ViamVjdDxDaGFubmVsU3RhdGU+O1xuICBleGlzdHM6IFN1YmplY3Q8Ym9vbGVhbiB8IG51bGw+O1xuICBhdXRvTXV0ZWQ6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIGF1dG9QYXVzZWQ6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIGF1dGhvcml6ZWQ6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIG9ubGluZTogU3ViamVjdDxib29sZWFuPjtcbiAgbG9hZGluZzogU3ViamVjdDxib29sZWFuPjtcbiAgcGxheWluZzogU3ViamVjdDxib29sZWFuPjtcbiAgc3RhbmRieTogU3ViamVjdDxib29sZWFuPjtcbiAgc3RvcHBlZDogU3ViamVjdDxib29sZWFuPjtcbiAgdGFyZ2V0TGFnOiBTdWJqZWN0PE1pbGxpc2Vjb25kPjtcbiAgbGFnOiBTdWJqZWN0PE1pbGxpc2Vjb25kIHwgdW5kZWZpbmVkPjtcbiAgYml0cmF0ZUxpbWl0OiBTdWJqZWN0PEJpdHNQZXJTZWNvbmQ+O1xuICByZXNvbHV0aW9uOiBTdWJqZWN0PERpbWVuc2lvbj47XG4gIGZhaWx1cmVDb3VudDogU3ViamVjdDxudW1iZXI+O1xuICBlbmRQb2ludDogU3ViamVjdDxFbmRQb2ludCB8IG51bGw+O1xuICBvblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrOiBJT25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayB8IG51bGw7XG4gIG9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrOiBJT25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2sgfCBudWxsO1xuICBzdHJlYW06IFN1YmplY3Q8SVN0cmVhbSB8IG51bGw+O1xuICBydGNTdGF0aXN0aWNzOiBTdWJqZWN0PElSdGNNb25pdG9yU3RhdGlzdGljIHwgbnVsbD47XG4gIHZpZGVvVGVsZW1ldHJ5OiBWaWRlb1RlbGVtZXRyeSB8IG51bGw7XG4gIHJ0Y0F1ZGlvU3RhdGlzdGljOiBJUnRjU3RhdGlzdGljIHwgbnVsbDtcbiAgcnRjVmlkZW9TdGF0aXN0aWM6IElSdGNTdGF0aXN0aWMgfCBudWxsO1xuICBjbGVhckZhaWx1cmVDb3VudFRpbWVvdXQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zPzogQ2hhbm5lbENvbnRleHRPcHRpb25zKSB7XG4gICAgdGhpcy5kaXNwb3NhYmxlcyA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICAgIHRoaXMuY2hhbm5lbERpc3Bvc2FibGVzID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gICAgdGhpcy5yZW5kZXJlckRpc3Bvc2FibGVzID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gICAgdGhpcy5jaGFubmVsSW5pdGlhbGl6YXRpb24gPSBuZXcgRGF0ZSgpO1xuICAgIHRoaXMudmlkZW9FbGVtZW50ID0gbmV3IFN1YmplY3Q8SFRNTFZpZGVvRWxlbWVudCB8IG51bGw+KG51bGwpO1xuICAgIHRoaXMuc3RhdGUgPSBuZXcgU3ViamVjdDxDaGFubmVsU3RhdGU+KENoYW5uZWxTdGF0ZS5Jbml0aWFsaXppbmcpO1xuICAgIHRoaXMuZXhpc3RzID0gbmV3IFN1YmplY3Q8Ym9vbGVhbiB8IG51bGw+KG51bGwpO1xuICAgIHRoaXMuYXV0b011dGVkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMuYXV0b1BhdXNlZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLmF1dGhvcml6ZWQgPSBuZXcgU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgICB0aGlzLm9ubGluZSA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICAgIHRoaXMubG9hZGluZyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLnBsYXlpbmcgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5zdGFuZGJ5ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMuc3RvcHBlZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLnRhcmdldExhZyA9IG5ldyBTdWJqZWN0PE1pbGxpc2Vjb25kPihvcHRpb25zPy50YXJnZXRMYWcgPz8gZGVmYXVsdFRhcmdldExhZyk7XG4gICAgdGhpcy5sYWcgPSBuZXcgU3ViamVjdDxNaWxsaXNlY29uZCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgICB0aGlzLmJpdHJhdGVMaW1pdCA9IG5ldyBTdWJqZWN0PEJpdHNQZXJTZWNvbmQ+KDApO1xuICAgIHRoaXMucmVzb2x1dGlvbiA9IG5ldyBTdWJqZWN0PERpbWVuc2lvbj4oRGltZW5zaW9uLmVtcHR5KTtcbiAgICB0aGlzLmZhaWx1cmVDb3VudCA9IG5ldyBTdWJqZWN0PG51bWJlcj4oMCk7XG4gICAgdGhpcy5lbmRQb2ludCA9IG5ldyBTdWJqZWN0PEVuZFBvaW50IHwgbnVsbD4obnVsbCk7XG4gICAgdGhpcy5vblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrID0gb3B0aW9ucz8ub25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayA/PyBudWxsO1xuICAgIHRoaXMub25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2sgPSBvcHRpb25zPy5vblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjayA/PyBudWxsO1xuICAgIHRoaXMuc3RyZWFtID0gbmV3IFN1YmplY3Q8SVN0cmVhbSB8IG51bGw+KG51bGwpO1xuICAgIHRoaXMucnRjU3RhdGlzdGljcyA9IG5ldyBTdWJqZWN0PElSdGNNb25pdG9yU3RhdGlzdGljIHwgbnVsbD4obnVsbCk7XG4gICAgdGhpcy52aWRlb1RlbGVtZXRyeSA9IG51bGw7XG4gICAgdGhpcy5ydGNBdWRpb1N0YXRpc3RpYyA9IG51bGw7XG4gICAgdGhpcy5ydGNWaWRlb1N0YXRpc3RpYyA9IG51bGw7XG4gICAgdGhpcy5jbGVhckZhaWx1cmVDb3VudFRpbWVvdXQgPSAwO1xuICB9XG5cbiAgZ2V0IHN0cmVhbUlkKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3RyZWFtID0gdGhpcy5zdHJlYW0udmFsdWU7XG5cbiAgICBpZiAoIXN0cmVhbSkge1xuICAgICAgcmV0dXJuICctJztcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyZWFtLnN0cmVhbUlkO1xuICB9XG5cbiAgYXBwbHlTdGF0dXMoc3RhdHVzOiBTdWJzY3JpYmVTdGF0dXMpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSAnb2snOlxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3VuYXV0aG9yaXplZCc6XG4gICAgICBjYXNlICdnZW8tcmVzdHJpY3RlZCc6XG4gICAgICBjYXNlICdnZW8tYmxvY2tlZCc6XG4gICAgICAgIHRoaXMuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmZhaWx1cmVDb3VudC52YWx1ZSA9IDA7XG4gICAgICAgIHRoaXMucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN0YW5kYnkudmFsdWUgPSB0cnVlO1xuICAgICAgICB0aGlzLnN0b3BwZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdHJlYW0udmFsdWUgPSBudWxsO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgJ25vLXN0cmVhbSc6XG4gICAgICBjYXNlICdub3QtZm91bmQnOlxuICAgICAgICB0aGlzLmZhaWx1cmVDb3VudC52YWx1ZSA9IDA7XG4gICAgICAgIHRoaXMucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN0YW5kYnkudmFsdWUgPSB0cnVlO1xuICAgICAgICB0aGlzLnN0b3BwZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdHJlYW0udmFsdWUgPSBudWxsO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuZmFpbHVyZUNvdW50LnZhbHVlKys7XG4gICAgICAgIHRoaXMucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN0YW5kYnkudmFsdWUgPSB0cnVlO1xuICAgICAgICB0aGlzLnN0b3BwZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdHJlYW0udmFsdWUgPSBudWxsO1xuXG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBhcHBseVNlc3Npb25BbmRTdHJlYW1Qcm9wZXJ0aWVzVG9WaWRlb0VsZW1lbnQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudmlkZW9FbGVtZW50LnZhbHVlICYmIHRoaXMudmlkZW9FbGVtZW50LnZhbHVlLmRhdGFzZXQpIHtcbiAgICAgIHRoaXMudmlkZW9FbGVtZW50LnZhbHVlLmRhdGFzZXQuc2Vzc2lvbklkID0gU0RLLmNsaWVudFNlc3Npb25JZDtcbiAgICAgIHRoaXMudmlkZW9FbGVtZW50LnZhbHVlLmRhdGFzZXQuc3RyZWFtSWQgPSB0aGlzLnN0cmVhbUlkO1xuICAgIH1cbiAgfVxuXG4gIG1hcFN1YnNjcmliZVN0YXR1c1RvQ2hhbm5lbFN0YXR1cyhzdGF0dXM6IFN1YnNjcmliZVN0YXR1cyk6IENoYW5uZWxTdGF0ZSB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ29rJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5TdGFydGluZztcbiAgICAgIGNhc2UgJ25vLXN0cmVhbSc6XG4gICAgICBjYXNlICdub3QtZm91bmQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLlN0YW5kQnk7XG4gICAgICBjYXNlICdnZW8tcmVzdHJpY3RlZCc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuR2VvUmVzdHJpY3RlZDtcbiAgICAgIGNhc2UgJ2dlby1ibG9ja2VkJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5HZW9CbG9ja2VkO1xuICAgICAgY2FzZSAndW5hdXRob3JpemVkJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5VbmF1dGhvcml6ZWQ7XG4gICAgICBjYXNlICdjYXBhY2l0eSc6XG4gICAgICBjYXNlICdyYXRlLWxpbWl0ZWQnOlxuICAgICAgY2FzZSAndGltZW91dCc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuUmVjb3ZlcmluZztcbiAgICAgIGNhc2UgJ2ZvcmJpZGRlbi10YWcnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgIGNhc2UgJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5UcmFuc2llbnRDb25maWd1cmF0aW9uRXJyb3I7XG4gICAgICBjYXNlICdmYWlsZWQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLkVycm9yO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoc3RhdHVzKTtcbiAgICB9XG4gIH1cblxuICBtYXBTdWJzY3JpYmVTdGF0dXNUb0V4aXN0cyhzdGF0dXM6IFN1YnNjcmliZVN0YXR1cyk6IGJvb2xlYW4gfCBudWxsIHtcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSAnb2snOlxuICAgICAgY2FzZSAnbm8tc3RyZWFtJzpcbiAgICAgIGNhc2UgJ2dlby1yZXN0cmljdGVkJzpcbiAgICAgIGNhc2UgJ2dlby1ibG9ja2VkJzpcbiAgICAgIGNhc2UgJ2ZvcmJpZGRlbi10YWcnOlxuICAgICAgY2FzZSAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnOlxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIGNhc2UgJ25vdC1mb3VuZCc6XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIGNhc2UgJ3VuYXV0aG9yaXplZCc6XG4gICAgICBjYXNlICd0aW1lb3V0JzpcbiAgICAgIGNhc2UgJ3JhdGUtbGltaXRlZCc6XG4gICAgICBjYXNlICdjYXBhY2l0eSc6XG4gICAgICBjYXNlICdmYWlsZWQnOlxuICAgICAgICByZXR1cm4gdGhpcy5leGlzdHMudmFsdWU7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShzdGF0dXMpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQge0RlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uLCBSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb259IGZyb20gJy4uL2ZyYW1lVGltaW5nL0ZyYW1lVGltaW5nSW5mb3JtYXRpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCB7XG4gIHB1YmxpYyByZWFkb25seSBzaG91bGRFeHRyYWN0VGltZWNvZGU6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHB1YmxpYyByZWFkb25seSBzaG91bGRFeHRyYWN0VGltZXN0YW1wczogU3ViamVjdDxib29sZWFuPjtcbiAgcHVibGljIHJlYWRvbmx5IGlzRW5hYmxlZDogU3ViamVjdDxib29sZWFuPjtcbiAgcHVibGljIHJlYWRvbmx5IGRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uOiBTdWJqZWN0PERlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD47XG4gIHB1YmxpYyByZWFkb25seSByZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb246IFN1YmplY3Q8UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD47XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5zaG91bGRFeHRyYWN0VGltZWNvZGUgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5zaG91bGRFeHRyYWN0VGltZXN0YW1wcyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLmlzRW5hYmxlZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLmRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uID0gbmV3IFN1YmplY3Q8RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPihudWxsKTtcbiAgICB0aGlzLnJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiA9IG5ldyBTdWJqZWN0PFJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+KG51bGwpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi4vLi4vcnRjL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQgR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIgZnJvbSAnLi4vLi4vZG9tL0dhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyJztcblxuZXhwb3J0IHR5cGUgUGVlckNvbm5lY3Rpb25Db250ZXh0T3B0aW9ucyA9IHtcbiAgZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydDogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBlZXJDb25uZWN0aW9uQ29udGV4dCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQ6IGJvb2xlYW47XG4gIG1lZGlhU3RyZWFtOiBTdWJqZWN0PE1lZGlhU3RyZWFtIHwgbnVsbD47XG4gIHBlZXJDb25uZWN0aW9uOiBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbiB8IG51bGw+O1xuICBwZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogUGVlckNvbm5lY3Rpb25Db250ZXh0T3B0aW9ucykge1xuICAgIHRoaXMuX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQgPSBvcHRpb25zLmZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQ7XG4gICAgdGhpcy5tZWRpYVN0cmVhbSA9IG5ldyBTdWJqZWN0PE1lZGlhU3RyZWFtIHwgbnVsbD4obnVsbCk7XG4gICAgdGhpcy5wZWVyQ29ubmVjdGlvbiA9IG5ldyBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbiB8IG51bGw+KG51bGwpO1xuICAgIHRoaXMucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDA7XG4gIH1cblxuICBwdWJsaWMgZGlzcG9zZVBlZXJDb25uZWN0aW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IHBlZXJDb25uZWN0aW9uID0gdGhpcy5wZWVyQ29ubmVjdGlvbi52YWx1ZTtcblxuICAgIGlmICghcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnBlZXJDb25uZWN0aW9uLnZhbHVlID0gbnVsbDtcbiAgICBwZWVyQ29ubmVjdGlvbi5jbG9zZSgpO1xuICAgIHBlZXJDb25uZWN0aW9uLmRpc3Bvc2UoKTtcblxuICAgIGlmICh0aGlzLl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0KSB7XG4gICAgICBHYXJiYWdlQ29sbGVjdG9yTWFuYWdlci5mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRpc3Bvc2VNZWRpYVN0cmVhbSgpOiB2b2lkIHtcbiAgICB0aGlzLm1lZGlhU3RyZWFtLnZhbHVlPy5nZXRUcmFja3MoKS5mb3JFYWNoKHRyYWNrID0+IHRyYWNrLnN0b3AoKSk7XG4gICAgdGhpcy5tZWRpYVN0cmVhbS52YWx1ZSA9IG51bGw7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdGF0ZUNvbnRleHQge1xuICBpc1N0YXJ0aW5nOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBpc0Rpc3Bvc2VkOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaXNTdGFydGluZyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLmlzRGlzcG9zZWQgPSBmYWxzZTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQge1ZpZGVvQ29kZWN9IGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvVmlkZW9Db2RlYyc7XG5pbXBvcnQge0F1ZGlvQ29kZWN9IGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvQXVkaW9Db2RlYyc7XG5pbXBvcnQge0lTdHJlYW1UcmFja1RyYW5zZm9ybX0gZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vU3RyZWFtVHJhY2tUcmFuc2Zvcm0nO1xuaW1wb3J0IHtJRW5jb2RlZFN0cmVhbVNpbmt9IGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL0VuY29kZWRTdHJlYW1TaW5rJztcbmltcG9ydCBUcmFuc2Zvcm1NZXNzYWdlUm91dGVyIGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL3dvcmtlci9NZXNzYWdlUm91dGVyJztcblxuZXhwb3J0IHR5cGUgU3RyZWFtVHJhbnNmb3JtQ29udGV4dE9wdGlvbnMgPSB7XG4gIGhhc0luc2VydGFibGVTdHJlYW1zOiBib29sZWFuO1xuICBoYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXM6IGJvb2xlYW47XG4gIHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IElTdHJlYW1UcmFja1RyYW5zZm9ybTxWaWRlb0ZyYW1lPiB8IHVuZGVmaW5lZDtcbiAgYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPEF1ZGlvRGF0YT4gfCB1bmRlZmluZWQ7XG4gIGVuY29kZWRWaWRlb1N0cmVhbVNpbms6IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkVmlkZW9GcmFtZT4gfCB1bmRlZmluZWQ7XG4gIGVuY29kZWRBdWRpb1N0cmVhbVNpbms6IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkQXVkaW9GcmFtZT4gfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0VHJhY2sgPSB7XG4gIG1lZGlhU3RyZWFtVHJhY2s6IE1lZGlhU3RyZWFtVHJhY2sgfCBudWxsO1xuICByZWNlaXZlcjogUlRDUnRwUmVjZWl2ZXIgfCBudWxsO1xuICBtaWQ6IHN0cmluZyB8IG51bGw7XG4gIGNvZGVjOiBWaWRlb0NvZGVjIHwgQXVkaW9Db2RlYyB8IG51bGw7XG4gIHRyYW5zZm9ybVBpcGVsaW5lV29ya2VyOiBXb3JrZXIgfCBudWxsO1xuICB0cmFuc2Zvcm1NZXNzYWdlUm91dGVyOiBUcmFuc2Zvcm1NZXNzYWdlUm91dGVyIHwgbnVsbDtcbiAgdHJhbnNmb3JtRnVuY3Rpb25OYW1lczogc3RyaW5nW107XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0IHtcbiAgcmVhZG9ubHkgaGFzSW5zZXJ0YWJsZVN0cmVhbXM6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHJlYWRvbmx5IGhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtczogU3ViamVjdDxib29sZWFuPjtcbiAgcmVhZG9ubHkgdmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPFZpZGVvRnJhbWU+IHwgdW5kZWZpbmVkO1xuICByZWFkb25seSBhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08QXVkaW9EYXRhPiB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgZW5jb2RlZFZpZGVvU3RyZWFtU2luazogSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRWaWRlb0ZyYW1lPiB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgZW5jb2RlZEF1ZGlvU3RyZWFtU2luazogSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRBdWRpb0ZyYW1lPiB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgYXVkaW9UcmFjazogU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrO1xuICByZWFkb25seSB2aWRlb1RyYWNrOiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0VHJhY2s7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogU3RyZWFtVHJhbnNmb3JtQ29udGV4dE9wdGlvbnMpIHtcbiAgICB0aGlzLmhhc0luc2VydGFibGVTdHJlYW1zID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4ob3B0aW9ucy5oYXNJbnNlcnRhYmxlU3RyZWFtcyk7XG4gICAgdGhpcy5oYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgPSBuZXcgU3ViamVjdDxib29sZWFuPihvcHRpb25zLmhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyk7XG4gICAgdGhpcy52aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrID0gb3B0aW9ucy52aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrO1xuICAgIHRoaXMuYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayA9IG9wdGlvbnMuYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaztcbiAgICB0aGlzLmVuY29kZWRWaWRlb1N0cmVhbVNpbmsgPSBvcHRpb25zLmVuY29kZWRWaWRlb1N0cmVhbVNpbms7XG4gICAgdGhpcy5lbmNvZGVkQXVkaW9TdHJlYW1TaW5rID0gb3B0aW9ucy5lbmNvZGVkQXVkaW9TdHJlYW1TaW5rO1xuICAgIHRoaXMuYXVkaW9UcmFjayA9IHtcbiAgICAgIG1lZGlhU3RyZWFtVHJhY2s6IG51bGwsXG4gICAgICByZWNlaXZlcjogbnVsbCxcbiAgICAgIG1pZDogbnVsbCxcbiAgICAgIGNvZGVjOiBudWxsLFxuICAgICAgdHJhbnNmb3JtUGlwZWxpbmVXb3JrZXI6IG51bGwsXG4gICAgICB0cmFuc2Zvcm1NZXNzYWdlUm91dGVyOiBudWxsLFxuICAgICAgdHJhbnNmb3JtRnVuY3Rpb25OYW1lczogW11cbiAgICB9O1xuICAgIHRoaXMudmlkZW9UcmFjayA9IHtcbiAgICAgIG1lZGlhU3RyZWFtVHJhY2s6IG51bGwsXG4gICAgICByZWNlaXZlcjogbnVsbCxcbiAgICAgIG1pZDogbnVsbCxcbiAgICAgIGNvZGVjOiBudWxsLFxuICAgICAgdHJhbnNmb3JtUGlwZWxpbmVXb3JrZXI6IG51bGwsXG4gICAgICB0cmFuc2Zvcm1NZXNzYWdlUm91dGVyOiBudWxsLFxuICAgICAgdHJhbnNmb3JtRnVuY3Rpb25OYW1lczogW11cbiAgICB9O1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcbmltcG9ydCB7RW5jb2RlZEVkZ2VUb2tlbn0gZnJvbSAnLi4vLi4vZWRnZUF1dGgvRW5jb2RlZEVkZ2VUb2tlbic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRva2VuQ29udGV4dCB7XG4gIHRva2VuOiBTdWJqZWN0PEVuY29kZWRFZGdlVG9rZW4+O1xuICB0b2tlbkV4cGlyaW5nOiBTdWJqZWN0PGJvb2xlYW4+O1xuXG4gIGNvbnN0cnVjdG9yKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuKSB7XG4gICAgdGhpcy50b2tlbiA9IG5ldyBTdWJqZWN0PEVuY29kZWRFZGdlVG9rZW4+KHRva2VuKTtcbiAgICB0aGlzLnRva2VuRXhwaXJpbmcgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBlbnVtIEF1ZGlvQ29kZWMge1xuICBPUFVTID0gMCxcbiAgQUFDID0gMVxufVxuXG5leHBvcnQgdHlwZSBBdWRpb0NvZGVjVHlwZSA9ICdPUFVTJyB8ICdBQUMnOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtBdWRpb0NvZGVjLCBBdWRpb0NvZGVjVHlwZX0gZnJvbSAnLi9BdWRpb0NvZGVjJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi8uLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXVkaW9Db2RlY01hcHBpbmcge1xuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRBdWRpb0NvZGVjVG9BdWRpb0NvZGVjVHlwZShhdWRpb0NvZGVjOiBBdWRpb0NvZGVjKTogQXVkaW9Db2RlY1R5cGUge1xuICAgIHN3aXRjaCAoYXVkaW9Db2RlYykge1xuICAgICAgY2FzZSBBdWRpb0NvZGVjLk9QVVM6XG4gICAgICAgIHJldHVybiAnT1BVUyc7XG4gICAgICBjYXNlIEF1ZGlvQ29kZWMuQUFDOlxuICAgICAgICByZXR1cm4gJ0FBQyc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShhdWRpb0NvZGVjKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRBdWRpb0NvZGVjVHlwZVRvQXVkaW9Db2RlYyhhdWRpb0NvZGVjVHlwZTogQXVkaW9Db2RlY1R5cGUpOiBBdWRpb0NvZGVjIHtcbiAgICBjb25zdCBhdWRpb0NvZGVjU3RyaW5nID0gYXVkaW9Db2RlY1R5cGUudG9VcHBlckNhc2UoKSBhcyBrZXlvZiB0eXBlb2YgQXVkaW9Db2RlYztcblxuICAgIHN3aXRjaCAoYXVkaW9Db2RlY1N0cmluZykge1xuICAgICAgY2FzZSAnT1BVUyc6XG4gICAgICAgIHJldHVybiBBdWRpb0NvZGVjLk9QVVM7XG4gICAgICBjYXNlICdBQUMnOlxuICAgICAgICByZXR1cm4gQXVkaW9Db2RlYy5BQUM7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShhdWRpb0NvZGVjU3RyaW5nKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBlbnVtIFZpZGVvQ29kZWMge1xuICBIMjY0ID0gMCxcbiAgVlA4ID0gMSxcbiAgVlA5ID0gMlxufVxuXG5leHBvcnQgdHlwZSBWaWRlb0NvZGVjVHlwZSA9ICdIMjY0JyB8ICdWUDgnIHwgJ1ZQOSc7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQge1ZpZGVvQ29kZWMsIFZpZGVvQ29kZWNUeXBlfSBmcm9tICcuL1ZpZGVvQ29kZWMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWaWRlb0NvZGVjTWFwcGluZyB7XG4gIHB1YmxpYyBzdGF0aWMgY29udmVydFZpZGVvQ29kZWNUb1ZpZGVvQ29kZWNUeXBlKHZpZGVvQ29kZWM6IFZpZGVvQ29kZWMpOiBWaWRlb0NvZGVjVHlwZSB7XG4gICAgc3dpdGNoICh2aWRlb0NvZGVjKSB7XG4gICAgICBjYXNlIFZpZGVvQ29kZWMuSDI2NDpcbiAgICAgICAgcmV0dXJuICdIMjY0JztcbiAgICAgIGNhc2UgVmlkZW9Db2RlYy5WUDg6XG4gICAgICAgIHJldHVybiAnVlA4JztcbiAgICAgIGNhc2UgVmlkZW9Db2RlYy5WUDk6XG4gICAgICAgIHJldHVybiAnVlA5JztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHZpZGVvQ29kZWMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydFZpZGVvQ29kZWNUeXBlVG9WaWRlb0NvZGVjKHZpZGVvQ29kZWNUeXBlOiBWaWRlb0NvZGVjVHlwZSk6IFZpZGVvQ29kZWMge1xuICAgIGNvbnN0IHZpZGVvQ29kZWNTdHJpbmcgPSB2aWRlb0NvZGVjVHlwZS50b1VwcGVyQ2FzZSgpIGFzIGtleW9mIHR5cGVvZiBWaWRlb0NvZGVjO1xuXG4gICAgc3dpdGNoICh2aWRlb0NvZGVjU3RyaW5nKSB7XG4gICAgICBjYXNlICdIMjY0JzpcbiAgICAgICAgcmV0dXJuIFZpZGVvQ29kZWMuSDI2NDtcbiAgICAgIGNhc2UgJ1ZQOCc6XG4gICAgICAgIHJldHVybiBWaWRlb0NvZGVjLlZQODtcbiAgICAgIGNhc2UgJ1ZQOSc6XG4gICAgICAgIHJldHVybiBWaWRlb0NvZGVjLlZQOTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHZpZGVvQ29kZWNTdHJpbmcpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgbmV3IFVpbnQ4QXJyYXkoWzB4MDAsIDB4MDAsIDB4MDAsIDB4MDFdKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmNvbnN0IGRlZmF1bHREaXNjb3ZlcnlVcmkgPSAnaHR0cHM6Ly9wY2FzdC5waGVuaXhydHMuY29tL3BjYXN0L2VuZFBvaW50cyc7XG5cbmV4cG9ydCB7ZGVmYXVsdERpc2NvdmVyeVVyaX07IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge0JpdHJhdGVNb2RlLCBCaXRyYXRlTW9kZVR5cGV9IGZyb20gJy4uL2FwaS9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJpdHJhdGVNb2RlTWFwcGluZyB7XG4gIHN0YXRpYyBjb252ZXJ0Qml0cmF0ZU1vZGVUb0JpdHJhdGVNb2RlVHlwZShiaXRyYXRlTW9kZTogQml0cmF0ZU1vZGUpOiBCaXRyYXRlTW9kZVR5cGUge1xuICAgIHN3aXRjaCAoYml0cmF0ZU1vZGUpIHtcbiAgICAgIGNhc2UgQml0cmF0ZU1vZGUuTm9ybWFsOlxuICAgICAgICByZXR1cm4gJ05vcm1hbCc7XG4gICAgICBjYXNlIEJpdHJhdGVNb2RlLkZvcmNlOlxuICAgICAgICByZXR1cm4gJ0ZvcmNlJztcbiAgICAgIGNhc2UgQml0cmF0ZU1vZGUuUmVzZXQ6XG4gICAgICAgIHJldHVybiAnUmVzZXQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoYml0cmF0ZU1vZGUpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtCaXRyYXRlU3RhdGUsIEJpdHJhdGVTdGF0ZVR5cGV9IGZyb20gJy4uL2FwaS9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJpdHJhdGVTdGF0ZU1hcHBpbmcge1xuICBzdGF0aWMgY29udmVydEJpdHJhdGVTdGF0ZVRvQml0cmF0ZVN0YXRlVHlwZShiaXRyYXRlU3RhdGU6IEJpdHJhdGVTdGF0ZSk6IEJpdHJhdGVTdGF0ZVR5cGUge1xuICAgIHN3aXRjaCAoYml0cmF0ZVN0YXRlKSB7XG4gICAgICBjYXNlIEJpdHJhdGVTdGF0ZS5LZWVwOlxuICAgICAgICByZXR1cm4gJ0tlZXAnO1xuICAgICAgY2FzZSBCaXRyYXRlU3RhdGUuUmVzZXQ6XG4gICAgICAgIHJldHVybiAnUmVzZXQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoYml0cmF0ZVN0YXRlKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi8uLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgRGlzY292ZXJ5U2VydmljZSBmcm9tICcuL0Rpc2NvdmVyeVNlcnZpY2UnO1xuaW1wb3J0IEVuZFBvaW50IGZyb20gJy4vRW5kUG9pbnQnO1xuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuXG5jb25zdCBkaXNjb3ZlcnlDYWNoZUludGVydmFsID0gNjAwMDA7XG5cbmludGVyZmFjZSBJUGVyVVJJRW5kcG9pbnQgeyBbeDogc3RyaW5nXTogUHJvbWlzZTxFbmRQb2ludD4gfVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXNjb3Zlcnkge1xuICBwcml2YXRlIHN0YXRpYyBfY2FjaGU6IElQZXJVUklFbmRwb2ludCA9IHt9O1xuXG4gIHN0YXRpYyBhc3luYyBwcmVjYWNoZUNsb3Nlc3RFbmRQb2ludERpc2NvdmVyeSgpOiBQcm9taXNlPEVuZFBvaW50PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPEVuZFBvaW50PihyZXNvbHZlRW5kUG9pbnRQcm9taXNlID0+IHtcbiAgICAgIGNvbnN0IGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uID0gR2xvYmFsU2NvcGUuc3Vic2NyaWJlKGdsb2JhbFNjb3BlID0+IHtcbiAgICAgICAgaWYgKCFnbG9iYWxTY29wZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHVyaSA9IG5ldyBnbG9iYWxTY29wZS5VUkwoU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSk7XG5cbiAgICAgICAgcmV0dXJuIERpc2NvdmVyeS5kaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nKHVyaSlcbiAgICAgICAgICAudGhlbihyZXNvbHZlRW5kUG9pbnRQcm9taXNlKVxuICAgICAgICAgIC50aGVuKCgpID0+IGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uLmRpc3Bvc2UoKSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBkaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nKHVyaTogVVJMKTogUHJvbWlzZTxFbmRQb2ludD4ge1xuICAgIGNvbnN0IHVybCA9IHVyaS50b1N0cmluZygpO1xuXG4gICAgaWYgKHVybCBpbiBEaXNjb3ZlcnkuX2NhY2hlKSB7XG4gICAgICByZXR1cm4gRGlzY292ZXJ5Ll9jYWNoZVt1cmxdO1xuICAgIH1cblxuICAgIGNvbnN0IGRpc2NvdmVyeVNlcnZpY2UgPSBuZXcgRGlzY292ZXJ5U2VydmljZSh1cmkpO1xuICAgIGNvbnN0IGNhY2hlZFZhbHVlID0gRGlzY292ZXJ5Ll9jYWNoZVt1cmxdID0gZGlzY292ZXJ5U2VydmljZS5kaXNjb3ZlckNsb3Nlc3RFbmRQb2ludCgpO1xuICAgIGNvbnN0IGlnbm9yZWQgPSBEaXNjb3ZlcnkuX2NhY2hlW3VybF0udGhlbigoKSA9PiB7XG4gICAgICBjb25zdCBpZ25vcmVkID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmIChEaXNjb3ZlcnkuX2NhY2hlW3VybF0gPT09IGNhY2hlZFZhbHVlKSB7XG4gICAgICAgICAgZGVsZXRlIERpc2NvdmVyeS5fY2FjaGVbdXJsXTtcbiAgICAgICAgfVxuICAgICAgfSwgZGlzY292ZXJ5Q2FjaGVJbnRlcnZhbCk7XG4gICAgfSkuY2F0Y2goKCkgPT4ge1xuICAgICAgZGVsZXRlIERpc2NvdmVyeS5fY2FjaGVbdXJsXTtcbiAgICB9KTtcblxuICAgIHJldHVybiBjYWNoZWRWYWx1ZTtcbiAgfVxuXG4gIHN0YXRpYyBjbGVhckNhY2hlZENsb3Nlc3RFbmRwb2ludCh1cmk6IFVSTCk6IHZvaWQge1xuICAgIGNvbnN0IHVybCA9IHVyaS50b1N0cmluZygpO1xuXG4gICAgaWYgKHVybCBpbiBEaXNjb3ZlcnkuX2NhY2hlKSB7XG4gICAgICBkZWxldGUgRGlzY292ZXJ5Ll9jYWNoZVt1cmxdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdEaXNjb3ZlcnkgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59XG5cbmNvbnN0IGlnbm9yZWQgPSBEaXNjb3ZlcnkucHJlY2FjaGVDbG9zZXN0RW5kUG9pbnREaXNjb3ZlcnkoKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi8uLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IE1ldHJpY3NTZXJ2aWNlIGZyb20gJy4uLy4uL21ldHJpY3MvTWV0cmljc1NlcnZpY2UnO1xuaW1wb3J0IE1ldHJpY3NGYWN0b3J5IGZyb20gJy4uLy4uL21ldHJpY3MvTWV0cmljc0ZhY3RvcnknO1xuaW1wb3J0IE1ldHJpY3NUeXBlIGZyb20gJy4uLy4uL21ldHJpY3MvTWV0cmljc1R5cGUnO1xuaW1wb3J0IERpc2NvdmVyeVVyaSBmcm9tICcuL0Rpc2NvdmVyeVVyaSc7XG5pbXBvcnQgRW5kUG9pbnQgZnJvbSAnLi9FbmRQb2ludCc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5cbmNvbnN0IGRlZmF1bHRUaW1lb3V0ID0gMjAwMDA7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERpc2NvdmVyeVNlcnZpY2Uge1xuICBwcml2YXRlIF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignRGlzY292ZXJ5Jyk7XG4gIHByaXZhdGUgX21ldHJpY3NTZXJ2aWNlOiBNZXRyaWNzU2VydmljZTtcbiAgcHJpdmF0ZSBfdXJpOiBVUkw7XG5cbiAgY29uc3RydWN0b3IodXJpOiBVUkwpIHtcbiAgICBpZiAoIXVyaSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaXNjb3ZlcnkgcmVxdWlyZXMgdXJpJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UgPSBNZXRyaWNzRmFjdG9yeS5nZXRNZXRyaWNzU2VydmljZSh1cmkudG9TdHJpbmcoKSk7XG4gICAgdGhpcy5fdXJpID0gdXJpO1xuICB9XG5cbiAgYXN5bmMgZGlzY292ZXJOZWFyYnlFbmRQb2ludHModXJpOiBVUkwsIHRpbWVvdXQ6IG51bWJlcik6IFByb21pc2U8RW5kUG9pbnRbXT4ge1xuICAgIGlmICghdGltZW91dCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaXNjb3ZlcnkgcmVxdWlyZXMgdGltZW91dCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHVybCA9IHVyaS50b1N0cmluZygpO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmZldGNoKHVybCwge1xuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICBjYWNoZTogJ25vLWNhY2hlJ1xuICAgICAgfSksXG4gICAgICBuZXcgUHJvbWlzZTxSZXNwb25zZT4oKF8sIHJlamVjdCkgPT4gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiByZWplY3QobmV3IEVycm9yKGBEaXNjb3ZlcnkgdGltZWQgb3V0IFske3VybH1dYCkpLCB0aW1lb3V0KSlcbiAgICBdKTtcblxuICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRGlzY292ZXJ5IGZhaWxlZCBbJHt1cmx9XSBbJHtyZXNwb25zZS5zdGF0dXN9XWApO1xuICAgIH1cblxuICAgIGlmIChyZXNwb25zZS5ib2R5ID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYERpc2NvdmVyeSBmYWlsZWQgd2l0aCBubyBkYXRhIFske3VybH1dYCk7XG4gICAgfVxuXG4gICAgY29uc3QgYXNTdHJpbmcgPSBhd2FpdCByZXNwb25zZS50ZXh0KCk7XG4gICAgY29uc3QgZW5kUG9pbnRzID0gYXNTdHJpbmcuc3BsaXQoJywnKTtcblxuICAgIHJldHVybiBlbmRQb2ludHMubWFwKGVuZFBvaW50ID0+IG5ldyBFbmRQb2ludChlbmRQb2ludCwgdGltZW91dCkpO1xuICB9XG5cbiAgYXN5bmMgZGlzY292ZXJDbG9zZXN0RW5kUG9pbnQodGltZW91dDogbnVtYmVyID0gZGVmYXVsdFRpbWVvdXQpOiBQcm9taXNlPEVuZFBvaW50PiB7XG4gICAgY29uc3QgdXJsID0gRGlzY292ZXJ5VXJpLmJ1aWxkRGlzY292ZXJ5VXJsKHRoaXMuX3VyaSk7XG4gICAgY29uc3QgZW5kUG9pbnRzID0gYXdhaXQgdGhpcy5kaXNjb3Zlck5lYXJieUVuZFBvaW50cyhuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHVybCksIHRpbWVvdXQpO1xuICAgIGxldCBmYWlsZWRSZXF1ZXN0cyA9IDA7XG4gICAgY29uc3QgcHJvcGFnYXRlRmFpbHVyZUlmQWxsUmVxdWVzdHNGYWlsZWQgPSAoKTogUHJvbWlzZTx2b2lkPiA9PiBuZXcgUHJvbWlzZSgoXywgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAoZmFpbGVkUmVxdWVzdHMgPj0gZW5kUG9pbnRzLmxlbmd0aCkge1xuICAgICAgICByZWplY3QoYERpc2NvdmVyeSBvZiBbJHtlbmRQb2ludHMubGVuZ3RofV0gZW5kcG9pbnRzIGZyb20gWyR7dXJsfV0gZmFpbGVkLCBwcmV2ZW50aW5nIGl0IGZyb20gY29tcGxldGluZ2ApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGVuZFBvaW50ID0gYXdhaXQgUHJvbWlzZS5yYWNlKGVuZFBvaW50cy5tYXAoZW5kUG9pbnQgPT4gZW5kUG9pbnRcbiAgICAgIC5waW5nKClcbiAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ0ZhaWxlZCB0byBwaW5nIGVuZCBwb2ludCBbJXNdJywgZW5kUG9pbnQsIGUpO1xuXG4gICAgICAgIGZhaWxlZFJlcXVlc3RzKys7XG5cbiAgICAgICAgcmV0dXJuIHByb3BhZ2F0ZUZhaWx1cmVJZkFsbFJlcXVlc3RzRmFpbGVkKCk7XG4gICAgICB9KVxuICAgICAgLnRoZW4odGltZSA9PiB7XG4gICAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Rpc2NvdmVyZWQgZW5kIHBvaW50IFslc10gd2l0aCB0aW1lIFslc10nLCBlbmRQb2ludC50b1N0cmluZygpLCB0aW1lKTtcbiAgICAgICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuUm91bmRUcmlwVGltZSxcbiAgICAgICAgICBydW50aW1lOiAobm93IC0gU0RLLnBhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgICAgIHZhbHVlOiB7dWludDY0OiB0aW1lIHx8IDB9LFxuICAgICAgICAgIHJlc291cmNlOiBlbmRQb2ludC50b1N0cmluZygpLFxuICAgICAgICAgIGtpbmQ6ICdwaW5nJ1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZW5kUG9pbnQ7XG4gICAgICB9KSkpO1xuXG4gICAgcmV0dXJuIGVuZFBvaW50O1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgVmVyc2lvbk1hbmFnZXIgZnJvbSAnLi4vdmVyc2lvbi9WZXJzaW9uTWFuYWdlcic7XG5pbXBvcnQgUGFyYW1ldGVycyBmcm9tICcuLi8uLi9lbnZpcm9ubWVudC9QYXJhbWV0ZXJzJztcbmltcG9ydCB7ZGVmYXVsdERpc2NvdmVyeVVyaX0gZnJvbSAnLi4vZGVmYXVsdHMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXNjb3ZlcnlVcmkge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZGlzY292ZXJ5VXJpOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KGRlZmF1bHREaXNjb3ZlcnlVcmkpO1xuXG4gIHN0YXRpYyBnZXQgdXJpKCk6IFN1YmplY3Q8c3RyaW5nPiB7XG4gICAgcmV0dXJuIERpc2NvdmVyeVVyaS5fZGlzY292ZXJ5VXJpO1xuICB9XG5cbiAgc3RhdGljIGJ1aWxkRGlzY292ZXJ5VXJsKHVyaTogVVJMKTogc3RyaW5nIHtcbiAgICBjb25zdCB1cmwgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHVyaS50b1N0cmluZygpKTtcbiAgICBjb25zdCBzZGtWZXJzaW9uID0gVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbjtcbiAgICBjb25zdCBpbnRlbnRpb25zID0gUGFyYW1ldGVycy5kaXNjb3ZlcnlQYXJhbWV0ZXJzLmludGVudGlvbnM7XG5cbiAgICB1cmwuc2VhcmNoUGFyYW1zLnNldCgndmVyc2lvbicsIHNka1ZlcnNpb24pO1xuICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdpbnRlbnRpb25zJywgaW50ZW50aW9ucyk7XG4gICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ18nLCBgJHtEYXRlLm5vdygpfWApO1xuXG4gICAgaWYgKHVybC5wYXRobmFtZSA9PT0gJy8nKSB7XG4gICAgICB1cmwucGF0aG5hbWUgPSAnL3BjYXN0L2VuZFBvaW50cyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVybC50b1N0cmluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Rpc2NvdmVyeVVyaSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi8uLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IEVkZ2VBdXRoUGFyc2VyIGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VkZ2VBdXRoUGFyc2VyJztcbmltcG9ydCB7RW5jb2RlZEVkZ2VUb2tlbn0gZnJvbSAnLi4vLi4vZWRnZUF1dGgvRW5jb2RlZEVkZ2VUb2tlbic7XG5cbmltcG9ydCB7XG4gIElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2UsXG4gIElTdWJzY3JpYmVXaXRoT2ZmZXJSZXF1ZXN0LFxuICBJU3Vic2NyaWJlV2l0aG91dE9mZmVyUmVxdWVzdFxufSBmcm9tICcuLi9hcGkvU3Vic2NyaWJlJztcbmltcG9ydCB7SVNldFJlbW90ZURlc2NyaXB0aW9uUmVxdWVzdCwgSVNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2V9IGZyb20gJy4uL2FwaS9TZXRSZW1vdGVEZXNjcmlwdGlvbic7XG5pbXBvcnQge0lEZXN0cm95U3RyZWFtUmVxdWVzdCwgSURlc3Ryb3lTdHJlYW1SZXNwb25zZX0gZnJvbSAnLi4vYXBpL0Rlc3Ryb3lTdHJlYW0nO1xuaW1wb3J0IHtJQWRkSWNlQ2FuZGlkYXRlc1JlcXVlc3QsIElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2V9IGZyb20gJy4uL2FwaS9BZGRJY2VDYW5kaWRhdGVzJztcbmltcG9ydCBWZXJzaW9uTWFuYWdlciBmcm9tICcuLi92ZXJzaW9uL1ZlcnNpb25NYW5hZ2VyJztcbmltcG9ydCBQYXJhbWV0ZXJzIGZyb20gJy4uLy4uL2Vudmlyb25tZW50L1BhcmFtZXRlcnMnO1xuaW1wb3J0IHtCaXRyYXRlTW9kZSwgQml0cmF0ZVN0YXRlLCBJU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGV9IGZyb20gJy4uL2FwaS9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSc7XG5pbXBvcnQgQml0cmF0ZU1vZGVNYXBwaW5nIGZyb20gJy4vQml0cmF0ZU1vZGVNYXBwaW5nJztcbmltcG9ydCBCaXRyYXRlU3RhdGVNYXBwaW5nIGZyb20gJy4vQml0cmF0ZVN0YXRlTWFwcGluZyc7XG5pbXBvcnQge0JpdHNQZXJTZWNvbmQsIE1pbGxpc2Vjb25kfSBmcm9tICcuLi8uLi91bml0cy9Vbml0cyc7XG5pbXBvcnQge1xuICBJUHVibGlzaFN1Y2Nlc3NSZXNwb25zZSxcbiAgSVB1Ymxpc2hXaXRoT2ZmZXJSZXF1ZXN0LFxuICBJUHVibGlzaFdpdGhvdXRPZmZlclJlcXVlc3QsXG4gIFB1Ymxpc2hTdGF0dXNcbn0gZnJvbSAnLi4vYXBpL1B1Ymxpc2gnO1xuXG5jb25zdCBhcGlWZXJzaW9uID0gNztcblxuZXhwb3J0IHR5cGUgU3Vic2NyaWJlU3RhdHVzID0gJ29rJyB8ICduby1zdHJlYW0nIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdnZW8tcmVzdHJpY3RlZCcgfCAnZ2VvLWJsb2NrZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZvcmJpZGRlbi10YWcnIHwgJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMgPSAnb2snIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMgPSAnb2snIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgUmVtb3ZlVGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMgPSAnb2snIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyA9ICdvaycgfCAnbm90LWZvdW5kJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZhaWxlZCc7XG5leHBvcnQgdHlwZSBEZXN0cm95U3RyZWFtU3RhdHVzID0gJ29rJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZmFpbGVkJztcbmV4cG9ydCBpbnRlcmZhY2UgSVN0cmVhbSB7XG4gIHN0cmVhbUlkOiBzdHJpbmc7XG4gIHNoYXJlZFNlY3JldDogc3RyaW5nO1xuICB0ZW5hbmN5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZUluaXQge1xuICBzdGF0dXM6ICdvayc7XG4gIHN0cmVhbTogSVN0cmVhbTtcbiAgbGFnOiBNaWxsaXNlY29uZDtcbiAgcnRjQ29uZmlndXJhdGlvbj86IFJUQ0NvbmZpZ3VyYXRpb247XG4gIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xuICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xuICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbiAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU3Vic2NyaWJlRmFpbHVyZVJlc3BvbnNlSW5pdCB7XG4gIHN0YXR1czogJ25vLXN0cmVhbScgfCAnbm90LWZvdW5kJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ2dlby1yZXN0cmljdGVkJyB8ICdnZW8tYmxvY2tlZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZm9yYmlkZGVuLXRhZycgfCAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnIHwgJ2ZhaWxlZCc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayB7XG4gIChyZXF1ZXN0OiBJU3Vic2NyaWJlV2l0aE9mZmVyUmVxdWVzdCB8IElTdWJzY3JpYmVXaXRob3V0T2ZmZXJSZXF1ZXN0KTogUHJvbWlzZTx2b2lkPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjayB7XG4gIChyZXNwb25zZTogSVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZUluaXQgfCBJU3Vic2NyaWJlRmFpbHVyZVJlc3BvbnNlSW5pdCk6IFByb21pc2U8dm9pZD47XG59XG5cbmV4cG9ydCB0eXBlIFN1YnNjcmliZU9wdGlvbnMgPSB7XG4gIG9uU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrPzogSVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaztcbiAgb25TdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrPzogSVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s7XG59O1xuXG5leHBvcnQgdHlwZSBJUHVibGlzaFN1Y2Nlc3NSZXNwb25zZUluaXQgPSB7XG4gIHN0YXR1czogJ29rJztcbiAgc3RyZWFtOiBJU3RyZWFtO1xuICBsYWc/OiBNaWxsaXNlY29uZDtcbiAgcnRjQ29uZmlndXJhdGlvbj86IFJUQ0NvbmZpZ3VyYXRpb247XG4gIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xuICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xuICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIElQdWJsaXNoRmFpbHVyZVJlc3BvbnNlSW5pdCA9IHtcbiAgc3RhdHVzOiAnbm90LWZvdW5kJyB8ICdnZW8tcmVzdHJpY3RlZCcgfCAnZ2VvLWJsb2NrZWQnIHwgJ3VuYXV0aG9yaXplZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZm9yYmlkZGVuLXRhZycgfCAnbWlzc2luZy1jaGFubmVsLW9yLXJvb20taWQnIHwgJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJyB8ICdmYWlsZWQnO1xufTtcblxuaW50ZXJmYWNlIElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlSW5pdCB7XG4gIHN0YXR1czogU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXM7XG4gIHNlc3Npb25EZXNjcmlwdGlvbj86IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG59XG5cbmludGVyZmFjZSBJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlSW5pdCB7XG4gIHN0YXR1czogQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cztcbiAgb3B0aW9ucz86IHN0cmluZ1tdO1xufVxuXG5pbnRlcmZhY2UgSVNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlUmVzcG9uc2VJbml0IHtcbiAgc3RhdHVzOiBTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cztcbn1cblxuaW50ZXJmYWNlIElEZXN0cm95U3RyZWFtUmVzcG9uc2VJbml0IHtcbiAgc3RhdHVzOiBEZXN0cm95U3RyZWFtU3RhdHVzO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFbmRQb2ludCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdFbmRQb2ludCcpO1xuICBwcml2YXRlIHJlYWRvbmx5IF91cmk6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfdGltZW91dDogbnVtYmVyO1xuICBwcml2YXRlIF9yb3VuZFRyaXBUaW1lOiBudW1iZXIgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKHVyaTogc3RyaW5nLCB0aW1lb3V0OiBudW1iZXIpIHtcbiAgICB0aGlzLl91cmkgPSB1cmk7XG4gICAgdGhpcy5fdGltZW91dCA9IHRpbWVvdXQ7XG5cbiAgICBpZiAoIXRpbWVvdXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRW5kIHBvaW50IHJlcXVpcmVzIGEgdGltZW91dGApO1xuICAgIH1cbiAgfVxuXG4gIGdldCByb3VuZFRyaXBUaW1lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3JvdW5kVHJpcFRpbWU7XG4gIH1cblxuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiBgRW5kUG9pbnRbdXJpPSR7dGhpcy5fdXJpfV1gO1xuICB9XG5cbiAgYXN5bmMgcGluZygpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRQaW5nVXJsKCk7XG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmZldGNoKHVybCwge1xuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICBjYWNoZTogJ25vLWNhY2hlJ1xuICAgICAgfSksXG4gICAgICBuZXcgUHJvbWlzZTxSZXNwb25zZT4oKF8sIHJlamVjdCkgPT5cbiAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiByZWplY3QobmV3IEVycm9yKGBQaW5nIHRpbWVkIG91dCBbJHt1cmx9XWApKSwgdGhpcy5fdGltZW91dCkpXG4gICAgXSk7XG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuXG4gICAgaWYgKCFyZXNwb25zZS5vaykgeyAvKiBIYW5kbGUgKi9cbiAgICAgIHRocm93IG5ldyBFcnJvcihgUGluZyBmYWlsZWQgWyR7dXJsfV0gWyR7cmVzcG9uc2Uuc3RhdHVzfV1gKTtcbiAgICB9XG5cbiAgICB0aGlzLl9yb3VuZFRyaXBUaW1lID0gZmluaXNoZWQgLSBzdGFydDtcblxuICAgIHJldHVybiB0aGlzLl9yb3VuZFRyaXBUaW1lO1xuICB9XG5cbiAgYXN5bmMgc3Vic2NyaWJlKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuLCBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdCB8IG51bGwsIGZhaWx1cmVDb3VudDogbnVtYmVyLCBvcHRpb25zOiBTdWJzY3JpYmVPcHRpb25zID0ge30pOiBQcm9taXNlPElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2VJbml0IHwgSVN1YnNjcmliZUZhaWx1cmVSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB0ZW5hbmN5ID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0b2tlbikudGVuYW5jeTtcblxuICAgIGlmICghdGVuYW5jeSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcGFyc2UgdG9rZW4gWyVzXScsIHRva2VuKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICd1bmF1dGhvcml6ZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFt0ZW5hbmN5LCAnc3RyZWFtJywgJ3N1YnNjcmliZSddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgY2xpZW50VmVyc2lvbiA9IFZlcnNpb25NYW5hZ2VyLnNka1ZlcnNpb247XG4gICAgbGV0IHJlcXVlc3RCb2R5OiBJU3Vic2NyaWJlV2l0aE9mZmVyUmVxdWVzdCB8IElTdWJzY3JpYmVXaXRob3V0T2ZmZXJSZXF1ZXN0O1xuXG4gICAgaWYgKGZhaWx1cmVDb3VudCA9PT0gMCAmJiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgcmVxdWVzdEJvZHkgPSB7XG4gICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgIGNsaWVudFZlcnNpb24sXG4gICAgICAgIGJlYXJlclRva2VuOiB0b2tlbixcbiAgICAgICAgZmFpbHVyZUNvdW50LFxuICAgICAgICBodHRwUm91bmRUcmlwVGltZTogdGhpcy5fcm91bmRUcmlwVGltZSxcbiAgICAgICAgc2V0UmVtb3RlRGVzY3JpcHRpb246IHtcbiAgICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICAgIHNlc3Npb25EZXNjcmlwdGlvbjoge1xuICAgICAgICAgICAgdHlwZTogbG9jYWxTZXNzaW9uRGVzY3JpcHRpb24udHlwZSxcbiAgICAgICAgICAgIHNkcDogbG9jYWxTZXNzaW9uRGVzY3JpcHRpb24uc2RwXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvbjoge2FwaVZlcnNpb259XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXF1ZXN0Qm9keSA9IHtcbiAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgY2xpZW50VmVyc2lvbixcbiAgICAgICAgYmVhcmVyVG9rZW46IHRva2VuLFxuICAgICAgICBmYWlsdXJlQ291bnQsXG4gICAgICAgIGh0dHBSb3VuZFRyaXBUaW1lOiB0aGlzLl9yb3VuZFRyaXBUaW1lLFxuICAgICAgICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uOiB7YXBpVmVyc2lvbn1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgYXdhaXQgb3B0aW9ucy5vblN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaz8uKHJlcXVlc3RCb2R5KTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShyZXF1ZXN0Qm9keSkpO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGxldCBodHRwUmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCB0aW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgICAgaHR0cFJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godXJsLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgYm9keTogZm9ybURhdGFcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPihyZXNvbHZlID0+XG4gICAgICAgICAgdGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc3Vic2NyaWJlJywgbmV3IEVycm9yKGBTdWJzY3JpYmUgdGltZWQgb3V0IFske3VybH1dYCkpO1xuICAgICAgICAgICAgcmVzb2x2ZSh7c3RhdHVzOiA0MDh9IGFzIFJlc3BvbnNlKTtcbiAgICAgICAgICB9LCB0aGlzLl90aW1lb3V0KSlcbiAgICAgIF0pXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICBpZiAodGltZW91dCkge1xuICAgICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc3Vic2NyaWJlJywgZSk7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAnZmFpbGVkJ307XG4gICAgfVxuXG4gICAgY29uc3QganNvblJlc3BvbnNlQm9keSA9IGF3YWl0IHRoaXMucGFyc2VKc29uQm9keTxJU3Vic2NyaWJlU3VjY2Vzc1Jlc3BvbnNlPihodHRwUmVzcG9uc2UpO1xuXG4gICAgdGhpcy5oYW5kbGVTdHJlYW1SZXNwb25zZUNvbnRleHQoanNvblJlc3BvbnNlQm9keT8uc3RyZWFtUmVzcG9uc2VDb250ZXh0KTtcblxuICAgIGNvbnN0IHN0YXR1czogU3Vic2NyaWJlU3RhdHVzID0gdGhpcy5tYXBIdHRwU3RhdHVzVG9TdWJzY3JpYmVTdGF0dXMoaHR0cFJlc3BvbnNlKTtcblxuICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlOiBJU3Vic2NyaWJlRmFpbHVyZVJlc3BvbnNlSW5pdCA9IHtzdGF0dXN9O1xuXG4gICAgICBhd2FpdCBvcHRpb25zLm9uU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaz8uKHJlc3BvbnNlKTtcblxuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH1cblxuICAgIGlmICghanNvblJlc3BvbnNlQm9keSkge1xuICAgICAgY29uc3QgcmVzcG9uc2U6IElTdWJzY3JpYmVGYWlsdXJlUmVzcG9uc2VJbml0ID0ge3N0YXR1czogJ2ZhaWxlZCd9O1xuXG4gICAgICBhd2FpdCBvcHRpb25zLm9uU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaz8uKHJlc3BvbnNlKTtcblxuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH1cblxuICAgIGNvbnN0IGZpbmlzaGVkID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBzdWJzY3JpYmVSZXNwb25zZSA9IHRoaXMubm9ybWFsaXplU3Vic2NyaWJlUmVzcG9uc2UodGVuYW5jeSwganNvblJlc3BvbnNlQm9keSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ0dvdCBzdWJzY3JpYmUgcmVzcG9uc2UgWyVqXSBpbiBbJXNdIG1zJywgc3Vic2NyaWJlUmVzcG9uc2UsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgYXdhaXQgb3B0aW9ucy5vblN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s/LihzdWJzY3JpYmVSZXNwb25zZSk7XG5cbiAgICByZXR1cm4gc3Vic2NyaWJlUmVzcG9uc2U7XG4gIH1cblxuICBhc3luYyBwdWJsaXNoKG5hbWU6IHN0cmluZywgdG9rZW46IEVuY29kZWRFZGdlVG9rZW4sIGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0IHwgbnVsbCwgZmFpbHVyZUNvdW50OiBudW1iZXIpOiBQcm9taXNlPElQdWJsaXNoU3VjY2Vzc1Jlc3BvbnNlSW5pdCB8IElQdWJsaXNoRmFpbHVyZVJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHRlbmFuY3kgPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKHRva2VuKS50ZW5hbmN5O1xuXG4gICAgaWYgKCF0ZW5hbmN5KSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBwYXJzZSB0b2tlbiBbJXNdJywgdG9rZW4pO1xuXG4gICAgICByZXR1cm4ge3N0YXR1czogJ3VuYXV0aG9yaXplZCd9O1xuICAgIH1cblxuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3RlbmFuY3ksICdzdHJlYW0nLCAncHVibGlzaCddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgY2xpZW50VmVyc2lvbiA9IFZlcnNpb25NYW5hZ2VyLnNka1ZlcnNpb247XG5cbiAgICBpZiAoZmFpbHVyZUNvdW50ID09PSAwICYmIGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBjb25zdCBib2R5V2l0aE9mZmVyOiBJUHVibGlzaFdpdGhPZmZlclJlcXVlc3QgPSB7XG4gICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgIGNsaWVudFZlcnNpb24sXG4gICAgICAgIGJlYXJlclRva2VuOiB0b2tlbixcbiAgICAgICAgZmFpbHVyZUNvdW50LFxuICAgICAgICBodHRwUm91bmRUcmlwVGltZTogdGhpcy5fcm91bmRUcmlwVGltZSxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgc2V0UmVtb3RlRGVzY3JpcHRpb246IHtcbiAgICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICAgIHNlc3Npb25EZXNjcmlwdGlvbjoge1xuICAgICAgICAgICAgdHlwZTogbG9jYWxTZXNzaW9uRGVzY3JpcHRpb24udHlwZSxcbiAgICAgICAgICAgIHNkcDogbG9jYWxTZXNzaW9uRGVzY3JpcHRpb24uc2RwXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvbjoge1xuICAgICAgICAgIHN0cmVhbUlkOiAnJyxcbiAgICAgICAgICBhcGlWZXJzaW9uXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5V2l0aE9mZmVyKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGJvZHlXaXRob3V0T2ZmZXI6IElQdWJsaXNoV2l0aG91dE9mZmVyUmVxdWVzdCA9IHtcbiAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgY2xpZW50VmVyc2lvbixcbiAgICAgICAgYmVhcmVyVG9rZW46IHRva2VuLFxuICAgICAgICBmYWlsdXJlQ291bnQsXG4gICAgICAgIGh0dHBSb3VuZFRyaXBUaW1lOiB0aGlzLl9yb3VuZFRyaXBUaW1lLFxuICAgICAgICBuYW1lLFxuICAgICAgICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgc3RyZWFtSWQ6ICcnLFxuICAgICAgICAgIGFwaVZlcnNpb25cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHlXaXRob3V0T2ZmZXIpKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgbGV0IGh0dHBSZXNwb25zZTogUmVzcG9uc2U7XG5cbiAgICB0cnkge1xuICAgICAgbGV0IHRpbWVvdXQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgICBodHRwUmVzcG9uc2UgPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh1cmwsIHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICBib2R5OiBmb3JtRGF0YVxuICAgICAgICB9KSxcbiAgICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KHJlc29sdmUgPT5cbiAgICAgICAgICB0aW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBwdWJsaXNoJywgbmV3IEVycm9yKGBQdWJsaXNoIHRpbWVkIG91dCBbJHt1cmx9XWApKTtcbiAgICAgICAgICAgIHJlc29sdmUoe3N0YXR1czogNDA4fSBhcyBSZXNwb25zZSk7XG4gICAgICAgICAgfSwgdGhpcy5fdGltZW91dCkpXG4gICAgICBdKVxuICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHB1Ymxpc2gnLCBlKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICdmYWlsZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCBqc29uUmVzcG9uc2VCb2R5ID0gYXdhaXQgdGhpcy5wYXJzZUpzb25Cb2R5PElQdWJsaXNoU3VjY2Vzc1Jlc3BvbnNlPihodHRwUmVzcG9uc2UpO1xuXG4gICAgdGhpcy5oYW5kbGVTdHJlYW1SZXNwb25zZUNvbnRleHQoanNvblJlc3BvbnNlQm9keT8uc3RyZWFtUmVzcG9uc2VDb250ZXh0KTtcblxuICAgIGNvbnN0IHN0YXR1czogUHVibGlzaFN0YXR1cyA9IHRoaXMubWFwSHR0cFN0YXR1c1RvUHVibGlzaFN0YXR1cyhodHRwUmVzcG9uc2UpO1xuXG4gICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgcmV0dXJuIHtzdGF0dXN9O1xuICAgIH1cblxuICAgIGlmICghanNvblJlc3BvbnNlQm9keSkge1xuICAgICAgcmV0dXJuIHtzdGF0dXM6ICdmYWlsZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG4gICAgY29uc3QgcHVibGlzaFJlc3BvbnNlID0gdGhpcy5ub3JtYWxpemVQdWJsaXNoUmVzcG9uc2UodGVuYW5jeSwganNvblJlc3BvbnNlQm9keSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ0dvdCBwdWJsaXNoIHJlc3BvbnNlIFslal0gaW4gWyVzXSBtcycsIHB1Ymxpc2hSZXNwb25zZSwgZmluaXNoZWQgLSBzdGFydCk7XG5cbiAgICByZXR1cm4gcHVibGlzaFJlc3BvbnNlO1xuICB9XG5cbiAgYXN5bmMgc2V0UmVtb3RlRGVzY3JpcHRpb24oc3RyZWFtOiBJU3RyZWFtLCBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQpOiBQcm9taXNlPElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3N0cmVhbS50ZW5hbmN5LCAnc3RyZWFtJywgc3RyZWFtLnN0cmVhbUlkLCAnZGVzY3JpcHRpb24nLCAncmVtb3RlJ10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcbiAgICBjb25zdCBib2R5OiBJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXF1ZXN0ID0ge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHNoYXJlZFNlY3JldDogc3RyZWFtPy5zaGFyZWRTZWNyZXQsXG4gICAgICBzZXNzaW9uRGVzY3JpcHRpb246IHtcbiAgICAgICAgdHlwZTogc2Vzc2lvbkRlc2NyaXB0aW9uLnR5cGUsXG4gICAgICAgIHNkcDogc2Vzc2lvbkRlc2NyaXB0aW9uLnNkcFxuICAgICAgfVxuICAgIH07XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGxldCBodHRwUmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCB0aW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgICAgaHR0cFJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godXJsLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgYm9keTogZm9ybURhdGFcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPihyZXNvbHZlID0+XG4gICAgICAgICAgdGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc2V0IHJlbW90ZSBkZXNjcmlwdGlvbicsIG5ldyBFcnJvcihgU2V0IHJlbW90ZSBkZXNjcmlwdGlvbiB0aW1lZCBvdXQgWyR7dXJsfV1gKSk7XG4gICAgICAgICAgICByZXNvbHZlKHtzdGF0dXM6IDQwOH0gYXMgUmVzcG9uc2UpO1xuICAgICAgICAgIH0sIHRoaXMuX3RpbWVvdXQpKVxuICAgICAgXSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBzZXQgcmVtb3RlIGRlc2NyaXB0aW9uJywgZSk7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAnZmFpbGVkJ307XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdHVzOiBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyA9IHRoaXMubWFwSHR0cFN0YXR1c1RvU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMoaHR0cFJlc3BvbnNlKTtcblxuICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgIHJldHVybiB7c3RhdHVzfTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSA9IGF3YWl0IHRoaXMuY29udmVydEh0dHBSZXNwb25zZVRvU2V0UmVtb3RlRGVzY3JpcHRpb24oaHR0cFJlc3BvbnNlKTtcblxuICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygnR290IHNldCByZW1vdGUgZGVzY3JpcHRpb24gcmVzcG9uc2UgWyVqXSBpbiBbJXNdIG1zJywgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSwgZmluaXNoZWQgLSBzdGFydCk7XG5cbiAgICByZXR1cm4gc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZTtcbiAgfVxuXG4gIGFzeW5jIGxpbWl0Qml0cmF0ZShcbiAgICBzdHJlYW06IElTdHJlYW0sXG4gICAgZWxhcHNlZEluTWlsbGlzZWNvbmRzOiBudW1iZXIsXG4gICAgYml0cmF0ZUluQml0c1BlclNlY29uZDogQml0c1BlclNlY29uZCxcbiAgICBiaXRyYXRlU3RhdGU6IEJpdHJhdGVTdGF0ZSxcbiAgICBiaXRyYXRlTW9kZTogQml0cmF0ZU1vZGUsXG4gICk6IFByb21pc2U8SVNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbc3RyZWFtLnRlbmFuY3ksICdzdHJlYW0nLCBzdHJlYW0uc3RyZWFtSWQsICdiaXRyYXRlJ10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcbiAgICBjb25zdCBib2R5OiBJU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUgPSB7XG4gICAgICBhcGlWZXJzaW9uLFxuICAgICAgc2hhcmVkU2VjcmV0OiBzdHJlYW0uc2hhcmVkU2VjcmV0LFxuICAgICAgZWxhcHNlZEluTWlsbGlzZWNvbmRzLFxuICAgICAgYml0cmF0ZUluQml0c1BlclNlY29uZCxcbiAgICAgIGJpdHJhdGVTdGF0ZTogQml0cmF0ZVN0YXRlTWFwcGluZy5jb252ZXJ0Qml0cmF0ZVN0YXRlVG9CaXRyYXRlU3RhdGVUeXBlKGJpdHJhdGVTdGF0ZSksXG4gICAgICBiaXRyYXRlTW9kZTogQml0cmF0ZU1vZGVNYXBwaW5nLmNvbnZlcnRCaXRyYXRlTW9kZVRvQml0cmF0ZU1vZGVUeXBlKGJpdHJhdGVNb2RlKVxuICAgIH07XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGxldCBodHRwUmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCB0aW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgICAgaHR0cFJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godXJsLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgYm9keTogZm9ybURhdGFcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPihyZXNvbHZlID0+XG4gICAgICAgICAgdGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc2V0IGxpbWl0IGJpdHJhdGUgdGltZWQnLCBuZXcgRXJyb3IoYFNldCBsaW1pdCBiaXRyYXRlIHRpbWVkIG91dCBbJHt1cmx9XWApKTtcbiAgICAgICAgICAgIHJlc29sdmUoe3N0YXR1czogNDA4fSBhcyBSZXNwb25zZSk7XG4gICAgICAgICAgfSwgdGhpcy5fdGltZW91dCkpXG4gICAgICBdKVxuICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHNldCBsaW1pdCBiaXRyYXRlIHRpbWVkJywgZSk7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAnZmFpbGVkJ307XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdHVzOiBTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cyA9IHRoaXMubWFwSHR0cFN0YXR1c1RvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMoaHR0cFJlc3BvbnNlKTtcbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnR290IHNldCBsaW1pdCBiaXRyYXRlIHJlc3BvbnNlIFslc10gaW4gWyVzXSBtcycsIHN0YXR1cywgZmluaXNoZWQgLSBzdGFydCk7XG5cbiAgICByZXR1cm4ge3N0YXR1c307XG4gIH1cblxuICBhc3luYyBhZGRJY2VDYW5kaWRhdGVzKHN0cmVhbTogSVN0cmVhbSwgY2FuZGlkYXRlczogUlRDSWNlQ2FuZGlkYXRlW10sIGRpc2NvdmVyeUNvbXBsZXRlZDogYm9vbGVhbiwgb3B0aW9uczogc3RyaW5nW10gPSBbXSk6IFByb21pc2U8SUFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFtzdHJlYW0udGVuYW5jeSwgJ3N0cmVhbScsIHN0cmVhbS5zdHJlYW1JZCwgJ2ljZScsICdjYW5kaWRhdGVzJ10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcbiAgICBjb25zdCBib2R5OiBJQWRkSWNlQ2FuZGlkYXRlc1JlcXVlc3QgPSB7XG4gICAgICBhcGlWZXJzaW9uLFxuICAgICAgc2hhcmVkU2VjcmV0OiBzdHJlYW0uc2hhcmVkU2VjcmV0LFxuICAgICAgY2FuZGlkYXRlcyxcbiAgICAgIGRpc2NvdmVyeUNvbXBsZXRlZCxcbiAgICAgIG9wdGlvbnNcbiAgICB9O1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHkpKTtcblxuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBsZXQgaHR0cFJlc3BvbnNlOiBSZXNwb25zZTtcblxuICAgIHRyeSB7XG4gICAgICBsZXQgdGltZW91dDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICAgIGh0dHBSZXNwb25zZSA9IGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmZldGNoKHVybCwge1xuICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgIGJvZHk6IGZvcm1EYXRhXG4gICAgICAgIH0pLFxuICAgICAgICBuZXcgUHJvbWlzZTxSZXNwb25zZT4ocmVzb2x2ZSA9PlxuICAgICAgICAgIHRpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIGFkZCBpY2UgY2FuZGlkYXRlcycsIG5ldyBFcnJvcihgQWRkIGljZSBjYW5kaWRhdGVzIHRpbWVkIG91dCBbJHt1cmx9XWApKTtcbiAgICAgICAgICAgIHJlc29sdmUoe3N0YXR1czogNDA4fSBhcyBSZXNwb25zZSk7XG4gICAgICAgICAgfSwgdGhpcy5fdGltZW91dCkpXG4gICAgICBdKVxuICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIGFkZCBpY2UgY2FuZGlkYXRlcycsIGUpO1xuXG4gICAgICByZXR1cm4ge3N0YXR1czogJ2ZhaWxlZCd9O1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXR1czogQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyA9IHRoaXMubWFwSHR0cFN0YXR1c1RvQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyhodHRwUmVzcG9uc2UpO1xuXG4gICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgcmV0dXJuIHtzdGF0dXN9O1xuICAgIH1cblxuICAgIGNvbnN0IGZpbmlzaGVkID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNvbnZlcnRIdHRwUmVzcG9uc2VUb0FkZEljZUNhbmRpZGF0ZXMoaHR0cFJlc3BvbnNlKTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdHb3QgYWRkIElDRSBjYW5kaWRhdGVzIHJlc3BvbnNlIFslal0gaW4gWyVzXSBtcycsIGFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZSwgZmluaXNoZWQgLSBzdGFydCk7XG5cbiAgICByZXR1cm4gYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlO1xuICB9XG5cbiAgYXN5bmMgZGVzdHJveVN0cmVhbShzdHJlYW06IElTdHJlYW0sIHJlYXNvbjogc3RyaW5nKTogUHJvbWlzZTxJRGVzdHJveVN0cmVhbVJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3N0cmVhbS50ZW5hbmN5LCAnc3RyZWFtJywgc3RyZWFtLnN0cmVhbUlkLCAnZGVzdHJveSddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgYm9keTogSURlc3Ryb3lTdHJlYW1SZXF1ZXN0ID0ge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHNoYXJlZFNlY3JldDogc3RyZWFtLnNoYXJlZFNlY3JldCxcbiAgICAgIHJlYXNvbixcbiAgICAgIG9wdGlvbnM6IFtdXG4gICAgfTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5KSk7XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgbGV0IGh0dHBSZXNwb25zZTogUmVzcG9uc2U7XG5cbiAgICB0cnkge1xuICAgICAgbGV0IHRpbWVvdXQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgICBodHRwUmVzcG9uc2UgPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh1cmwsIHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICBib2R5OiBmb3JtRGF0YSxcbiAgICAgICAgICBjYWNoZTogJ25vLWNhY2hlJ1xuICAgICAgICB9KSxcbiAgICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KHJlc29sdmUgPT5cbiAgICAgICAgICB0aW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBzdWJzY3JpYmUnLCBuZXcgRXJyb3IoYERlbGV0ZSBzdHJlYW0gdGltZWQgb3V0IFske3VybH1dYCkpO1xuICAgICAgICAgICAgcmVzb2x2ZSh7c3RhdHVzOiA0MDh9IGFzIFJlc3BvbnNlKTtcbiAgICAgICAgICB9LCB0aGlzLl90aW1lb3V0KSlcbiAgICAgIF0pXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICBpZiAodGltZW91dCkge1xuICAgICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gZGVsZXRlIHN0cmVhbScsIGUpO1xuXG4gICAgICByZXR1cm4ge3N0YXR1czogJ2ZhaWxlZCd9O1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXR1czogRGVzdHJveVN0cmVhbVN0YXR1cyA9IHRoaXMubWFwSHR0cFN0YXR1c1RvU2V0RGVzdHJveVN0cmVhbVN0YXR1cyhodHRwUmVzcG9uc2UpO1xuXG4gICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgcmV0dXJuIHtzdGF0dXN9O1xuICAgIH1cblxuICAgIGNvbnN0IGZpbmlzaGVkID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBkZXN0cm95U3RyZWFtUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNvbnZlcnRIdHRwUmVzcG9uc2VUb0Rlc3Ryb3lTdHJlYW0oaHR0cFJlc3BvbnNlKTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdHb3QgZGVzdHJveSBzdHJlYW0gcmVzcG9uc2UgWyVqXSBpbiBbJXNdIG1zJywgZGVzdHJveVN0cmVhbVJlc3BvbnNlLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIHJldHVybiBkZXN0cm95U3RyZWFtUmVzcG9uc2U7XG4gIH1cblxuICBhc3luYyBkZXN0cm95U3RyZWFtT25Vbm1vdW50KHN0cmVhbTogSVN0cmVhbSwgcmVhc29uOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIW5hdmlnYXRvcj8uc2VuZEJlYWNvbikge1xuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuZGVzdHJveVN0cmVhbShzdHJlYW0sIHJlYXNvbik7XG4gICAgfVxuXG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbc3RyZWFtLnRlbmFuY3ksICdzdHJlYW0nLCBzdHJlYW0uc3RyZWFtSWQsICdkZXN0cm95J10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcbiAgICBjb25zdCBib2R5OiBJRGVzdHJveVN0cmVhbVJlcXVlc3QgPSB7XG4gICAgICBhcGlWZXJzaW9uLFxuICAgICAgc2hhcmVkU2VjcmV0OiBzdHJlYW0uc2hhcmVkU2VjcmV0LFxuICAgICAgcmVhc29uLFxuICAgICAgb3B0aW9uczogW11cbiAgICB9O1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHkpKTtcblxuICAgIG5hdmlnYXRvci5zZW5kQmVhY29uKHVybCwgZm9ybURhdGEpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFVybChwYXRoOiBzdHJpbmdbXSk6IFVSTCB7XG4gICAgY29uc3QgdXJpID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh0aGlzLl91cmkpO1xuICAgIGNvbnN0IHBhdGhBc0FycmF5ID0gdXJpLnBhdGhuYW1lLnNwbGl0KCcvJyk7XG5cbiAgICBwYXRoQXNBcnJheS5sZW5ndGggPSBwYXRoQXNBcnJheS5sZW5ndGggLSAxO1xuXG4gICAgdXJpLnBhdGhuYW1lID0gcGF0aEFzQXJyYXkuY29uY2F0KC4uLnBhdGgpLmpvaW4oJy8nKTtcblxuICAgIHJldHVybiB1cmk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkUGluZ1VybCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHVyaSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodGhpcy5fdXJpKTtcbiAgICBjb25zdCBzZGtWZXJzaW9uID0gVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbjtcbiAgICBjb25zdCBpbnRlbnRpb25zID0gUGFyYW1ldGVycy5kaXNjb3ZlcnlQYXJhbWV0ZXJzLmludGVudGlvbnM7XG5cbiAgICB1cmkuc2VhcmNoUGFyYW1zLnNldCgndHlwZScsICdodHRwJyk7XG4gICAgdXJpLnNlYXJjaFBhcmFtcy5zZXQoJ3ZlcnNpb24nLCBzZGtWZXJzaW9uKTtcbiAgICB1cmkuc2VhcmNoUGFyYW1zLnNldCgnaW50ZW50aW9ucycsIGludGVudGlvbnMpO1xuICAgIHVyaS5zZWFyY2hQYXJhbXMuc2V0KCdfJywgYCR7RGF0ZS5ub3coKX1gKTtcblxuICAgIHJldHVybiB1cmkudG9TdHJpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcGFyc2VKc29uQm9keTxUPihyZXNwb25zZTogUmVzcG9uc2UpOiBQcm9taXNlPFQgfCB1bmRlZmluZWQ+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIEV4cGVjdGVkIGZvciByZXNwb25zZXMgd2l0aG91dCBhIEpTT04gYm9keSAodGltZW91dCwgZW1wdHkgZXJyb3IgcmVzcG9uc2VzKVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVN0cmVhbVJlc3BvbnNlQ29udGV4dChjb250ZXh0PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB2b2lkIHtcbiAgICBpZiAoIWNvbnRleHQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnc3RyZWFtIHJlc3BvbnNlIGNvbnRleHQgWyVqXScsIGNvbnRleHQpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBIdHRwU3RhdHVzVG9QdWJsaXNoU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IFB1Ymxpc2hTdGF0dXMge1xuICAgIGlmICghcmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDAyOlxuICAgICAgICByZXR1cm4gJ2dlby1yZXN0cmljdGVkJztcbiAgICAgIGNhc2UgNDAzOlxuICAgICAgICByZXR1cm4gJ2dlby1ibG9ja2VkJztcbiAgICAgIGNhc2UgNDA2OlxuICAgICAgICByZXR1cm4gJ21pc3NpbmctY2hhbm5lbC1vci1yb29tLWlkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA0MDk6XG4gICAgICAgIHJldHVybiAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnO1xuICAgICAgY2FzZSA0MTU6XG4gICAgICAgIHJldHVybiAnZm9yYmlkZGVuLXRhZyc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvU3Vic2NyaWJlU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IFN1YnNjcmliZVN0YXR1cyB7XG4gICAgaWYgKCFyZXNwb25zZSkge1xuICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cblxuICAgIHN3aXRjaCAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICBjYXNlIDIwMDpcbiAgICAgICAgcmV0dXJuICdvayc7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnO1xuICAgICAgY2FzZSA0MDI6XG4gICAgICAgIHJldHVybiAnZ2VvLXJlc3RyaWN0ZWQnO1xuICAgICAgY2FzZSA0MDM6XG4gICAgICAgIHJldHVybiAnZ2VvLWJsb2NrZWQnO1xuICAgICAgY2FzZSA0MDg6XG4gICAgICAgIHJldHVybiAndGltZW91dCc7XG4gICAgICBjYXNlIDQwOTpcbiAgICAgICAgcmV0dXJuICdwb3J0LWluLXJhbmdlLW5vdC1mb3VuZCc7XG4gICAgICBjYXNlIDQxNTpcbiAgICAgICAgcmV0dXJuICdmb3JiaWRkZW4tdGFnJztcbiAgICAgIGNhc2UgNTAzOlxuICAgICAgICByZXR1cm4gJ2NhcGFjaXR5JztcbiAgICAgIGNhc2UgNTA0OlxuICAgICAgICByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXBIdHRwU3RhdHVzVG9TZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyhyZXNwb25zZTogUmVzcG9uc2UpOiBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyB7XG4gICAgaWYgKCFyZXNwb25zZSkge1xuICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cblxuICAgIHN3aXRjaCAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICBjYXNlIDIwMDpcbiAgICAgICAgcmV0dXJuICdvayc7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnO1xuICAgICAgY2FzZSA0MDg6XG4gICAgICAgIHJldHVybiAndGltZW91dCc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlKTogU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMge1xuICAgIGlmICghcmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb0FkZEljZUNhbmRpZGF0ZXNTdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlKTogQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyB7XG4gICAgaWYgKCFyZXNwb25zZSkge1xuICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cblxuICAgIHN3aXRjaCAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICBjYXNlIDIwMDpcbiAgICAgICAgcmV0dXJuICdvayc7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnO1xuICAgICAgY2FzZSA0MDg6XG4gICAgICAgIHJldHVybiAndGltZW91dCc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvU2V0RGVzdHJveVN0cmVhbVN0YXR1cyhyZXNwb25zZTogUmVzcG9uc2UpOiBEZXN0cm95U3RyZWFtU3RhdHVzIHtcbiAgICBpZiAoIXJlc3BvbnNlKSB7XG4gICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuXG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgMjAwOlxuICAgICAgICByZXR1cm4gJ29rJztcbiAgICAgIGNhc2UgNDAxOlxuICAgICAgICByZXR1cm4gJ3VuYXV0aG9yaXplZCc7XG4gICAgICBjYXNlIDQwODpcbiAgICAgICAgcmV0dXJuICd0aW1lb3V0JztcbiAgICAgIGNhc2UgNTAzOlxuICAgICAgICByZXR1cm4gJ2NhcGFjaXR5JztcbiAgICAgIGNhc2UgNTA0OlxuICAgICAgICByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBub3JtYWxpemVTdWJzY3JpYmVSZXNwb25zZSh0ZW5hbmN5OiBzdHJpbmcsIGRhdGE6IElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2UpOiBJU3Vic2NyaWJlU3VjY2Vzc1Jlc3BvbnNlSW5pdCB7XG4gICAgY29uc3Qge1xuICAgICAgc3RhdHVzLFxuICAgICAgc3RyZWFtSWQsXG4gICAgICBzaGFyZWRTZWNyZXQsXG4gICAgICBsYWcsXG4gICAgICBydGNDb25maWd1cmF0aW9uLFxuICAgICAgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSxcbiAgICAgIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UsXG4gICAgICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2VcbiAgICB9ID0gZGF0YTtcbiAgICBjb25zdCBzdWJzY3JpYmVSZXNwb25zZTogSVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZUluaXQgPSB7XG4gICAgICBzdGF0dXMsXG4gICAgICBzdHJlYW06IHtcbiAgICAgICAgdGVuYW5jeSxcbiAgICAgICAgc3RyZWFtSWQsXG4gICAgICAgIHNoYXJlZFNlY3JldFxuICAgICAgfSxcbiAgICAgIGxhZ1xuICAgIH07XG5cbiAgICBpZiAocnRjQ29uZmlndXJhdGlvbikge1xuICAgICAgc3Vic2NyaWJlUmVzcG9uc2UucnRjQ29uZmlndXJhdGlvbiA9IHRoaXMuY29udmVydElSdGNDb25maWd1cmF0aW9uVG9SVENDb25maWd1cmF0aW9uKHJ0Y0NvbmZpZ3VyYXRpb24pO1xuICAgIH1cblxuICAgIGlmIChzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlPy5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgIHN1YnNjcmliZVJlc3BvbnNlLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgfVxuXG4gICAgaWYgKGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2U/LnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgc3Vic2NyaWJlUmVzcG9uc2UuY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSA9IHtzZXNzaW9uRGVzY3JpcHRpb246IGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICB9XG5cbiAgICBpZiAoY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlPy5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgIHN1YnNjcmliZVJlc3BvbnNlLmNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSA9IHtzZXNzaW9uRGVzY3JpcHRpb246IGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb259O1xuICAgIH1cblxuICAgIHJldHVybiBzdWJzY3JpYmVSZXNwb25zZTtcbiAgfVxuXG4gIHByaXZhdGUgbm9ybWFsaXplUHVibGlzaFJlc3BvbnNlKHRlbmFuY3k6IHN0cmluZywgZGF0YTogSVB1Ymxpc2hTdWNjZXNzUmVzcG9uc2UpOiBJUHVibGlzaFN1Y2Nlc3NSZXNwb25zZUluaXQge1xuICAgIGNvbnN0IHB1Ymxpc2hSZXNwb25zZTogSVB1Ymxpc2hTdWNjZXNzUmVzcG9uc2VJbml0ID0ge1xuICAgICAgc3RhdHVzOiBkYXRhLnN0YXR1cyxcbiAgICAgIHN0cmVhbToge1xuICAgICAgICB0ZW5hbmN5LFxuICAgICAgICBzdHJlYW1JZDogZGF0YS5zdHJlYW1JZCxcbiAgICAgICAgc2hhcmVkU2VjcmV0OiBkYXRhLnNoYXJlZFNlY3JldFxuICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAoZGF0YS5ydGNDb25maWd1cmF0aW9uKSB7XG4gICAgICBwdWJsaXNoUmVzcG9uc2UucnRjQ29uZmlndXJhdGlvbiA9IHRoaXMuY29udmVydElSdGNDb25maWd1cmF0aW9uVG9SVENDb25maWd1cmF0aW9uKGRhdGEucnRjQ29uZmlndXJhdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKGRhdGEuc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSAmJiBkYXRhLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBwdWJsaXNoUmVzcG9uc2Uuc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSA9IHtzZXNzaW9uRGVzY3JpcHRpb246IGRhdGEuc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb259O1xuICAgIH1cblxuICAgIGlmIChkYXRhLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UgJiYgZGF0YS5jcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgcHVibGlzaFJlc3BvbnNlLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBkYXRhLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICB9XG5cbiAgICBpZiAoZGF0YS5jcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UgJiYgZGF0YS5jcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBwdWJsaXNoUmVzcG9uc2UuY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlID0ge3Nlc3Npb25EZXNjcmlwdGlvbjogZGF0YS5jcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHVibGlzaFJlc3BvbnNlO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0SVJ0Y0NvbmZpZ3VyYXRpb25Ub1JUQ0NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbjogUlRDQ29uZmlndXJhdGlvbik6IFJUQ0NvbmZpZ3VyYXRpb24ge1xuICAgIGNvbnN0IHJ0Y0NvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24gPSB7aWNlU2VydmVyczogW119O1xuXG4gICAgaWYgKGNvbmZpZ3VyYXRpb24uYnVuZGxlUG9saWN5KSB7XG4gICAgICBydGNDb25maWd1cmF0aW9uLmJ1bmRsZVBvbGljeSA9IGNvbmZpZ3VyYXRpb24uYnVuZGxlUG9saWN5O1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgY29uZmlndXJhdGlvbi5pY2VDYW5kaWRhdGVQb29sU2l6ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24uaWNlQ2FuZGlkYXRlUG9vbFNpemUgPSBjb25maWd1cmF0aW9uLmljZUNhbmRpZGF0ZVBvb2xTaXplO1xuICAgIH1cblxuICAgIGlmIChjb25maWd1cmF0aW9uLmljZVNlcnZlcnMpIHtcbiAgICAgIGNvbnN0IGljZVNlcnZlcnM6IFJUQ0ljZVNlcnZlcltdID0gW107XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGljZVNlcnZlcnMucHVzaCh7XG4gICAgICAgICAgdXJsczogY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLnVybHMsXG4gICAgICAgICAgdXNlcm5hbWU6IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS51c2VybmFtZSxcbiAgICAgICAgICBjcmVkZW50aWFsOiBjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0uY3JlZGVudGlhbFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcnRjQ29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzID0gaWNlU2VydmVycztcbiAgICB9XG5cbiAgICBpZiAoY29uZmlndXJhdGlvbi5pY2VUcmFuc3BvcnRQb2xpY3kpIHtcbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24uaWNlVHJhbnNwb3J0UG9saWN5ID0gY29uZmlndXJhdGlvbi5pY2VUcmFuc3BvcnRQb2xpY3k7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZ3VyYXRpb24ucnRjcE11eFBvbGljeSkge1xuICAgICAgcnRjQ29uZmlndXJhdGlvbi5ydGNwTXV4UG9saWN5ID0gY29uZmlndXJhdGlvbi5ydGNwTXV4UG9saWN5O1xuICAgIH1cblxuICAgIHJldHVybiBydGNDb25maWd1cmF0aW9uO1xuICB9XG4gIHByaXZhdGUgYXN5bmMgY29udmVydEh0dHBSZXNwb25zZVRvU2V0UmVtb3RlRGVzY3JpcHRpb24ocmVzcG9uc2U6IFJlc3BvbnNlKTogUHJvbWlzZTxJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpIGFzIElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlO1xuICAgIGNvbnN0IHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U6IElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlSW5pdCA9IHtzdGF0dXM6IGRhdGEuc3RhdHVzfTtcblxuICAgIGlmIChkYXRhICYmIGRhdGEuc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbiA9IGRhdGEuc2Vzc2lvbkRlc2NyaXB0aW9uO1xuICAgIH1cblxuICAgIHJldHVybiBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb252ZXJ0SHR0cFJlc3BvbnNlVG9BZGRJY2VDYW5kaWRhdGVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IFByb21pc2U8SUFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpIGFzIElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2U7XG4gICAgY29uc3QgYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlOiBJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlSW5pdCA9IHtcbiAgICAgIHN0YXR1czogZGF0YS5zdGF0dXMsXG4gICAgICBvcHRpb25zOiBbXVxuICAgIH07XG5cbiAgICBpZiAoZGF0YSkge1xuICAgICAgaWYgKGRhdGEub3B0aW9ucykge1xuICAgICAgICBhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2Uub3B0aW9ucyA9IGRhdGEub3B0aW9ucztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb252ZXJ0SHR0cFJlc3BvbnNlVG9EZXN0cm95U3RyZWFtKHJlc3BvbnNlOiBSZXNwb25zZSk6IFByb21pc2U8SURlc3Ryb3lTdHJlYW1SZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpIGFzIElEZXN0cm95U3RyZWFtUmVzcG9uc2U7XG4gICAgY29uc3QgZGVzdHJveVN0cmVhbTogSURlc3Ryb3lTdHJlYW1SZXNwb25zZUluaXQgPSB7c3RhdHVzOiBkYXRhLnN0YXR1c307XG5cbiAgICByZXR1cm4gZGVzdHJveVN0cmVhbTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uLy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcbmltcG9ydCB7RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24sIFJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiwgUnRwVGltZXN0YW1wfSBmcm9tICcuL0ZyYW1lVGltaW5nSW5mb3JtYXRpb24nO1xuaW1wb3J0IHtWaWRlb0NvZGVjfSBmcm9tICcuLi9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL1ZpZGVvQ29kZWMnO1xuaW1wb3J0IHtNZXRhZGF0YU1lc3NhZ2VQYXlsb2FkLCBUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUsIFRyYW5zZm9ybU1lc3NhZ2VQYXlsb2FkfSBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi93b3JrZXIvVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlJztcbmltcG9ydCBUcmFuc2Zvcm1NZXNzYWdlUm91dGVyIGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL3dvcmtlci9NZXNzYWdlUm91dGVyJztcblxuZXhwb3J0IHR5cGUgRnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXJDb250ZXh0ID0ge1xuICBjb2RlYzogVmlkZW9Db2RlYztcbiAgc3RyZWFtSWQ6IHN0cmluZztcbiAgdmlkZW9FbGVtZW50OiBTdWJqZWN0PEhUTUxWaWRlb0VsZW1lbnQgfCBudWxsPjtcbiAgZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0OiBTdWJqZWN0PERlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD47XG4gIHJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3Q6IFN1YmplY3Q8UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD47XG4gIGlzRW5hYmxlZFN1YmplY3Q6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHJlY2VpdmVyOiBSVENSdHBSZWNlaXZlcjtcbiAgbWlkOiBzdHJpbmc7XG4gIHRyYWNrSWQ6IHN0cmluZztcbiAgdHJhbnNmb3JtRnVuY3Rpb25OYW1lczogc3RyaW5nW107XG4gIHRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXI6IFRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXI7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlciBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3RyYW5zZm9ybU5hbWUgPSAnZnJhbWUtdGltaW5nLWluZm9ybWF0aW9uJztcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ0ZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2RlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uQnlSdHBUaW1lc3RhbXA6IE1hcDxSdHBUaW1lc3RhbXAsIERlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uPiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdmlkZW9FbGVtZW50RGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICBwcml2YXRlIF9jdXJyZW50UGxheWJhY2tTdGF0ZTogJ3BsYXlpbmcnIHwgJ3BhdXNlZCcgfCAnc3RhbGxlZCcgfCAnZW5kZWQnIHwgJ2Vycm9yJyB8ICd3YWl0aW5nJyA9ICd3YWl0aW5nJztcbiAgcHJpdmF0ZSBfYXJtZWRWaWRlb0ZyYW1lQ2FsbGJhY2tJZDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX2Rpc3Bvc2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoY29udGV4dDogRnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXJDb250ZXh0KSB7XG4gICAgdGhpcy5pbml0aWFsaXplKGNvbnRleHQpO1xuICB9XG5cbiAgcHVibGljIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcG9zZWQgPSB0cnVlO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZShjb250ZXh0OiBGcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlckNvbnRleHQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY2FuUHJvY2Vzc0ZyYW1lVGltaW5nSW5mb3JtYXRpb24oY29udGV4dC5zdHJlYW1JZCwgY29udGV4dC5jb2RlYywgY29udGV4dC5yZWNlaXZlciwgY29udGV4dC5taWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZXR1cFZpZGVvRWxlbWVudEhhbmRsaW5nKGNvbnRleHQudmlkZW9FbGVtZW50LCBjb250ZXh0LnJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3QpO1xuICAgIHRoaXMuc2V0dXBGcmFtZVRpbWluZ0luZm9ybWF0aW9uVHJhbnNmb3JtKGNvbnRleHQuY29kZWMsIGNvbnRleHQubWlkLCBjb250ZXh0LnRyYWNrSWQsIGNvbnRleHQudHJhbnNmb3JtTWVzc2FnZVJvdXRlciwgY29udGV4dC50cmFuc2Zvcm1GdW5jdGlvbk5hbWVzLCBjb250ZXh0LmRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdCk7XG4gICAgY29udGV4dC5pc0VuYWJsZWRTdWJqZWN0LnZhbHVlID0gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgY2FuUHJvY2Vzc0ZyYW1lVGltaW5nSW5mb3JtYXRpb24oc3RyZWFtSWQ6IHN0cmluZywgY29kZWM6IFZpZGVvQ29kZWMsIHJlY2VpdmVyOiBSVENSdHBSZWNlaXZlciwgbWlkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoY29kZWMgIT09IFZpZGVvQ29kZWMuSDI2NCkge1xuICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ1slc10gU2tpcHBpbmcgZnJhbWUgdGltaW5nIGluZm9ybWF0aW9uIGZvciB2aWRlbyB0cmFjayBiZWNhdXNlIHZpZGVvIGNvZGVjIGlzIG5vdCBIMjY0Jywgc3RyZWFtSWQpO1xuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCFyZWNlaXZlcikge1xuICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ1slc10gU2tpcHBpbmcgZnJhbWUgdGltaW5nIGluZm9ybWF0aW9uIGZvciB2aWRlbyB0cmFjayBiZWNhdXNlIG5vIHJlY2VpdmVyIHdhcyBmb3VuZCcsIHN0cmVhbUlkKTtcblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghbWlkKSB7XG4gICAgICB0aGlzLl9sb2dnZXIud2FybignWyVzXSBTa2lwcGluZyBmcmFtZSB0aW1pbmcgaW5mb3JtYXRpb24gZm9yIHZpZGVvIHRyYWNrIGJlY2F1c2Ugbm8gbWlkIHdhcyBmb3VuZCcsIHN0cmVhbUlkKTtcblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cEZyYW1lVGltaW5nSW5mb3JtYXRpb25UcmFuc2Zvcm0oY29kZWM6IFZpZGVvQ29kZWMsIG1pZDogc3RyaW5nLCB0cmFja0lkOiBzdHJpbmcsIHRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXI6IFRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXIsIHRyYW5zZm9ybUZ1bmN0aW9uTmFtZXM6IHN0cmluZ1tdLCBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3Q6IFN1YmplY3Q8RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPik6IHZvaWQge1xuICAgIHRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXIucmVnaXN0ZXJSb3V0ZTxUcmFuc2Zvcm1NZXNzYWdlUGF5bG9hZDxNZXRhZGF0YU1lc3NhZ2VQYXlsb2FkPj4oVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlLkZyYW1lVGltaW5nSW5mb3JtYXRpb24sIHRoaXMuaGFuZGxlRnJhbWVUaW1pbmdNZXNzYWdlLmJpbmQodGhpcywgVmlkZW9Db2RlY1tjb2RlY10sIG1pZCEsIHRyYWNrSWQhLCBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3QpKTtcbiAgICB0cmFuc2Zvcm1GdW5jdGlvbk5hbWVzLnB1c2goRnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXIuX3RyYW5zZm9ybU5hbWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVGcmFtZVRpbWluZ01lc3NhZ2UoY29kZWM6IHN0cmluZywgbWlkOiBzdHJpbmcsIHRyYWNrSWQ6IHN0cmluZywgZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0OiBTdWJqZWN0PERlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD4sIG1lc3NhZ2U6IE1ldGFkYXRhTWVzc2FnZVBheWxvYWQpOiB2b2lkIHtcbiAgICBpZiAoIW1lc3NhZ2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IFtydHBUaW1lc3RhbXAsIG1ldGFkYXRhXSBvZiBPYmplY3QuZW50cmllcyhtZXNzYWdlKSkge1xuICAgICAgY29uc3QgcnRwVGltZXN0YW1wTnVtYmVyID0gcGFyc2VJbnQocnRwVGltZXN0YW1wLCAxMCk7XG4gICAgICBjb25zdCBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiA9IG1ldGFkYXRhWydkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiddO1xuXG4gICAgICBpZiAoZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24pIHtcbiAgICAgICAgY29uc3QgZnJhbWVUaW1pbmdJbmZvcm1hdGlvbjogRGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gPSB7XG4gICAgICAgICAgdGltZWNvZGU6IGRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uLnRpbWVjb2RlID8/IG51bGwsXG4gICAgICAgICAgcmVjZWl2ZVRpbWVzdGFtcDogZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24ucmVjZWl2ZVRpbWVzdGFtcCA/PyBudWxsLFxuICAgICAgICAgIGtpbmQ6ICd2aWRlbycsXG4gICAgICAgICAgY29kZWMsXG4gICAgICAgICAgbWlkLFxuICAgICAgICAgIHRyYWNrSWQsXG4gICAgICAgICAgc291cmNlVGltZXN0YW1wOiBudWxsLFxuICAgICAgICAgIGluZ2VzdFRpbWVzdGFtcDogbnVsbCxcbiAgICAgICAgICBlbmNvZGVUaW1lc3RhbXA6IG51bGwsXG4gICAgICAgICAgdHJhbnNjb2RlVGltZXN0YW1wOiBudWxsLFxuICAgICAgICAgIHBsYXliYWNrU3RhdGU6IHRoaXMuX2N1cnJlbnRQbGF5YmFja1N0YXRlXG4gICAgICAgIH07XG5cbiAgICAgICAgZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0LnZhbHVlID0gZnJhbWVUaW1pbmdJbmZvcm1hdGlvbjtcblxuICAgICAgICBpZiAodGhpcy5fY3VycmVudFBsYXliYWNrU3RhdGUgPT09ICdwbGF5aW5nJykge1xuICAgICAgICAgIHRoaXMuX2RlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uQnlSdHBUaW1lc3RhbXAuc2V0KHJ0cFRpbWVzdGFtcE51bWJlciwgZnJhbWVUaW1pbmdJbmZvcm1hdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldHVwVmlkZW9FbGVtZW50SGFuZGxpbmcodmlkZW9FbGVtZW50U3ViamVjdDogU3ViamVjdDxIVE1MVmlkZW9FbGVtZW50IHwgbnVsbD4sIHJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3Q6IFN1YmplY3Q8UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD4pOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gdGhpcy5fZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25CeVJ0cFRpbWVzdGFtcC5jbGVhcigpKSk7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX3ZpZGVvRWxlbWVudERpc3Bvc2FibGVzKTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodmlkZW9FbGVtZW50U3ViamVjdC5zdWJzY3JpYmUodmlkZW9FbGVtZW50ID0+IHtcbiAgICAgIHRoaXMuX3ZpZGVvRWxlbWVudERpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcblxuICAgICAgaWYgKCF2aWRlb0VsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNldHVwVmlkZW9FdmVudExpc3RlbmVycyh2aWRlb0VsZW1lbnQsIHJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3QpO1xuICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlVmlkZW9GcmFtZUNhbGxiYWNrKHZpZGVvRWxlbWVudDogSFRNTFZpZGVvRWxlbWVudCwgcmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdDogU3ViamVjdDxSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPiwgbm93OiBET01IaWdoUmVzVGltZVN0YW1wLCBtZXRhZGF0YTogVmlkZW9GcmFtZUNhbGxiYWNrTWV0YWRhdGEpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZGlzcG9zZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBSZS1yZWdpc3RlciB0aGUgY2FsbGJhY2sgdG8gZW5zdXJlIGl0J3MgY2FsbGVkIGFnYWluXG4gICAgdGhpcy5fYXJtVmlkZW9GcmFtZUNhbGxiYWNrKHZpZGVvRWxlbWVudCwgcmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdCk7XG5cbiAgICBjb25zdCBydHBUaW1lc3RhbXAgPSBtZXRhZGF0YS5ydHBUaW1lc3RhbXA7XG5cbiAgICBpZiAoIXJ0cFRpbWVzdGFtcCkge1xuICAgICAgLy8gVE9ETyAoTkgpOiBBZGQgYSB0aHJvdHRsZWQgbG9nIGluZGljYXRpbmcgdGhhdCBubyBSVFAgdGltZXN0YW1wIHdhcyBmb3VuZFxuICAgICAgLy8gVGhlIHNwZWNpZmljYXRpb24gc2F5cyB0aGF0IGl0J3MgbnVsbGFibGUsIGJ1dCB3ZSBhbHdheXMgaGF2ZSBpdCBpbiBhIFdlYlJUQyBjb250ZXh0XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdGltZXN0YW1wc1RvRGVsZXRlOiBSdHBUaW1lc3RhbXBbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBbdGltZXN0YW1wLCBmcmFtZVRpbWluZ10gb2YgdGhpcy5fZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25CeVJ0cFRpbWVzdGFtcCkge1xuICAgICAgaWYgKHRpbWVzdGFtcCA+IHJ0cFRpbWVzdGFtcCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgcmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdC52YWx1ZSA9IHtcbiAgICAgICAgLi4uZnJhbWVUaW1pbmcsXG4gICAgICAgIHJlbmRlclRpbWVzdGFtcDogbmV3IERhdGUocGVyZm9ybWFuY2UudGltZU9yaWdpbiArIG5vdyksXG4gICAgICAgIHBsYXliYWNrU3RhdGU6ICdwbGF5aW5nJ1xuICAgICAgfTtcblxuICAgICAgdGltZXN0YW1wc1RvRGVsZXRlLnB1c2godGltZXN0YW1wKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHRpbWVzdGFtcCBvZiB0aW1lc3RhbXBzVG9EZWxldGUpIHtcbiAgICAgIHRoaXMuX2RlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uQnlSdHBUaW1lc3RhbXAuZGVsZXRlKHRpbWVzdGFtcCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cFZpZGVvRXZlbnRMaXN0ZW5lcnModmlkZW9FbGVtZW50OiBIVE1MVmlkZW9FbGVtZW50LCByZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0OiBTdWJqZWN0PFJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+KTogdm9pZCB7XG4gICAgY29uc3Qgb25QbGF5aW5nID0gKCkgPT4gdGhpcy5fY3VycmVudFBsYXliYWNrU3RhdGUgPSAncGxheWluZyc7XG5cbiAgICB2aWRlb0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncGxheWluZycsIG9uUGxheWluZyk7XG4gICAgdGhpcy5fdmlkZW9FbGVtZW50RGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHZpZGVvRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdwbGF5aW5nJywgb25QbGF5aW5nKSkpO1xuXG4gICAgY29uc3Qgb25QYXVzZSA9ICgpID0+IHRoaXMuX2N1cnJlbnRQbGF5YmFja1N0YXRlID0gJ3BhdXNlZCc7XG5cbiAgICB2aWRlb0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncGF1c2UnLCBvblBhdXNlKTtcbiAgICB0aGlzLl92aWRlb0VsZW1lbnREaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gdmlkZW9FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BhdXNlJywgb25QYXVzZSkpKTtcblxuICAgIGNvbnN0IG9uU3RhbGxlZCA9ICgpID0+IHRoaXMuX2N1cnJlbnRQbGF5YmFja1N0YXRlID0gJ3N0YWxsZWQnO1xuXG4gICAgdmlkZW9FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3N0YWxsZWQnLCBvblN0YWxsZWQpO1xuICAgIHRoaXMuX3ZpZGVvRWxlbWVudERpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB2aWRlb0VsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc3RhbGxlZCcsIG9uU3RhbGxlZCkpKTtcblxuICAgIGNvbnN0IG9uV2FpdGluZyA9ICgpID0+IHRoaXMuX2N1cnJlbnRQbGF5YmFja1N0YXRlID0gJ3dhaXRpbmcnO1xuXG4gICAgdmlkZW9FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3dhaXRpbmcnLCBvbldhaXRpbmcpO1xuICAgIHRoaXMuX3ZpZGVvRWxlbWVudERpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB2aWRlb0VsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignd2FpdGluZycsIG9uV2FpdGluZykpKTtcblxuICAgIGNvbnN0IG9uRW5kZWQgPSAoKSA9PiB0aGlzLl9jdXJyZW50UGxheWJhY2tTdGF0ZSA9ICdlbmRlZCc7XG5cbiAgICB2aWRlb0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZW5kZWQnLCBvbkVuZGVkKTtcbiAgICB0aGlzLl92aWRlb0VsZW1lbnREaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gdmlkZW9FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2VuZGVkJywgb25FbmRlZCkpKTtcblxuICAgIGNvbnN0IG9uRXJyb3IgPSAoKSA9PiB0aGlzLl9jdXJyZW50UGxheWJhY2tTdGF0ZSA9ICdlcnJvcic7XG5cbiAgICB2aWRlb0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBvbkVycm9yKTtcbiAgICB0aGlzLl92aWRlb0VsZW1lbnREaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gdmlkZW9FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgb25FcnJvcikpKTtcblxuICAgIHRoaXMuX2FybVZpZGVvRnJhbWVDYWxsYmFjayh2aWRlb0VsZW1lbnQsIHJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3QpO1xuICAgIHRoaXMuX3ZpZGVvRWxlbWVudERpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5fYXJtZWRWaWRlb0ZyYW1lQ2FsbGJhY2tJZCkge1xuICAgICAgICB2aWRlb0VsZW1lbnQuY2FuY2VsVmlkZW9GcmFtZUNhbGxiYWNrKHRoaXMuX2FybWVkVmlkZW9GcmFtZUNhbGxiYWNrSWQpO1xuICAgICAgfVxuICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2FybVZpZGVvRnJhbWVDYWxsYmFjayh2aWRlb0VsZW1lbnQ6IEhUTUxWaWRlb0VsZW1lbnQsIHJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3Q6IFN1YmplY3Q8UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD4pOiB2b2lkIHtcbiAgICBpZiAoIXZpZGVvRWxlbWVudC5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fYXJtZWRWaWRlb0ZyYW1lQ2FsbGJhY2tJZCA9IHZpZGVvRWxlbWVudC5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrKHRoaXMuaGFuZGxlVmlkZW9GcmFtZUNhbGxiYWNrLmJpbmQodGhpcywgdmlkZW9FbGVtZW50LCByZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0KSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi8uLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uLy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IHtTdHJlYW1TZXR1cExpc3RlbmVyfSBmcm9tICcuLi8uLi9kb20vU3RyZWFtU2V0dXBMaXN0ZW5lcic7XG5pbXBvcnQgR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIgZnJvbSAnLi4vLi4vZG9tL0dhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyJztcbmltcG9ydCBEdXJhdGlvbnMgZnJvbSAnLi4vLi4vdGltZS9EdXJhdGlvbic7XG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4uLy4uL3J0Yy9JUGVlckNvbm5lY3Rpb24nO1xuaW1wb3J0IFNkcFBhcnNlciBmcm9tICcuLi8uLi9ydGMvU2RwUGFyc2VyJztcbmltcG9ydCBSdGNDb25maWd1cmF0aW9uTWFuYWdlciBmcm9tICcuLi8uLi9ydGMvUnRjQ29uZmlndXJhdGlvbk1hbmFnZXInO1xuaW1wb3J0IFBlZXJDb25uZWN0aW9uU2VydmljZSwge1xuICBkZWZhdWx0VHJhY2tLaW5kcyxcbiAgRW5jb2RlZEluc2VydGFibGVTdHJlYW1zXG59IGZyb20gJy4uLy4uL3J0Yy9QZWVyQ29ubmVjdGlvblNlcnZpY2UnO1xuaW1wb3J0IFJ0Y0Nvbm5lY3Rpb25Nb25pdG9yIGZyb20gJy4uLy4uL3J0Yy9SdGNDb25uZWN0aW9uTW9uaXRvcic7XG5pbXBvcnQgRW5kUG9pbnQsIHtTdWJzY3JpYmVPcHRpb25zLCBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1c30gZnJvbSAnLi4vZGlzY292ZXJ5L0VuZFBvaW50JztcbmltcG9ydCBEaXNjb3ZlcnkgZnJvbSAnLi4vZGlzY292ZXJ5L0Rpc2NvdmVyeSc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuaW1wb3J0IENoYW5uZWxTdGF0ZSBmcm9tICcuLi9jaGFubmVscy9DaGFubmVsU3RhdGUnO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBDaGFubmVsQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L0NoYW5uZWxDb250ZXh0JztcbmltcG9ydCBQZWVyQ29ubmVjdGlvbkNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9QZWVyQ29ubmVjdGlvbkNvbnRleHQnO1xuaW1wb3J0IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9TdHJlYW1UcmFuc2Zvcm1Db250ZXh0JztcbmltcG9ydCBGcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L0ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0JztcbmltcG9ydCBGcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlciwge0ZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyQ29udGV4dH0gZnJvbSAnLi4vZnJhbWVUaW1pbmcvRnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXInO1xuaW1wb3J0IEluc2VydGFibGVTdHJlYW1zIGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL0luc2VydGFibGVTdHJlYW1zJztcbmltcG9ydCB7SVN0cmVhbVN1YnNjcmliZXJ9IGZyb20gJy4vSVN0cmVhbVN1YnNjcmliZXInO1xuaW1wb3J0IFZpZGVvRnJhbWVEZXRlY3RvciBmcm9tICcuL1ZpZGVvRnJhbWVEZXRlY3Rvcic7XG5pbXBvcnQgRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlciwge0VuY29kZWRNZWRpYVRyYW5zZm9ybU1hbmFnZXJDb250ZXh0fSBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi9FbmNvZGVkTWVkaWFUcmFuc2Zvcm1NYW5hZ2VyJztcbmltcG9ydCB7QXVkaW9Db2RlY1R5cGV9IGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvQXVkaW9Db2RlYyc7XG5pbXBvcnQge1ZpZGVvQ29kZWNUeXBlfSBmcm9tICcuLi9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL1ZpZGVvQ29kZWMnO1xuaW1wb3J0IFZpZGVvQ29kZWNNYXBwaW5nIGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvVmlkZW9Db2RlY01hcHBpbmcnO1xuaW1wb3J0IEF1ZGlvQ29kZWNNYXBwaW5nIGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvQXVkaW9Db2RlY01hcHBpbmcnO1xuXG5jb25zdCBpY2VDYW5kaWRhdGVBY2N1bXVsYXRpb25JbnRlcnZhbCA9IDEwMDtcbmNvbnN0IGRlZmF1bHRTdHJlYW1TZXR1cFRpbWVvdXQgPSAzMDAwMDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVhbFRpbWVTdHJlYW1TdWJzY3JpYmVyIGltcGxlbWVudHMgSVN0cmVhbVN1YnNjcmliZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignUmVhbFRpbWVTdHJlYW1TdWJzY3JpYmVyJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jaGFubmVsQ29udGV4dDogQ2hhbm5lbENvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BlZXJDb25uZWN0aW9uQ29udGV4dDogUGVlckNvbm5lY3Rpb25Db250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0OiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dDogRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2hhbmRsZVN0cmVhbUZhaWx1cmU6ICgpID0+IFByb21pc2U8dm9pZD47XG5cbiAgY29uc3RydWN0b3IoY2hhbm5lbENvbnRleHQ6IENoYW5uZWxDb250ZXh0LCBwZWVyQ29ubmVjdGlvbkNvbnRleHQ6IFBlZXJDb25uZWN0aW9uQ29udGV4dCwgc3RyZWFtVHJhbnNmb3JtQ29udGV4dDogU3RyZWFtVHJhbnNmb3JtQ29udGV4dCwgZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQ6IEZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LCBoYW5kbGVTdHJlYW1GYWlsdXJlOiAoKSA9PiBQcm9taXNlPHZvaWQ+KSB7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQgPSBjaGFubmVsQ29udGV4dDtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQgPSBwZWVyQ29ubmVjdGlvbkNvbnRleHQ7XG4gICAgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dCA9IHN0cmVhbVRyYW5zZm9ybUNvbnRleHQ7XG4gICAgdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQgPSBmcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dDtcbiAgICB0aGlzLl9oYW5kbGVTdHJlYW1GYWlsdXJlID0gaGFuZGxlU3RyZWFtRmFpbHVyZTtcbiAgfVxuXG4gIHN0YXJ0KHVyaTogVVJMLCB0b2tlbjogc3RyaW5nLCBsaXN0ZW5PblN0cmVhbVNldHVwOiBTdHJlYW1TZXR1cExpc3RlbmVyLCBwbGF5TWVkaWFTdHJlYW1JblZpZGVvRWxlbWVudDogRnVuY3Rpb24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG5cbiAgICBjb25zdCByZXF1aXJlc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyA9IHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLnZhbHVlXG4gICAgICB8fCB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5zaG91bGRFeHRyYWN0VGltZWNvZGUudmFsdWVcbiAgICAgIHx8IHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnNob3VsZEV4dHJhY3RUaW1lc3RhbXBzLnZhbHVlID8gRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLkVuYWJsZWQgOiBFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMuRGlzYWJsZWQ7XG5cbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoW1xuICAgICAgRGlzY292ZXJ5LmRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50V2l0aENhY2hpbmcodXJpKSxcbiAgICAgIFBlZXJDb25uZWN0aW9uU2VydmljZS5jcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyKCdyZWN2b25seScsIGRlZmF1bHRUcmFja0tpbmRzLCByZXF1aXJlc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcylcbiAgICAgICAgLnRoZW4oKHtsb2NhbE9mZmVyLCBwZWVyQ29ubmVjdGlvbn0pID0+IHtcbiAgICAgICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgPSBwZWVyQ29ubmVjdGlvbjtcblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsb2NhbE9mZmVyLFxuICAgICAgICAgICAgcGVlckNvbm5lY3Rpb25cbiAgICAgICAgICB9O1xuICAgICAgICB9KVxuICAgIF0pXG4gICAgICAudGhlbigoW2VuZFBvaW50LCB7bG9jYWxPZmZlciwgcGVlckNvbm5lY3Rpb259XSkgPT4ge1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5vbmxpbmUudmFsdWUgPSB0cnVlO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZSA9IGVuZFBvaW50O1xuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ29ubmVjdGluZyB0byBbJXNdJywgZW5kUG9pbnQudG9TdHJpbmcoKSk7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdMb2NhbCBvZmZlcjpcXG4nICsgbG9jYWxPZmZlci5zZHApO1xuXG4gICAgICAgIGNvbnN0IHN1YnNjcmliZU9wdGlvbnM6IFN1YnNjcmliZU9wdGlvbnMgPSB7fTtcblxuICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQub25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaykge1xuICAgICAgICAgIHN1YnNjcmliZU9wdGlvbnMub25TdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2sgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5vblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0Lm9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrKSB7XG4gICAgICAgICAgc3Vic2NyaWJlT3B0aW9ucy5vblN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2sgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5vblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5jbGllbnRPZmZlckRpc2FibGVkIHx8ICFwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c1NldENvbmZpZ3VyYXRpb24gfHwgIXBlZXJDb25uZWN0aW9uLnN1cHBvcnRzR2V0Q29uZmlndXJhdGlvbikge1xuICAgICAgICAgIHBlZXJDb25uZWN0aW9uLmNsb3NlKCk7XG4gICAgICAgICAgcGVlckNvbm5lY3Rpb24uZGlzcG9zZSgpO1xuXG4gICAgICAgICAgaWYgKFNESy5mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0ICYmICEoRmVhdHVyZUVuYWJsZW1lbnQuaXNNb2JpbGUgJiYgU0RLLnNraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcykpIHtcbiAgICAgICAgICAgIEdhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyLmZvcmNlR2FyYmFnZUNvbGxlY3Rpb24oKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgPSBudWxsO1xuXG4gICAgICAgICAgcmV0dXJuIGVuZFBvaW50LnN1YnNjcmliZSh0b2tlbiwgbnVsbCwgdGhpcy5fY2hhbm5lbENvbnRleHQuZmFpbHVyZUNvdW50LnZhbHVlLCBzdWJzY3JpYmVPcHRpb25zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBlbmRQb2ludC5zdWJzY3JpYmUodG9rZW4sIGxvY2FsT2ZmZXIsIHRoaXMuX2NoYW5uZWxDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSwgc3Vic2NyaWJlT3B0aW9ucyk7XG4gICAgICB9KVxuICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICBjb25zdCB7c3RhdHVzfSA9IHJlc3BvbnNlO1xuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmV4aXN0cy52YWx1ZSA9IHRoaXMuX2NoYW5uZWxDb250ZXh0Lm1hcFN1YnNjcmliZVN0YXR1c1RvRXhpc3RzKHN0YXR1cyk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gdGhpcy5fY2hhbm5lbENvbnRleHQubWFwU3Vic2NyaWJlU3RhdHVzVG9DaGFubmVsU3RhdHVzKHN0YXR1cyk7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXBwbHlTdGF0dXMoc3RhdHVzKTtcblxuICAgICAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlID0gbnVsbDtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sYWcudmFsdWUgPSB1bmRlZmluZWQgO1xuXG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXBwbHlTZXNzaW9uQW5kU3RyZWFtUHJvcGVydGllc1RvVmlkZW9FbGVtZW50KCk7XG5cbiAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICAgICAgICdbJXNdIFN1YnNjcmliZSBmYWlsZWQgd2l0aCBzdGF0dXMgWyVzXScsXG4gICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICAgIHN0YXR1c1xuICAgICAgICAgICk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7c3RyZWFtLCBydGNDb25maWd1cmF0aW9uLCBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLCBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UsIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UsIGxhZ30gPSByZXNwb25zZTtcblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUgPSBzdHJlYW07XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxhZy52YWx1ZSA9IGxhZztcblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hcHBseVNlc3Npb25BbmRTdHJlYW1Qcm9wZXJ0aWVzVG9WaWRlb0VsZW1lbnQoKTtcblxuICAgICAgICB0aGlzLl9sb2dnZXIuZGVidWcoXG4gICAgICAgICAgJ1slc10gU3Vic2NyaWJlIGNvbXBsZXRlZCBbJXNdIFslal0gWyVqXSBbJWpdIFslal0nLFxuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLFxuICAgICAgICAgIHN0YXR1cyxcbiAgICAgICAgICBydGNDb25maWd1cmF0aW9uLFxuICAgICAgICAgIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UsXG4gICAgICAgICAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLFxuICAgICAgICAgIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2VcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hcHBseVJ0Y0NvbmZpZ3VyYXRpb24odGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlLCBydGNDb25maWd1cmF0aW9uIGFzIFJUQ0NvbmZpZ3VyYXRpb24pXG4gICAgICAgICAgLnRoZW4ocGVlckNvbm5lY3Rpb24gPT4ge1xuICAgICAgICAgICAgbGV0IHN1Ym1pdENhbmRpZGF0ZXNUaW1lb3V0OiB1bmRlZmluZWQgfCBudW1iZXI7XG4gICAgICAgICAgICBsZXQgY2FuY2VsRGlzY292ZXJ5ID0gZmFsc2U7XG4gICAgICAgICAgICBsZXQgZGlzY292ZXJ5Q29tcGxldGVkID0gZmFsc2U7XG4gICAgICAgICAgICBjb25zdCBjYW5kaWRhdGVzOiBSVENJY2VDYW5kaWRhdGVbXSA9IFtdO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSkge1xuICAgICAgICAgICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgPSBwZWVyQ29ubmVjdGlvbjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24ub25pY2VjYW5kaWRhdGUgPSAoZSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlICE9PSBzdHJlYW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlICE9PSBwZWVyQ29ubmVjdGlvbikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChjYW5jZWxEaXNjb3ZlcnkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoIVNESy5zZW5kTG9jYWxDYW5kaWRhdGVzLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKGUuY2FuZGlkYXRlICYmIGUuY2FuZGlkYXRlLmNhbmRpZGF0ZSkge1xuICAgICAgICAgICAgICAgIGNhbmRpZGF0ZXMucHVzaChlLmNhbmRpZGF0ZSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZGlzY292ZXJ5Q29tcGxldGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICghc3VibWl0Q2FuZGlkYXRlc1RpbWVvdXQpIHtcbiAgICAgICAgICAgICAgICBzdWJtaXRDYW5kaWRhdGVzVGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSAhPT0gc3RyZWFtKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgaWYgKGNhbmNlbERpc2NvdmVyeSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZT8uYWRkSWNlQ2FuZGlkYXRlcyhzdHJlYW0sIGNhbmRpZGF0ZXMsIGRpc2NvdmVyeUNvbXBsZXRlZClcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oKHtzdGF0dXMsIG9wdGlvbnN9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ1slc10gRmFpbGVkIHRvIGFkZCBJQ0UgY2FuZGlkYXRlcyB3aXRoIHJlYXNvbiBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIHN0YXR1cyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucz8uaW5jbHVkZXMoJ2NhbmNlbCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYW5jZWxEaXNjb3ZlcnkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEFkZGVkIElDRSBjYW5kaWRhdGVzIHdpdGggcmVhc29uIFslc10gYW5kIG9wdGlvbnMgWyVzXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBzdGF0dXMsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdbJXNdIEZhaWxlZCB0byBhZGQgSUNFIGNhbmRpZGF0ZXMnLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0sIGljZUNhbmRpZGF0ZUFjY3VtdWxhdGlvbkludGVydmFsKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQoc3VibWl0Q2FuZGlkYXRlc1RpbWVvdXQpKSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLm9uaWNlY2FuZGlkYXRlID0gbnVsbDtcbiAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24ub25pY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2UgPSBudWxsO1xuICAgICAgICAgICAgfSkpO1xuXG4gICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5vbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZSA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSAhPT0gc3RyZWFtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSAhPT0gcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjb25zdCByZXRyeUNhbGxiYWNrID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9oYW5kbGVTdHJlYW1GYWlsdXJlKClcbiAgICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICdbJXNdIEZhaWxlZCBoYW5kbGluZyBzdHJlYW0gZmFpbHVyZSBhZnRlciBwZWVyIGNvbm5lY3Rpb24gc3RvcHBlZCB3aXRoIHN0YXRlIFslc10nLFxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLFxuICAgICAgICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICBlXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICBzd2l0Y2ggKHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2NoZWNraW5nJzpcbiAgICAgICAgICAgICAgICBjYXNlICdjb21wbGV0ZWQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2Nvbm5lY3RlZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnbmV3JzpcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2Rpc2Nvbm5lY3RlZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgICAgICAgICAgIGlmIChHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JJc09uTGluZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBJQ0UgY29ubmVjdGlvbiBzdGF0ZSBjaGFuZ2VkIHRvIFslc10sIHRyeWluZyB0byByZWNvbm5lY3QnLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgcGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWNvbm5lY3RQZWVyQ29ubmVjdGlvbih0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgcGVlckNvbm5lY3Rpb24sIHJldHJ5Q2FsbGJhY2spO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgY2FzZSAnY2xvc2VkJzpcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIElDRSBjb25uZWN0aW9uIHN0YXRlIGNoYW5nZWQgdG8gWyVzXSwgcmV0cnlpbmcgdG8gY29ubmVjdCcsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUpO1xuXG4gICAgICAgICAgICAgICAgICByZXRyeUNhbGxiYWNrKCk7XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUocGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlIGFzIG5ldmVyKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY29uc3QgbWVkaWFTdHJlYW1Qcm9taXNlID0gbmV3IFByb21pc2U8TWVkaWFTdHJlYW0+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFGZWF0dXJlRW5hYmxlbWVudC5vblRyYWNrRGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aW1lb3V0SWQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHJlamVjdChuZXcgRXJyb3IoJ1N0cmVhbSBzZXR1cCB0aW1lZCBvdXQnKSksIGRlZmF1bHRTdHJlYW1TZXR1cFRpbWVvdXQpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0SWQpKSk7XG5cbiAgICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5vbnRyYWNrID0gKGUpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICAgICAgICAgICAgcmVzb2x2ZShlLnN0cmVhbXNbMF0pO1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjb25zdCB0cmFja0xpc3RlbmVyID0gKGU6IFJUQ1BlZXJDb25uZWN0aW9uRXZlbnRNYXBbJ3RyYWNrJyB8ICdhZGRzdHJlYW0nXSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgICAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5yZW1vdmVFdmVudExpc3RlbmVyKCd0cmFjaycsIHRyYWNrTGlzdGVuZXIpO1xuICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FkZHN0cmVhbScsIHRyYWNrTGlzdGVuZXIpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCdzdHJlYW1zJyBpbiBlKSB7XG4gICAgICAgICAgICAgICAgICByZXNvbHZlKGUuc3RyZWFtc1swXSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHJlc29sdmUoZS5zdHJlYW0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICBjb25zdCB0aW1lb3V0SWQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5yZW1vdmVFdmVudExpc3RlbmVyKCd0cmFjaycsIHRyYWNrTGlzdGVuZXIpO1xuICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FkZHN0cmVhbScsIHRyYWNrTGlzdGVuZXIpO1xuICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ1N0cmVhbSBzZXR1cCB0aW1lZCBvdXQnKSk7XG4gICAgICAgICAgICAgIH0sIGRlZmF1bHRTdHJlYW1TZXR1cFRpbWVvdXQpO1xuXG4gICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLmFkZEV2ZW50TGlzdGVuZXIoJ3RyYWNrJywgdHJhY2tMaXN0ZW5lcik7XG4gICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLmFkZEV2ZW50TGlzdGVuZXIoJ2FkZHN0cmVhbScsIHRyYWNrTGlzdGVuZXIpO1xuICAgICAgICAgICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCkpKTtcblxuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gU2V0IGxvY2FsIFNEUCBvZmZlciBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uLnNkcCk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24oc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRmFpbGVkIHRvIHNldCBsb2NhbCBkZXNjcmlwdGlvbiBbJWpdIHdpdGggbWVzc2FnZSBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uLCBlLm1lc3NhZ2UpO1xuXG4gICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFNldCByZW1vdGUgU0RQIGFuc3dlciBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uLnNkcCk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldFJlbW90ZURlc2NyaXB0aW9uKGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKVxuICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBzZXQgcmVtb3RlIGRlc2NyaXB0aW9uIFslal0gd2l0aCBtZXNzYWdlIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24sIGUubWVzc2FnZSk7XG5cbiAgICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBTZXQgcmVtb3RlIFNEUCBvZmZlciBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24uc2RwKTtcblxuICAgICAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0UmVtb3RlRGVzY3JpcHRpb24oY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbilcbiAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gc2V0IHJlbW90ZSBkZXNjcmlwdGlvbiBbJWpdIHdpdGggbWVzc2FnZSBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24sIGUubWVzc2FnZSk7XG5cbiAgICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uY3JlYXRlQW5zd2VyKHtcbiAgICAgICAgICAgICAgICAgICAgb2ZmZXJUb1JlY2VpdmVBdWRpbzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgb2ZmZXJUb1JlY2VpdmVWaWRlbzogdHJ1ZVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSkudGhlbihhbnN3ZXIgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gU2V0IGxvY2FsIFNEUCBhbnN3ZXIgWyVqXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBhbnN3ZXIpO1xuXG4gICAgICAgICAgICAgICAgICBjb25zdCBlbmRQb2ludCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlIGFzIEVuZFBvaW50O1xuXG4gICAgICAgICAgICAgICAgICByZXR1cm4gZW5kUG9pbnQuc2V0UmVtb3RlRGVzY3JpcHRpb24oc3RyZWFtLCBhbnN3ZXIpO1xuICAgICAgICAgICAgICAgIH0pLnRoZW4oKHtzdGF0dXMsIHNlc3Npb25EZXNjcmlwdGlvbn0pID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gdGhpcy5tYXBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1c1RvQ2hhbm5lbFN0YXR1cyhzdGF0dXMpO1xuXG4gICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhbmRieS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0b3BwZWQudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRMb2NhbERlc2NyaXB0aW9uKHNlc3Npb25EZXNjcmlwdGlvbiBhcyBSVENTZXNzaW9uRGVzY3JpcHRpb24pXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gc2V0IGxvY2FsIGRlc2NyaXB0aW9uIFslal0gd2l0aCBtZXNzYWdlIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgc2Vzc2lvbkRlc2NyaXB0aW9uLCBlLm1lc3NhZ2UpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgbGlzdGVuT25TdHJlYW1TZXR1cC5zdWNjZXNzKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkKTtcblxuICAgICAgICAgICAgICByZXR1cm4gbWVkaWFTdHJlYW1Qcm9taXNlO1xuICAgICAgICAgICAgfSkudGhlbihtZWRpYVN0cmVhbSA9PiB7XG4gICAgICAgICAgICAgIGlmIChyZXF1aXJlc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyAmJiBwZWVyQ29ubmVjdGlvbj8uY3VycmVudFJlbW90ZURlc2NyaXB0aW9uPy5zZHApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbiA9IG5ldyBTZHBQYXJzZXIocGVlckNvbm5lY3Rpb24uY3VycmVudFJlbW90ZURlc2NyaXB0aW9uLnNkcCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvVHJhY2suY29kZWMgPSBWaWRlb0NvZGVjTWFwcGluZy5jb252ZXJ0VmlkZW9Db2RlY1R5cGVUb1ZpZGVvQ29kZWMocGFyc2VkUmVtb3RlRGVzY3JpcHRpb24udmlkZW9Db2RlYyBhcyBWaWRlb0NvZGVjVHlwZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5hdWRpb1RyYWNrLmNvZGVjID0gQXVkaW9Db2RlY01hcHBpbmcuY29udmVydEF1ZGlvQ29kZWNUeXBlVG9BdWRpb0NvZGVjKHBhcnNlZFJlbW90ZURlc2NyaXB0aW9uLmF1ZGlvQ29kZWMgYXMgQXVkaW9Db2RlY1R5cGUpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgcmVjZWl2ZXJzID0gcGVlckNvbm5lY3Rpb24uZ2V0UmVjZWl2ZXJzKCk7XG4gICAgICAgICAgICAgICAgLy8gTm90ZTogVGhpcyBhc3N1bWVzIHRoYXQgdGhlcmUgaXMgb25seSBvbmUgdmlkZW8gTWVkaWFTdHJlYW1UcmFjayBhbmQgb25lIGF1ZGlvIE1lZGlhU3RyZWFtVHJhY2tcbiAgICAgICAgICAgICAgICBjb25zdCB2aWRlb1RyYWNrID0gdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1RyYWNrLm1lZGlhU3RyZWFtVHJhY2sgPSBtZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdO1xuICAgICAgICAgICAgICAgIC8vIEJvdGggYXJlIGV4cGVjdGVkIHRvIGJlIHByZXNlbnQsIGJ1dCB0aGUgdHlwZSBzeXN0ZW0gbWFrZXMgdGhlbSBudWxsYWJsZSwgc28gd2UgaGF2ZSB0byBhc3NlcnQgdGhlIHByZXNlbmNlXG4gICAgICAgICAgICAgICAgY29uc3QgdmlkZW9UcmFja1JlY2VpdmVyID0gdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1RyYWNrLnJlY2VpdmVyID0gcmVjZWl2ZXJzLmZpbHRlcihyZWNlaXZlciA9PiByZWNlaXZlci50cmFjayA9PT0gdmlkZW9UcmFjaylbMF07XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvVHJhY2subWlkID0gcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNHZXRUcmFuc2NlaXZlcnNcbiAgICAgICAgICAgICAgICAgID8gcGVlckNvbm5lY3Rpb24uZ2V0VHJhbnNjZWl2ZXJzKCkuZmlsdGVyKHRyYW5zY2VpdmVyID0+IHRyYW5zY2VpdmVyLnJlY2VpdmVyID09PSB2aWRlb1RyYWNrUmVjZWl2ZXIpWzBdPy5taWRcbiAgICAgICAgICAgICAgICAgIDogbnVsbDtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGF1ZGlvVHJhY2sgPSB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmF1ZGlvVHJhY2subWVkaWFTdHJlYW1UcmFjayA9IG1lZGlhU3RyZWFtLmdldEF1ZGlvVHJhY2tzKClbMF07XG4gICAgICAgICAgICAgICAgY29uc3QgYXVkaW9UcmFja1JlY2VpdmVyID0gdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5hdWRpb1RyYWNrLnJlY2VpdmVyID0gcmVjZWl2ZXJzLmZpbHRlcihyZWNlaXZlciA9PiByZWNlaXZlci50cmFjayA9PT0gYXVkaW9UcmFjaylbMF07XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmF1ZGlvVHJhY2subWlkID0gcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNHZXRUcmFuc2NlaXZlcnNcbiAgICAgICAgICAgICAgICAgID8gcGVlckNvbm5lY3Rpb24uZ2V0VHJhbnNjZWl2ZXJzKCkuZmlsdGVyKHRyYW5zY2VpdmVyID0+IHRyYW5zY2VpdmVyLnJlY2VpdmVyID09PSBhdWRpb1RyYWNrUmVjZWl2ZXIpWzBdPy5taWRcbiAgICAgICAgICAgICAgICAgIDogbnVsbDtcblxuICAgICAgICAgICAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChJbnNlcnRhYmxlU3RyZWFtcy5jcmVhdGVFbmNvZGVkU3RyZWFtUGlwZWxpbmUodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dCkpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgcmVxdWlyZXNGcmFtZVRpbWluZ0luZm9ybWF0aW9uID0gdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuc2hvdWxkRXh0cmFjdFRpbWVjb2RlLnZhbHVlIHx8IHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnNob3VsZEV4dHJhY3RUaW1lc3RhbXBzLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgaWYgKHJlcXVpcmVzRnJhbWVUaW1pbmdJbmZvcm1hdGlvbikge1xuICAgICAgICAgICAgICAgICAgY29uc3QgZnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXJDb250ZXh0OiBGcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlckNvbnRleHQgPSB7XG4gICAgICAgICAgICAgICAgICAgIHN0cmVhbUlkOiB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICAgICAgICAgICAgY29kZWM6IHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9UcmFjay5jb2RlYyxcbiAgICAgICAgICAgICAgICAgICAgdmlkZW9FbGVtZW50OiB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgIGRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdDogdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24sXG4gICAgICAgICAgICAgICAgICAgIHJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3Q6IHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbixcbiAgICAgICAgICAgICAgICAgICAgaXNFbmFibGVkU3ViamVjdDogdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuaXNFbmFibGVkLFxuICAgICAgICAgICAgICAgICAgICByZWNlaXZlcjogdmlkZW9UcmFja1JlY2VpdmVyLFxuICAgICAgICAgICAgICAgICAgICBtaWQ6IHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9UcmFjay5taWQhLFxuICAgICAgICAgICAgICAgICAgICB0cmFja0lkOiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvVHJhY2subWVkaWFTdHJlYW1UcmFjay5pZCEsXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXI6IHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9UcmFjay50cmFuc2Zvcm1NZXNzYWdlUm91dGVyISxcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtRnVuY3Rpb25OYW1lczogdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1RyYWNrLnRyYW5zZm9ybUZ1bmN0aW9uTmFtZXNcbiAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChuZXcgRnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXIoZnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXJDb250ZXh0KSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgcmVxdWlyZXNFbmNvZGVkTWVkaWFUcmFuc2Zvcm0gPSB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0Lmhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZTtcblxuICAgICAgICAgICAgICAgIGlmIChyZXF1aXJlc0VuY29kZWRNZWRpYVRyYW5zZm9ybSkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgZW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlckNvbnRleHQ6IEVuY29kZWRNZWRpYVRyYW5zZm9ybU1hbmFnZXJDb250ZXh0ID0ge1xuICAgICAgICAgICAgICAgICAgICB2aWRlb1RyYWNrOiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvVHJhY2ssXG4gICAgICAgICAgICAgICAgICAgIGF1ZGlvVHJhY2s6IHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuYXVkaW9UcmFjayxcbiAgICAgICAgICAgICAgICAgICAgZW5jb2RlZFZpZGVvU3RyZWFtU2luazogdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5lbmNvZGVkVmlkZW9TdHJlYW1TaW5rISxcbiAgICAgICAgICAgICAgICAgICAgZW5jb2RlZEF1ZGlvU3RyZWFtU2luazogdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5lbmNvZGVkQXVkaW9TdHJlYW1TaW5rIVxuICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKG5ldyBFbmNvZGVkTWVkaWFUcmFuc2Zvcm1NYW5hZ2VyKGVuY29kZWRNZWRpYVRyYW5zZm9ybU1hbmFnZXJDb250ZXh0KSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgSW5zZXJ0YWJsZVN0cmVhbXMuY29uZmlndXJlRW5jb2RlZFN0cmVhbVBpcGVsaW5lKHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQpO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzSW5zZXJ0YWJsZVN0cmVhbXMudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7dHJhbnNmb3JtZWRTdHJlYW0sIGRpc3Bvc2FibGVzfSA9IEluc2VydGFibGVTdHJlYW1zLmNvbmZpZ3VyZUluc2VydGFibGVTdHJlYW1UcmFuc2Zvcm1hdGlvbihtZWRpYVN0cmVhbSwgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrLCB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2spO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKGRpc3Bvc2FibGVzKTtcbiAgICAgICAgICAgICAgICBtZWRpYVN0cmVhbSA9IHRyYW5zZm9ybWVkU3RyZWFtO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlID0gbWVkaWFTdHJlYW07XG5cbiAgICAgICAgICAgICAgY29uc3QgcnRjQ29ubmVjdGlvbk1vbml0b3IgPSBuZXcgUnRjQ29ubmVjdGlvbk1vbml0b3IoXG4gICAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24sIG1lZGlhU3RyZWFtLFxuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlPy5yb3VuZFRyaXBUaW1lID8gdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUucm91bmRUcmlwVGltZSAvIDQgOiAwLFxuICAgICAgICAgICAgICAgIFNESy5hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciEuaXNGb3JlZ3JvdW5kXG4gICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHJ0Y0Nvbm5lY3Rpb25Nb25pdG9yKTtcblxuICAgICAgICAgICAgICBjb25zdCBydGNDb25uZWN0aW9uTW9uaXRvclN0YXRpc3RpY1N1YnNjcmlwdGlvbiA9IHJ0Y0Nvbm5lY3Rpb25Nb25pdG9yLnJ0Y1N0YXRpc3RpYy5zdWJzY3JpYmUoc3RhdGlzdGljcyA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjU3RhdGlzdGljcy52YWx1ZSA9IHN0YXRpc3RpY3M7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXN0YXRpc3RpY3MpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljICYmICF0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNBdWRpb1N0YXRpc3RpYykge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjQXVkaW9TdGF0aXN0aWMgPSBzdGF0aXN0aWNzLmF1ZGlvO1xuICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjVmlkZW9TdGF0aXN0aWMgPSBzdGF0aXN0aWNzLnZpZGVvO1xuXG4gICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFTREsuYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IhLmlzRm9yZWdyb3VuZC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjQXVkaW9TdGF0aXN0aWMgPSBzdGF0aXN0aWNzLmF1ZGlvO1xuICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjVmlkZW9TdGF0aXN0aWMgPSBzdGF0aXN0aWNzLnZpZGVvO1xuXG4gICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbGV0IGF1ZGlvVHJhY2tGYWlsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBsZXQgdmlkZW9UcmFja0ZhaWxlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgaWYgKHN0YXRpc3RpY3MuYXVkaW8pIHtcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNBdWRpb1N0YXRpc3RpYyAmJiB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNBdWRpb1N0YXRpc3RpYy50aW1lc3RhbXAgIT09IHN0YXRpc3RpY3MuYXVkaW8udGltZXN0YW1wKSB7XG4gICAgICAgICAgICAgICAgICAgIGF1ZGlvVHJhY2tGYWlsZWQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNBdWRpb1N0YXRpc3RpYyAmJiB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNBdWRpb1N0YXRpc3RpYy5ieXRlc1JlY2VpdmVkID09PSBzdGF0aXN0aWNzLmF1ZGlvLmJ5dGVzUmVjZWl2ZWQ7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGF1ZGlvVHJhY2tGYWlsZWQgJiYgR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9ySXNPbkxpbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICAgICAgICAgICAgICAgICAgICdbJXNdIEF1ZGlvIHRyYWNrIGZhaWxlZCB3aXRoIGxhc3QgYnl0ZXNSZWNlaXZlZCBbJXNdIGlzIGVxdWFsIHRvIHByZXZpb3VzIGJ5dGVzUmVjZWl2ZWQgWyVzXSB3aXRoaW4gWyVzXScsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpc3RpY3MuYXVkaW8uYnl0ZXNSZWNlaXZlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljLmJ5dGVzUmVjZWl2ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXcgRHVyYXRpb25zKHN0YXRpc3RpY3MuYXVkaW8udGltZXN0YW1wIC0gdGhpcy5fY2hhbm5lbENvbnRleHQucnRjQXVkaW9TdGF0aXN0aWMudGltZXN0YW1wKS50b0lzb1N0cmluZygpXG4gICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljID0gc3RhdGlzdGljcy5hdWRpbztcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoc3RhdGlzdGljcy52aWRlbykge1xuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljLnRpbWVzdGFtcCAhPT0gc3RhdGlzdGljcy52aWRlby50aW1lc3RhbXApIHtcbiAgICAgICAgICAgICAgICAgICAgdmlkZW9UcmFja0ZhaWxlZCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljLmJ5dGVzUmVjZWl2ZWQgPT09IHN0YXRpc3RpY3MudmlkZW8uYnl0ZXNSZWNlaXZlZDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodmlkZW9UcmFja0ZhaWxlZCAmJiBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JJc09uTGluZSkge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ1slc10gVmlkZW8gdHJhY2sgZmFpbGVkIHdpdGggbGFzdCBieXRlc1JlY2VpdmVkIFslc10gaXMgZXF1YWwgdG8gcHJldmlvdXMgYnl0ZXNSZWNlaXZlZCBbJXNdIHdpdGhpbiBbJXNdJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGlzdGljcy52aWRlby5ieXRlc1JlY2VpdmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjVmlkZW9TdGF0aXN0aWMuYnl0ZXNSZWNlaXZlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEdXJhdGlvbnMoc3RhdGlzdGljcy52aWRlby50aW1lc3RhbXAgLSB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNWaWRlb1N0YXRpc3RpYy50aW1lc3RhbXApLnRvSXNvU3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjVmlkZW9TdGF0aXN0aWMgPSBzdGF0aXN0aWNzLnZpZGVvO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9ySXNPbkxpbmUpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLk9mZmxpbmU7XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodmlkZW9UcmFja0ZhaWxlZCB8fCBhdWRpb1RyYWNrRmFpbGVkKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCByZXRyeUNhbGxiYWNrID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBydGNDb25uZWN0aW9uTW9uaXRvci5kaXNwb3NlKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX2hhbmRsZVN0cmVhbUZhaWx1cmUoKVxuICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1slc10gRmFpbGVkIGhhbmRsaW5nIHN0cmVhbSBmYWlsdXJlIGFmdGVyIHRyYWNrIHN0b3BwZWQgd2l0aCBzdGF0ZSBbJXNdJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgIHRoaXMucmVjb25uZWN0UGVlckNvbm5lY3Rpb24odGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIHBlZXJDb25uZWN0aW9uLCByZXRyeUNhbGxiYWNrKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSAwO1xuXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgIT09IENoYW5uZWxTdGF0ZS5SZWNvbm5lY3RpbmcgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgIT09IENoYW5uZWxTdGF0ZS5PZmZsaW5lKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID8gQ2hhbm5lbFN0YXRlLlBsYXlpbmcgOiBDaGFubmVsU3RhdGUuUGF1c2VkO1xuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgc3RhdGUgcmVzdG9yZWQgdG8gWyVzXSBhZnRlciByZWNvbm5lY3RpbmcnLCBDaGFubmVsU3RhdGVbdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWVdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChydGNDb25uZWN0aW9uTW9uaXRvclN0YXRpc3RpY1N1YnNjcmlwdGlvbik7XG5cbiAgICAgICAgICAgICAgaWYgKCFTREsuYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9NdXRlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuUGF1c2VkO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHBsYXlNZWRpYVN0cmVhbUluVmlkZW9FbGVtZW50KG1lZGlhU3RyZWFtKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGFwcGx5UnRjQ29uZmlndXJhdGlvbihcbiAgICBvcHRpb25hbFBlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb24gfCBudWxsLFxuICAgIHJ0Y0NvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24pOiBQcm9taXNlPElQZWVyQ29ubmVjdGlvbj4ge1xuICAgIGlmICghb3B0aW9uYWxQZWVyQ29ubmVjdGlvbikge1xuICAgICAgcnRjQ29uZmlndXJhdGlvbiA9IFJ0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyLnRydW5jYXRlSWNlU2VydmVycyhydGNDb25maWd1cmF0aW9uKTtcblxuICAgICAgcmV0dXJuIFNESy5wZWVyQ29ubmVjdGlvbkZhY3RvcnkudmFsdWUuY3JlYXRlUGVlckNvbm5lY3Rpb24ocnRjQ29uZmlndXJhdGlvbik7XG4gICAgfVxuXG4gICAgY29uc3QgbmV3UnRjQ29uZmlndXJhdGlvbiA9IHtcbiAgICAgIC4uLm9wdGlvbmFsUGVlckNvbm5lY3Rpb24uZ2V0Q29uZmlndXJhdGlvbigpLFxuICAgICAgLi4ucnRjQ29uZmlndXJhdGlvblxuICAgIH07XG5cbiAgICBvcHRpb25hbFBlZXJDb25uZWN0aW9uLnNldENvbmZpZ3VyYXRpb24obmV3UnRjQ29uZmlndXJhdGlvbik7XG5cbiAgICByZXR1cm4gb3B0aW9uYWxQZWVyQ29ubmVjdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb25uZWN0UGVlckNvbm5lY3Rpb24oc3RyZWFtSWQ6IHN0cmluZywgcGVlckNvbm5lY3Rpb246IElQZWVyQ29ubmVjdGlvbiwgcmV0cnlDYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIGlmICghU0RLLmFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIS5pc0ZvcmVncm91bmQudmFsdWUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygnWyVzXSBTa2lwcGluZyBwZWVyQ29ubmVjdGlvbiByZWNvbm5lY3Rpb24gYXR0ZW1wdCB3aGlsZSBub3QgaW4gZm9yZWdyb3VuZCAocGVlckNvbm5lY3Rpb24gc3RhdGUgWyVzXSknLCBzdHJlYW1JZCwgcGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUgPT09ICdjbG9zZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3dpdGNoICh0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSkge1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuUGF1c2VkOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuU3RvcHBlZDpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlVuYXV0aG9yaXplZDpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkdlb1Jlc3RyaWN0ZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5HZW9CbG9ja2VkOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuVW5zdXBwb3J0ZWRGZWF0dXJlOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yOlxuICAgICAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ1slc10gU2tpcHBpbmcgcGVlckNvbm5lY3Rpb24gcmVjb25uZWN0aW9uIGluIGRlbGliZXJhdGVseS10ZXJtaW5hbCBzdGF0ZSBbJXNdJywgc3RyZWFtSWQsIENoYW5uZWxTdGF0ZVt0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZV0pO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlJlY29ubmVjdGluZztcblxuICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA8IFNESy5tYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzIHx8ICFTREsuYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cysrO1xuXG4gICAgICBjb25zdCBpc0NsaWVudE9mZmVyRmxvdyA9IHBlZXJDb25uZWN0aW9uLmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uPy50eXBlID09PSAnb2ZmZXInO1xuXG4gICAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuY2xpZW50T2ZmZXJEaXNhYmxlZCB8fFxuICAgICAgICAhcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNTZXRDb25maWd1cmF0aW9uIHx8XG4gICAgICAgICFwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c0dldENvbmZpZ3VyYXRpb24gfHxcbiAgICAgICAgIWlzQ2xpZW50T2ZmZXJGbG93XG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUmVjb25uZWN0aW5nIHBlZXIgY29ubmVjdGlvbiBieSByZXN0YXJ0aW5nIElDRScpO1xuXG4gICAgICBjb25zdCBjdXJyZW50TG9jYWxEZXNjcmlwdGlvbiA9IHBlZXJDb25uZWN0aW9uLmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uO1xuICAgICAgY29uc3QgaWdub3JlZCA9IHBlZXJDb25uZWN0aW9uLmNyZWF0ZU9mZmVyKHtpY2VSZXN0YXJ0OiB0cnVlfSkudGhlbihvZmZlciA9PiB7XG4gICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKS50aGVuKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihjdXJyZW50TG9jYWxEZXNjcmlwdGlvbik7XG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHJlY29ubmVjdCBwZWVyIGNvbm5lY3Rpb24nLCBlKTtcbiAgICAgICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDA7XG4gICAgICAgICAgcmV0cnlDYWxsYmFjaygpO1xuICAgICAgICB9KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdGYWlsZWQgdG8gcmVjb25uZWN0IHBlZXIgY29ubmVjdGlvbiBhZnRlciBbJXNdIGF0dGVtcHRzLCBwZXJmb3JtaW5nIGZ1bGwgcmVjb3ZlcnknLCB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyk7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSAwO1xuICAgIHJldHJ5Q2FsbGJhY2soKTtcbiAgfVxuXG4gIGlzU3RyZWFtSGVhbHRoeSgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB2aWRlb0VsZW1lbnQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWU7XG5cbiAgICBpZiAoIXZpZGVvRWxlbWVudCkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShmYWxzZSk7XG4gICAgfVxuXG4gICAgY29uc3QgbWVkaWFTdHJlYW0gPSB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWU7XG4gICAgY29uc3QgaGFzQWN0aXZlVHJhY2tzID0gbWVkaWFTdHJlYW0/LmdldFRyYWNrcygpLnNvbWUodHJhY2sgPT4gdHJhY2sucmVhZHlTdGF0ZSA9PT0gJ2xpdmUnKSA/PyBmYWxzZTtcblxuICAgIGlmICh2aWRlb0VsZW1lbnQucGF1c2VkIHx8ICFoYXNBY3RpdmVUcmFja3MpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZmFsc2UpO1xuICAgIH1cblxuICAgIHJldHVybiBWaWRlb0ZyYW1lRGV0ZWN0b3IuaXNSZW5kZXJpbmdGcmFtZXModmlkZW9FbGVtZW50KTtcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1c1RvQ2hhbm5lbFN0YXR1cyhzdGF0dXM6IFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzKTogQ2hhbm5lbFN0YXRlIHtcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSAnb2snOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLlN0YXJ0aW5nO1xuICAgICAgY2FzZSAndW5hdXRob3JpemVkJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5VbmF1dGhvcml6ZWQ7XG4gICAgICBjYXNlICdub3QtZm91bmQnOlxuICAgICAgY2FzZSAnY2FwYWNpdHknOlxuICAgICAgY2FzZSAncmF0ZS1saW1pdGVkJzpcbiAgICAgIGNhc2UgJ3RpbWVvdXQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLlJlY292ZXJpbmc7XG4gICAgICBjYXNlICdmYWlsZWQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLkVycm9yO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoc3RhdHVzKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7SVN0cmVhbVN1YnNjcmliZXJ9IGZyb20gJy4vSVN0cmVhbVN1YnNjcmliZXInO1xuaW1wb3J0IEVkZ2VBdXRoUGFyc2VyIGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VkZ2VBdXRoUGFyc2VyJztcbmltcG9ydCBSZWFsVGltZVN0cmVhbVN1YnNjcmliZXIgZnJvbSAnLi9SZWFsVGltZVN0cmVhbVN1YnNjcmliZXInO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBDaGFubmVsU3RhdGUgZnJvbSAnLi4vY2hhbm5lbHMvQ2hhbm5lbFN0YXRlJztcbmltcG9ydCBDaGFubmVsQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L0NoYW5uZWxDb250ZXh0JztcbmltcG9ydCBQZWVyQ29ubmVjdGlvbkNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9QZWVyQ29ubmVjdGlvbkNvbnRleHQnO1xuaW1wb3J0IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9TdHJlYW1UcmFuc2Zvcm1Db250ZXh0JztcbmltcG9ydCBGcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L0ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVhbFRpbWVTdHJlYW1TdWJzY3JpYmVyRmFjdG9yeSB7XG4gIHByaXZhdGUgc3RhdGljIF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignU3RyZWFtaW5nJyk7XG5cbiAgc3RhdGljIGNyZWF0ZSh0b2tlbjogc3RyaW5nLCBjaGFubmVsQ29udGV4dDogQ2hhbm5lbENvbnRleHQsIHBlZXJDb25uZWN0aW9uQ29udGV4dDogUGVlckNvbm5lY3Rpb25Db250ZXh0LCBzdHJlYW1UcmFuc2Zvcm1Db250ZXh0OiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0LCBmcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dDogRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQsIGhhbmRsZVN0cmVhbUZhaWx1cmU6ICgpID0+IFByb21pc2U8dm9pZD4pOiBJU3RyZWFtU3Vic2NyaWJlciB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgdG9rZW5DYXBhYmlsaXRpZXMgPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKHRva2VuKS5jYXBhYmlsaXRpZXM7XG5cbiAgICBpZiAodG9rZW5DYXBhYmlsaXRpZXMuaW5jbHVkZXMoJ29uLWRlbWFuZCcpKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ1RoaXMgYnVpbGQgZG9lcyBub3Qgc3VwcG9ydCBPbi1EZW1hbmQgU3RyZWFtIHBsYXliYWNrLicpO1xuICAgICAgY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuVW5zdXBwb3J0ZWRGZWF0dXJlO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRva2VuQ2FwYWJpbGl0aWVzLmluY2x1ZGVzKCdzdHJlYW1pbmcnKSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdUaGlzIGJ1aWxkIGRvZXMgbm90IHN1cHBvcnQgTGl2ZSBTdHJlYW0gcGxheWJhY2suJyk7XG4gICAgICBjaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5VbnN1cHBvcnRlZEZlYXR1cmU7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFJlYWxUaW1lU3RyZWFtU3Vic2NyaWJlcihjaGFubmVsQ29udGV4dCwgcGVlckNvbm5lY3Rpb25Db250ZXh0LCBzdHJlYW1UcmFuc2Zvcm1Db250ZXh0LCBmcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCwgaGFuZGxlU3RyZWFtRmFpbHVyZSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlYWxUaW1lU3RyZWFtU3Vic2NyaWJlckZhY3RvcnkgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi8uLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5cbmNvbnN0IGRldGVjdGlvblRpbWVvdXRJbk1pbGxpc2Vjb25kcyA9IDEwMDA7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZpZGVvRnJhbWVEZXRlY3RvciB7XG4gIHByaXZhdGUgc3RhdGljIF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignVmlkZW9GcmFtZURldGVjdG9yJyk7XG5cbiAgcHVibGljIHN0YXRpYyBpc1JlbmRlcmluZ0ZyYW1lcyh2aWRlb0VsZW1lbnQ6IEhUTUxWaWRlb0VsZW1lbnQpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAoIUZlYXR1cmVFbmFibGVtZW50LmlzUmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFja1N1cHBvcnRlZCkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdyZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrIG5vdCBzdXBwb3J0ZWQsIGFzc3VtaW5nIHJlbmRlcmluZycpO1xuXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRydWUpO1xuICAgIH1cblxuICAgIGlmICghRmVhdHVyZUVuYWJsZW1lbnQuaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVTdXBwb3J0ZWQpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygncmVxdWVzdEFuaW1hdGlvbkZyYW1lIG5vdCBzdXBwb3J0ZWQsIGFzc3VtaW5nIHJlbmRlcmluZycpO1xuXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRydWUpO1xuICAgIH1cblxuICAgIC8vIE9uIGRlc2t0b3AgYnJvd3NlcnMsIHRoZSByZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrIHZzIHJlcXVlc3RBbmltYXRpb25GcmFtZSByYWNlXG4gICAgLy8gcHJvZHVjZXMgZmFsc2UgbmVnYXRpdmVzIGFmdGVyIHJldHVybmluZyBmcm9tIGEgYmFja2dyb3VuZCB0YWIuIFRoZSB2aWRlbyBjb21wb3NpdG9yXG4gICAgLy8gaXMgaW5hY3RpdmUgd2hpbGUgdGhlIHRhYiBpcyBoaWRkZW4sIHNvIHJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2sgZG9lcyBub3QgZmlyZVxuICAgIC8vIHByb21wdGx5IGFmdGVyIGZvcmVncm91bmRpbmcg4oCUIHJlcXVlc3RBbmltYXRpb25GcmFtZSB3aW5zIHRoZSByYWNlIGV2ZW4gd2hlbiB0aGVcbiAgICAvLyBzdHJlYW0gaXMgaGVhbHRoeS4gVGhpcyBjYXVzZXMgdGhlIGZvcmVncm91bmQgaGVhbHRoIGNoZWNrIHRvIHRyaWdnZXIgdW5uZWNlc3NhcnlcbiAgICAvLyBSZWNvdmVyaW5nIHRyYW5zaXRpb25zLiBPbiBtb2JpbGUsIGJyb3dzZXJzIGFyZSBtb3JlIGFnZ3Jlc3NpdmUgYWJvdXQgcGF1c2luZyBvclxuICAgIC8vIGRlc3Ryb3lpbmcgYmFja2dyb3VuZCBtZWRpYSBwaXBlbGluZXMsIG1ha2luZyBmcmFtZS1sZXZlbCBzdGFsbCBkZXRlY3Rpb24gdmFsdWFibGVcbiAgICAvLyBkZXNwaXRlIHRoZSByYWNlIHJpc2suIERlc2t0b3Agc3RyZWFtcyByZWx5IG9uIHRoZSBSVEMgY29ubmVjdGlvbiBtb25pdG9yJ3NcbiAgICAvLyBieXRlcy1yZWNlaXZlZCBzdGF0cyB0byBkZXRlY3QgZ2VudWluZSBzdGFsbHMgaW5zdGVhZC5cbiAgICBpZiAoIUZlYXR1cmVFbmFibGVtZW50LmlzTW9iaWxlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ1NraXBwaW5nIGZyYW1lIGRldGVjdGlvbiBvbiBkZXNrdG9wLCBhc3N1bWluZyByZW5kZXJpbmcnKTtcblxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuXG4gICAgLy8gRGV0ZWN0IHdoZXRoZXIgdGhlIHZpZGVvIGVsZW1lbnQgaXMgYWN0aXZlbHkgcmVuZGVyaW5nIGRlY29kZWQgZnJhbWVzIGJ5IHJlcXVlc3RpbmdcbiAgICAvLyBib3RoIGEgdmlkZW8gZnJhbWUgY2FsbGJhY2sgYW5kIGFuIGFuaW1hdGlvbiBmcmFtZSBjYWxsYmFjayBzaW11bHRhbmVvdXNseS5cbiAgICAvLyBXaGVuIHRoZSBzdHJlYW0gaXMgaGVhbHRoeSwgcmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayBmaXJlcyBmaXJzdCBiZWNhdXNlIGEgZGVjb2RlZFxuICAgIC8vIGZyYW1lIGlzIGF2YWlsYWJsZSBmb3IgcHJlc2VudGF0aW9uLiBXaGVuIHRoZSBzdHJlYW0gaXMgc3RhbGxlZCwgb25seVxuICAgIC8vIHJlcXVlc3RBbmltYXRpb25GcmFtZSBmaXJlcyBwcm9tcHRseSBiZWNhdXNlIGl0IGlzIGRyaXZlbiBieSB0aGUgZGlzcGxheSByZWZyZXNoXG4gICAgLy8gY3ljbGUgcmVnYXJkbGVzcyBvZiB2aWRlbyBzdGF0ZS5cbiAgICAvLyBBIGZhbHNlIG5lZ2F0aXZlIChyZXF1ZXN0QW5pbWF0aW9uRnJhbWUgd2lubmluZyBkZXNwaXRlIGFjdGl2ZSByZW5kZXJpbmcpIGlzIHBvc3NpYmxlXG4gICAgLy8gd2hlbiBib3RoIGNhbGxiYWNrcyBsYW5kIG9uIHRoZSBzYW1lIGZyYW1lLCBidXQgaXMgYm91bmRlZCB0byBhIHNpbmdsZSB1bm5lY2Vzc2FyeVxuICAgIC8vIHJlc3RhcnQuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPGJvb2xlYW4+KHJlc29sdmUgPT4ge1xuICAgICAgbGV0IHJlc29sdmVkID0gZmFsc2U7XG4gICAgICBjb25zdCB0aW1lb3V0SWQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKCFyZXNvbHZlZCkge1xuICAgICAgICAgIHJlc29sdmVkID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnRnJhbWUgZGV0ZWN0aW9uIHRpbWVkIG91dCBhZnRlciBbJXNdIG1zLCBhc3N1bWluZyByZW5kZXJpbmcnLCBkZXRlY3Rpb25UaW1lb3V0SW5NaWxsaXNlY29uZHMpO1xuXG4gICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSwgZGV0ZWN0aW9uVGltZW91dEluTWlsbGlzZWNvbmRzKTtcblxuICAgICAgdmlkZW9FbGVtZW50LnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgICBpZiAoIXJlc29sdmVkKSB7XG4gICAgICAgICAgcmVzb2x2ZWQgPSB0cnVlO1xuICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygnVmlkZW8gZnJhbWUgcmVuZGVyZWQgd2l0aGluIFslc10gbXMg4oCUIHN0cmVhbSBpcyBoZWFsdGh5JywgRGF0ZS5ub3coKSAtIHN0YXJ0VGltZSk7XG5cbiAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgLy8gSWYgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGZpcmVzIGJlZm9yZSByZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrLCBubyB2aWRlbyBmcmFtZXNcbiAgICAgIC8vIGFyZSBiZWluZyBkZWNvZGVkIOKAlCB0aGUgc3RyZWFtIGlzIHN0YWxsZWQuXG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBpZiAoIXJlc29sdmVkKSB7XG4gICAgICAgICAgcmVzb2x2ZWQgPSB0cnVlO1xuICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygnTm8gdmlkZW8gZnJhbWUgcmVuZGVyZWQgd2l0aGluIFslc10gbXMg4oCUIHN0cmVhbSBpcyBzdGFsbGVkJywgRGF0ZS5ub3coKSAtIHN0YXJ0VGltZSk7XG5cbiAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZpZGVvRnJhbWVEZXRlY3RvciBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi8uLi9sYW5nL0lEaXNwb3NhYmxlJztcbmltcG9ydCB7QXVkaW9Db2RlY30gZnJvbSAnLi4vZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9BdWRpb0NvZGVjJztcbmltcG9ydCB7VmlkZW9Db2RlY30gZnJvbSAnLi4vZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9WaWRlb0NvZGVjJztcbmltcG9ydCB7SUVuY29kZWRTdHJlYW1TaW5rfSBmcm9tICcuL0VuY29kZWRTdHJlYW1TaW5rJztcbmltcG9ydCB7U3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrfSBmcm9tICcuLi9jb250ZXh0L1N0cmVhbVRyYW5zZm9ybUNvbnRleHQnO1xuaW1wb3J0IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIsIHtTdXJyb2dhdGVGcmFtZVR5cGUsIFNraXBGcmFtZX0gZnJvbSAnLi9TdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyJztcbmltcG9ydCB7VHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlfSBmcm9tICcuL3dvcmtlci9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2UnO1xuaW1wb3J0IENodW5rIGZyb20gJy4vQ2h1bmsnO1xuXG5leHBvcnQgdHlwZSBFbmNvZGVkTWVkaWFUcmFuc2Zvcm1NYW5hZ2VyQ29udGV4dCA9IHtcbiAgdmlkZW9UcmFjazogU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrO1xuICBhdWRpb1RyYWNrOiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0VHJhY2s7XG4gIGVuY29kZWRWaWRlb1N0cmVhbVNpbms6IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkVmlkZW9GcmFtZT47XG4gIGVuY29kZWRBdWRpb1N0cmVhbVNpbms6IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkQXVkaW9GcmFtZT47XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFbmNvZGVkTWVkaWFUcmFuc2Zvcm1NYW5hZ2VyIGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcblxuICBjb25zdHJ1Y3Rvcihjb250ZXh0OiBFbmNvZGVkTWVkaWFUcmFuc2Zvcm1NYW5hZ2VyQ29udGV4dCkge1xuICAgIHRoaXMuaW5pdGlhbGl6ZShjb250ZXh0KTtcbiAgfVxuXG4gIHB1YmxpYyBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZShjb250ZXh0OiBFbmNvZGVkTWVkaWFUcmFuc2Zvcm1NYW5hZ2VyQ29udGV4dCk6IHZvaWQge1xuICAgIGlmIChjb250ZXh0LnZpZGVvVHJhY2subWVkaWFTdHJlYW1UcmFjaykge1xuICAgICAgY29udGV4dC52aWRlb1RyYWNrLnRyYW5zZm9ybUZ1bmN0aW9uTmFtZXMucHVzaCgncHJvdGVjdGVkLXZpZGVvJyk7XG5cbiAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChjb250ZXh0LnZpZGVvVHJhY2sudHJhbnNmb3JtTWVzc2FnZVJvdXRlciEucmVnaXN0ZXJSb3V0ZShUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUuRW5jb2RlZFZpZGVvQ2h1bmssIChjaHVuazogUlRDRW5jb2RlZFZpZGVvRnJhbWUpID0+IHRoaXMuZW5jb2RlZFZpZGVvU3RyZWFtQ2FsbGJhY2soY29udGV4dC52aWRlb1RyYWNrLCBjb250ZXh0LmVuY29kZWRWaWRlb1N0cmVhbVNpbmsgYXMgSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRWaWRlb0ZyYW1lPiwgY2h1bmspKSk7XG4gICAgfVxuXG4gICAgaWYgKGNvbnRleHQuYXVkaW9UcmFjay5tZWRpYVN0cmVhbVRyYWNrKSB7XG4gICAgICBjb250ZXh0LmF1ZGlvVHJhY2sudHJhbnNmb3JtRnVuY3Rpb25OYW1lcy5wdXNoKCdwcm90ZWN0ZWQtYXVkaW8nKTtcblxuICAgICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKGNvbnRleHQuYXVkaW9UcmFjay50cmFuc2Zvcm1NZXNzYWdlUm91dGVyIS5yZWdpc3RlclJvdXRlKFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZS5FbmNvZGVkQXVkaW9DaHVuaywgKGNodW5rOiBSVENFbmNvZGVkQXVkaW9GcmFtZSkgPT4gdGhpcy5lbmNvZGVkQXVkaW9TdHJlYW1DYWxsYmFjayhjb250ZXh0LmF1ZGlvVHJhY2ssIGNvbnRleHQuZW5jb2RlZEF1ZGlvU3RyZWFtU2luayBhcyBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+LCBjaHVuaykpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGVuY29kZWRBdWRpb1N0cmVhbUNhbGxiYWNrKHRyYWNrOiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0VHJhY2ssIGVuY29kZWRBdWRpb1N0cmVhbVNpbms6IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkQXVkaW9GcmFtZT4sIGNodW5rOiBSVENFbmNvZGVkQXVkaW9GcmFtZSk6IFByb21pc2U8Q2h1bms+IHtcbiAgICBpZiAoIWF3YWl0IGVuY29kZWRBdWRpb1N0cmVhbVNpbmsodHJhY2subWVkaWFTdHJlYW1UcmFjayEsIGNodW5rKSkge1xuICAgICAgY2h1bmsuZGF0YSA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuZ2V0SW52YWxpZFN1cnJvZ2F0ZUF1ZGlvRGF0YSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjaHVuay5kYXRhID0gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5nZXRTdXJyb2dhdGVBdWRpb1NpbGVudFBlckNvZGVjKHRyYWNrLmNvZGVjIGFzIEF1ZGlvQ29kZWMpIHx8IGNodW5rLmRhdGE7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNodW5rIGFzIHVua25vd24gYXMgQ2h1bms7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGVuY29kZWRWaWRlb1N0cmVhbUNhbGxiYWNrKHRyYWNrOiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0VHJhY2ssIGVuY29kZWRWaWRlb1N0cmVhbVNpbms6IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkVmlkZW9GcmFtZT4sIGNodW5rOiBSVENFbmNvZGVkVmlkZW9GcmFtZSk6IFByb21pc2U8Q2h1bmsgfCB1bmRlZmluZWQ+IHtcbiAgICBpZiAoIWF3YWl0IGVuY29kZWRWaWRlb1N0cmVhbVNpbmsodHJhY2subWVkaWFTdHJlYW1UcmFjayEsIGNodW5rKSkge1xuICAgICAgbGV0IHN1cnJvZ2F0ZTogU3Vycm9nYXRlRnJhbWVUeXBlO1xuXG4gICAgICBpZiAoY2h1bmsudHlwZSA9PT0gJ2tleScpIHtcbiAgICAgICAgc3Vycm9nYXRlID0gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5nZXRJbnZhbGlkU3Vycm9nYXRlVmlkZW9JRnJhbWUodHJhY2suY29kZWMgYXMgVmlkZW9Db2RlYyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdXJyb2dhdGUgPSBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLmdldEludmFsaWRTdXJyb2dhdGVWaWRlb1BGcmFtZSgpO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3Vycm9nYXRlID09PSBTa2lwRnJhbWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjaHVuay5kYXRhID0gc3Vycm9nYXRlIHx8IGNodW5rLmRhdGE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChjaHVuay50eXBlID09PSAna2V5Jykge1xuICAgICAgICBjaHVuay5kYXRhID0gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5nZXRTdXJyb2dhdGVWaWRlb0lGcmFtZVBlckNvZGVjKHRyYWNrLmNvZGVjIGFzIFZpZGVvQ29kZWMpIHx8IGNodW5rLmRhdGE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjaHVuay5kYXRhID0gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5nZXRTdXJyb2dhdGVWaWRlb1BGcmFtZVBlckNvZGVjKHRyYWNrLmNvZGVjIGFzIFZpZGVvQ29kZWMpIHx8IGNodW5rLmRhdGE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNodW5rO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIElFbmNvZGVkU3RyZWFtU2luazxUIGV4dGVuZHMgUlRDRW5jb2RlZEF1ZGlvRnJhbWUgfCBSVENFbmNvZGVkVmlkZW9GcmFtZT4ge1xuICAgICh0cmFjazogTWVkaWFTdHJlYW1UcmFjaywgY2h1bms6IFQpOiBib29sZWFuIHwgUHJvbWlzZUxpa2U8Ym9vbGVhbj47XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVuY29kZWRTdHJlYW1TaW5rIHtcbiAgc3RhdGljIHZhbGlkYXRlRW5jb2RlZFN0cmVhbVNpbms8VCBleHRlbmRzIFJUQ0VuY29kZWRBdWRpb0ZyYW1lIHwgUlRDRW5jb2RlZFZpZGVvRnJhbWU+KG1vZGU6ICdhdWRpbycgfCAndmlkZW8nLCBpdGVtOiBJRW5jb2RlZFN0cmVhbVNpbms8VD4pIHtcbiAgICBpZiAodHlwZW9mIGl0ZW0gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgdmFsaWRhdGlvblJlc3VsdDogYFVuZXhwZWN0ZWQgJHttb2RlfSBFbmNvZGVkIFN0cmVhbSBTaW5rIGZ1bmN0aW9uIHR5cGUuIEZvdW5kIFske3R5cGVvZiBpdGVtfV1gXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChpdGVtLmxlbmd0aCAhPT0gMikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICB2YWxpZGF0aW9uUmVzdWx0OiBgVW5leHBlY3RlZCAke21vZGV9IEVuY29kZWQgU3RyZWFtIFNpbmsgZnVuY3Rpb24gcGFyYW1ldGVyIGxlbmd0aC4gRXhwZWN0ZWQgMi4gRm91bmQgWyR7aXRlbS5sZW5ndGh9XWBcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgdmFsaWRhdGlvblJlc3VsdDogJ29rJ1xuICAgIH07XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0VuY29kZWRTdHJlYW1TaW5rIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi8uLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5pbXBvcnQge0lTdHJlYW1UcmFja1RyYW5zZm9ybX0gZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vU3RyZWFtVHJhY2tUcmFuc2Zvcm0nO1xuaW1wb3J0IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQsIHtTdHJlYW1UcmFuc2Zvcm1Db250ZXh0VHJhY2t9IGZyb20gJy4uL2NvbnRleHQvU3RyZWFtVHJhbnNmb3JtQ29udGV4dCc7XG5pbXBvcnQgVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIgZnJvbSAnLi93b3JrZXIvVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmUud29ya2VyJztcbmltcG9ydCB7VHJhbnNmb3JtTWVzc2FnZVR5cGV9IGZyb20gJy4vd29ya2VyL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZSc7XG5pbXBvcnQgVHJhbnNmb3JtTWVzc2FnZVJvdXRlciBmcm9tICcuL3dvcmtlci9NZXNzYWdlUm91dGVyJztcblxudHlwZSBNZWRpYVN0cmVhbVRyYWNrS2luZCA9ICd2aWRlbycgfCAnYXVkaW8nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJbnNlcnRhYmxlU3RyZWFtcyB7XG4gIHN0YXRpYyBjcmVhdGVFbmNvZGVkU3RyZWFtUGlwZWxpbmUoc3RyZWFtVHJhbnNmb3JtQ29udGV4dDogU3RyZWFtVHJhbnNmb3JtQ29udGV4dCk6IERpc3Bvc2FibGVMaXN0IHtcbiAgICBjb25zdCBkaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgICBjb25zdCB7dmlkZW9UcmFjaywgYXVkaW9UcmFja30gPSBzdHJlYW1UcmFuc2Zvcm1Db250ZXh0O1xuICAgIGNvbnN0IGNyZWF0ZVRyYW5zZm9ybVBpcGVsaW5lV29ya2VyRm9yVHJhY2sgPSAoY29udGV4dDogU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrKSA9PiB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAvLyBAdHMtaWdub3JlIC0gVXNpbmcgV2VicGFjaydzIHdvcmtlciBsb2FkZXIgdG8gaW5saW5lIHdvcmtlclxuICAgICAgY29uc3Qgd29ya2VyID0gY29udGV4dC50cmFuc2Zvcm1QaXBlbGluZVdvcmtlciA9IG5ldyBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlcigpO1xuXG4gICAgICBkaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gd29ya2VyLnRlcm1pbmF0ZSgpKSk7XG4gICAgICBkaXNwb3NhYmxlcy5hZGQoY29udGV4dC50cmFuc2Zvcm1NZXNzYWdlUm91dGVyID0gbmV3IFRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXIod29ya2VyKSk7XG4gICAgfTtcblxuICAgIGNvbnN0IHtyZWNlaXZlcjogdmlkZW9UcmFja1JlY2VpdmVyLCBtZWRpYVN0cmVhbVRyYWNrOiB2aWRlb1RyYWNrTWVkaWFTdHJlYW1UcmFja30gPSB2aWRlb1RyYWNrO1xuXG4gICAgaWYgKHZpZGVvVHJhY2tSZWNlaXZlciAmJiB2aWRlb1RyYWNrTWVkaWFTdHJlYW1UcmFjaykge1xuICAgICAgY3JlYXRlVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXJGb3JUcmFjayh2aWRlb1RyYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCB7cmVjZWl2ZXI6IGF1ZGlvVHJhY2tSZWNlaXZlciwgbWVkaWFTdHJlYW1UcmFjazogYXVkaW9UcmFja01lZGlhU3RyZWFtVHJhY2t9ID0gYXVkaW9UcmFjaztcblxuICAgIGlmIChhdWRpb1RyYWNrUmVjZWl2ZXIgJiYgYXVkaW9UcmFja01lZGlhU3RyZWFtVHJhY2spIHtcbiAgICAgIGNyZWF0ZVRyYW5zZm9ybVBpcGVsaW5lV29ya2VyRm9yVHJhY2soYXVkaW9UcmFjayk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRpc3Bvc2FibGVzO1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGNvbmZpZ3VyZUVuY29kZWRTdHJlYW1QaXBlbGluZShzdHJlYW1UcmFuc2Zvcm1Db250ZXh0OiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qge3ZpZGVvVHJhY2ssIGF1ZGlvVHJhY2t9ID0gc3RyZWFtVHJhbnNmb3JtQ29udGV4dDtcbiAgICBjb25zdCBhZGRUcmFja1RyYW5zZm9ybXMgPSAodHJhY2s6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHRUcmFjaykgPT4ge1xuICAgICAgaWYgKHRyYWNrLnRyYW5zZm9ybVBpcGVsaW5lV29ya2VyKSB7XG4gICAgICAgIGlmICh0cmFjay50cmFuc2Zvcm1GdW5jdGlvbk5hbWVzLmxlbmd0aCkge1xuICAgICAgICAgIGZvciAoY29uc3QgdHJhbnNmb3JtRnVuY3Rpb25OYW1lIG9mIHRyYWNrLnRyYW5zZm9ybUZ1bmN0aW9uTmFtZXMpIHtcbiAgICAgICAgICAgIHRyYWNrLnRyYW5zZm9ybVBpcGVsaW5lV29ya2VyLnBvc3RNZXNzYWdlKHtcbiAgICAgICAgICAgICAgdHlwZTogVHJhbnNmb3JtTWVzc2FnZVR5cGUuQWRkVHJhbnNmb3JtLFxuICAgICAgICAgICAgICBkYXRhOiB0cmFuc2Zvcm1GdW5jdGlvbk5hbWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBSZXF1aXJlZCBmb3Igc2FmYXJpIHRvIHByb3Blcmx5IHdvcmsgd2hlbiBvbmx5IHZpZGVvIHRyYW5zZm9ybWF0aW9uIGlzIGFkZGVkIChpLmUuIEZyYW1lVGltaW5nSW5mb3JtYXRpb24pXG4gICAgICAgICAgdHJhY2sudHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIucG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgdHlwZTogVHJhbnNmb3JtTWVzc2FnZVR5cGUuQWRkVHJhbnNmb3JtLFxuICAgICAgICAgICAgZGF0YTogJ3Bhc3MtdGhyb3VnaCdcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBhZGRUcmFja1RyYW5zZm9ybXModmlkZW9UcmFjayk7XG4gICAgYWRkVHJhY2tUcmFuc2Zvcm1zKGF1ZGlvVHJhY2spO1xuXG4gICAgY29uc3QgY29uZmlndXJlUlRDUnRwU2NyaXB0VHJhbnNmb3JtID0gYXN5bmMoc3RyZWFtVHJhbnNmb3JtQ29udGV4dDogU3RyZWFtVHJhbnNmb3JtQ29udGV4dCkgPT4ge1xuICAgICAgLy8gU2FmYXJpIGFuZCBGaXJlZm94IC4uLlxuICAgICAgY29uc3QgY29uZmlndXJlUlRDUnRwU2NyaXB0VHJhbnNmb3JtRm9yVHJhY2sgPSBhc3luYyhjb250ZXh0OiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0VHJhY2spID0+IHtcbiAgICAgICAgY29uc3Qge3JlY2VpdmVyOiB0cmFja1JlY2VpdmVyLCBtZWRpYVN0cmVhbVRyYWNrOiB0cmFja01lZGlhU3RyZWFtVHJhY2ssIHRyYW5zZm9ybVBpcGVsaW5lV29ya2VyOiB0cmFja1RyYW5zZm9ybVBpcGVsaW5lV29ya2VyfSA9IGNvbnRleHQ7XG5cbiAgICAgICAgaWYgKHRyYWNrUmVjZWl2ZXIgJiYgdHJhY2tNZWRpYVN0cmVhbVRyYWNrICYmIHRyYWNrVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIpIHtcbiAgICAgICAgICB0cmFja1JlY2VpdmVyLnRyYW5zZm9ybSA9IG5ldyBSVENSdHBTY3JpcHRUcmFuc2Zvcm0odHJhY2tUcmFuc2Zvcm1QaXBlbGluZVdvcmtlciwge25hbWU6IGAke3RyYWNrTWVkaWFTdHJlYW1UcmFjay5raW5kfS10cmFuc2Zvcm0tcGlwZWxpbmVgfSk7XG5cbiAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4ocmVzb2x2ZSA9PiB7XG4gICAgICAgICAgICB0cmFja1RyYW5zZm9ybVBpcGVsaW5lV29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCAoe2RhdGE6IG1lc3NhZ2V9OiBNZXNzYWdlRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgaWYgKG1lc3NhZ2UudHlwZSA9PT0gVHJhbnNmb3JtTWVzc2FnZVR5cGUuUGlwZWxpbmVDb25maWd1cmVkKSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCB7b25jZTogdHJ1ZX0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgfTtcblxuICAgICAgY29uc3Qge3ZpZGVvVHJhY2ssIGF1ZGlvVHJhY2t9ID0gc3RyZWFtVHJhbnNmb3JtQ29udGV4dDtcblxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoW2NvbmZpZ3VyZVJUQ1J0cFNjcmlwdFRyYW5zZm9ybUZvclRyYWNrKHZpZGVvVHJhY2spLCBjb25maWd1cmVSVENSdHBTY3JpcHRUcmFuc2Zvcm1Gb3JUcmFjayhhdWRpb1RyYWNrKV0pO1xuICAgIH07XG5cbiAgICBjb25zdCBjb25maWd1cmVFbmNvZGVkU3RyZWFtcyA9IGFzeW5jKHN0cmVhbVRyYW5zZm9ybUNvbnRleHQ6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IGNvbmZpZ3VyZUVuY29kZWRTdHJlYW1zRm9yVHJhY2sgPSAoY29udGV4dDogU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrKSA9PiB7XG4gICAgICAgIGNvbnN0IHtyZWNlaXZlcjogdHJhY2tSZWNlaXZlciwgbWVkaWFTdHJlYW1UcmFjazogdHJhY2tNZWRpYVN0cmVhbVRyYWNrLCB0cmFuc2Zvcm1QaXBlbGluZVdvcmtlcjogdHJhY2tUcmFuc2Zvcm1QaXBlbGluZVdvcmtlcn0gPSBjb250ZXh0O1xuXG4gICAgICAgIGlmICh0cmFja1JlY2VpdmVyICYmIHRyYWNrTWVkaWFTdHJlYW1UcmFjayAmJiB0cmFja1RyYW5zZm9ybVBpcGVsaW5lV29ya2VyKSB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgICAgIC8vIEB0cy1pZ25vcmUgLSBjcmVhdGVFbmNvZGVkU3RyZWFtcyBtZXRob2QgaXMgbm90IGRlZmluZWQgaW4gbGliLmRvbS5kLnRzXG4gICAgICAgICAgY29uc3QgZW5jb2RlZFJlY2VpdmVyU3RyZWFtcyA9IHRyYWNrUmVjZWl2ZXIuY3JlYXRlRW5jb2RlZFN0cmVhbXMoKTtcblxuICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPihyZXNvbHZlID0+IHtcbiAgICAgICAgICAgIHRyYWNrVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsICh7ZGF0YTogbWVzc2FnZX06IE1lc3NhZ2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgICBpZiAobWVzc2FnZS50eXBlID09PSBUcmFuc2Zvcm1NZXNzYWdlVHlwZS5QaXBlbGluZUNvbmZpZ3VyZWQpIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIHtvbmNlOiB0cnVlfSk7XG5cbiAgICAgICAgICAgIHRyYWNrVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIucG9zdE1lc3NhZ2UoXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBUcmFuc2Zvcm1NZXNzYWdlVHlwZS5Db25maWd1cmVQaXBlbGluZSxcbiAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICBzb3VyY2U6IGVuY29kZWRSZWNlaXZlclN0cmVhbXMucmVhZGFibGUsXG4gICAgICAgICAgICAgICAgICBzaW5rOiBlbmNvZGVkUmVjZWl2ZXJTdHJlYW1zLndyaXRhYmxlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7dHJhbnNmZXI6IFtlbmNvZGVkUmVjZWl2ZXJTdHJlYW1zLnJlYWRhYmxlLCBlbmNvZGVkUmVjZWl2ZXJTdHJlYW1zLndyaXRhYmxlXX1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCB7dmlkZW9UcmFjaywgYXVkaW9UcmFja30gPSBzdHJlYW1UcmFuc2Zvcm1Db250ZXh0O1xuICAgICAgY29uc3QgYWN0aW9uczogUHJvbWlzZTx2b2lkPltdID0gW107XG5cbiAgICAgIGlmICh2aWRlb1RyYWNrLnJlY2VpdmVyICYmIHZpZGVvVHJhY2sudHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIpIHtcbiAgICAgICAgYWN0aW9ucy5wdXNoKGNvbmZpZ3VyZUVuY29kZWRTdHJlYW1zRm9yVHJhY2sodmlkZW9UcmFjaykpO1xuICAgICAgfVxuXG4gICAgICBpZiAoYXVkaW9UcmFjay5yZWNlaXZlciAmJiBhdWRpb1RyYWNrLnRyYW5zZm9ybVBpcGVsaW5lV29ya2VyKSB7XG4gICAgICAgIGFjdGlvbnMucHVzaChjb25maWd1cmVFbmNvZGVkU3RyZWFtc0ZvclRyYWNrKGF1ZGlvVHJhY2spKTtcbiAgICAgIH1cblxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoYWN0aW9ucyk7XG4gICAgfTtcblxuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5pc1JUQ1J0cFNjcmlwdFRyYW5zZm9ybVN1cHBvcnRlZCkge1xuICAgICAgLy8gU2FmYXJpIGFuZCBGaXJlZm94Li4uXG4gICAgICBhd2FpdCBjb25maWd1cmVSVENSdHBTY3JpcHRUcmFuc2Zvcm0oc3RyZWFtVHJhbnNmb3JtQ29udGV4dCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBDaHJvbWUsIENocm9taXVtLi4uXG4gICAgYXdhaXQgY29uZmlndXJlRW5jb2RlZFN0cmVhbXMoc3RyZWFtVHJhbnNmb3JtQ29udGV4dCk7XG4gIH1cblxuICBzdGF0aWMgY29uZmlndXJlSW5zZXJ0YWJsZVN0cmVhbVRyYW5zZm9ybWF0aW9uKFxuICAgIHN0cmVhbTogTWVkaWFTdHJlYW0sXG4gICAgdmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPFZpZGVvRnJhbWU+IHwgdW5kZWZpbmVkLFxuICAgIGF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IElTdHJlYW1UcmFja1RyYW5zZm9ybTxBdWRpb0RhdGE+IHwgdW5kZWZpbmVkXG4gICk6IHt0cmFuc2Zvcm1lZFN0cmVhbTogTWVkaWFTdHJlYW07IGRpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdH0ge1xuICAgIGNvbnN0IHRyYW5zZm9ybWVkU3RyZWFtID0gbmV3IE1lZGlhU3RyZWFtKCk7XG4gICAgY29uc3QgZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG5cbiAgICBzdHJlYW0uZ2V0VHJhY2tzKCkuZm9yRWFjaCh0cmFjayA9PiB7XG4gICAgICBjb25zdCBraW5kOiBNZWRpYVN0cmVhbVRyYWNrS2luZCA9IHRyYWNrLmtpbmQgYXMgTWVkaWFTdHJlYW1UcmFja0tpbmQ7XG5cbiAgICAgIHN3aXRjaCAoa2luZCkge1xuICAgICAgICBjYXNlICd2aWRlbyc6IHtcbiAgICAgICAgICBpZiAodmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaykge1xuICAgICAgICAgICAgY29uc3QgaW5zZXJ0YWJsZVN0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBUcmFuc2Zvcm1lclRyYW5zZm9ybUNhbGxiYWNrPFZpZGVvRnJhbWUsIFZpZGVvRnJhbWU+ID0gKGNodW5rLCBjb250cm9sbGVyKSA9PiB7XG4gICAgICAgICAgICAgIHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2sodHJhY2ssIGNodW5rLCBjb250cm9sbGVyKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IHZpZGVvVHJhY2sgPSB0cmFjayBhcyBNZWRpYVN0cmVhbVZpZGVvVHJhY2s7XG4gICAgICAgICAgICBjb25zdCB0cmFuc2Zvcm1lciA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oe3RyYW5zZm9ybTogaW5zZXJ0YWJsZVN0cmVhbVRyYW5zZm9ybUNhbGxiYWNrfSk7XG4gICAgICAgICAgICBjb25zdCBwcm9jZXNzb3IgPSBuZXcgTWVkaWFTdHJlYW1UcmFja1Byb2Nlc3Nvcih7dHJhY2s6IHZpZGVvVHJhY2t9KTtcbiAgICAgICAgICAgIGNvbnN0IGdlbmVyYXRvciA9IG5ldyBNZWRpYVN0cmVhbVRyYWNrR2VuZXJhdG9yKHtraW5kOiB2aWRlb1RyYWNrLmtpbmR9KTtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IHByb2Nlc3Nvci5yZWFkYWJsZTtcbiAgICAgICAgICAgIGNvbnN0IHNpbmsgPSBnZW5lcmF0b3Iud3JpdGFibGU7XG5cbiAgICAgICAgICAgIHNvdXJjZS5waXBlVGhyb3VnaCh0cmFuc2Zvcm1lcikucGlwZVRvKHNpbmspO1xuXG4gICAgICAgICAgICB0cmFuc2Zvcm1lZFN0cmVhbS5hZGRUcmFjayhnZW5lcmF0b3IpO1xuICAgICAgICAgICAgZGlzcG9zYWJsZXMuYWRkKFxuICAgICAgICAgICAgICBuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtZWRTdHJlYW0ucmVtb3ZlVHJhY2soZ2VuZXJhdG9yKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybWVkU3RyZWFtLmFkZFRyYWNrKHRyYWNrKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgJ2F1ZGlvJzoge1xuICAgICAgICAgIGlmIChhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrKSB7XG4gICAgICAgICAgICBjb25zdCBpbnNlcnRhYmxlU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IFRyYW5zZm9ybWVyVHJhbnNmb3JtQ2FsbGJhY2s8QXVkaW9EYXRhLCBBdWRpb0RhdGE+ID0gKGNodW5rLCBjb250cm9sbGVyKSA9PiB7XG4gICAgICAgICAgICAgIGF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2sodHJhY2ssIGNodW5rLCBjb250cm9sbGVyKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IGF1ZGlvVHJhY2sgPSB0cmFjayBhcyBNZWRpYVN0cmVhbUF1ZGlvVHJhY2s7XG4gICAgICAgICAgICBjb25zdCB0cmFuc2Zvcm1lciA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oe3RyYW5zZm9ybTogaW5zZXJ0YWJsZVN0cmVhbVRyYW5zZm9ybUNhbGxiYWNrfSk7XG4gICAgICAgICAgICBjb25zdCBwcm9jZXNzb3IgPSBuZXcgTWVkaWFTdHJlYW1UcmFja1Byb2Nlc3Nvcih7dHJhY2s6IGF1ZGlvVHJhY2t9KTtcbiAgICAgICAgICAgIGNvbnN0IGdlbmVyYXRvciA9IG5ldyBNZWRpYVN0cmVhbVRyYWNrR2VuZXJhdG9yKHtraW5kOiBhdWRpb1RyYWNrLmtpbmR9KTtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IHByb2Nlc3Nvci5yZWFkYWJsZTtcbiAgICAgICAgICAgIGNvbnN0IHNpbmsgPSBnZW5lcmF0b3Iud3JpdGFibGU7XG5cbiAgICAgICAgICAgIHNvdXJjZS5waXBlVGhyb3VnaCh0cmFuc2Zvcm1lcikucGlwZVRvKHNpbmspO1xuXG4gICAgICAgICAgICB0cmFuc2Zvcm1lZFN0cmVhbS5hZGRUcmFjayhnZW5lcmF0b3IpO1xuXG4gICAgICAgICAgICBjb25zdCBtZWRpYVN0cmVhbSA9IG5ldyBNZWRpYVN0cmVhbSgpO1xuICAgICAgICAgICAgY29uc3QgYXVkaW9QdW1wZXIgPSBuZXcgQXVkaW8oKTtcblxuICAgICAgICAgICAgbWVkaWFTdHJlYW0uYWRkVHJhY2sodHJhY2spO1xuICAgICAgICAgICAgYXVkaW9QdW1wZXIuc3JjT2JqZWN0ID0gbWVkaWFTdHJlYW07XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGF1ZGlvUHVtcGVyKTtcbiAgICAgICAgICAgIGRpc3Bvc2FibGVzLmFkZChcbiAgICAgICAgICAgICAgbmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybWVkU3RyZWFtLnJlbW92ZVRyYWNrKGdlbmVyYXRvcik7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChhdWRpb1B1bXBlcik7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm1lZFN0cmVhbS5hZGRUcmFjayh0cmFjayk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGtpbmQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRyYW5zZm9ybWVkU3RyZWFtLFxuICAgICAgZGlzcG9zYWJsZXNcbiAgICB9O1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnNlcnRhYmxlU3RyZWFtcyBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN0cmVhbVRyYWNrVHJhbnNmb3JtPFQgZXh0ZW5kcyBBdWRpb0RhdGEgfCBWaWRlb0ZyYW1lPiB7XG4gICAgKHRyYWNrOiBNZWRpYVN0cmVhbVRyYWNrLCBjaHVuazogVCwgY29udHJvbGxlcjogVHJhbnNmb3JtU3RyZWFtRGVmYXVsdENvbnRyb2xsZXI8VD4pOiB2b2lkIHwgUHJvbWlzZUxpa2U8dm9pZD47XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN0cmVhbVRyYWNrVHJhbnNmb3JtIHtcbiAgc3RhdGljIHZhbGlkYXRlTWVkaWFTdHJlYW1UcmFja1RyYW5zZm9ybTxUIGV4dGVuZHMgQXVkaW9EYXRhIHwgVmlkZW9GcmFtZT4obW9kZTogJ2F1ZGlvJyB8ICd2aWRlbycsIGl0ZW06IElTdHJlYW1UcmFja1RyYW5zZm9ybTxUPikge1xuICAgIGlmICh0eXBlb2YgaXRlbSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICB2YWxpZGF0aW9uUmVzdWx0OiBgVW5leHBlY3RlZCAke21vZGV9IE1lZGlhIFN0cmVhbSBUcmFjayB0cmFuc2Zvcm0gZnVuY3Rpb24gdHlwZS4gRm91bmQgWyR7dHlwZW9mIGl0ZW19XWBcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKGl0ZW0ubGVuZ3RoICE9PSAzKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgIHZhbGlkYXRpb25SZXN1bHQ6IGBVbmV4cGVjdGVkICR7bW9kZX0gTWVkaWEgU3RyZWFtIFRyYWNrIHRyYW5zZm9ybSBmdW5jdGlvbiBwYXJhbWV0ZXIgbGVuZ3RoLiBFeHBlY3RlZCAzLiBGb3VuZCBbJHtpdGVtLmxlbmd0aH1dYFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICB2YWxpZGF0aW9uUmVzdWx0OiAnb2snXG4gICAgfTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEJyb3dzZXJEZXRlY3RvciBmcm9tICcuLi8uLi9kb20vQnJvd3NlckRldGVjdG9yJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCB7QXVkaW9Db2RlY30gZnJvbSAnLi4vZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9BdWRpb0NvZGVjJztcbmltcG9ydCB7VmlkZW9Db2RlY30gZnJvbSAnLi4vZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9WaWRlb0NvZGVjJztcbmltcG9ydCBhbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSBmcm9tICcuLi9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL2gyNjQvbmFsVW5pdC9Bbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSc7XG5pbXBvcnQgc3Vycm9nYXRlSDI2NDI4eDE2SUZyYW1lIGZyb20gJy4vc3Vycm9nYXRlRnJhbWVzL2gyNjQvc3Vycm9nYXRlMjh4MTZJRnJhbWUnO1xuaW1wb3J0IHN1cnJvZ2F0ZUgyNjQyOHgxNlBGcmFtZSBmcm9tICcuL3N1cnJvZ2F0ZUZyYW1lcy9oMjY0L3N1cnJvZ2F0ZTI4eDE2UEZyYW1lJztcblxuZXhwb3J0IGNvbnN0IFNraXBGcmFtZSA9IFN5bWJvbCgpO1xuXG5leHBvcnQgdHlwZSBTdXJyb2dhdGVGcmFtZVR5cGUgPSBBcnJheUJ1ZmZlciB8IHVuZGVmaW5lZCB8IHR5cGVvZiBTa2lwRnJhbWU7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNTYWZhcmkgPSBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdTYWZhcmknO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNBbmRyb2lkQ2hyb21lID0gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuaXNBbmRyb2lkO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfc2luZ2xlWmVyb0J5dGUgPSBuZXcgVWludDhBcnJheShbMHgwMF0pO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZHVtbXlBdWRpb1NpbGVudFBlckNvZGVjID0ge09QVVM6IG5ldyBVaW50OEFycmF5KFsweDY4LCAweDA3LCAweGQ5LCAweGFiLCAweGJjLCAweDc5LCAweDg3LCAweGFiLCAweDhlLCAweDRhLCAweDE0LCAweGYzLCAweGE3LCAweDFjLCAweGYyLCAweDlhLCAweDdhLCAweDQ1LCAweGE3LCAweDJkLCAweDQ0LCAweDI1LCAweDc0LCAweDRjLCAweGFkLCAweDE2LCAweGIzLCAweDBlLCAweDUxLCAweDU3LCAweGVhLCAweGU3LCAweGFkLCAweDJhLCAweDM4LCAweGNlLCAweDMzXSl9O1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZHVtbXkyeDJWaWRlb0lGcmFtZVBlckNvZGVjID0ge1xuICAgIEgyNjQ6IG5ldyBVaW50OEFycmF5KFtcbiAgICAgIC4uLmFubmV4QkZvdXJCeXRlU3RhcnRDb2RlLCAweDA5LCAweGYwLCAvLyBBY2Nlc3MgdW5pdCBkZWxpbWl0ZXJcbiAgICAgIC4uLmFubmV4QkZvdXJCeXRlU3RhcnRDb2RlLCAweDY3LCAweGY0LCAweDAwLCAweDBhLCAweDkxLCAweDliLCAweDJiLCAweGYxLCAweGYxLCAweGY4LCAweDA4LCAweDgwLCAweDAwLCAweDAwLCAweDAzLCAweDAwLCAweDgwLCAweDAwLCAweDAwLCAweDE5LCAweDA3LCAweDg5LCAweDEyLCAweGNiLCAvLyBTZXF1ZW5jZSBwYXJhbWV0ZXIgc2V0XG4gICAgICAuLi5hbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSwgMHg2OCwgMHhlYiwgMHhlMywgMHhjNCwgMHg0OCwgMHg0NCwgLy8gUGljdHVyZSBwYXJhbXRlciBzZXRcbiAgICAgIC8qICovIDB4MDAsIDB4MDAsIDB4MDEsIDB4NjUsIDB4ODgsIDB4ODIsIDB4MDAsIDB4M2YsIDB4NzAsIDB4MjMsIDB4ODYsIDB4ZTYsIDB4ZDEsIDB4ODAsIDB4MDksIDB4YWYsIDB4MGEsIDB4NDEsIDB4NjYsIDB4NmIsIDB4NTQsIDB4NDYsIDB4ZmIsIDB4NzEsIDB4ZDksIDB4N2YsIDB4ZmYsIDB4ZmYsIDB4ZjldKSwgLy8gU2xpY2UgbGF5ZXI6IGlkciBkYXRhXG4gICAgVlA4OiBuZXcgVWludDhBcnJheShbMHhiMCwgMHgwMiwgMHgwMCwgMHg5ZCwgMHgwMSwgMHgyYSwgMHgwMSwgMHgwMCwgMHgwMSwgMHgwMCwgMHgzOSwgMHg2YiwgMHgwMCwgMHgyNywgMHgxYywgMHgyNCwgMHgwYywgMHgyYywgMHgyYywgMHg0NCwgMHhjYywgMHgyNCwgMHg0MSwgMHhhOCwgMHgwMCwgMHgxMywgMHhhNywgMHhhMywgMHg3YSwgMHg1MCwgMHgwMCwgMHhmZSwgMHhlYiwgMHhkZSwgMHgyZiwgMHg4YSwgMHgxZSwgMHg2YiwgMHg3YiwgMHgwNywgMHg3MiwgMHg2MywgMHgwOSwgMHhhNCwgMHg4ZSwgMHhjMF0pLFxuICAgIFZQOTogbmV3IFVpbnQ4QXJyYXkoWzB4ODIsIDB4NDksIDB4ODMsIDB4NDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDYsIDB4NzYsIDB4MzgsIDB4MjQsIDB4MWMsIDB4MTksIDB4YTAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4NDAsIDB4MDAsIDB4MTEsIDB4YmYsIDB4ZGQsIDB4NzcsIDB4ZmYsIDB4NDAsIDB4N2YsIDB4YjEsIDB4MDBdKVxuICB9O1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZHVtbXkyeDJWaWRlb1BGcmFtZVBlckNvZGVjID0ge1xuICAgIEgyNjQ6IG5ldyBVaW50OEFycmF5KFtcbiAgICAgIC4uLmFubmV4QkZvdXJCeXRlU3RhcnRDb2RlLCAweDA5LCAweGYwLCAvLyBBY2Nlc3MgdW5pdCBkZWxpbWl0ZXJcbiAgICAgIC4uLmFubmV4QkZvdXJCeXRlU3RhcnRDb2RlLCAweDQxLCAweDlhLCAweDY4LCAweDQ5LCAweGE4LCAweDQxLCAweDY4LCAweDk5LCAweDRjLCAweDBmLCAweGZmLCAweDkyLCAweDgxXSksIC8vIFNsaWNlIGxheWVyOiBub24gaWRyIGRhdGFcbiAgICBWUDg6IG5ldyBVaW50OEFycmF5KFsweDMxLCAweDAzLCAweDAwLCAweGU0LCAweGUwLCAweGE4LCAweDliLCAweDM3LCAweGFmLCAweDEwLCAweDRmLCAweDRmLCAweGIxLCAweDBhLCAweDJmLCAweGU0LCAweDkyLCAweGMwLCAweDFmLCAweGU3LCAweDRmLCAweDQ2LCAweGZmLCAweGVlLCAweDUxLCAweGMxLCAweDVkLCAweDAwLCAweGZlLCAweGViLCAweGRlLCAweDJmLCAweDhhLCAweDFlLCAweDZiLCAweDdiLCAweDA3LCAweDcyLCAweDYzLCAweDA5LCAweGE0LCAweDhlLCAweGMwXSksXG4gICAgVlA5OiBuZXcgVWludDhBcnJheShbMHg4NiwgMHgwMCwgMHg0MCwgMHg5MiwgMHg5YywgMHgyNCwgMHg0OCwgMHgwMCwgMHgwMCwgMHgwMywgMHg3MCwgMHgwMCwgMHgwMCwgMHg0YiwgMHg0MF0pXG4gIH07XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9zdXJyb2dhdGUyOHgxNkgyNjRJRnJhbWUgPSBzdXJyb2dhdGVIMjY0Mjh4MTZJRnJhbWU7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9zdXJyb2dhdGUyOHgxNkgyNjRQRnJhbWUgPSBzdXJyb2dhdGVIMjY0Mjh4MTZQRnJhbWU7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9zdXJyb2dhdGUyOHgxNlBGcmFtZUZyYW1lTnVtYmVyUmVzZXQgPSAxO1xuICBwcml2YXRlIHN0YXRpYyBfc3Vycm9nYXRlMjh4MTZQRnJhbWVGcmFtZU51bWJlciA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3N1cnJvZ2F0ZTI4eDE2UEZyYW1lRnJhbWVOdW1iZXJSZXNldDtcblxuICBzdGF0aWMgZ2V0U3Vycm9nYXRlQXVkaW9TaWxlbnRQZXJDb2RlYyhjb2RlYzogQXVkaW9Db2RlYyk6IEFycmF5QnVmZmVyIHwgdW5kZWZpbmVkIHtcbiAgICBzd2l0Y2ggKGNvZGVjKSB7XG4gICAgICBjYXNlIEF1ZGlvQ29kZWMuT1BVUzpcbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15QXVkaW9TaWxlbnRQZXJDb2RlYy5PUFVTLmJ1ZmZlcjtcblxuICAgICAgLy8gVE9ETyAoQVopOiBBZGQgYSBkdW1teSBBQUMgc2lsZW50IGZyYW1lIHdoZW4gQUFDIHN1cHBvcnQgaXMgYWRkZWRcbiAgICAgIGNhc2UgQXVkaW9Db2RlYy5BQUM6XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGNvZGVjKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZ2V0SW52YWxpZFN1cnJvZ2F0ZUF1ZGlvRGF0YSgpOiBBcnJheUJ1ZmZlciB7XG4gICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3NpbmdsZVplcm9CeXRlLmJ1ZmZlcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXRTdXJyb2dhdGVWaWRlb0lGcmFtZVBlckNvZGVjKGNvZGVjOiBWaWRlb0NvZGVjKTogQXJyYXlCdWZmZXIgfCB1bmRlZmluZWQge1xuICAgIHN3aXRjaCAoY29kZWMpIHtcbiAgICAgIGNhc2UgVmlkZW9Db2RlYy5IMjY0OlxuICAgICAgICBpZiAoU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5faXNTYWZhcmkpIHtcbiAgICAgICAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc3Vycm9nYXRlMjh4MTZIMjY0SUZyYW1lLmJ1ZmZlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9kdW1teTJ4MlZpZGVvSUZyYW1lUGVyQ29kZWMuSDI2NC5idWZmZXI7XG5cbiAgICAgIGNhc2UgVmlkZW9Db2RlYy5WUDg6XG4gICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9kdW1teTJ4MlZpZGVvSUZyYW1lUGVyQ29kZWMuVlA4LmJ1ZmZlcjtcblxuICAgICAgY2FzZSBWaWRlb0NvZGVjLlZQOTpcbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15MngyVmlkZW9JRnJhbWVQZXJDb2RlYy5WUDkuYnVmZmVyO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShjb2RlYyk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGdldEludmFsaWRTdXJyb2dhdGVWaWRlb0lGcmFtZShjb2RlYzogVmlkZW9Db2RlYyk6IFN1cnJvZ2F0ZUZyYW1lVHlwZSB7XG4gICAgaWYgKChjb2RlYyA9PT0gVmlkZW9Db2RlYy5IMjY0KSAmJiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9pc0FuZHJvaWRDaHJvbWUpIHtcbiAgICAgIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3N1cnJvZ2F0ZTI4eDE2UEZyYW1lRnJhbWVOdW1iZXIgPSBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zdXJyb2dhdGUyOHgxNlBGcmFtZUZyYW1lTnVtYmVyUmVzZXQ7XG5cbiAgICAgIHJldHVybiBTa2lwRnJhbWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3NpbmdsZVplcm9CeXRlLmJ1ZmZlcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXRTdXJyb2dhdGVWaWRlb1BGcmFtZVBlckNvZGVjKGNvZGVjOiBWaWRlb0NvZGVjKTogQXJyYXlCdWZmZXIgfCB1bmRlZmluZWQge1xuICAgIHN3aXRjaCAoY29kZWMpIHtcbiAgICAgIGNhc2UgVmlkZW9Db2RlYy5IMjY0OiB7XG4gICAgICAgIGlmIChTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9pc1NhZmFyaSkge1xuICAgICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zdXJyb2dhdGUyOHgxNkgyNjRQRnJhbWUuYnVmZmVyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15MngyVmlkZW9QRnJhbWVQZXJDb2RlYy5IMjY0LmJ1ZmZlcjtcbiAgICAgIH1cblxuICAgICAgY2FzZSBWaWRlb0NvZGVjLlZQODpcbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15MngyVmlkZW9QRnJhbWVQZXJDb2RlYy5WUDguYnVmZmVyO1xuXG4gICAgICBjYXNlIFZpZGVvQ29kZWMuVlA5OlxuICAgICAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fZHVtbXkyeDJWaWRlb1BGcmFtZVBlckNvZGVjLlZQOS5idWZmZXI7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGNvZGVjKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZ2V0SW52YWxpZFN1cnJvZ2F0ZVZpZGVvUEZyYW1lKCk6IFN1cnJvZ2F0ZUZyYW1lVHlwZSB7XG4gICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3NpbmdsZVplcm9CeXRlLmJ1ZmZlcjtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IGFubmV4QkZvdXJCeXRlU3RhcnRDb2RlIGZyb20gJy4uLy4uLy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvaDI2NC9uYWxVbml0L0FubmV4QkZvdXJCeXRlU3RhcnRDb2RlJztcblxuZXhwb3J0IGRlZmF1bHQgbmV3IFVpbnQ4QXJyYXkoW1xuICAuLi5hbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSwgMTAzLCA2NiwgMTkyLCA0MiwgMjE4LCA0LCA0LCAyMzIsIDY0LCAwLCAwLCAzLCAwLCA2NCwgMCwgMCwgMTUsIDM1LCAxOTgsIDEyLCAxNjgsXG4gIC4uLmFubmV4QkZvdXJCeXRlU3RhcnRDb2RlLCAxMDQsIDIwNiwgNjAsIDEyOCxcbiAgLi4uYW5uZXhCRm91ckJ5dGVTdGFydENvZGUsIDYsIDMsIDE2NywgLi4ubmV3IFVpbnQ4QXJyYXkoMTUwKS5maWxsKDI1NSksIDEyOCxcbiAgLi4uYW5uZXhCRm91ckJ5dGVTdGFydENvZGUsIDEwMSwgMTM2LCAxMzIsIDYsIDE5MSwgMjU1LCAyNTUsIDE1LCA2OSwgMCwgMSwgODcsIDE1OSwgLi4ubmV3IFVpbnQ4QXJyYXkoMTUpLmZpbGwoMzkpLCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgMTI4XG5dKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBhbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSBmcm9tICcuLi8uLi8uLi9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL2gyNjQvbmFsVW5pdC9Bbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSc7XG5cbmV4cG9ydCBkZWZhdWx0IG5ldyBVaW50OEFycmF5KFtcbiAgLi4uYW5uZXhCRm91ckJ5dGVTdGFydENvZGUsIDYsIDMsIDI1NSwgNjEsIC4uLm5ldyBVaW50OEFycmF5KDMxNikuZmlsbCgyNTUpLCAxMjgsXG4gIC4uLmFubmV4QkZvdXJCeXRlU3RhcnRDb2RlLCA2NSwgMTU0LCAzMiwgMjYsIDI0MCwgMTgsIDQ4XG5dKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi8uLi8uLi9sYW5nL0lEaXNwb3NhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uLy4uLy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQge1RyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZSwgVHJhbnNmb3JtTWVzc2FnZSwgVHJhbnNmb3JtTWVzc2FnZVBheWxvYWQsIFRyYW5zZm9ybU1lc3NhZ2VUeXBlfSBmcm9tICcuL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRyYW5zZm9ybVBpcGVsaW5lTWVzc2FnZVJvdXRlciBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWVzc2FnZVJvdXRlczogTWFwPFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZSwgPFQ+KG1lc3NhZ2U6IFQpID0+IHZvaWQ+ID0gbmV3IE1hcCgpO1xuXG4gIGNvbnN0cnVjdG9yKHdvcmtlcjogV29ya2VyKSB7XG4gICAgdGhpcy5pbml0aWFsaXplKHdvcmtlcik7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJSb3V0ZTxUPihtZXNzYWdlVHlwZTogVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlLCByb3V0ZU1lc3NhZ2U6IChtZXNzYWdlOiBUKSA9PiB2b2lkKTogRGlzcG9zYWJsZSB7XG4gICAgdGhpcy5fbWVzc2FnZVJvdXRlcy5zZXQobWVzc2FnZVR5cGUsIHJvdXRlTWVzc2FnZSBhcyA8VD4obWVzc2FnZTogVCkgPT4gdm9pZCk7XG5cbiAgICByZXR1cm4gbmV3IERpc3Bvc2FibGUoKCkgPT4gdGhpcy5fbWVzc2FnZVJvdXRlcy5kZWxldGUobWVzc2FnZVR5cGUpKTtcbiAgfVxuXG4gIHB1YmxpYyBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX21lc3NhZ2VSb3V0ZXMuY2xlYXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZSh3b3JrZXI6IFdvcmtlcik6IHZvaWQge1xuICAgIHdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgKHtkYXRhOiBtZXNzYWdlfTogTWVzc2FnZUV2ZW50PFRyYW5zZm9ybU1lc3NhZ2U+KSA9PiB7XG4gICAgICBjb25zdCByb3V0ZU1lc3NhZ2VEYXRhID0gPFQ+KHt0eXBlLCBkYXRhfTogVHJhbnNmb3JtTWVzc2FnZVBheWxvYWQ8VD4pID0+IHtcbiAgICAgICAgY29uc3Qgcm91dGVNZXNzYWdlID0gdGhpcy5fbWVzc2FnZVJvdXRlcy5nZXQodHlwZSk7XG5cbiAgICAgICAgaWYgKCFyb3V0ZU1lc3NhZ2UpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByb3V0ZU1lc3NhZ2UoZGF0YSk7XG4gICAgICB9O1xuXG4gICAgICBzd2l0Y2ggKG1lc3NhZ2UudHlwZSkge1xuICAgICAgICBjYXNlIFRyYW5zZm9ybU1lc3NhZ2VUeXBlLkNodW5rOlxuICAgICAgICBjYXNlIFRyYW5zZm9ybU1lc3NhZ2VUeXBlLk1ldGFkYXRhOlxuICAgICAgICAgIHJvdXRlTWVzc2FnZURhdGEobWVzc2FnZS5kYXRhKTtcblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICB9XG4gICAgfSwge29uY2U6IGZhbHNlfSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBDaHVuayBmcm9tICcuLi9DaHVuayc7XG5pbXBvcnQge1J0cFRpbWVzdGFtcH0gZnJvbSAnLi4vLi4vZnJhbWVUaW1pbmcvRnJhbWVUaW1pbmdJbmZvcm1hdGlvbic7XG5pbXBvcnQge0RlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uUGF5bG9hZH0gZnJvbSAnLi90cmFuc2Zvcm1zL2ZyYW1lVGltaW5nSW5mb3JtYXRpb24nO1xuXG5leHBvcnQgZW51bSBUcmFuc2Zvcm1NZXNzYWdlVHlwZSB7XG4gIEVycm9yID0gLTEsXG4gIEFkZFRyYW5zZm9ybSA9IDAsXG4gIENvbmZpZ3VyZVBpcGVsaW5lID0gMSxcbiAgTWV0YWRhdGEgPSAyLFxuICBDaHVuayA9IDMsXG4gIFBpcGVsaW5lQ29uZmlndXJlZCA9IDRcbn1cblxuZXhwb3J0IGVudW0gVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlIHtcbiAgRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiA9IDAsXG4gIEVuY29kZWRWaWRlb0NodW5rID0gMSxcbiAgRW5jb2RlZEF1ZGlvQ2h1bmsgPSAyLFxuICBTdXJyb2dhdGVWaWRlb0NodW5rID0gMyxcbiAgU3Vycm9nYXRlQXVkaW9DaHVuayA9IDRcbn1cblxuZXhwb3J0IHR5cGUgVHJhbnNmb3JtTWVzc2FnZVBheWxvYWQ8VD4gPSB7XG4gIHR5cGU6IFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZTtcbiAgZGF0YTogVDtcbn07XG5cbnR5cGUgV2ViUlRDSW5zZXJ0YWJsZVN0cmVhbXMgPSB7XG4gIHNvdXJjZTogUmVhZGFibGVTdHJlYW07XG4gIHNpbms6IFdyaXRhYmxlU3RyZWFtO1xufTtcblxuZXhwb3J0IHR5cGUgVHJhbnNmb3JtU3RyZWFtTWV0YWRhdGEgPSBEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblBheWxvYWQ7XG5leHBvcnQgdHlwZSBNZXRhZGF0YU1lc3NhZ2VQYXlsb2FkID0ge1t0aW1lc3RhbXA6IFJ0cFRpbWVzdGFtcF06IHtkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbjogVHJhbnNmb3JtU3RyZWFtTWV0YWRhdGF9fTtcblxudHlwZSBUcmFuc2Zvcm1OYW1lID0gc3RyaW5nO1xuZXhwb3J0IHR5cGUgVHJhbnNmb3JtTWVzc2FnZSA9XG4gIHwge1xuICAgICAgdHlwZTogVHJhbnNmb3JtTWVzc2FnZVR5cGUuQWRkVHJhbnNmb3JtO1xuICAgICAgZGF0YTogVHJhbnNmb3JtTmFtZTtcbiAgICB9XG4gIHwge1xuICAgICAgdHlwZTogVHJhbnNmb3JtTWVzc2FnZVR5cGUuQ29uZmlndXJlUGlwZWxpbmU7XG4gICAgICBkYXRhOiBXZWJSVENJbnNlcnRhYmxlU3RyZWFtcztcbiAgICB9XG4gIHwge1xuICAgICAgdHlwZTogVHJhbnNmb3JtTWVzc2FnZVR5cGUuTWV0YWRhdGE7XG4gICAgICBkYXRhOiBUcmFuc2Zvcm1NZXNzYWdlUGF5bG9hZDxNZXRhZGF0YU1lc3NhZ2VQYXlsb2FkPjtcbiAgICB9XG4gIHwge1xuICAgICAgdHlwZTogVHJhbnNmb3JtTWVzc2FnZVR5cGUuQ2h1bms7XG4gICAgICBkYXRhOiBUcmFuc2Zvcm1NZXNzYWdlUGF5bG9hZDxDaHVuaz47XG4gICAgfTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmRlY2xhcmUgY29uc3QgX19CVUlMRF9WRVJTSU9OX186IHN0cmluZztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVyc2lvbk1hbmFnZXIge1xuICBwcml2YXRlIHN0YXRpYyBfZGVmYXVsdFZlcnNpb24gPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG5cbiAgc3RhdGljIGdldCBzZGtWZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBfX0JVSUxEX1ZFUlNJT05fXztcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZGVmYXVsdFZlcnNpb247XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgVGVsZW1ldHJ5U2VydmljZSBmcm9tICcuL1RlbGVtZXRyeVNlcnZpY2UnO1xuaW1wb3J0IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24gZnJvbSAnLi9UZWxlbWV0cnlDb25maWd1cmF0aW9uJztcbmltcG9ydCB7SUFwcGVuZGVyfSBmcm9tICcuLi9sb2dnZXIvSUFwcGVuZGVyJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVsZW1ldHJ5QXBwZW5kZXIgaW1wbGVtZW50cyBJQXBwZW5kZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF90ZWxlbWV0cnlTZXJ2aWNlOiBUZWxlbWV0cnlTZXJ2aWNlO1xuICBwcml2YXRlIHJlYWRvbmx5IF90ZW5hbmN5OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Nlc3Npb25JZDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF90aHJlc2hvbGQ6IExvZ2dpbmdMZXZlbDtcblxuICBjb25zdHJ1Y3Rvcih0ZWxlbWV0cnlDb25maWd1cmF0aW9uOiBUZWxlbWV0cnlDb25maWd1cmF0aW9uKSB7XG4gICAgdGhpcy5fdGVuYW5jeSA9IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udGVuYW5jeTtcbiAgICB0aGlzLl9zZXNzaW9uSWQgPSB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnNlc3Npb25JZDtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnRocmVzaG9sZDtcbiAgICB0aGlzLl90ZWxlbWV0cnlTZXJ2aWNlID0gbmV3IFRlbGVtZXRyeVNlcnZpY2UodGVsZW1ldHJ5Q29uZmlndXJhdGlvbik7XG4gIH1cblxuICBsb2cobG9nTGV2ZWw6IExvZ2dpbmdMZXZlbCwgbWVzc2FnZTogc3RyaW5nLCBjYXRlZ29yeTogc3RyaW5nLCBkYXRlOiBEYXRlKTogdm9pZCB7XG4gICAgaWYgKGxvZ0xldmVsIDwgdGhpcy5fdGhyZXNob2xkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fdGVsZW1ldHJ5U2VydmljZS5wdXNoKGxvZ0xldmVsLCBtZXNzYWdlLCBjYXRlZ29yeSwgZGF0ZSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbH0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlcic7XG5pbXBvcnQgTG9nZ2VyRGVmYXVsdHMgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckRlZmF1bHRzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiB7XG4gIHByaXZhdGUgX3VybCA9ICdodHRwczovL3RlbGVtZXRyeS5waGVuaXhydHMuY29tL3RlbGVtZXRyeS9sb2dzJztcbiAgcHJpdmF0ZSBfdGVuYW5jeTogc3RyaW5nID0gJy0nO1xuICBwcml2YXRlIF9zZXNzaW9uSWQ6IHN0cmluZyA9ICctJztcbiAgcHJpdmF0ZSBfZW52aXJvbm1lbnQ6IHN0cmluZyA9ICctJztcbiAgcHJpdmF0ZSBfcGFnZUxvYWRUaW1lOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIF90aHJlc2hvbGQgPSBMb2dnZXJEZWZhdWx0cy5kZWZhdWx0VGVsZW1ldHJ5TG9nZ2luZ0xldmVsO1xuXG4gIGdldCB1cmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdXJsO1xuICB9XG5cbiAgc2V0IHVybCh1cmw6IHN0cmluZykge1xuICAgIGNvbnN0IHRlbGVtZXRyeVVybCA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodXJsKTtcblxuICAgIHRlbGVtZXRyeVVybC5wYXRobmFtZSA9IHRlbGVtZXRyeVVybC5wYXRobmFtZSArICcvbG9ncyc7XG5cbiAgICB0aGlzLl91cmwgPSB0ZWxlbWV0cnlVcmwudG9TdHJpbmcoKTtcbiAgfVxuXG4gIGdldCBlbnZpcm9ubWVudCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9lbnZpcm9ubWVudDtcbiAgfVxuXG4gIHNldCBlbnZpcm9ubWVudChlbnZpcm9ubWVudDogc3RyaW5nKSB7XG4gICAgdGhpcy5fZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgfVxuXG4gIGdldCB0ZW5hbmN5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3RlbmFuY3k7XG4gIH1cblxuICBzZXQgdGVuYW5jeSh0ZW5hbmN5OiBzdHJpbmcpIHtcbiAgICB0aGlzLl90ZW5hbmN5ID0gdGVuYW5jeTtcbiAgfVxuXG4gIGdldCBzZXNzaW9uSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc2Vzc2lvbklkO1xuICB9XG5cbiAgc2V0IHNlc3Npb25JZChzZXNzaW9uSWQ6IHN0cmluZykge1xuICAgIHRoaXMuX3Nlc3Npb25JZCA9IHNlc3Npb25JZDtcbiAgfVxuXG4gIGdldCBwYWdlTG9hZFRpbWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcGFnZUxvYWRUaW1lO1xuICB9XG5cbiAgc2V0IHBhZ2VMb2FkVGltZShwYWdlTG9hZFRpbWU6IG51bWJlcikge1xuICAgIHRoaXMuX3BhZ2VMb2FkVGltZSA9IHBhZ2VMb2FkVGltZTtcbiAgfVxuXG4gIGdldCB0aHJlc2hvbGQoKTogTG9nZ2luZ0xldmVsIHtcbiAgICByZXR1cm4gdGhpcy5fdGhyZXNob2xkO1xuICB9XG5cbiAgc2V0IHRocmVzaG9sZCh0aHJlc2hvbGQ6IExvZ2dpbmdMZXZlbCkge1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRocmVzaG9sZDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBOdW1iZXJzIGZyb20gJy4uL2xhbmcvTnVtYmVycyc7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbH0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlcic7XG5pbXBvcnQgVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiBmcm9tICcuL1RlbGVtZXRyeUNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IFZlcnNpb25NYW5hZ2VyIGZyb20gJy4uL3Nkay92ZXJzaW9uL1ZlcnNpb25NYW5hZ2VyJztcblxuY29uc3QgcmVxdWVzdFNpemVMaW1pdCA9IDgxOTI7XG5cbmludGVyZmFjZSBJTG9nSXRlbSB7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xuICB0ZW5hbmN5OiBzdHJpbmc7XG4gIGxldmVsOiBzdHJpbmc7XG4gIGNhdGVnb3J5OiBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgc2Vzc2lvbklkOiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbiAgZW52aXJvbm1lbnQ6IHN0cmluZztcbiAgZnVsbFF1YWxpZmllZE5hbWU6IHN0cmluZztcbiAgcnVudGltZTogbnVtYmVyO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfdGVsZW1ldHJ5Q29uZmlndXJhdGlvbjogVGVsZW1ldHJ5Q29uZmlndXJhdGlvbjtcblxuICBwcml2YXRlIF9sb2dzOiBBcnJheTxJTG9nSXRlbT4gPSBbXTtcbiAgcHJpdmF0ZSBfaXNTZW5kaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2RvbWFpbiA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKHRlbGVtZXRyeUNvbmZpZ3VyYXRpb246IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24pIHtcbiAgICB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uID0gdGVsZW1ldHJ5Q29uZmlndXJhdGlvbjtcbiAgICB0aGlzLmdldExvY2F0aW9uSG9zdG5hbWVGcm9tR2xvYmFsU2NvcGUoKS50aGVuKGxvY2F0aW9uSG9zdG5hbWUgPT4ge1xuICAgICAgdGhpcy5fZG9tYWluID0gbG9jYXRpb25Ib3N0bmFtZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1c2gobG9nTGV2ZWw6IExvZ2dpbmdMZXZlbCwgbWVzc2FnZTogc3RyaW5nLCBjYXRlZ29yeTogc3RyaW5nLCB0aW1lc3RhbXA6IERhdGUpOiB2b2lkIHtcbiAgICBjb25zdCBydW50aW1lID0gKHRpbWVzdGFtcC52YWx1ZU9mKCkgLSB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnBhZ2VMb2FkVGltZSkgLyAxMDAwO1xuICAgIGNvbnN0IGxvZ1JlY29yZCA9IHtcbiAgICAgIHRpbWVzdGFtcDogdGltZXN0YW1wLnRvSVNPU3RyaW5nKCksXG4gICAgICB0ZW5hbmN5OiB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnRlbmFuY3ksXG4gICAgICBsZXZlbDogTG9nZ2luZ0xldmVsW2xvZ0xldmVsXSxcbiAgICAgIGNhdGVnb3J5LFxuICAgICAgbWVzc2FnZSxcbiAgICAgIHNlc3Npb25JZDogdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5zZXNzaW9uSWQsXG4gICAgICB2ZXJzaW9uOiBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uLFxuICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24uZW52aXJvbm1lbnQsXG4gICAgICBmdWxsUXVhbGlmaWVkTmFtZTogdGhpcy5fZG9tYWluLFxuICAgICAgcnVudGltZVxuICAgIH07XG5cbiAgICBpZiAobG9nTGV2ZWwgPCBMb2dnaW5nTGV2ZWwuRXJyb3IpIHtcbiAgICAgIHRoaXMuX2xvZ3MucHVzaChsb2dSZWNvcmQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9sb2dzLnVuc2hpZnQobG9nUmVjb3JkKTtcbiAgICB9XG5cbiAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTG9nc0lmQWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMb2NhdGlvbkhvc3RuYW1lRnJvbUdsb2JhbFNjb3BlKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4ocmVzb2x2ZUxvY2F0aW9uSG9zdG5hbWUgPT4ge1xuICAgICAgY29uc3QgZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24gPSBHbG9iYWxTY29wZS5zdWJzY3JpYmUoZ2xvYmFsU2NvcGUgPT4ge1xuICAgICAgICBpZiAoIWdsb2JhbFNjb3BlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzb2x2ZUxvY2F0aW9uSG9zdG5hbWUoZ2xvYmFsU2NvcGUubG9jYXRpb25Ib3N0bmFtZSk7XG4gICAgICAgIGdsb2JhbFNjb3BlLnNldFRpbWVvdXQoKCkgPT4gZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24uZGlzcG9zZSgpLCAwKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kTG9ncyhsb2dNZXNzYWdlczogQXJyYXk8SUxvZ0l0ZW0+KTogUHJvbWlzZTxSZXNwb25zZSB8IHZvaWQ+IHtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KHtyZWNvcmRzOiBsb2dNZXNzYWdlc30pKTtcblxuICAgIHJldHVybiBhd2FpdCBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnVybCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBmb3JtRGF0YVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kTG9nc0lmQWJsZSgpOiBQcm9taXNlPFJlc3BvbnNlIHwgdm9pZD4ge1xuICAgIGlmICh0aGlzLl9sb2dzLmxlbmd0aCA8PSAwIHx8IHRoaXMuX2lzU2VuZGluZyB8fCAhR2xvYmFsU2NvcGUudmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgbnVtYmVyT2ZMb2dzVG9TZW5kID0gMDtcbiAgICBsZXQgc2l6ZU9mTG9nc1RvU2VuZCA9IDA7XG5cbiAgICB0aGlzLl9pc1NlbmRpbmcgPSB0cnVlO1xuXG4gICAgY29uc3QgZ2V0SXRlbVNpemUgPSAoaXRlbTogbnVtYmVyIHwgc3RyaW5nKSA9PiB0eXBlb2YgaXRlbSA9PT0gJ251bWJlcicgPyBOdW1iZXJzLmNvdW50TnVtYmVyTGVuZ3RoKGl0ZW0pIDogaXRlbS5sZW5ndGg7XG4gICAgY29uc3QgZ2V0TG9nU2l6ZSA9IChsb2c6IElMb2dJdGVtKTogbnVtYmVyID0+IE9iamVjdC52YWx1ZXMobG9nKVxuICAgICAgLnJlZHVjZSgoc3VtLCBpdGVtKSA9PiBzdW0gKyAoaXRlbSA/IGdldEl0ZW1TaXplKGl0ZW0pIDogMCksIDApO1xuXG4gICAgd2hpbGUgKHRoaXMuX2xvZ3MubGVuZ3RoID4gbnVtYmVyT2ZMb2dzVG9TZW5kICYmIGdldExvZ1NpemUodGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdKSArIHNpemVPZkxvZ3NUb1NlbmQgPCByZXF1ZXN0U2l6ZUxpbWl0KSB7XG4gICAgICBzaXplT2ZMb2dzVG9TZW5kICs9IGdldExvZ1NpemUodGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdKTtcbiAgICAgIG51bWJlck9mTG9nc1RvU2VuZCsrO1xuICAgIH1cblxuICAgIGlmICghbnVtYmVyT2ZMb2dzVG9TZW5kKSB7XG4gICAgICB0aGlzLl9sb2dzW251bWJlck9mTG9nc1RvU2VuZF0ubWVzc2FnZSA9IHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXS5tZXNzYWdlLnN1YnN0cmluZygwLFxuICAgICAgICBnZXRMb2dTaXplKHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXSkgKyAocmVxdWVzdFNpemVMaW1pdCAtIGdldExvZ1NpemUodGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdKSkpO1xuICAgICAgbnVtYmVyT2ZMb2dzVG9TZW5kID0gMTtcbiAgICB9XG5cbiAgICBjb25zdCBsb2dNZXNzYWdlcyA9IHRoaXMuX2xvZ3Muc2xpY2UoMCwgbnVtYmVyT2ZMb2dzVG9TZW5kKTtcblxuICAgIHRoaXMuX2xvZ3MgPSB0aGlzLl9sb2dzLnNsaWNlKG51bWJlck9mTG9nc1RvU2VuZCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZW5kTG9ncyhsb2dNZXNzYWdlcykudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICB0aGlzLl9pc1NlbmRpbmcgPSBmYWxzZTtcblxuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZExvZ3NJZkFibGUoKTtcblxuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgIHRoaXMuX2lzU2VuZGluZyA9IGZhbHNlO1xuXG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTG9nc0lmQWJsZSgpO1xuICAgIH0pO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEdXJhdGlvbnMge1xuICBwcml2YXRlIHJlYWRvbmx5IF9kdXJhdGlvbjogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKGR1cmF0aW9uID0gMCkge1xuICAgIHRoaXMuX2R1cmF0aW9uID0gZHVyYXRpb247XG4gIH1cblxuICB0b0lzb1N0cmluZygpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLl9kdXJhdGlvbiA9PT0gMCkge1xuICAgICAgcmV0dXJuICdQMFMnO1xuICAgIH1cblxuICAgIGNvbnN0IGlzTmVnYXRpdmUgPSB0aGlzLl9kdXJhdGlvbiA8IDA7XG4gICAgY29uc3QgZHVyYXRpb24gPSBpc05lZ2F0aXZlID8gTWF0aC5hYnModGhpcy5fZHVyYXRpb24pIDogdGhpcy5fZHVyYXRpb247XG4gICAgbGV0IG9mZnNldCA9IE1hdGguZmxvb3IoZHVyYXRpb24pO1xuICAgIGNvbnN0IG1pbGxpc2Vjb25kcyA9IG9mZnNldCAlIDEwMDA7XG5cbiAgICBvZmZzZXQgPSBNYXRoLmZsb29yKG9mZnNldCAvIDEwMDApO1xuXG4gICAgY29uc3Qgc2Vjb25kcyA9IG9mZnNldCAlIDYwO1xuXG4gICAgb2Zmc2V0ID0gTWF0aC5mbG9vcihvZmZzZXQgLyA2MCk7XG5cbiAgICBjb25zdCBtaW51dGVzID0gb2Zmc2V0ICUgNjA7XG5cbiAgICBvZmZzZXQgPSBNYXRoLmZsb29yKG9mZnNldCAvIDYwKTtcblxuICAgIGNvbnN0IGhvdXJzID0gb2Zmc2V0ICUgMjQ7XG4gICAgY29uc3QgcGFydHMgPSBbJ1BUJ107XG5cbiAgICBpZiAoaXNOZWdhdGl2ZSkge1xuICAgICAgcGFydHMudW5zaGlmdCgnLScpO1xuICAgIH1cblxuICAgIGlmIChob3Vycykge1xuICAgICAgcGFydHMucHVzaChob3VycyArICdIJyk7XG4gICAgfVxuXG4gICAgaWYgKG1pbnV0ZXMpIHtcbiAgICAgIHBhcnRzLnB1c2gobWludXRlcyArICdNJyk7XG4gICAgfVxuXG4gICAgaWYgKHNlY29uZHMgfHwgbWlsbGlzZWNvbmRzKSB7XG4gICAgICBwYXJ0cy5wdXNoKFN0cmluZyhzZWNvbmRzKSk7XG5cbiAgICAgIGlmIChtaWxsaXNlY29uZHMpIHtcbiAgICAgICAgcGFydHMucHVzaCgnLicgKyB0aGlzLnBhZFN0YXJ0KG1pbGxpc2Vjb25kcy50b1N0cmluZygpLCAzLCAnMCcpKTtcbiAgICAgIH1cblxuICAgICAgcGFydHMucHVzaCgnUycpO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJ0cy5qb2luKCcnKTtcbiAgfVxuXG4gIHBhZFN0YXJ0KGl0ZW06IHN0cmluZywgdGFyZ2V0TGVuZ3RoOiBudW1iZXIsIHBhZFN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0YXJnZXRMZW5ndGggPSB0YXJnZXRMZW5ndGggPj4gMDtcbiAgICBwYWRTdHJpbmcgPSBTdHJpbmcoKHR5cGVvZiBwYWRTdHJpbmcgIT09ICd1bmRlZmluZWQnID8gcGFkU3RyaW5nIDogJyAnKSk7XG5cbiAgICBpZiAoaXRlbS5sZW5ndGggPiB0YXJnZXRMZW5ndGgpIHtcbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cblxuICAgIHRhcmdldExlbmd0aCA9IHRhcmdldExlbmd0aCAtIGl0ZW0ubGVuZ3RoO1xuXG4gICAgaWYgKHRhcmdldExlbmd0aCA+IHBhZFN0cmluZy5sZW5ndGgpIHtcbiAgICAgIHBhZFN0cmluZyArPSBwYWRTdHJpbmcucmVwZWF0KHRhcmdldExlbmd0aCAvIHBhZFN0cmluZy5sZW5ndGgpO1xuICAgIH1cblxuICAgIHJldHVybiBwYWRTdHJpbmcuc2xpY2UoMCwgdGFyZ2V0TGVuZ3RoKSArIGl0ZW07XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmNvbnN0IGRlZmF1bHRCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gMjAwMDtcbmNvbnN0IGRlZmF1bHRNaW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gMTtcbmNvbnN0IGRlZmF1bHRNYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gMzAwMDAwO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFeHBvbmVudGlhbEJhY2tvZmYge1xuICBwcml2YXRlIHJlYWRvbmx5IF9iYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ6IG51bWJlciA9IGRlZmF1bHRCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kLFxuICAgIG1pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ6IG51bWJlciA9IGRlZmF1bHRNaW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kLFxuICAgIG1heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ6IG51bWJlciA9IGRlZmF1bHRNYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kXG4gICkge1xuICAgIHRoaXMuX2JhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgPSBiYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kO1xuICAgIHRoaXMuX21pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgPSBtaW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kO1xuICAgIHRoaXMuX21heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgPSBtYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kO1xuICB9XG5cbiAgZ2V0RXhwb25lbnRpYWxCYWNrb2ZmSW50ZXJ2YWxCeUZhaWx1cmVDb3VudChmYWlsdXJlQ291bnQ6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgYmFja29mZkludGVydmFsSW5TZWNvbmRzID0gdGhpcy5fYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCAvIDEwMDA7XG4gICAgY29uc3QgcmFuZG9taXphdGlvbiA9IDAuNSArICgwLjUgKiBNYXRoLnJhbmRvbSgpKTsgLy8gWzAuNSwgMSlcbiAgICBjb25zdCBleHBvbmVudGlhbEJhY2tvZmYgPSBNYXRoLnBvdyhiYWNrb2ZmSW50ZXJ2YWxJblNlY29uZHMsIGZhaWx1cmVDb3VudCAtIDIpOyAvLyAgWzEvNCAxLzIgMSAyIDQgOCAuLi4uXVxuICAgIGNvbnN0IGV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uID0gTWF0aC5mbG9vcihleHBvbmVudGlhbEJhY2tvZmYpICogcmFuZG9taXphdGlvbjtcbiAgICBjb25zdCBleHBvbmVudGlhbEJhY2tvZmZXaXRoUmFuZG9taXphdGlvbkluTWlsbGlzZWNvbmQgPSBNYXRoLmNlaWwoTWF0aC5tYXgoZXhwb25lbnRpYWxCYWNrb2ZmV2l0aFJhbmRvbWl6YXRpb24gKiAxMDAwLCB0aGlzLl9taW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kKSk7XG5cbiAgICByZXR1cm4gTWF0aC5taW4oZXhwb25lbnRpYWxCYWNrb2ZmV2l0aFJhbmRvbWl6YXRpb25Jbk1pbGxpc2Vjb25kLCB0aGlzLl9tYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IElDb21wYXJhYmxlIGZyb20gJy4uL2xhbmcvSUNvbXBhcmFibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaW1lbnNpb24gaW1wbGVtZW50cyBJQ29tcGFyYWJsZTxEaW1lbnNpb24+IHtcbiAgcmVhZG9ubHkgd2lkdGg6IG51bWJlcjtcbiAgcmVhZG9ubHkgaGVpZ2h0OiBudW1iZXI7XG5cbiAgc3RhdGljIGdldCBlbXB0eSgpOiBEaW1lbnNpb24ge1xuICAgIHJldHVybiBuZXcgRGltZW5zaW9uKDAsIDApO1xuICB9XG5cbiAgY29uc3RydWN0b3Iod2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpIHtcbiAgICB0aGlzLndpZHRoID0gd2lkdGg7XG4gICAgdGhpcy5oZWlnaHQgPSBoZWlnaHQ7XG4gIH1cblxuICBlcXVhbHMob3RoZXI6IERpbWVuc2lvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBvdGhlciAmJiB0aGlzLndpZHRoID09PSBvdGhlci53aWR0aCAmJiB0aGlzLmhlaWdodCA9PT0gb3RoZXIuaGVpZ2h0O1xuICB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy53aWR0aH14JHt0aGlzLmhlaWdodH1gO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge1N0cmVhbVNldHVwTGlzdGVuZXJ9IGZyb20gJy4uL2RvbS9TdHJlYW1TZXR1cExpc3RlbmVyJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgTmV0d29ya01vbml0b3IgZnJvbSAnLi4vZG9tL05ldHdvcmtNb25pdG9yJztcbmltcG9ydCBTREsgZnJvbSAnLi4vc2RrL1NESyc7XG5pbXBvcnQgTWV0cmljc1R5cGUgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzVHlwZSc7XG5pbXBvcnQgRHVyYXRpb25zIGZyb20gJy4uL3RpbWUvRHVyYXRpb24nO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IE1ldHJpY3NTZXJ2aWNlIGZyb20gJy4uL21ldHJpY3MvTWV0cmljc1NlcnZpY2UnO1xuXG5pbnRlcmZhY2UgSU5ldHdvcmtTdGF0aXN0aWNzIHtcbiAgcnR0PzogbnVtYmVyO1xuICBlZmZlY3RpdmVUeXBlPzogc3RyaW5nO1xuICBkb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2Vzc2lvblRlbGVtZXRyeSBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1Nlc3Npb25UZWxlbWV0cnknKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciA9IFNESy5hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbmV0d29ya01vbml0b3I6IE5ldHdvcmtNb25pdG9yID0gbmV3IE5ldHdvcmtNb25pdG9yKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BhZ2VMb2FkVGltZTogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSBfbGFzdE5ldHdvcmtTdGF0aXN0aWNzOiBJTmV0d29ya1N0YXRpc3RpY3MgPSB7fTtcblxuICBjb25zdHJ1Y3RvcihwYWdlTG9hZFRpbWU6IG51bWJlciwgbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlKSB7XG4gICAgdGhpcy5fcGFnZUxvYWRUaW1lID0gcGFnZUxvYWRUaW1lO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh0aGlzLl9uZXR3b3JrTW9uaXRvcik7XG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UgPSBtZXRyaWNzU2VydmljZTtcblxuICAgIGlmICghdGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU2Vzc2lvblRlbGVtZXRyeSBGYWlsZWQ6IE5vIGFwcGxpY2F0aW9uIG1vbml0b3IgaW5pdGlhbGl6ZWQuJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLl9uZXR3b3JrTW9uaXRvci5pc1N1cHBvcnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvci5pc0ZvcmVncm91bmQuc3Vic2NyaWJlKGlzRm9yZWdyb3VuZCA9PiB7XG4gICAgICB0aGlzLnJlY29yZEZvcmVncm91bmRDaGFuZ2UoaXNGb3JlZ3JvdW5kKTtcbiAgICB9KSk7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX25ldHdvcmtNb25pdG9yLnJ0dC5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMucmVjb3JkTmV0d29ya1JUVFVwZGF0ZSh2YWx1ZSk7XG4gICAgfSkpO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh0aGlzLl9uZXR3b3JrTW9uaXRvci5lZmZlY3RpdmVUeXBlLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5yZWNvcmROZXR3b3JrVHlwZUNoYW5nZVVwZGF0ZSh2YWx1ZSk7XG4gICAgfSkpO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh0aGlzLl9uZXR3b3JrTW9uaXRvci5kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMucmVjb3JkTmV0d29ya0Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5VXBkYXRlKHZhbHVlKTtcbiAgICB9KSk7XG4gIH1cblxuICBsaXN0ZW5PblN0cmVhbVNldHVwKCk6IFN0cmVhbVNldHVwTGlzdGVuZXIge1xuICAgIHJldHVybiBuZXcgU3RyZWFtU2V0dXBMaXN0ZW5lcih0aGlzLl9wYWdlTG9hZFRpbWUpO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZEZvcmVncm91bmRDaGFuZ2UoaXNGb3JlZ3JvdW5kOiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCB0aW1lU2luY2VMYXN0Q2hhbmdlID0gdGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3I/LmdldFRpbWVTaW5jZUxhc3RDaGFuZ2UoKTtcblxuICAgIGlmICghdGltZVNpbmNlTGFzdENoYW5nZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogaXNGb3JlZ3JvdW5kID8gTWV0cmljc1R5cGUuQXBwbGljYXRpb25Gb3JlZ3JvdW5kIDogTWV0cmljc1R5cGUuQXBwbGljYXRpb25CYWNrZ3JvdW5kLFxuICAgICAgcnVudGltZTogKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgdmFsdWU6IHt1aW50NjQ6IHRpbWVTaW5jZUxhc3RDaGFuZ2V9XG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdBcHBsaWNhdGlvbiBoYXMgZ29uZSBpbnRvIHRoZSBbJXNdIGFmdGVyIFslc10gbXMnLFxuICAgICAgaXNGb3JlZ3JvdW5kID8gJ2ZvcmVncm91bmQnIDogJ2JhY2tncm91bmQnLFxuICAgICAgbmV3IER1cmF0aW9ucyh0aW1lU2luY2VMYXN0Q2hhbmdlKS50b0lzb1N0cmluZygpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZE5ldHdvcmtSVFRVcGRhdGUobmV3UlRUOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IG9sZFJ0dCA9IHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5ydHQ7XG5cbiAgICB0aGlzLl9sYXN0TmV0d29ya1N0YXRpc3RpY3MucnR0ID0gbmV3UlRUO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5Sb3VuZFRyaXBUaW1lLFxuICAgICAgcnVudGltZTogKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgdmFsdWU6IHt1aW50NjQ6IG5ld1JUVH0sXG4gICAgICBwcmV2aW91c1ZhbHVlOiBvbGRSdHQgPyB7dWludDY0OiBvbGRSdHR9IDogdW5kZWZpbmVkLFxuICAgICAgcmVzb3VyY2U6ICduYXZpZ2F0b3InXG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdbJXNdIE5ldHdvcmsgUlRUIGNoYW5nZWQgdG8gWyVzXSBmcm9tIFslc10nLFxuICAgICAgbmV3IER1cmF0aW9ucyhub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpLnRvSXNvU3RyaW5nKCksXG4gICAgICBuZXdSVFQsXG4gICAgICBvbGRSdHRcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSByZWNvcmROZXR3b3JrVHlwZUNoYW5nZVVwZGF0ZShuZXdOZXR3b3JrVHlwZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBvbGROZXR3b3JrVHlwZSA9IHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5lZmZlY3RpdmVUeXBlO1xuXG4gICAgdGhpcy5fbGFzdE5ldHdvcmtTdGF0aXN0aWNzLmVmZmVjdGl2ZVR5cGUgPSBuZXdOZXR3b3JrVHlwZTtcblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuTmV0d29ya1R5cGUsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3N0cmluZzogbmV3TmV0d29ya1R5cGV9LFxuICAgICAgcHJldmlvdXNWYWx1ZTogb2xkTmV0d29ya1R5cGUgPyB7c3RyaW5nOiBvbGROZXR3b3JrVHlwZX0gOiB1bmRlZmluZWRcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gTmV0d29yayBlZmZlY3RpdmUgdHlwZSBoYXMgY2hhbmdlZCB0byBbJXNdIGZyb20gWyVzXScsXG4gICAgICBuZXcgRHVyYXRpb25zKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkudG9Jc29TdHJpbmcoKSxcbiAgICAgIG5ld05ldHdvcmtUeXBlLFxuICAgICAgb2xkTmV0d29ya1R5cGVcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSByZWNvcmROZXR3b3JrRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHlVcGRhdGUobmV3Q2FwYWNpdHk6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgb2xkQ2FwYWNpdHkgPSB0aGlzLl9sYXN0TmV0d29ya1N0YXRpc3RpY3MuZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHk7XG5cbiAgICB0aGlzLl9sYXN0TmV0d29ya1N0YXRpc3RpY3MuZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkgPSBuZXdDYXBhY2l0eTtcblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHksXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge2Zsb2F0OiBuZXdDYXBhY2l0eX0sXG4gICAgICBwcmV2aW91c1ZhbHVlOiBvbGRDYXBhY2l0eSA/IHtmbG9hdDogb2xkQ2FwYWNpdHl9IDogdW5kZWZpbmVkXG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdbJXNdIE5ldHdvcmsgZG93bmxpbmsgdGhyb3VnaHB1dCBjYXBhY2l0eSBjaGFuZ2VkIHRvIFslc10gZnJvbSBbJXNdJyxcbiAgICAgIG5ldyBEdXJhdGlvbnMobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKS50b0lzb1N0cmluZygpLFxuICAgICAgbmV3Q2FwYWNpdHksXG4gICAgICBvbGRDYXBhY2l0eVxuICAgICk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgRHVyYXRpb25zIGZyb20gJy4uL3RpbWUvRHVyYXRpb24nO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0lEaXNwb3NhYmxlJztcbmltcG9ydCBNZXRyaWNzVHlwZSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NUeXBlJztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCBNZXRyaWNzU2VydmljZSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NTZXJ2aWNlJztcblxudHlwZSBDb250aW51YXRpb25FdmVudCA9IEhUTUxWaWRlb0VsZW1lbnRFdmVudE1hcFsncGxheScgfCAncGxheWluZycgfCAncHJvZ3Jlc3MnIHwgJ3RpbWV1cGRhdGUnXTtcbmNvbnN0IG5vb3AgPSAoKTogdm9pZCA9PiB1bmRlZmluZWQ7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZpZGVvVGVsZW1ldHJ5IGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9wYWdlTG9hZFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfY2hhbm5lbFN0YXJ0VGltZTogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignU3RyZWFtVGVsZW1ldHJ5Jyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdHJlYW1JZDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgX2xpc3RlblRvRmlyc3RUaW1lOiAoKSA9PiB2b2lkID0gbm9vcDtcbiAgcHJpdmF0ZSBfbGlzdGVuRm9yU3RhbGw6ICgpID0+IHZvaWQgPSBub29wO1xuICBwcml2YXRlIF9saXN0ZW5Gb3JDb250aW51YXRpb246IChldmVudDogQ29udGludWF0aW9uRXZlbnQpID0+IHZvaWQgPSBub29wO1xuICBwcml2YXRlIF90aW1lVG9GaXJzdEZyYW1lOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIF9jaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIF9zdGFydFJlY29yZGluZ0ZpcnN0RnJhbWU6IG51bWJlciA9IDA7XG4gIHByaXZhdGUgX3ZpZGVvU3RhbGxlZDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX2xhc3RQcm9ncmVzczogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBfdmlkZW9SZXNvbHV0aW9uOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBfY2xlYXJUaW1lVG9GaXJzdEZyYW1lTGlzdGVuZXI6IERpc3Bvc2FibGUgPSBuZXcgRGlzcG9zYWJsZSgoKSA9PiBudWxsKTtcbiAgcHJpdmF0ZSBfY2xlYXJSZWJ1ZmZlcmluZ0xpc3RlbmVyOiBEaXNwb3NhYmxlID0gbmV3IERpc3Bvc2FibGUoKCkgPT4gbnVsbCk7XG5cbiAgY29uc3RydWN0b3Ioc3RyZWFtSWQ6IHN0cmluZywgcGFnZUxvYWRUaW1lOiBudW1iZXIsIGNoYW5uZWxTdGFydFRpbWU6IG51bWJlciwgbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlKSB7XG4gICAgdGhpcy5fc3RyZWFtSWQgPSBzdHJlYW1JZDtcbiAgICB0aGlzLl9wYWdlTG9hZFRpbWUgPSBwYWdlTG9hZFRpbWU7XG4gICAgdGhpcy5fY2hhbm5lbFN0YXJ0VGltZSA9IGNoYW5uZWxTdGFydFRpbWU7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZSA9IG1ldHJpY3NTZXJ2aWNlO1xuICB9XG5cbiAgc2V0dXBMaXN0ZW5lckZvclRpbWVUb0ZpcnN0VGltZSh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCk6IHZvaWQge1xuICAgIHRoaXMuX3N0YXJ0UmVjb3JkaW5nRmlyc3RGcmFtZSA9IERhdGUubm93KCk7XG5cbiAgICB0aGlzLl9saXN0ZW5Ub0ZpcnN0VGltZSA9ICgpOiB2b2lkID0+IHRoaXMuY2FsbFRpbWVUb0ZpcnN0RnJhbWUoKTtcblxuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRlZGRhdGEnLCB0aGlzLl9saXN0ZW5Ub0ZpcnN0VGltZSk7XG4gICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcignbG9hZGVkbWV0YWRhdGEnLCB0aGlzLl9saXN0ZW5Ub0ZpcnN0VGltZSk7XG5cbiAgICB0aGlzLl9jbGVhclRpbWVUb0ZpcnN0RnJhbWVMaXN0ZW5lciA9IG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICAgIHZpZGVvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2xvYWRlZGRhdGEnLCB0aGlzLl9saXN0ZW5Ub0ZpcnN0VGltZSk7XG4gICAgICB2aWRlby5yZW1vdmVFdmVudExpc3RlbmVyKCdsb2FkZWRtZXRhZGF0YScsIHRoaXMuX2xpc3RlblRvRmlyc3RUaW1lKTtcbiAgICB9KTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodGhpcy5fY2xlYXJUaW1lVG9GaXJzdEZyYW1lTGlzdGVuZXIpO1xuICB9XG5cbiAgc2V0dXBMaXN0ZW5lckZvclJlYnVmZmVyaW5nKHZpZGVvOiBIVE1MVmlkZW9FbGVtZW50KTogdm9pZCB7XG4gICAgdGhpcy5fbGlzdGVuRm9yU3RhbGwgPSAoKTogdm9pZCA9PiB0aGlzLm9uU3RhbGwoKTtcblxuICAgIHRoaXMuX2xpc3RlbkZvckNvbnRpbnVhdGlvbiA9IChldmVudDogQ29udGludWF0aW9uRXZlbnQpOiB2b2lkID0+IHRoaXMub25Db250aW51YXRpb24oZXZlbnQsIHZpZGVvKTtcblxuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3N0YWxsZWQnLCB0aGlzLl9saXN0ZW5Gb3JTdGFsbCk7XG4gICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcigncGF1c2UnLCB0aGlzLl9saXN0ZW5Gb3JTdGFsbCk7XG4gICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcignc3VzcGVuZCcsIHRoaXMuX2xpc3RlbkZvclN0YWxsKTtcbiAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdwbGF5JywgdGhpcy5fbGlzdGVuRm9yQ29udGludWF0aW9uKTtcbiAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdwbGF5aW5nJywgdGhpcy5fbGlzdGVuRm9yQ29udGludWF0aW9uKTtcbiAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdwcm9ncmVzcycsIHRoaXMuX2xpc3RlbkZvckNvbnRpbnVhdGlvbik7XG4gICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcigndGltZXVwZGF0ZScsIHRoaXMuX2xpc3RlbkZvckNvbnRpbnVhdGlvbik7XG5cbiAgICB0aGlzLl9jbGVhclJlYnVmZmVyaW5nTGlzdGVuZXIgPSBuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICB2aWRlby5yZW1vdmVFdmVudExpc3RlbmVyKCdzdGFsbGVkJywgdGhpcy5fbGlzdGVuRm9yU3RhbGwpO1xuICAgICAgdmlkZW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigncGF1c2UnLCB0aGlzLl9saXN0ZW5Gb3JTdGFsbCk7XG4gICAgICB2aWRlby5yZW1vdmVFdmVudExpc3RlbmVyKCdzdXNwZW5kJywgdGhpcy5fbGlzdGVuRm9yU3RhbGwpO1xuICAgICAgdmlkZW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigncGxheScsIHRoaXMuX2xpc3RlbkZvckNvbnRpbnVhdGlvbik7XG4gICAgICB2aWRlby5yZW1vdmVFdmVudExpc3RlbmVyKCdwbGF5aW5nJywgdGhpcy5fbGlzdGVuRm9yQ29udGludWF0aW9uKTtcbiAgICAgIHZpZGVvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Byb2dyZXNzJywgdGhpcy5fbGlzdGVuRm9yQ29udGludWF0aW9uKTtcbiAgICAgIHZpZGVvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RpbWV1cGRhdGUnLCB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24pO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX2NsZWFyUmVidWZmZXJpbmdMaXN0ZW5lcik7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGR1cmF0aW9uU2luY2VQYWdlTG9hZCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG5cbiAgICByZXR1cm4gbmV3IER1cmF0aW9ucyhub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpLnRvSXNvU3RyaW5nKCk7XG4gIH1cblxuICBwcml2YXRlIGNhbGxUaW1lVG9GaXJzdEZyYW1lKCk6IHZvaWQge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG5cbiAgICB0aGlzLnB1c2hUaW1lVG9GaXJzdEZyYW1lKG5vdyk7XG4gICAgdGhpcy5wdXNoQ2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZShub3cpO1xuXG4gICAgdGhpcy5fY2xlYXJUaW1lVG9GaXJzdEZyYW1lTGlzdGVuZXIuZGlzcG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBwdXNoVGltZVRvRmlyc3RGcmFtZShub3c6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX3RpbWVUb0ZpcnN0RnJhbWUgPSBub3cgLSB0aGlzLl9zdGFydFJlY29yZGluZ0ZpcnN0RnJhbWU7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLlRpbWVUb0ZpcnN0RnJhbWUsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogdGhpcy5fdGltZVRvRmlyc3RGcmFtZX0sXG4gICAgICBzdHJlYW1JZDogdGhpcy5fc3RyZWFtSWRcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gWyVzXSBGaXJzdCBmcmFtZSBbJXNdJyxcbiAgICAgIHRoaXMuZHVyYXRpb25TaW5jZVBhZ2VMb2FkLFxuICAgICAgdGhpcy5fc3RyZWFtSWQsXG4gICAgICBuZXcgRHVyYXRpb25zKHRoaXMuX3RpbWVUb0ZpcnN0RnJhbWUpLnRvSXNvU3RyaW5nKClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBwdXNoQ2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZShub3c6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX2NoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUgPSBub3cgLSB0aGlzLl9jaGFubmVsU3RhcnRUaW1lO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5DaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lLFxuICAgICAgcnVudGltZTogKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgdmFsdWU6IHt1aW50NjQ6IHRoaXMuX2NoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWV9LFxuICAgICAgc3RyZWFtSWQ6IHRoaXMuX3N0cmVhbUlkXG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdbJXNdIFslc10gQ2hhbm5lbCBjcmVhdGlvbiB0byBmaXJzdCBmcmFtZSBbJXNdJyxcbiAgICAgIHRoaXMuZHVyYXRpb25TaW5jZVBhZ2VMb2FkLFxuICAgICAgdGhpcy5fc3RyZWFtSWQsXG4gICAgICBuZXcgRHVyYXRpb25zKHRoaXMuX2NoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUpLnRvSXNvU3RyaW5nKClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBvblN0YWxsKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl92aWRlb1N0YWxsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLlN0YWxsZWQsXG4gICAgICBydW50aW1lOiAoRGF0ZS5ub3coKSAtIHRoaXMuX3BhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgc3RyZWFtSWQ6IHRoaXMuX3N0cmVhbUlkXG4gICAgfSk7XG5cbiAgICB0aGlzLl92aWRlb1N0YWxsZWQgPSBEYXRlLm5vdygpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnWyVzXSBbJXNdIFtidWZmZXJpbmddIFN0cmVhbSBoYXMgc3RhbGxlZCcsXG4gICAgICB0aGlzLmR1cmF0aW9uU2luY2VQYWdlTG9hZCxcbiAgICAgIHRoaXMuX3N0cmVhbUlkXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgb25Db250aW51YXRpb24oZXZlbnQ6IENvbnRpbnVhdGlvbkV2ZW50LCB2aWRlbzogSFRNTFZpZGVvRWxlbWVudCk6IHZvaWQge1xuICAgIGlmICghdmlkZW8uYnVmZmVyZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBidWZmZXJMZW5ndGggPSB2aWRlby5idWZmZXJlZC5sZW5ndGg7XG4gICAgY29uc3QgaGFzTm90UHJvZ3Jlc3NlZFNpbmNlTGFzdFByb2dyZXNzRXZlbnQgPSBldmVudC50eXBlID09PSAncGxheWluZydcbiAgICB8fCBidWZmZXJMZW5ndGggPiAwID8gKGV2ZW50LnR5cGUgPT09ICdwcm9ncmVzcydcbiAgICAgIHx8IGV2ZW50LnR5cGUgPT09ICd0aW1ldXBkYXRlJylcbiAgICAgICYmIHZpZGVvLmJ1ZmZlcmVkLmVuZChidWZmZXJMZW5ndGggLSAxKSA9PT0gdGhpcy5fbGFzdFByb2dyZXNzIDogdHJ1ZTtcblxuICAgIGlmICghdGhpcy5fdmlkZW9TdGFsbGVkIHx8IGhhc05vdFByb2dyZXNzZWRTaW5jZUxhc3RQcm9ncmVzc0V2ZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICdwcm9ncmVzcycpIHtcbiAgICAgIHRoaXMuX2xhc3RQcm9ncmVzcyA9IHZpZGVvLmJ1ZmZlcmVkLmVuZChidWZmZXJMZW5ndGggLSAxKTtcbiAgICB9XG5cbiAgICBjb25zdCB0aW1lU2luY2VTdG9wID0gRGF0ZS5ub3coKSAtIHRoaXMuX3ZpZGVvU3RhbGxlZDtcblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuQnVmZmVyaW5nLFxuICAgICAgcnVudGltZTogKERhdGUubm93KCkgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7dWludDY0OiB0aW1lU2luY2VTdG9wfSxcbiAgICAgIHN0cmVhbUlkOiB0aGlzLl9zdHJlYW1JZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnWyVzXSBbJXNdIFtidWZmZXJpbmddIFN0cmVhbSBoYXMgcmVjb3ZlcmVkIGZyb20gc3RhbGwgYWZ0ZXIgWyVzXScsXG4gICAgICB0aGlzLmR1cmF0aW9uU2luY2VQYWdlTG9hZCxcbiAgICAgIHRoaXMuX3N0cmVhbUlkLFxuICAgICAgbmV3IER1cmF0aW9ucyh0aW1lU2luY2VTdG9wKS50b0lzb1N0cmluZygpXG4gICAgKTtcbiAgICB0aGlzLl92aWRlb1N0YWxsZWQgPSBudWxsO1xuICB9XG5cbiAgb25WaWRlb1Jlc29sdXRpb25DaGFuZ2VzKG5ld1Jlc29sdXRpb246IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuUmVzb2x1dGlvbkNoYW5nZWQsXG4gICAgICBydW50aW1lOiAoRGF0ZS5ub3coKSAtIHRoaXMuX3BhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgdmFsdWU6IHtzdHJpbmc6IG5ld1Jlc29sdXRpb259LFxuICAgICAgcHJldmlvdXNWYWx1ZTogdGhpcy5fdmlkZW9SZXNvbHV0aW9uID8ge3N0cmluZzogdGhpcy5fdmlkZW9SZXNvbHV0aW9ufSA6IHVuZGVmaW5lZCxcbiAgICAgIHN0cmVhbUlkOiB0aGlzLl9zdHJlYW1JZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fdmlkZW9SZXNvbHV0aW9uID0gbmV3UmVzb2x1dGlvbjtcbiAgfVxufSIsIlxuaW1wb3J0IHdvcmtlciBmcm9tIFwiISEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvd29ya2VyLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5saW5lLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFdvcmtlcl9mbigpIHtcbiAgcmV0dXJuIHdvcmtlcihcIi8qKioqKiovIChmdW5jdGlvbigpIHsgLy8gd2VicGFja0Jvb3RzdHJhcFxcbi8qKioqKiovIFxcdFxcXCJ1c2Ugc3RyaWN0XFxcIjtcXG4vKioqKioqLyBcXHR2YXIgX193ZWJwYWNrX21vZHVsZXNfXyA9ICh7XFxuXFxuLyoqKi8gXFxcIi4vc3JjL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUudHNcXFwiOlxcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL3NyYy9sYW5nL2Fzc2VydFVucmVhY2hhYmxlLnRzICoqKiFcXG4gIFxcXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLyoqKi8gKGZ1bmN0aW9uKF9fdW51c2VkX3dlYnBhY2tfbW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XFxuXFxuLyogdW51c2VkIGhhcm1vbnkgZXhwb3J0IGFzc2VydFVucmVhY2hhYmxlICovXFxuLyoqXFxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXFxuICovXFxuXFxuZnVuY3Rpb24gYXNzZXJ0VW5yZWFjaGFibGUoeCkge1xcbiAgdGhyb3cgbmV3IEVycm9yKFxcXCJVbmV4cGVjdGVkIHZhbHVlIFtcXFwiLmNvbmNhdCh4LCBcXFwiXS4gVGhpcyBzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZFxcXCIpKTtcXG59XFxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1xcXCJkZWZhdWx0XFxcIl0gPSAoYXNzZXJ0VW5yZWFjaGFibGUpO1xcblxcbi8qKiovIH0pLFxcblxcbi8qKiovIFxcXCIuL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZS50c1xcXCI6XFxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZS50cyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqLyAoZnVuY3Rpb24oX191bnVzZWRfd2VicGFja19tb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcXG5cXG4vKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywge1xcbi8qIGhhcm1vbnkgZXhwb3J0ICovICAgVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlOiBmdW5jdGlvbigpIHsgcmV0dXJuIC8qIGJpbmRpbmcgKi8gVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlOyB9LFxcbi8qIGhhcm1vbnkgZXhwb3J0ICovICAgVHJhbnNmb3JtTWVzc2FnZVR5cGU6IGZ1bmN0aW9uKCkgeyByZXR1cm4gLyogYmluZGluZyAqLyBUcmFuc2Zvcm1NZXNzYWdlVHlwZTsgfVxcbi8qIGhhcm1vbnkgZXhwb3J0ICovIH0pO1xcbi8qKlxcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxcbiAqL1xcblxcbnZhciBUcmFuc2Zvcm1NZXNzYWdlVHlwZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoVHJhbnNmb3JtTWVzc2FnZVR5cGUpIHtcXG4gIFRyYW5zZm9ybU1lc3NhZ2VUeXBlW1RyYW5zZm9ybU1lc3NhZ2VUeXBlW1xcXCJFcnJvclxcXCJdID0gLTFdID0gXFxcIkVycm9yXFxcIjtcXG4gIFRyYW5zZm9ybU1lc3NhZ2VUeXBlW1RyYW5zZm9ybU1lc3NhZ2VUeXBlW1xcXCJBZGRUcmFuc2Zvcm1cXFwiXSA9IDBdID0gXFxcIkFkZFRyYW5zZm9ybVxcXCI7XFxuICBUcmFuc2Zvcm1NZXNzYWdlVHlwZVtUcmFuc2Zvcm1NZXNzYWdlVHlwZVtcXFwiQ29uZmlndXJlUGlwZWxpbmVcXFwiXSA9IDFdID0gXFxcIkNvbmZpZ3VyZVBpcGVsaW5lXFxcIjtcXG4gIFRyYW5zZm9ybU1lc3NhZ2VUeXBlW1RyYW5zZm9ybU1lc3NhZ2VUeXBlW1xcXCJNZXRhZGF0YVxcXCJdID0gMl0gPSBcXFwiTWV0YWRhdGFcXFwiO1xcbiAgVHJhbnNmb3JtTWVzc2FnZVR5cGVbVHJhbnNmb3JtTWVzc2FnZVR5cGVbXFxcIkNodW5rXFxcIl0gPSAzXSA9IFxcXCJDaHVua1xcXCI7XFxuICBUcmFuc2Zvcm1NZXNzYWdlVHlwZVtUcmFuc2Zvcm1NZXNzYWdlVHlwZVtcXFwiUGlwZWxpbmVDb25maWd1cmVkXFxcIl0gPSA0XSA9IFxcXCJQaXBlbGluZUNvbmZpZ3VyZWRcXFwiO1xcbiAgcmV0dXJuIFRyYW5zZm9ybU1lc3NhZ2VUeXBlO1xcbn0oe30pO1xcbnZhciBUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZSkge1xcbiAgVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlW1RyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZVtcXFwiRnJhbWVUaW1pbmdJbmZvcm1hdGlvblxcXCJdID0gMF0gPSBcXFwiRnJhbWVUaW1pbmdJbmZvcm1hdGlvblxcXCI7XFxuICBUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGVbVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlW1xcXCJFbmNvZGVkVmlkZW9DaHVua1xcXCJdID0gMV0gPSBcXFwiRW5jb2RlZFZpZGVvQ2h1bmtcXFwiO1xcbiAgVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlW1RyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZVtcXFwiRW5jb2RlZEF1ZGlvQ2h1bmtcXFwiXSA9IDJdID0gXFxcIkVuY29kZWRBdWRpb0NodW5rXFxcIjtcXG4gIFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZVtUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGVbXFxcIlN1cnJvZ2F0ZVZpZGVvQ2h1bmtcXFwiXSA9IDNdID0gXFxcIlN1cnJvZ2F0ZVZpZGVvQ2h1bmtcXFwiO1xcbiAgVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlW1RyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZVtcXFwiU3Vycm9nYXRlQXVkaW9DaHVua1xcXCJdID0gNF0gPSBcXFwiU3Vycm9nYXRlQXVkaW9DaHVua1xcXCI7XFxuICByZXR1cm4gVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlO1xcbn0oe30pO1xcblxcbi8qKiovIH0pLFxcblxcbi8qKiovIFxcXCIuL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL3RyYW5zZm9ybXMvV29ya2VyVHJhbnNmb3Jtcy50c1xcXCI6XFxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL3RyYW5zZm9ybXMvV29ya2VyVHJhbnNmb3Jtcy50cyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqLyAoZnVuY3Rpb24oX191bnVzZWRfd2VicGFja19tb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcXG5cXG4vKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywge1xcbi8qIGhhcm1vbnkgZXhwb3J0ICovICAgXFxcImRlZmF1bHRcXFwiOiBmdW5jdGlvbigpIHsgcmV0dXJuIC8qIGJpbmRpbmcgKi8gV29ya2VyVHJhbnNmb3JtczsgfVxcbi8qIGhhcm1vbnkgZXhwb3J0ICovIH0pO1xcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NsYXNzQ2FsbENoZWNrX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrICovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVjay5qc1xcXCIpO1xcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NyZWF0ZUNsYXNzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzICovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzcy5qc1xcXCIpO1xcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2UgKi8gXFxcIi4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi93b3JrZXIvVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlLnRzXFxcIik7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9mcmFtZVRpbWluZ0luZm9ybWF0aW9uX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL2ZyYW1lVGltaW5nSW5mb3JtYXRpb24gKi8gXFxcIi4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi93b3JrZXIvdHJhbnNmb3Jtcy9mcmFtZVRpbWluZ0luZm9ybWF0aW9uLnRzXFxcIik7XFxuXFxuXFxuLyoqXFxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXFxuICovXFxuXFxuXFxuXFxudmFyIFdvcmtlclRyYW5zZm9ybXMgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xcbiAgZnVuY3Rpb24gV29ya2VyVHJhbnNmb3JtcygpIHtcXG4gICAgKDAsX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fW1xcXCJkZWZhdWx0XFxcIl0pKHRoaXMsIFdvcmtlclRyYW5zZm9ybXMpO1xcbiAgfVxcbiAgcmV0dXJuICgwLF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfY3JlYXRlQ2xhc3NfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX1tcXFwiZGVmYXVsdFxcXCJdKShXb3JrZXJUcmFuc2Zvcm1zLCBudWxsLCBbe1xcbiAgICBrZXk6IFxcXCJjcmVhdGVGcmFtZVRpbWluZ0luZm9ybWF0aW9uVHJhbnNmb3JtXFxcIixcXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZUZyYW1lVGltaW5nSW5mb3JtYXRpb25UcmFuc2Zvcm0oKSB7XFxuICAgICAgcmV0dXJuIG5ldyBUcmFuc2Zvcm1TdHJlYW0oe1xcbiAgICAgICAgdHJhbnNmb3JtOiBmdW5jdGlvbiB0cmFuc2Zvcm0oY2h1bmssIGNvbnRyb2xsZXIpIHtcXG4gICAgICAgICAgKDAsX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25fX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX1tcXFwiZGVmYXVsdFxcXCJdKShjaHVuayk7XFxuICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShjaHVuayk7XFxuICAgICAgICB9XFxuICAgICAgfSk7XFxuICAgIH1cXG4gIH0sIHtcXG4gICAga2V5OiBcXFwiY3JlYXRlRW5jb2RlZFZpZGVvU3RyZWFtVHJhbnNmb3JtXFxcIixcXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZUVuY29kZWRWaWRlb1N0cmVhbVRyYW5zZm9ybSh3b3JrZXIpIHtcXG4gICAgICB2YXIgY2h1bmtzUGVuZGluZ0VucXVldWVCeVJ0cFRpbWVzdG1hcCA9IG5ldyBNYXAoKTtcXG4gICAgICB2YXIgc3Vycm9nYXRlRnJhbWVNZXNzYWdlSGFuZGxlciA9IGZ1bmN0aW9uIHN1cnJvZ2F0ZUZyYW1lTWVzc2FnZUhhbmRsZXIoY2h1bmtzUGVuZGluZ0VucXVldWVCeVJ0cFRpbWVzdG1hcCwgY29udHJvbGxlciwgX3JlZikge1xcbiAgICAgICAgdmFyIG1lc3NhZ2UgPSBfcmVmLmRhdGE7XFxuICAgICAgICBpZiAobWVzc2FnZS50eXBlICE9PSBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18uVHJhbnNmb3JtTWVzc2FnZVR5cGUuQ2h1bmsgfHwgbWVzc2FnZS5kYXRhLnR5cGUgIT09IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXy5UcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUuU3Vycm9nYXRlVmlkZW9DaHVuaykge1xcbiAgICAgICAgICByZXR1cm47XFxuICAgICAgICB9XFxuICAgICAgICB2YXIgbWVzc2FnZURhdGEgPSBtZXNzYWdlLmRhdGE7XFxuICAgICAgICB2YXIgX21lc3NhZ2VEYXRhJGRhdGEgPSBtZXNzYWdlRGF0YS5kYXRhLFxcbiAgICAgICAgICBzdXJyb2dhdGUgPSBfbWVzc2FnZURhdGEkZGF0YS5zdXJyb2dhdGUsXFxuICAgICAgICAgIHRpbWVzdGFtcCA9IF9tZXNzYWdlRGF0YSRkYXRhLnRpbWVzdGFtcDtcXG4gICAgICAgIHZhciBjaHVua1BlbmRpbmdFbnF1ZXVlID0gY2h1bmtzUGVuZGluZ0VucXVldWVCeVJ0cFRpbWVzdG1hcC5nZXQodGltZXN0YW1wKTtcXG4gICAgICAgIGlmICghY2h1bmtQZW5kaW5nRW5xdWV1ZSkge1xcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ1tXb3JrZXJUcmFuc2Zvcm1zXSBTdXJyb2dhdGUgdmlkZW8gY2h1bmsgbm90IGZvdW5kIGZvciB0aW1lc3RhbXAnLCB0aW1lc3RhbXApO1xcbiAgICAgICAgICByZXR1cm47XFxuICAgICAgICB9XFxuICAgICAgICBjaHVua1BlbmRpbmdFbnF1ZXVlLmRhdGEgPSBzdXJyb2dhdGU7XFxuICAgICAgICBjb250cm9sbGVyLmVucXVldWUoY2h1bmtQZW5kaW5nRW5xdWV1ZSk7XFxuICAgICAgICBjaHVua3NQZW5kaW5nRW5xdWV1ZUJ5UnRwVGltZXN0bWFwW1xcXCJkZWxldGVcXFwiXSh0aW1lc3RhbXApO1xcbiAgICAgIH07XFxuICAgICAgcmV0dXJuIG5ldyBUcmFuc2Zvcm1TdHJlYW0oe1xcbiAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uIHN0YXJ0KGNvbnRyb2xsZXIpIHtcXG4gICAgICAgICAgd29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBzdXJyb2dhdGVGcmFtZU1lc3NhZ2VIYW5kbGVyLmJpbmQobnVsbCwgY2h1bmtzUGVuZGluZ0VucXVldWVCeVJ0cFRpbWVzdG1hcCwgY29udHJvbGxlciksIHtcXG4gICAgICAgICAgICBvbmNlOiBmYWxzZVxcbiAgICAgICAgICB9KTtcXG4gICAgICAgIH0sXFxuICAgICAgICB0cmFuc2Zvcm06IGZ1bmN0aW9uIHRyYW5zZm9ybShjaHVuaykge1xcbiAgICAgICAgICBjaHVua3NQZW5kaW5nRW5xdWV1ZUJ5UnRwVGltZXN0bWFwLnNldChjaHVuay50aW1lc3RhbXAsIGNodW5rKTtcXG4gICAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSh7XFxuICAgICAgICAgICAgdHlwZTogX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLlRyYW5zZm9ybU1lc3NhZ2VUeXBlLk1ldGFkYXRhLFxcbiAgICAgICAgICAgIGRhdGE6IHtcXG4gICAgICAgICAgICAgIHR5cGU6IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXy5UcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUuRW5jb2RlZFZpZGVvQ2h1bmssXFxuICAgICAgICAgICAgICBkYXRhOiB7XFxuICAgICAgICAgICAgICAgIHRpbWVzdGFtcDogY2h1bmsudGltZXN0YW1wLFxcbiAgICAgICAgICAgICAgICBkYXRhOiBuZXcgVWludDhBcnJheShjaHVuay5kYXRhKSxcXG4gICAgICAgICAgICAgICAgdHlwZTogY2h1bmsudHlwZVxcbiAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgfSwge1xcbiAgICAgICAgICAgIHRyYW5zZmVyOiBbY2h1bmsuZGF0YV1cXG4gICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgICAgfSk7XFxuICAgIH1cXG4gIH0sIHtcXG4gICAga2V5OiBcXFwiY3JlYXRlRW5jb2RlZEF1ZGlvU3RyZWFtVHJhbnNmb3JtXFxcIixcXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZUVuY29kZWRBdWRpb1N0cmVhbVRyYW5zZm9ybSh3b3JrZXIpIHtcXG4gICAgICB2YXIgY2h1bmtzUGVuZGluZ0VucXVldWVCeVJ0cFRpbWVzdG1hcCA9IG5ldyBNYXAoKTtcXG4gICAgICB2YXIgc3Vycm9nYXRlRnJhbWVNZXNzYWdlSGFuZGxlciA9IGZ1bmN0aW9uIHN1cnJvZ2F0ZUZyYW1lTWVzc2FnZUhhbmRsZXIoY2h1bmtzUGVuZGluZ0VucXVldWVCeVJ0cFRpbWVzdG1hcCwgY29udHJvbGxlciwgX3JlZjIpIHtcXG4gICAgICAgIHZhciBtZXNzYWdlID0gX3JlZjIuZGF0YTtcXG4gICAgICAgIGlmIChtZXNzYWdlLnR5cGUgIT09IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXy5UcmFuc2Zvcm1NZXNzYWdlVHlwZS5DaHVuayB8fCBtZXNzYWdlLmRhdGEudHlwZSAhPT0gX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLlRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZS5TdXJyb2dhdGVBdWRpb0NodW5rKSB7XFxuICAgICAgICAgIHJldHVybjtcXG4gICAgICAgIH1cXG4gICAgICAgIHZhciBtZXNzYWdlRGF0YSA9IG1lc3NhZ2UuZGF0YTtcXG4gICAgICAgIHZhciBfbWVzc2FnZURhdGEkZGF0YTIgPSBtZXNzYWdlRGF0YS5kYXRhLFxcbiAgICAgICAgICBzdXJyb2dhdGUgPSBfbWVzc2FnZURhdGEkZGF0YTIuc3Vycm9nYXRlLFxcbiAgICAgICAgICB0aW1lc3RhbXAgPSBfbWVzc2FnZURhdGEkZGF0YTIudGltZXN0YW1wO1xcbiAgICAgICAgdmFyIGNodW5rUGVuZGluZ0VucXVldWUgPSBjaHVua3NQZW5kaW5nRW5xdWV1ZUJ5UnRwVGltZXN0bWFwLmdldCh0aW1lc3RhbXApO1xcbiAgICAgICAgaWYgKCFjaHVua1BlbmRpbmdFbnF1ZXVlKSB7XFxuICAgICAgICAgIGNvbnNvbGUud2FybignW1dvcmtlclRyYW5zZm9ybXNdIFN1cnJvZ2F0ZSBhdWRpbyBjaHVuayBub3QgZm91bmQgZm9yIHRpbWVzdGFtcCcsIHRpbWVzdGFtcCk7XFxuICAgICAgICAgIHJldHVybjtcXG4gICAgICAgIH1cXG4gICAgICAgIGNodW5rUGVuZGluZ0VucXVldWUuZGF0YSA9IHN1cnJvZ2F0ZTtcXG4gICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShjaHVua1BlbmRpbmdFbnF1ZXVlKTtcXG4gICAgICAgIGNodW5rc1BlbmRpbmdFbnF1ZXVlQnlSdHBUaW1lc3RtYXBbXFxcImRlbGV0ZVxcXCJdKHRpbWVzdGFtcCk7XFxuICAgICAgfTtcXG4gICAgICByZXR1cm4gbmV3IFRyYW5zZm9ybVN0cmVhbSh7XFxuICAgICAgICBzdGFydDogZnVuY3Rpb24gc3RhcnQoY29udHJvbGxlcikge1xcbiAgICAgICAgICB3b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIHN1cnJvZ2F0ZUZyYW1lTWVzc2FnZUhhbmRsZXIuYmluZChudWxsLCBjaHVua3NQZW5kaW5nRW5xdWV1ZUJ5UnRwVGltZXN0bWFwLCBjb250cm9sbGVyKSwge1xcbiAgICAgICAgICAgIG9uY2U6IGZhbHNlXFxuICAgICAgICAgIH0pO1xcbiAgICAgICAgfSxcXG4gICAgICAgIHRyYW5zZm9ybTogZnVuY3Rpb24gdHJhbnNmb3JtKGNodW5rKSB7XFxuICAgICAgICAgIGNodW5rc1BlbmRpbmdFbnF1ZXVlQnlSdHBUaW1lc3RtYXAuc2V0KGNodW5rLnRpbWVzdGFtcCwgY2h1bmspO1xcbiAgICAgICAgICBzZWxmLnBvc3RNZXNzYWdlKHtcXG4gICAgICAgICAgICB0eXBlOiBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18uVHJhbnNmb3JtTWVzc2FnZVR5cGUuTWV0YWRhdGEsXFxuICAgICAgICAgICAgZGF0YToge1xcbiAgICAgICAgICAgICAgdHlwZTogX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLlRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZS5FbmNvZGVkQXVkaW9DaHVuayxcXG4gICAgICAgICAgICAgIGRhdGE6IHtcXG4gICAgICAgICAgICAgICAgdGltZXN0YW1wOiBjaHVuay50aW1lc3RhbXAsXFxuICAgICAgICAgICAgICAgIGRhdGE6IG5ldyBVaW50OEFycmF5KGNodW5rLmRhdGEpLFxcbiAgICAgICAgICAgICAgICB0eXBlOiBjaHVuay50eXBlXFxuICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgdHJhbnNmZXI6IFtjaHVuay5kYXRhXVxcbiAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgICB9KTtcXG4gICAgfVxcbiAgfSwge1xcbiAgICBrZXk6IFxcXCJjcmVhdGVQYXNzVGhyb3VnaFRyYW5zZm9ybVxcXCIsXFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVQYXNzVGhyb3VnaFRyYW5zZm9ybSgpIHtcXG4gICAgICByZXR1cm4gbmV3IFRyYW5zZm9ybVN0cmVhbSh7XFxuICAgICAgICB0cmFuc2Zvcm06IGZ1bmN0aW9uIHRyYW5zZm9ybShjaHVuaywgY29udHJvbGxlcikge1xcbiAgICAgICAgICByZXR1cm4gY29udHJvbGxlci5lbnF1ZXVlKGNodW5rKTtcXG4gICAgICAgIH1cXG4gICAgICB9KTtcXG4gICAgfVxcbiAgfV0pO1xcbn0oKTtcXG5cXG5cXG4vKioqLyB9KSxcXG5cXG4vKioqLyBcXFwiLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci90cmFuc2Zvcm1zL2ZyYW1lVGltaW5nSW5mb3JtYXRpb24udHNcXFwiOlxcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci90cmFuc2Zvcm1zL2ZyYW1lVGltaW5nSW5mb3JtYXRpb24udHMgKioqIVxcbiAgXFxcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLyoqKi8gKGZ1bmN0aW9uKF9fdW51c2VkX3dlYnBhY2tfbW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XFxuXFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfZGVmaW5lUHJvcGVydHlfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIEBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHkgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5LmpzXFxcIik7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZSAqLyBcXFwiLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2UudHNcXFwiKTtcXG5cXG5mdW5jdGlvbiBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcihyLCBlKSB7IHZhciB0ID0gXFxcInVuZGVmaW5lZFxcXCIgIT0gdHlwZW9mIFN5bWJvbCAmJiByW1N5bWJvbC5pdGVyYXRvcl0gfHwgcltcXFwiQEBpdGVyYXRvclxcXCJdOyBpZiAoIXQpIHsgaWYgKEFycmF5LmlzQXJyYXkocikgfHwgKHQgPSBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkocikpIHx8IGUgJiYgciAmJiBcXFwibnVtYmVyXFxcIiA9PSB0eXBlb2Ygci5sZW5ndGgpIHsgdCAmJiAociA9IHQpOyB2YXIgX24gPSAwLCBGID0gZnVuY3Rpb24gRigpIHt9OyByZXR1cm4geyBzOiBGLCBuOiBmdW5jdGlvbiBuKCkgeyByZXR1cm4gX24gPj0gci5sZW5ndGggPyB7IGRvbmU6ICEwIH0gOiB7IGRvbmU6ICExLCB2YWx1ZTogcltfbisrXSB9OyB9LCBlOiBmdW5jdGlvbiBlKHIpIHsgdGhyb3cgcjsgfSwgZjogRiB9OyB9IHRocm93IG5ldyBUeXBlRXJyb3IoXFxcIkludmFsaWQgYXR0ZW1wdCB0byBpdGVyYXRlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXFxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cXFwiKTsgfSB2YXIgbywgYSA9ICEwLCB1ID0gITE7IHJldHVybiB7IHM6IGZ1bmN0aW9uIHMoKSB7IHQgPSB0LmNhbGwocik7IH0sIG46IGZ1bmN0aW9uIG4oKSB7IHZhciByID0gdC5uZXh0KCk7IHJldHVybiBhID0gci5kb25lLCByOyB9LCBlOiBmdW5jdGlvbiBlKHIpIHsgdSA9ICEwLCBvID0gcjsgfSwgZjogZnVuY3Rpb24gZigpIHsgdHJ5IHsgYSB8fCBudWxsID09IHRbXFxcInJldHVyblxcXCJdIHx8IHRbXFxcInJldHVyblxcXCJdKCk7IH0gZmluYWxseSB7IGlmICh1KSB0aHJvdyBvOyB9IH0gfTsgfVxcbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyLCBhKSB7IGlmIChyKSB7IGlmIChcXFwic3RyaW5nXFxcIiA9PSB0eXBlb2YgcikgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KHIsIGEpOyB2YXIgdCA9IHt9LnRvU3RyaW5nLmNhbGwocikuc2xpY2UoOCwgLTEpOyByZXR1cm4gXFxcIk9iamVjdFxcXCIgPT09IHQgJiYgci5jb25zdHJ1Y3RvciAmJiAodCA9IHIuY29uc3RydWN0b3IubmFtZSksIFxcXCJNYXBcXFwiID09PSB0IHx8IFxcXCJTZXRcXFwiID09PSB0ID8gQXJyYXkuZnJvbShyKSA6IFxcXCJBcmd1bWVudHNcXFwiID09PSB0IHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHQpID8gX2FycmF5TGlrZVRvQXJyYXkociwgYSkgOiB2b2lkIDA7IH0gfVxcbmZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KHIsIGEpIHsgKG51bGwgPT0gYSB8fCBhID4gci5sZW5ndGgpICYmIChhID0gci5sZW5ndGgpOyBmb3IgKHZhciBlID0gMCwgbiA9IEFycmF5KGEpOyBlIDwgYTsgZSsrKSBuW2VdID0gcltlXTsgcmV0dXJuIG47IH1cXG4vKipcXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cXG4gKi9cXG5cXG5cXG52YXIgSDI2NF9DT05TVEFOVFMgPSB7XFxuICBOQUxfVU5JVF9UWVBFX1NFSTogNixcXG4gIE5BTF9VTklUX0hFQURFUl9TSVpFOiAxLFxcbiAgU0VJX1BBWUxPQURfVFlQRV9QSUNfVElNSU5HOiAxLFxcbiAgRU1VTEFUSU9OX1BSRVZFTlRJT05fQllURTogMHgwMyxcXG4gIFNUQVJUX0NPREVfUFJFRklYXzNCOiBbMHgwMCwgMHgwMCwgMHgwMV0sXFxuICBTVEFSVF9DT0RFX1BSRUZJWF80QjogWzB4MDAsIDB4MDAsIDB4MDAsIDB4MDFdXFxufTtcXG52YXIgQklUU1RSRUFNX0NPTlNUQU5UUyA9IHtcXG4gIE1JTl9CSVRTX0ZPUl9DTE9DS19USU1FU1RBTVA6IDEwLFxcbiAgTUlOX0JJVFNfRk9SX0ZVTExfVElNRVNUQU1QOiAxNyxcXG4gIE1JTl9CSVRTX0ZPUl9USU1FX09GRlNFVDogMjRcXG59O1xcbmZ1bmN0aW9uIGZpbmROZXh0TmFsU3RhcnQoZGF0YSwgcG9zaXRpb24pIHtcXG4gIHZhciBkYXRhTGVuZ3RoID0gZGF0YS5sZW5ndGg7XFxuICBmb3IgKHZhciBpID0gcG9zaXRpb247IGkgPCBkYXRhTGVuZ3RoIC0gMzsgaSsrKSB7XFxuICAgIGlmIChkYXRhW2ldID09PSAweDAwICYmIGRhdGFbaSArIDFdID09PSAweDAwKSB7XFxuICAgICAgaWYgKGRhdGFbaSArIDJdID09PSAweDAxKSB7XFxuICAgICAgICByZXR1cm4gaTtcXG4gICAgICB9XFxuICAgICAgaWYgKGkgKyAzIDwgZGF0YUxlbmd0aCAmJiBkYXRhW2kgKyAyXSA9PT0gMHgwMCAmJiBkYXRhW2kgKyAzXSA9PT0gMHgwMSkge1xcbiAgICAgICAgcmV0dXJuIGk7XFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxuICByZXR1cm4gLTE7XFxufVxcbmZ1bmN0aW9uIGV4dHJhY3RTZWlQYXlsb2FkKGRhdGEsIHN0YXJ0SW5kZXgpIHtcXG4gIHZhciBpbmRleCA9IHN0YXJ0SW5kZXg7XFxuICB2YXIgZmZDb3VudCA9IDA7XFxuICB3aGlsZSAoZGF0YVtpbmRleF0gPT09IDB4ZmYpIHtcXG4gICAgZmZDb3VudCsrO1xcbiAgICBpbmRleCsrO1xcbiAgfVxcbiAgdmFyIHBheWxvYWRUeXBlID0gZmZDb3VudCAqIDI1NSArIGRhdGFbaW5kZXgrK107XFxuXFxuICAvLyBQYXJzZSBwYXlsb2FkIHNpemVcXG4gIGZmQ291bnQgPSAwO1xcbiAgd2hpbGUgKGRhdGFbaW5kZXhdID09PSAweGZmKSB7XFxuICAgIGZmQ291bnQrKztcXG4gICAgaW5kZXgrKztcXG4gIH1cXG4gIHZhciBwYXlsb2FkU2l6ZSA9IGZmQ291bnQgKiAyNTUgKyBkYXRhW2luZGV4KytdO1xcbiAgcmV0dXJuIHtcXG4gICAgdHlwZTogcGF5bG9hZFR5cGUsXFxuICAgIHBheWxvYWQ6IGRhdGEuc3ViYXJyYXkoaW5kZXgsIGluZGV4ICsgcGF5bG9hZFNpemUpLFxcbiAgICBsZW5ndGg6IGluZGV4ICsgcGF5bG9hZFNpemUgLSBzdGFydEluZGV4XFxuICB9O1xcbn1cXG5mdW5jdGlvbiByZW1vdmVFbXVsYXRpb25QcmV2ZW50aW9uQnl0ZXMoZGF0YSkge1xcbiAgdmFyIHJlc3VsdCA9IFtdO1xcbiAgdmFyIHplcm9Db3VudCA9IDA7XFxuICB2YXIgX2l0ZXJhdG9yID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIoZGF0YSksXFxuICAgIF9zdGVwO1xcbiAgdHJ5IHtcXG4gICAgZm9yIChfaXRlcmF0b3IucygpOyAhKF9zdGVwID0gX2l0ZXJhdG9yLm4oKSkuZG9uZTspIHtcXG4gICAgICB2YXIgX2J5dGUgPSBfc3RlcC52YWx1ZTtcXG4gICAgICBpZiAoemVyb0NvdW50ID09PSAyICYmIF9ieXRlID09PSBIMjY0X0NPTlNUQU5UUy5FTVVMQVRJT05fUFJFVkVOVElPTl9CWVRFKSB7XFxuICAgICAgICB6ZXJvQ291bnQgPSAwOyAvLyBSZXNldCBhZnRlciBmaW5kaW5nIGVtdWxhdGlvbiBwcmV2ZW50aW9uIGJ5dGUuXFxuICAgICAgfSBlbHNlIHtcXG4gICAgICAgIGlmIChfYnl0ZSA9PT0gMHgwMCkge1xcbiAgICAgICAgICB6ZXJvQ291bnQrKztcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgIHplcm9Db3VudCA9IDA7XFxuICAgICAgICB9XFxuICAgICAgICByZXN1bHQucHVzaChfYnl0ZSk7XFxuICAgICAgfVxcbiAgICB9XFxuICB9IGNhdGNoIChlcnIpIHtcXG4gICAgX2l0ZXJhdG9yLmUoZXJyKTtcXG4gIH0gZmluYWxseSB7XFxuICAgIF9pdGVyYXRvci5mKCk7XFxuICB9XFxuICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkocmVzdWx0KTtcXG59XFxuZnVuY3Rpb24gY29udmVydFBpY1N0cnVjdFRvTnVtQ2xvY2tUUyhwaWNTdHJ1Y3QpIHtcXG4gIHN3aXRjaCAocGljU3RydWN0KSB7XFxuICAgIGNhc2UgMDpcXG4gICAgY2FzZSAxOlxcbiAgICBjYXNlIDI6XFxuICAgICAgcmV0dXJuIDE7XFxuICAgIGNhc2UgMzpcXG4gICAgY2FzZSA0OlxcbiAgICBjYXNlIDc6XFxuICAgICAgcmV0dXJuIDI7XFxuICAgIGNhc2UgNTpcXG4gICAgY2FzZSA2OlxcbiAgICBjYXNlIDg6XFxuICAgICAgcmV0dXJuIDM7XFxuICAgIGRlZmF1bHQ6XFxuICAgICAgcmV0dXJuIDA7XFxuICB9XFxufVxcbmZ1bmN0aW9uIGNyZWF0ZUJpdHN0cmVhbVJlYWRlcihidWZmZXIpIHtcXG4gIHZhciBiaXRPZmZzZXQgPSAwO1xcbiAgZnVuY3Rpb24gcmVhZEJpdHMoYml0c1RvUmVhZCkge1xcbiAgICBpZiAoYml0T2Zmc2V0ICsgYml0c1RvUmVhZCA+IGJ1ZmZlci5sZW5ndGggKiA4KSB7XFxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxcXCJDYW5ub3QgcmVhZCBbXFxcIi5jb25jYXQoYml0c1RvUmVhZCwgXFxcIl0gYml0cyAtIG91dCBvZiBib3VuZHNcXFwiKSk7XFxuICAgIH1cXG4gICAgdmFyIHZhbHVlID0gMDtcXG4gICAgdmFyIGJpdHNSZW1haW5pbmcgPSBiaXRzVG9SZWFkO1xcbiAgICB3aGlsZSAoYml0c1JlbWFpbmluZyA+IDApIHtcXG4gICAgICB2YXIgYnl0ZU9mZnNldCA9IE1hdGguZmxvb3IoYml0T2Zmc2V0IC8gOCk7XFxuICAgICAgdmFyIGJpdEluQnl0ZSA9IGJpdE9mZnNldCAlIDg7XFxuICAgICAgdmFyIGJpdHNMZWZ0SW5CeXRlID0gOCAtIGJpdEluQnl0ZTtcXG4gICAgICB2YXIgcmVhZE5vdyA9IE1hdGgubWluKGJpdHNSZW1haW5pbmcsIGJpdHNMZWZ0SW5CeXRlKTtcXG4gICAgICB2YXIgbWFzayA9ICgxIDw8IHJlYWROb3cpIC0gMTtcXG4gICAgICB2YXIgYnl0ZVZhbCA9IGJ1ZmZlcltieXRlT2Zmc2V0XSA+PiBiaXRzTGVmdEluQnl0ZSAtIHJlYWROb3c7XFxuICAgICAgdmFyIGJpdHMgPSBieXRlVmFsICYgbWFzaztcXG4gICAgICB2YWx1ZSA9IHZhbHVlIDw8IHJlYWROb3cgfCBiaXRzO1xcbiAgICAgIGJpdE9mZnNldCArPSByZWFkTm93O1xcbiAgICAgIGJpdHNSZW1haW5pbmcgLT0gcmVhZE5vdztcXG4gICAgfVxcbiAgICByZXR1cm4gdmFsdWU7XFxuICB9XFxuICBmdW5jdGlvbiBza2lwQml0cyhuKSB7XFxuICAgIGlmIChiaXRPZmZzZXQgKyBuID4gYnVmZmVyLmxlbmd0aCAqIDgpIHtcXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXFxcIkNhbm5vdCBza2lwIFtcXFwiLmNvbmNhdChuLCBcXFwiXSBiaXRzIC0gb3V0IG9mIGJvdW5kc1xcXCIpKTtcXG4gICAgfVxcbiAgICBiaXRPZmZzZXQgKz0gbjtcXG4gIH1cXG4gIGZ1bmN0aW9uIGdldFJlbWFpbmluZ0JpdHMoKSB7XFxuICAgIHJldHVybiBidWZmZXIubGVuZ3RoICogOCAtIGJpdE9mZnNldDtcXG4gIH1cXG4gIHJldHVybiB7XFxuICAgIHJlYWRCaXRzOiByZWFkQml0cyxcXG4gICAgc2tpcEJpdHM6IHNraXBCaXRzLFxcbiAgICBnZXRSZW1haW5pbmdCaXRzOiBnZXRSZW1haW5pbmdCaXRzXFxuICB9O1xcbn1cXG5mdW5jdGlvbiByZWFkT3B0aW9uYWxUaW1lc3RhbXBGaWVsZHMocmVhZGVyLCB0cykge1xcbiAgaWYgKHJlYWRlci5nZXRSZW1haW5pbmdCaXRzKCkgPCAxIHx8IHJlYWRlci5yZWFkQml0cygxKSA9PT0gMCkge1xcbiAgICByZXR1cm4gdHJ1ZTsgLy8gTm8gc2Vjb25kc19mbGFnLCB3ZSBhcmUgZG9uZS5cXG4gIH1cXG4gIGlmIChyZWFkZXIuZ2V0UmVtYWluaW5nQml0cygpIDwgNikge1xcbiAgICByZXR1cm4gZmFsc2U7XFxuICB9XFxuICB0cy5zZWNvbmRzID0gcmVhZGVyLnJlYWRCaXRzKDYpO1xcbiAgaWYgKHJlYWRlci5nZXRSZW1haW5pbmdCaXRzKCkgPCAxIHx8IHJlYWRlci5yZWFkQml0cygxKSA9PT0gMCkge1xcbiAgICByZXR1cm4gdHJ1ZTsgLy8gTm8gbWludXRlc19mbGFnLCB3ZSBhcmUgZG9uZS5cXG4gIH1cXG4gIGlmIChyZWFkZXIuZ2V0UmVtYWluaW5nQml0cygpIDwgNikge1xcbiAgICByZXR1cm4gZmFsc2U7XFxuICB9XFxuICB0cy5taW51dGVzID0gcmVhZGVyLnJlYWRCaXRzKDYpO1xcbiAgaWYgKHJlYWRlci5nZXRSZW1haW5pbmdCaXRzKCkgPCAxIHx8IHJlYWRlci5yZWFkQml0cygxKSA9PT0gMCkge1xcbiAgICByZXR1cm4gdHJ1ZTsgLy8gTm8gaG91cnNfZmxhZywgd2UgYXJlIGRvbmUuXFxuICB9XFxuICBpZiAocmVhZGVyLmdldFJlbWFpbmluZ0JpdHMoKSA8IDUpIHtcXG4gICAgcmV0dXJuIGZhbHNlO1xcbiAgfVxcbiAgdHMuaG91cnMgPSByZWFkZXIucmVhZEJpdHMoNSk7XFxuICByZXR1cm4gdHJ1ZTtcXG59XFxuZnVuY3Rpb24gcGFyc2VDbG9ja1RpbWVzdGFtcChyZWFkZXIpIHtcXG4gIGlmIChyZWFkZXIuZ2V0UmVtYWluaW5nQml0cygpIDwgQklUU1RSRUFNX0NPTlNUQU5UUy5NSU5fQklUU19GT1JfQ0xPQ0tfVElNRVNUQU1QKSB7XFxuICAgIHJldHVybiBudWxsO1xcbiAgfVxcbiAgdmFyIHRzID0ge1xcbiAgICBjdFR5cGU6IHJlYWRlci5yZWFkQml0cygyKSxcXG4gICAgbnVpdEZpZWxkQmFzZWRGbGFnOiByZWFkZXIucmVhZEJpdHMoMSkgPT09IDEsXFxuICAgIGNvdW50aW5nVHlwZTogcmVhZGVyLnJlYWRCaXRzKDUpLFxcbiAgICBmdWxsVGltZXN0YW1wRmxhZzogcmVhZGVyLnJlYWRCaXRzKDEpID09PSAxLFxcbiAgICBkaXNjb250aW51aXR5RmxhZzogcmVhZGVyLnJlYWRCaXRzKDEpID09PSAxLFxcbiAgICBjbnREcm9wcGVkRmxhZzogcmVhZGVyLnJlYWRCaXRzKDEpID09PSAxLFxcbiAgICBuRnJhbWVzOiByZWFkZXIucmVhZEJpdHMoOClcXG4gIH07XFxuICBpZiAodHMuZnVsbFRpbWVzdGFtcEZsYWcpIHtcXG4gICAgaWYgKHJlYWRlci5nZXRSZW1haW5pbmdCaXRzKCkgPCBCSVRTVFJFQU1fQ09OU1RBTlRTLk1JTl9CSVRTX0ZPUl9GVUxMX1RJTUVTVEFNUCkge1xcbiAgICAgIHJldHVybiBudWxsO1xcbiAgICB9XFxuICAgIHRzLnNlY29uZHMgPSByZWFkZXIucmVhZEJpdHMoNik7XFxuICAgIHRzLm1pbnV0ZXMgPSByZWFkZXIucmVhZEJpdHMoNik7XFxuICAgIHRzLmhvdXJzID0gcmVhZGVyLnJlYWRCaXRzKDUpO1xcbiAgfSBlbHNlIHtcXG4gICAgaWYgKCFyZWFkT3B0aW9uYWxUaW1lc3RhbXBGaWVsZHMocmVhZGVyLCB0cykpIHtcXG4gICAgICByZXR1cm4gbnVsbDtcXG4gICAgfVxcbiAgfVxcbiAgaWYgKHJlYWRlci5nZXRSZW1haW5pbmdCaXRzKCkgPCBCSVRTVFJFQU1fQ09OU1RBTlRTLk1JTl9CSVRTX0ZPUl9USU1FX09GRlNFVCkge1xcbiAgICByZXR1cm4gbnVsbDtcXG4gIH1cXG4gIHRzLnRpbWVPZmZzZXQgPSByZWFkZXIucmVhZEJpdHMoMjQpO1xcbiAgcmV0dXJuIHRzO1xcbn1cXG5mdW5jdGlvbiBwYXJzZVBpY3R1cmVUaW1pbmcoZGF0YSwgY29uZmlnKSB7XFxuICB2YXIgcmVhZGVyID0gY3JlYXRlQml0c3RyZWFtUmVhZGVyKHJlbW92ZUVtdWxhdGlvblByZXZlbnRpb25CeXRlcyhkYXRhKSk7XFxuICB2YXIgcmVzdWx0ID0ge1xcbiAgICBwaWNTdHJ1Y3Q6IHVuZGVmaW5lZFxcbiAgfTtcXG4gIGlmIChjb25maWcuY3BiRHBiRGVsYXlzUHJlc2VudEZsYWcgJiYgY29uZmlnLmNwYlJlbW92YWxEZWxheUxlbmd0aE1pbnVzMSAhPT0gdW5kZWZpbmVkICYmIGNvbmZpZy5kcGJPdXRwdXREZWxheUxlbmd0aE1pbnVzMSAhPT0gdW5kZWZpbmVkKSB7XFxuICAgIHJlYWRlci5za2lwQml0cyhjb25maWcuY3BiUmVtb3ZhbERlbGF5TGVuZ3RoTWludXMxICsgMSk7XFxuICAgIHJlYWRlci5za2lwQml0cyhjb25maWcuZHBiT3V0cHV0RGVsYXlMZW5ndGhNaW51czEgKyAxKTtcXG4gIH1cXG4gIGlmIChjb25maWcucGljU3RydWN0UHJlc2VudEZsYWcpIHtcXG4gICAgdmFyIHBpY1N0cnVjdCA9IHJlYWRlci5yZWFkQml0cyg0KTtcXG4gICAgdmFyIG51bUNsb2NrVFMgPSBjb252ZXJ0UGljU3RydWN0VG9OdW1DbG9ja1RTKHBpY1N0cnVjdCk7XFxuICAgIHZhciBjbG9ja1RpbWVzdGFtcHMgPSBbXTtcXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1DbG9ja1RTOyBpKyspIHtcXG4gICAgICBpZiAocmVhZGVyLmdldFJlbWFpbmluZ0JpdHMoKSA8IDEpIHtcXG4gICAgICAgIGJyZWFrO1xcbiAgICAgIH1cXG4gICAgICB2YXIgY2xvY2tUaW1lc3RhbXBGbGFnID0gcmVhZGVyLnJlYWRCaXRzKDEpID09PSAxO1xcbiAgICAgIGlmICghY2xvY2tUaW1lc3RhbXBGbGFnKSB7XFxuICAgICAgICBjbG9ja1RpbWVzdGFtcHMucHVzaCh7XFxuICAgICAgICAgIGNsb2NrVGltZXN0YW1wRmxhZzogZmFsc2VcXG4gICAgICAgIH0pO1xcbiAgICAgICAgY29udGludWU7XFxuICAgICAgfVxcbiAgICAgIHZhciB0cyA9IHBhcnNlQ2xvY2tUaW1lc3RhbXAocmVhZGVyKTtcXG4gICAgICBpZiAodHMpIHtcXG4gICAgICAgIGNsb2NrVGltZXN0YW1wcy5wdXNoKHtcXG4gICAgICAgICAgY2xvY2tUaW1lc3RhbXBGbGFnOiB0cnVlLFxcbiAgICAgICAgICBjbG9ja1RpbWVzdGFtcDogdHNcXG4gICAgICAgIH0pO1xcbiAgICAgIH0gZWxzZSB7XFxuICAgICAgICAvLyBOb3QgZW5vdWdoIGJpdHMsIHN0b3AgcHJvY2Vzc2luZyBTRUlcXG4gICAgICAgIGJyZWFrO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgICByZXN1bHQucGljU3RydWN0ID0ge1xcbiAgICAgIG51bUNsb2NrVFM6IG51bUNsb2NrVFMsXFxuICAgICAgY2xvY2tUaW1lc3RhbXBzOiBjbG9ja1RpbWVzdGFtcHNcXG4gICAgfTtcXG4gIH1cXG4gIHJldHVybiByZXN1bHQ7XFxufVxcbmZ1bmN0aW9uIGRlY29kZUZyYW1lVGltaW5nVGltZWNvZGUoY2h1bmspIHtcXG4gIHZhciByZWNlaXZlVGltZXN0YW1wID0gbmV3IERhdGUoKTtcXG4gIHZhciBjaHVua0RhdGEgPSBuZXcgVWludDhBcnJheShjaHVuay5kYXRhKTtcXG4gIHZhciBjdXJyZW50SW5kZXggPSBmaW5kTmV4dE5hbFN0YXJ0KGNodW5rRGF0YSwgMCk7XFxuICB3aGlsZSAoY3VycmVudEluZGV4ICE9PSAtMSkge1xcbiAgICB2YXIgbmV4dE5hbFN0YXJ0ID0gZmluZE5leHROYWxTdGFydChjaHVua0RhdGEsIGN1cnJlbnRJbmRleCArIDEpO1xcbiAgICB2YXIgbmFsVW5pdEVuZCA9IG5leHROYWxTdGFydCA9PT0gLTEgPyBjaHVua0RhdGEubGVuZ3RoIDogbmV4dE5hbFN0YXJ0O1xcbiAgICB2YXIgc3RhcnRDb2RlTGVuZ3RoID0gY2h1bmtEYXRhW2N1cnJlbnRJbmRleCArIDJdID09PSAweDAxID8gMyA6IDQ7XFxuICAgIHZhciBuYWxVbml0SGVhZGVySW5kZXggPSBjdXJyZW50SW5kZXggKyBzdGFydENvZGVMZW5ndGg7XFxuICAgIHZhciBuYWxVbml0VHlwZSA9IGNodW5rRGF0YVtuYWxVbml0SGVhZGVySW5kZXhdICYgMHgxZjtcXG4gICAgaWYgKG5hbFVuaXRUeXBlID09PSBIMjY0X0NPTlNUQU5UUy5OQUxfVU5JVF9UWVBFX1NFSSkge1xcbiAgICAgIHZhciBzZWlJbmRleCA9IG5hbFVuaXRIZWFkZXJJbmRleCArIEgyNjRfQ09OU1RBTlRTLk5BTF9VTklUX0hFQURFUl9TSVpFO1xcbiAgICAgIHZhciBuYWxVbml0RGF0YSA9IGNodW5rRGF0YS5zdWJhcnJheShzZWlJbmRleCwgbmFsVW5pdEVuZCk7XFxuICAgICAgdmFyIHNlaU9mZnNldCA9IDA7XFxuXFxuICAgICAgLy8gUHJvY2VzcyBTRUkgbWVzc2FnZXMgdW50aWwgZW5kIG9mIE5BTCB1bml0XFxuICAgICAgd2hpbGUgKHNlaU9mZnNldCA8IG5hbFVuaXREYXRhLmxlbmd0aCkge1xcbiAgICAgICAgLy8gU3RvcCBpZiByZW1haW5pbmcgZGF0YSBpcyB0b28gc2hvcnQgdG8gYmUgYSB2YWxpZCBTRUkgbWVzc2FnZVxcbiAgICAgICAgaWYgKHNlaU9mZnNldCArIDIgPiBuYWxVbml0RGF0YS5sZW5ndGgpIHtcXG4gICAgICAgICAgYnJlYWs7XFxuICAgICAgICB9XFxuICAgICAgICB2YXIgc2VpUGF5bG9hZCA9IGV4dHJhY3RTZWlQYXlsb2FkKG5hbFVuaXREYXRhLCBzZWlPZmZzZXQpO1xcbiAgICAgICAgaWYgKHNlaVBheWxvYWQudHlwZSA9PT0gSDI2NF9DT05TVEFOVFMuU0VJX1BBWUxPQURfVFlQRV9QSUNfVElNSU5HKSB7XFxuICAgICAgICAgIHZhciBfcGFyc2VkUGljdHVyZVRpbWluZyQ7XFxuICAgICAgICAgIHZhciBwYXJzZWRQaWN0dXJlVGltaW5nID0gcGFyc2VQaWN0dXJlVGltaW5nKHNlaVBheWxvYWQucGF5bG9hZCwge1xcbiAgICAgICAgICAgIGNwYkRwYkRlbGF5c1ByZXNlbnRGbGFnOiBmYWxzZSxcXG4gICAgICAgICAgICBwaWNTdHJ1Y3RQcmVzZW50RmxhZzogdHJ1ZVxcbiAgICAgICAgICB9KTtcXG4gICAgICAgICAgdmFyIGZpcnN0Q2xvY2tUaW1lc3RhbXAgPSAoX3BhcnNlZFBpY3R1cmVUaW1pbmckID0gcGFyc2VkUGljdHVyZVRpbWluZy5waWNTdHJ1Y3QpID09PSBudWxsIHx8IF9wYXJzZWRQaWN0dXJlVGltaW5nJCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3BhcnNlZFBpY3R1cmVUaW1pbmckLmNsb2NrVGltZXN0YW1wc1swXTtcXG4gICAgICAgICAgaWYgKGZpcnN0Q2xvY2tUaW1lc3RhbXAgIT09IG51bGwgJiYgZmlyc3RDbG9ja1RpbWVzdGFtcCAhPT0gdm9pZCAwICYmIGZpcnN0Q2xvY2tUaW1lc3RhbXAuY2xvY2tUaW1lc3RhbXBGbGFnKSB7XFxuICAgICAgICAgICAgdmFyIF9maXJzdENsb2NrVGltZXN0YW1wJCwgX2ZpcnN0Q2xvY2tUaW1lc3RhbXAkMiwgX2ZpcnN0Q2xvY2tUaW1lc3RhbXAkMywgX2ZpcnN0Q2xvY2tUaW1lc3RhbXAkNDtcXG4gICAgICAgICAgICB2YXIgcnRwVGltZXN0YW1wID0gY2h1bmsudGltZXN0YW1wO1xcbiAgICAgICAgICAgIHZhciBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiA9IHtcXG4gICAgICAgICAgICAgIHRpbWVjb2RlOiBmaXJzdENsb2NrVGltZXN0YW1wLmNsb2NrVGltZXN0YW1wID8ge1xcbiAgICAgICAgICAgICAgICBob3VyczogKF9maXJzdENsb2NrVGltZXN0YW1wJCA9IGZpcnN0Q2xvY2tUaW1lc3RhbXAuY2xvY2tUaW1lc3RhbXAuaG91cnMpICE9PSBudWxsICYmIF9maXJzdENsb2NrVGltZXN0YW1wJCAhPT0gdm9pZCAwID8gX2ZpcnN0Q2xvY2tUaW1lc3RhbXAkIDogbnVsbCxcXG4gICAgICAgICAgICAgICAgbWludXRlczogKF9maXJzdENsb2NrVGltZXN0YW1wJDIgPSBmaXJzdENsb2NrVGltZXN0YW1wLmNsb2NrVGltZXN0YW1wLm1pbnV0ZXMpICE9PSBudWxsICYmIF9maXJzdENsb2NrVGltZXN0YW1wJDIgIT09IHZvaWQgMCA/IF9maXJzdENsb2NrVGltZXN0YW1wJDIgOiBudWxsLFxcbiAgICAgICAgICAgICAgICBzZWNvbmRzOiAoX2ZpcnN0Q2xvY2tUaW1lc3RhbXAkMyA9IGZpcnN0Q2xvY2tUaW1lc3RhbXAuY2xvY2tUaW1lc3RhbXAuc2Vjb25kcykgIT09IG51bGwgJiYgX2ZpcnN0Q2xvY2tUaW1lc3RhbXAkMyAhPT0gdm9pZCAwID8gX2ZpcnN0Q2xvY2tUaW1lc3RhbXAkMyA6IG51bGwsXFxuICAgICAgICAgICAgICAgIGZyYW1lczogKF9maXJzdENsb2NrVGltZXN0YW1wJDQgPSBmaXJzdENsb2NrVGltZXN0YW1wLmNsb2NrVGltZXN0YW1wLm5GcmFtZXMpICE9PSBudWxsICYmIF9maXJzdENsb2NrVGltZXN0YW1wJDQgIT09IHZvaWQgMCA/IF9maXJzdENsb2NrVGltZXN0YW1wJDQgOiBudWxsLFxcbiAgICAgICAgICAgICAgICBpc0ZyYW1lRHJvcDogZmlyc3RDbG9ja1RpbWVzdGFtcC5jbG9ja1RpbWVzdGFtcC5jbnREcm9wcGVkRmxhZ1xcbiAgICAgICAgICAgICAgfSA6IG51bGwsXFxuICAgICAgICAgICAgICByZWNlaXZlVGltZXN0YW1wOiByZWNlaXZlVGltZXN0YW1wXFxuICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICBzZWxmLnBvc3RNZXNzYWdlKHtcXG4gICAgICAgICAgICAgIHR5cGU6IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy5UcmFuc2Zvcm1NZXNzYWdlVHlwZS5NZXRhZGF0YSxcXG4gICAgICAgICAgICAgIGRhdGE6IHtcXG4gICAgICAgICAgICAgICAgdHlwZTogX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fLlRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZS5GcmFtZVRpbWluZ0luZm9ybWF0aW9uLFxcbiAgICAgICAgICAgICAgICBkYXRhOiAoMCxfYmFiZWxfcnVudGltZV9oZWxwZXJzX2RlZmluZVByb3BlcnR5X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19bXFxcImRlZmF1bHRcXFwiXSkoe30sIHJ0cFRpbWVzdGFtcCwge1xcbiAgICAgICAgICAgICAgICAgIGRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uOiBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICBzZWlPZmZzZXQgKz0gc2VpUGF5bG9hZC5sZW5ndGg7XFxuXFxuICAgICAgICAvLyBTdG9wIGlmIGFuIGludmFsaWQgcGF5bG9hZCBsZW5ndGggd2FzIGRldGVjdGVkLlxcbiAgICAgICAgaWYgKHNlaVBheWxvYWQubGVuZ3RoID09PSAwKSB7XFxuICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgfVxcbiAgICAgIH1cXG4gICAgfVxcbiAgICBjdXJyZW50SW5kZXggPSBuZXh0TmFsU3RhcnQ7XFxuICB9XFxufVxcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcXFwiZGVmYXVsdFxcXCJdID0gKGRlY29kZUZyYW1lVGltaW5nVGltZWNvZGUpO1xcblxcbi8qKiovIH0pLFxcblxcbi8qKiovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3luY1RvR2VuZXJhdG9yLmpzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXN5bmNUb0dlbmVyYXRvci5qcyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovIChmdW5jdGlvbihfX3VudXNlZF93ZWJwYWNrX19fd2VicGFja19tb2R1bGVfXywgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xcblxcbi8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCB7XFxuLyogaGFybW9ueSBleHBvcnQgKi8gICBcXFwiZGVmYXVsdFxcXCI6IGZ1bmN0aW9uKCkgeyByZXR1cm4gLyogYmluZGluZyAqLyBfYXN5bmNUb0dlbmVyYXRvcjsgfVxcbi8qIGhhcm1vbnkgZXhwb3J0ICovIH0pO1xcbmZ1bmN0aW9uIGFzeW5jR2VuZXJhdG9yU3RlcChuLCB0LCBlLCByLCBvLCBhLCBjKSB7XFxuICB0cnkge1xcbiAgICB2YXIgaSA9IG5bYV0oYyksXFxuICAgICAgdSA9IGkudmFsdWU7XFxuICB9IGNhdGNoIChuKSB7XFxuICAgIHJldHVybiB2b2lkIGUobik7XFxuICB9XFxuICBpLmRvbmUgPyB0KHUpIDogUHJvbWlzZS5yZXNvbHZlKHUpLnRoZW4ociwgbyk7XFxufVxcbmZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKG4pIHtcXG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XFxuICAgIHZhciB0ID0gdGhpcyxcXG4gICAgICBlID0gYXJndW1lbnRzO1xcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHIsIG8pIHtcXG4gICAgICB2YXIgYSA9IG4uYXBwbHkodCwgZSk7XFxuICAgICAgZnVuY3Rpb24gX25leHQobikge1xcbiAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGEsIHIsIG8sIF9uZXh0LCBfdGhyb3csIFxcXCJuZXh0XFxcIiwgbik7XFxuICAgICAgfVxcbiAgICAgIGZ1bmN0aW9uIF90aHJvdyhuKSB7XFxuICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoYSwgciwgbywgX25leHQsIF90aHJvdywgXFxcInRocm93XFxcIiwgbik7XFxuICAgICAgfVxcbiAgICAgIF9uZXh0KHZvaWQgMCk7XFxuICAgIH0pO1xcbiAgfTtcXG59XFxuXFxuXFxuLyoqKi8gfSksXFxuXFxuLyoqKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrLmpzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrLmpzICoqKiFcXG4gIFxcXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovIChmdW5jdGlvbihfX3VudXNlZF93ZWJwYWNrX19fd2VicGFja19tb2R1bGVfXywgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xcblxcbi8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCB7XFxuLyogaGFybW9ueSBleHBvcnQgKi8gICBcXFwiZGVmYXVsdFxcXCI6IGZ1bmN0aW9uKCkgeyByZXR1cm4gLyogYmluZGluZyAqLyBfY2xhc3NDYWxsQ2hlY2s7IH1cXG4vKiBoYXJtb255IGV4cG9ydCAqLyB9KTtcXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soYSwgbikge1xcbiAgaWYgKCEoYSBpbnN0YW5jZW9mIG4pKSB0aHJvdyBuZXcgVHlwZUVycm9yKFxcXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cXFwiKTtcXG59XFxuXFxuXFxuLyoqKi8gfSksXFxuXFxuLyoqKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzLmpzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzLmpzICoqKiFcXG4gIFxcXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovIChmdW5jdGlvbihfX3VudXNlZF93ZWJwYWNrX19fd2VicGFja19tb2R1bGVfXywgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xcblxcbi8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCB7XFxuLyogaGFybW9ueSBleHBvcnQgKi8gICBcXFwiZGVmYXVsdFxcXCI6IGZ1bmN0aW9uKCkgeyByZXR1cm4gLyogYmluZGluZyAqLyBfY3JlYXRlQ2xhc3M7IH1cXG4vKiBoYXJtb255IGV4cG9ydCAqLyB9KTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX3RvUHJvcGVydHlLZXlfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vdG9Qcm9wZXJ0eUtleS5qcyAqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9Qcm9wZXJ0eUtleS5qc1xcXCIpO1xcblxcbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKGUsIHIpIHtcXG4gIGZvciAodmFyIHQgPSAwOyB0IDwgci5sZW5ndGg7IHQrKykge1xcbiAgICB2YXIgbyA9IHJbdF07XFxuICAgIG8uZW51bWVyYWJsZSA9IG8uZW51bWVyYWJsZSB8fCAhMSwgby5jb25maWd1cmFibGUgPSAhMCwgXFxcInZhbHVlXFxcIiBpbiBvICYmIChvLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgKDAsX3RvUHJvcGVydHlLZXlfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX1tcXFwiZGVmYXVsdFxcXCJdKShvLmtleSksIG8pO1xcbiAgfVxcbn1cXG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoZSwgciwgdCkge1xcbiAgcmV0dXJuIHIgJiYgX2RlZmluZVByb3BlcnRpZXMoZS5wcm90b3R5cGUsIHIpLCB0ICYmIF9kZWZpbmVQcm9wZXJ0aWVzKGUsIHQpLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgXFxcInByb3RvdHlwZVxcXCIsIHtcXG4gICAgd3JpdGFibGU6ICExXFxuICB9KSwgZTtcXG59XFxuXFxuXFxuLyoqKi8gfSksXFxuXFxuLyoqKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5LmpzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5LmpzICoqKiFcXG4gIFxcXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovIChmdW5jdGlvbihfX3VudXNlZF93ZWJwYWNrX19fd2VicGFja19tb2R1bGVfXywgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xcblxcbi8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCB7XFxuLyogaGFybW9ueSBleHBvcnQgKi8gICBcXFwiZGVmYXVsdFxcXCI6IGZ1bmN0aW9uKCkgeyByZXR1cm4gLyogYmluZGluZyAqLyBfZGVmaW5lUHJvcGVydHk7IH1cXG4vKiBoYXJtb255IGV4cG9ydCAqLyB9KTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX3RvUHJvcGVydHlLZXlfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vdG9Qcm9wZXJ0eUtleS5qcyAqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9Qcm9wZXJ0eUtleS5qc1xcXCIpO1xcblxcbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShlLCByLCB0KSB7XFxuICByZXR1cm4gKHIgPSAoMCxfdG9Qcm9wZXJ0eUtleV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fW1xcXCJkZWZhdWx0XFxcIl0pKHIpKSBpbiBlID8gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIHtcXG4gICAgdmFsdWU6IHQsXFxuICAgIGVudW1lcmFibGU6ICEwLFxcbiAgICBjb25maWd1cmFibGU6ICEwLFxcbiAgICB3cml0YWJsZTogITBcXG4gIH0pIDogZVtyXSA9IHQsIGU7XFxufVxcblxcblxcbi8qKiovIH0pLFxcblxcbi8qKiovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b1ByaW1pdGl2ZS5qc1xcXCI6XFxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b1ByaW1pdGl2ZS5qcyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqLyAoZnVuY3Rpb24oX191bnVzZWRfd2VicGFja19fX3dlYnBhY2tfbW9kdWxlX18sIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcXG5cXG4vKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywge1xcbi8qIGhhcm1vbnkgZXhwb3J0ICovICAgXFxcImRlZmF1bHRcXFwiOiBmdW5jdGlvbigpIHsgcmV0dXJuIC8qIGJpbmRpbmcgKi8gdG9QcmltaXRpdmU7IH1cXG4vKiBoYXJtb255IGV4cG9ydCAqLyB9KTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX3R5cGVvZl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi90eXBlb2YuanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3R5cGVvZi5qc1xcXCIpO1xcblxcbmZ1bmN0aW9uIHRvUHJpbWl0aXZlKHQsIHIpIHtcXG4gIGlmIChcXFwib2JqZWN0XFxcIiAhPSAoMCxfdHlwZW9mX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19bXFxcImRlZmF1bHRcXFwiXSkodCkgfHwgIXQpIHJldHVybiB0O1xcbiAgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07XFxuICBpZiAodm9pZCAwICE9PSBlKSB7XFxuICAgIHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXFxcImRlZmF1bHRcXFwiKTtcXG4gICAgaWYgKFxcXCJvYmplY3RcXFwiICE9ICgwLF90eXBlb2ZfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX1tcXFwiZGVmYXVsdFxcXCJdKShpKSkgcmV0dXJuIGk7XFxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXFxcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXFxcIik7XFxuICB9XFxuICByZXR1cm4gKFxcXCJzdHJpbmdcXFwiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTtcXG59XFxuXFxuXFxuLyoqKi8gfSksXFxuXFxuLyoqKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvUHJvcGVydHlLZXkuanNcXFwiOlxcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b1Byb3BlcnR5S2V5LmpzICoqKiFcXG4gIFxcXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLyoqKi8gKGZ1bmN0aW9uKF9fdW51c2VkX3dlYnBhY2tfX193ZWJwYWNrX21vZHVsZV9fLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XFxuXFxuLyogaGFybW9ueSBleHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIHtcXG4vKiBoYXJtb255IGV4cG9ydCAqLyAgIFxcXCJkZWZhdWx0XFxcIjogZnVuY3Rpb24oKSB7IHJldHVybiAvKiBiaW5kaW5nICovIHRvUHJvcGVydHlLZXk7IH1cXG4vKiBoYXJtb255IGV4cG9ydCAqLyB9KTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX3R5cGVvZl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi90eXBlb2YuanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3R5cGVvZi5qc1xcXCIpO1xcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfdG9QcmltaXRpdmVfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vdG9QcmltaXRpdmUuanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvUHJpbWl0aXZlLmpzXFxcIik7XFxuXFxuXFxuZnVuY3Rpb24gdG9Qcm9wZXJ0eUtleSh0KSB7XFxuICB2YXIgaSA9ICgwLF90b1ByaW1pdGl2ZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fW1xcXCJkZWZhdWx0XFxcIl0pKHQsIFxcXCJzdHJpbmdcXFwiKTtcXG4gIHJldHVybiBcXFwic3ltYm9sXFxcIiA9PSAoMCxfdHlwZW9mX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19bXFxcImRlZmF1bHRcXFwiXSkoaSkgPyBpIDogaSArIFxcXCJcXFwiO1xcbn1cXG5cXG5cXG4vKioqLyB9KSxcXG5cXG4vKioqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdHlwZW9mLmpzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90eXBlb2YuanMgKioqIVxcbiAgXFxcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovIChmdW5jdGlvbihfX3VudXNlZF93ZWJwYWNrX19fd2VicGFja19tb2R1bGVfXywgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xcblxcbi8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCB7XFxuLyogaGFybW9ueSBleHBvcnQgKi8gICBcXFwiZGVmYXVsdFxcXCI6IGZ1bmN0aW9uKCkgeyByZXR1cm4gLyogYmluZGluZyAqLyBfdHlwZW9mOyB9XFxuLyogaGFybW9ueSBleHBvcnQgKi8gfSk7XFxuZnVuY3Rpb24gX3R5cGVvZihvKSB7XFxuICBcXFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcXFwiO1xcblxcbiAgcmV0dXJuIF90eXBlb2YgPSBcXFwiZnVuY3Rpb25cXFwiID09IHR5cGVvZiBTeW1ib2wgJiYgXFxcInN5bWJvbFxcXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7XFxuICAgIHJldHVybiB0eXBlb2YgbztcXG4gIH0gOiBmdW5jdGlvbiAobykge1xcbiAgICByZXR1cm4gbyAmJiBcXFwiZnVuY3Rpb25cXFwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcXFwic3ltYm9sXFxcIiA6IHR5cGVvZiBvO1xcbiAgfSwgX3R5cGVvZihvKTtcXG59XFxuXFxuXFxuLyoqKi8gfSlcXG5cXG4vKioqKioqLyBcXHR9KTtcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKioqKiovIFxcdC8vIFRoZSBtb2R1bGUgY2FjaGVcXG4vKioqKioqLyBcXHR2YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XFxuLyoqKioqKi8gXFx0XFxuLyoqKioqKi8gXFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cXG4vKioqKioqLyBcXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XFxuLyoqKioqKi8gXFx0XFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXFxuLyoqKioqKi8gXFx0XFx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XFxuLyoqKioqKi8gXFx0XFx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XFxuLyoqKioqKi8gXFx0XFx0XFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xcbi8qKioqKiovIFxcdFxcdH1cXG4vKioqKioqLyBcXHRcXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxcbi8qKioqKiovIFxcdFxcdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xcbi8qKioqKiovIFxcdFxcdFxcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcXG4vKioqKioqLyBcXHRcXHRcXHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxcbi8qKioqKiovIFxcdFxcdFxcdGV4cG9ydHM6IHt9XFxuLyoqKioqKi8gXFx0XFx0fTtcXG4vKioqKioqLyBcXHRcXG4vKioqKioqLyBcXHRcXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cXG4vKioqKioqLyBcXHRcXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcXG4vKioqKioqLyBcXHRcXG4vKioqKioqLyBcXHRcXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxcbi8qKioqKiovIFxcdFxcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcXG4vKioqKioqLyBcXHR9XFxuLyoqKioqKi8gXFx0XFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqKioqLyBcXHQvKiB3ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMgKi9cXG4vKioqKioqLyBcXHQhZnVuY3Rpb24oKSB7XFxuLyoqKioqKi8gXFx0XFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xcbi8qKioqKiovIFxcdFxcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIGRlZmluaXRpb24pIHtcXG4vKioqKioqLyBcXHRcXHRcXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XFxuLyoqKioqKi8gXFx0XFx0XFx0XFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XFxuLyoqKioqKi8gXFx0XFx0XFx0XFx0XFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcXG4vKioqKioqLyBcXHRcXHRcXHRcXHR9XFxuLyoqKioqKi8gXFx0XFx0XFx0fVxcbi8qKioqKiovIFxcdFxcdH07XFxuLyoqKioqKi8gXFx0fSgpO1xcbi8qKioqKiovIFxcdFxcbi8qKioqKiovIFxcdC8qIHdlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQgKi9cXG4vKioqKioqLyBcXHQhZnVuY3Rpb24oKSB7XFxuLyoqKioqKi8gXFx0XFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqLCBwcm9wKSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKTsgfVxcbi8qKioqKiovIFxcdH0oKTtcXG4vKioqKioqLyBcXHRcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbnZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0ge307XFxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzFdLnVzZSEuL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lLndvcmtlci50cyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2JhYmVsX3J1bnRpbWVfaGVscGVyc19hc3luY1RvR2VuZXJhdG9yX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3IgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2FzeW5jVG9HZW5lcmF0b3IuanNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjayAqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2suanNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jcmVhdGVDbGFzc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzcyAqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3MuanNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2JhYmVsX3J1bnRpbWVfaGVscGVyc19kZWZpbmVQcm9wZXJ0eV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eSAqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHkuanNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2xhbmdfYXNzZXJ0VW5yZWFjaGFibGVfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uLy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUgKi8gXFxcIi4vc3JjL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUudHNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2UgKi8gXFxcIi4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi93b3JrZXIvVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlLnRzXFxcIik7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF90cmFuc2Zvcm1zX1dvcmtlclRyYW5zZm9ybXNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vdHJhbnNmb3Jtcy9Xb3JrZXJUcmFuc2Zvcm1zICovIFxcXCIuL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL3RyYW5zZm9ybXMvV29ya2VyVHJhbnNmb3Jtcy50c1xcXCIpO1xcblxcblxcblxcblxcbnZhciBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXI7XFxuZnVuY3Rpb24gX3JlZ2VuZXJhdG9yKCkgeyAvKiEgcmVnZW5lcmF0b3ItcnVudGltZSAtLSBDb3B5cmlnaHQgKGMpIDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4gLS0gbGljZW5zZSAoTUlUKTogaHR0cHM6Ly9naXRodWIuY29tL2JhYmVsL2JhYmVsL2Jsb2IvbWFpbi9wYWNrYWdlcy9iYWJlbC1oZWxwZXJzL0xJQ0VOU0UgKi8gdmFyIGUsIHQsIHIgPSBcXFwiZnVuY3Rpb25cXFwiID09IHR5cGVvZiBTeW1ib2wgPyBTeW1ib2wgOiB7fSwgbiA9IHIuaXRlcmF0b3IgfHwgXFxcIkBAaXRlcmF0b3JcXFwiLCBvID0gci50b1N0cmluZ1RhZyB8fCBcXFwiQEB0b1N0cmluZ1RhZ1xcXCI7IGZ1bmN0aW9uIGkociwgbiwgbywgaSkgeyB2YXIgYyA9IG4gJiYgbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IgPyBuIDogR2VuZXJhdG9yLCB1ID0gT2JqZWN0LmNyZWF0ZShjLnByb3RvdHlwZSk7IHJldHVybiBfcmVnZW5lcmF0b3JEZWZpbmUyKHUsIFxcXCJfaW52b2tlXFxcIiwgZnVuY3Rpb24gKHIsIG4sIG8pIHsgdmFyIGksIGMsIHUsIGYgPSAwLCBwID0gbyB8fCBbXSwgeSA9ICExLCBHID0geyBwOiAwLCBuOiAwLCB2OiBlLCBhOiBkLCBmOiBkLmJpbmQoZSwgNCksIGQ6IGZ1bmN0aW9uIGQodCwgcikgeyByZXR1cm4gaSA9IHQsIGMgPSAwLCB1ID0gZSwgRy5uID0gciwgYTsgfSB9OyBmdW5jdGlvbiBkKHIsIG4pIHsgZm9yIChjID0gciwgdSA9IG4sIHQgPSAwOyAheSAmJiBmICYmICFvICYmIHQgPCBwLmxlbmd0aDsgdCsrKSB7IHZhciBvLCBpID0gcFt0XSwgZCA9IEcucCwgbCA9IGlbMl07IHIgPiAzID8gKG8gPSBsID09PSBuKSAmJiAodSA9IGlbKGMgPSBpWzRdKSA/IDUgOiAoYyA9IDMsIDMpXSwgaVs0XSA9IGlbNV0gPSBlKSA6IGlbMF0gPD0gZCAmJiAoKG8gPSByIDwgMiAmJiBkIDwgaVsxXSkgPyAoYyA9IDAsIEcudiA9IG4sIEcubiA9IGlbMV0pIDogZCA8IGwgJiYgKG8gPSByIDwgMyB8fCBpWzBdID4gbiB8fCBuID4gbCkgJiYgKGlbNF0gPSByLCBpWzVdID0gbiwgRy5uID0gbCwgYyA9IDApKTsgfSBpZiAobyB8fCByID4gMSkgcmV0dXJuIGE7IHRocm93IHkgPSAhMCwgbjsgfSByZXR1cm4gZnVuY3Rpb24gKG8sIHAsIGwpIHsgaWYgKGYgPiAxKSB0aHJvdyBUeXBlRXJyb3IoXFxcIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmdcXFwiKTsgZm9yICh5ICYmIDEgPT09IHAgJiYgZChwLCBsKSwgYyA9IHAsIHUgPSBsOyAodCA9IGMgPCAyID8gZSA6IHUpIHx8ICF5OykgeyBpIHx8IChjID8gYyA8IDMgPyAoYyA+IDEgJiYgKEcubiA9IC0xKSwgZChjLCB1KSkgOiBHLm4gPSB1IDogRy52ID0gdSk7IHRyeSB7IGlmIChmID0gMiwgaSkgeyBpZiAoYyB8fCAobyA9IFxcXCJuZXh0XFxcIiksIHQgPSBpW29dKSB7IGlmICghKHQgPSB0LmNhbGwoaSwgdSkpKSB0aHJvdyBUeXBlRXJyb3IoXFxcIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0XFxcIik7IGlmICghdC5kb25lKSByZXR1cm4gdDsgdSA9IHQudmFsdWUsIGMgPCAyICYmIChjID0gMCk7IH0gZWxzZSAxID09PSBjICYmICh0ID0gaVtcXFwicmV0dXJuXFxcIl0pICYmIHQuY2FsbChpKSwgYyA8IDIgJiYgKHUgPSBUeXBlRXJyb3IoXFxcIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJ1xcXCIgKyBvICsgXFxcIicgbWV0aG9kXFxcIiksIGMgPSAxKTsgaSA9IGU7IH0gZWxzZSBpZiAoKHQgPSAoeSA9IEcubiA8IDApID8gdSA6IHIuY2FsbChuLCBHKSkgIT09IGEpIGJyZWFrOyB9IGNhdGNoICh0KSB7IGkgPSBlLCBjID0gMSwgdSA9IHQ7IH0gZmluYWxseSB7IGYgPSAxOyB9IH0gcmV0dXJuIHsgdmFsdWU6IHQsIGRvbmU6IHkgfTsgfTsgfShyLCBvLCBpKSwgITApLCB1OyB9IHZhciBhID0ge307IGZ1bmN0aW9uIEdlbmVyYXRvcigpIHt9IGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uKCkge30gZnVuY3Rpb24gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoKSB7fSB0ID0gT2JqZWN0LmdldFByb3RvdHlwZU9mOyB2YXIgYyA9IFtdW25dID8gdCh0KFtdW25dKCkpKSA6IChfcmVnZW5lcmF0b3JEZWZpbmUyKHQgPSB7fSwgbiwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSksIHQpLCB1ID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUucHJvdG90eXBlID0gR2VuZXJhdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoYyk7IGZ1bmN0aW9uIGYoZSkgeyByZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKGUsIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKSA6IChlLl9fcHJvdG9fXyA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLCBfcmVnZW5lcmF0b3JEZWZpbmUyKGUsIG8sIFxcXCJHZW5lcmF0b3JGdW5jdGlvblxcXCIpKSwgZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHUpLCBlOyB9IHJldHVybiBHZW5lcmF0b3JGdW5jdGlvbi5wcm90b3R5cGUgPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSwgX3JlZ2VuZXJhdG9yRGVmaW5lMih1LCBcXFwiY29uc3RydWN0b3JcXFwiLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSksIF9yZWdlbmVyYXRvckRlZmluZTIoR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUsIFxcXCJjb25zdHJ1Y3RvclxcXCIsIEdlbmVyYXRvckZ1bmN0aW9uKSwgR2VuZXJhdG9yRnVuY3Rpb24uZGlzcGxheU5hbWUgPSBcXFwiR2VuZXJhdG9yRnVuY3Rpb25cXFwiLCBfcmVnZW5lcmF0b3JEZWZpbmUyKEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLCBvLCBcXFwiR2VuZXJhdG9yRnVuY3Rpb25cXFwiKSwgX3JlZ2VuZXJhdG9yRGVmaW5lMih1KSwgX3JlZ2VuZXJhdG9yRGVmaW5lMih1LCBvLCBcXFwiR2VuZXJhdG9yXFxcIiksIF9yZWdlbmVyYXRvckRlZmluZTIodSwgbiwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSksIF9yZWdlbmVyYXRvckRlZmluZTIodSwgXFxcInRvU3RyaW5nXFxcIiwgZnVuY3Rpb24gKCkgeyByZXR1cm4gXFxcIltvYmplY3QgR2VuZXJhdG9yXVxcXCI7IH0pLCAoX3JlZ2VuZXJhdG9yID0gZnVuY3Rpb24gX3JlZ2VuZXJhdG9yKCkgeyByZXR1cm4geyB3OiBpLCBtOiBmIH07IH0pKCk7IH1cXG5mdW5jdGlvbiBfcmVnZW5lcmF0b3JEZWZpbmUyKGUsIHIsIG4sIHQpIHsgdmFyIGkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7IHRyeSB7IGkoe30sIFxcXCJcXFwiLCB7fSk7IH0gY2F0Y2ggKGUpIHsgaSA9IDA7IH0gX3JlZ2VuZXJhdG9yRGVmaW5lMiA9IGZ1bmN0aW9uIF9yZWdlbmVyYXRvckRlZmluZShlLCByLCBuLCB0KSB7IGZ1bmN0aW9uIG8ociwgbikgeyBfcmVnZW5lcmF0b3JEZWZpbmUyKGUsIHIsIGZ1bmN0aW9uIChlKSB7IHJldHVybiB0aGlzLl9pbnZva2UociwgbiwgZSk7IH0pOyB9IHIgPyBpID8gaShlLCByLCB7IHZhbHVlOiBuLCBlbnVtZXJhYmxlOiAhdCwgY29uZmlndXJhYmxlOiAhdCwgd3JpdGFibGU6ICF0IH0pIDogZVtyXSA9IG4gOiAobyhcXFwibmV4dFxcXCIsIDApLCBvKFxcXCJ0aHJvd1xcXCIsIDEpLCBvKFxcXCJyZXR1cm5cXFwiLCAyKSk7IH0sIF9yZWdlbmVyYXRvckRlZmluZTIoZSwgciwgbiwgdCk7IH1cXG4vKipcXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cXG4gKi9cXG5cXG5cXG5cXG5cXG52YXIgd29ya2VyID0gc2VsZjtcXG4vLyBUaGlzIGlzIGhvdyB0aGUgZG9jdW1lbnRhdGlvbiBpbnN0cnVjdHMgdG8gZG8gaXQgLSBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS93b3JrZXItbG9hZGVyXFxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xcbnZhciBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XFxuICBmdW5jdGlvbiBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlcigpIHtcXG4gICAgKDAsX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fW1xcXCJkZWZhdWx0XFxcIl0pKHRoaXMsIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyKTtcXG4gIH1cXG4gIHJldHVybiAoMCxfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NyZWF0ZUNsYXNzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19bXFxcImRlZmF1bHRcXFwiXSkoVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIsIG51bGwsIFt7XFxuICAgIGtleTogXFxcImhhbmRsZUFkZFRyYW5zZm9ybVxcXCIsXFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYW5kbGVBZGRUcmFuc2Zvcm0odHlwZSkge1xcbiAgICAgIGlmIChUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5faXNQaXBlbGluZUNvbmZpZ3VyZWQpIHtcXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRXJyb3I6IFBpcGVsaW5lIGlzIGxvY2tlZC4gQSB0cmFuc2Zvcm0gY2Fubm90IGJlIGFkZGVkIG9uY2UgdGhlIHBpcGVsaW5lIGhhcyBiZWVuIGNvbmZpZ3VyZWQnKTtcXG4gICAgICB9XFxuICAgICAgc3dpdGNoICh0eXBlKSB7XFxuICAgICAgICBjYXNlICdmcmFtZS10aW1pbmctaW5mb3JtYXRpb24nOlxcbiAgICAgICAgICBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5fdHJhbnNmb3Jtcy5wdXNoKF90cmFuc2Zvcm1zX1dvcmtlclRyYW5zZm9ybXNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfX1tcXFwiZGVmYXVsdFxcXCJdLmNyZWF0ZUZyYW1lVGltaW5nSW5mb3JtYXRpb25UcmFuc2Zvcm0oKSk7XFxuICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgY2FzZSAncHJvdGVjdGVkLXZpZGVvJzpcXG4gICAgICAgICAgVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIuX3RyYW5zZm9ybXMucHVzaChfdHJhbnNmb3Jtc19Xb3JrZXJUcmFuc2Zvcm1zX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X19bXFxcImRlZmF1bHRcXFwiXS5jcmVhdGVFbmNvZGVkVmlkZW9TdHJlYW1UcmFuc2Zvcm0od29ya2VyKSk7XFxuICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgY2FzZSAncHJvdGVjdGVkLWF1ZGlvJzpcXG4gICAgICAgICAgVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIuX3RyYW5zZm9ybXMucHVzaChfdHJhbnNmb3Jtc19Xb3JrZXJUcmFuc2Zvcm1zX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X19bXFxcImRlZmF1bHRcXFwiXS5jcmVhdGVFbmNvZGVkQXVkaW9TdHJlYW1UcmFuc2Zvcm0od29ya2VyKSk7XFxuICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgY2FzZSAncGFzcy10aHJvdWdoJzpcXG4gICAgICAgICAgVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIuX3RyYW5zZm9ybXMucHVzaChfdHJhbnNmb3Jtc19Xb3JrZXJUcmFuc2Zvcm1zX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X19bXFxcImRlZmF1bHRcXFwiXS5jcmVhdGVQYXNzVGhyb3VnaFRyYW5zZm9ybSgpKTtcXG4gICAgICAgICAgYnJlYWs7XFxuICAgICAgICBkZWZhdWx0OlxcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXFxcIkVycm9yOiBVbmtub3duIHRyYW5zZm9ybSB0eXBlIFtcXFwiLmNvbmNhdCh0eXBlLCBcXFwiXVxcXCIpKTtcXG4gICAgICB9XFxuICAgIH1cXG4gIH0sIHtcXG4gICAga2V5OiBcXFwiY29uZmlndXJlUGlwZWxpbmVcXFwiLFxcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xcbiAgICAgIHZhciBfY29uZmlndXJlUGlwZWxpbmUgPSAoMCxfYmFiZWxfcnVudGltZV9oZWxwZXJzX2FzeW5jVG9HZW5lcmF0b3JfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX1tcXFwiZGVmYXVsdFxcXCJdKSgvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yKCkubShmdW5jdGlvbiBfY2FsbGVlKHNvdXJjZSwgc2luaykge1xcbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvcigpLncoZnVuY3Rpb24gKF9jb250ZXh0KSB7XFxuICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0Lm4pIHtcXG4gICAgICAgICAgICBjYXNlIDA6XFxuICAgICAgICAgICAgICBpZiAoc291cmNlICYmIHNpbmspIHtcXG4gICAgICAgICAgICAgICAgX2NvbnRleHQubiA9IDE7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFcnJvcjogQ29uZmlndXJhdGlvbiBvZiBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZSByZXF1aXJlcyBib3RoIGEgcmVhZGJhbGUgc291cmNlIGFuZCB3cml0YWJsZSBzaW5rJyk7XFxuICAgICAgICAgICAgY2FzZSAxOlxcbiAgICAgICAgICAgICAgaWYgKFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLl90cmFuc2Zvcm1zLmxlbmd0aCA9PT0gMCkge1xcbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5fdHJhbnNmb3Jtcy5wdXNoKCk7XFxuICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICBfY29udGV4dC5uID0gMjtcXG4gICAgICAgICAgICAgIHJldHVybiBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5fdHJhbnNmb3Jtcy5yZWR1Y2VSaWdodChmdW5jdGlvbiAocGlwZWxpbmUsIHRyYW5zZm9ybSkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gcGlwZWxpbmUucGlwZVRocm91Z2godHJhbnNmb3JtKTtcXG4gICAgICAgICAgICAgIH0sIHNvdXJjZSkucGlwZVRvKHNpbmspO1xcbiAgICAgICAgICAgIGNhc2UgMjpcXG4gICAgICAgICAgICAgIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLl9pc1BpcGVsaW5lQ29uZmlndXJlZCA9IHRydWU7XFxuICAgICAgICAgICAgICB3b3JrZXIucG9zdE1lc3NhZ2Uoe1xcbiAgICAgICAgICAgICAgICB0eXBlOiBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X18uVHJhbnNmb3JtTWVzc2FnZVR5cGUuUGlwZWxpbmVDb25maWd1cmVkLFxcbiAgICAgICAgICAgICAgICBkYXRhOiB7XFxuICAgICAgICAgICAgICAgICAgbmFtZTogVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIuX3dvcmtlck5hbWVcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgY2FzZSAzOlxcbiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LmEoMik7XFxuICAgICAgICAgIH1cXG4gICAgICAgIH0sIF9jYWxsZWUpO1xcbiAgICAgIH0pKTtcXG4gICAgICBmdW5jdGlvbiBjb25maWd1cmVQaXBlbGluZShfeCwgX3gyKSB7XFxuICAgICAgICByZXR1cm4gX2NvbmZpZ3VyZVBpcGVsaW5lLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XFxuICAgICAgfVxcbiAgICAgIHJldHVybiBjb25maWd1cmVQaXBlbGluZTtcXG4gICAgfSgpXFxuICB9LCB7XFxuICAgIGtleTogXFxcImhhbmRsZU1lc3NhZ2VcXFwiLFxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlTWVzc2FnZShfcmVmKSB7XFxuICAgICAgdmFyIG1lc3NhZ2UgPSBfcmVmLmRhdGE7XFxuICAgICAgdmFyIHR5cGUgPSBtZXNzYWdlLnR5cGU7XFxuICAgICAgc3dpdGNoICh0eXBlKSB7XFxuICAgICAgICBjYXNlIF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfXy5UcmFuc2Zvcm1NZXNzYWdlVHlwZS5BZGRUcmFuc2Zvcm06XFxuICAgICAgICAgIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLmhhbmRsZUFkZFRyYW5zZm9ybShtZXNzYWdlLmRhdGEpO1xcbiAgICAgICAgICBicmVhaztcXG4gICAgICAgIGNhc2UgX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fLlRyYW5zZm9ybU1lc3NhZ2VUeXBlLkNvbmZpZ3VyZVBpcGVsaW5lOlxcbiAgICAgICAgICBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5jb25maWd1cmVQaXBlbGluZShtZXNzYWdlLmRhdGEuc291cmNlLCBtZXNzYWdlLmRhdGEuc2luayk7XFxuICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgY2FzZSBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X18uVHJhbnNmb3JtTWVzc2FnZVR5cGUuTWV0YWRhdGE6XFxuICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgY2FzZSBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X18uVHJhbnNmb3JtTWVzc2FnZVR5cGUuQ2h1bms6XFxuICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgZGVmYXVsdDpcXG4gICAgICAgICAgKDAsX2xhbmdfYXNzZXJ0VW5yZWFjaGFibGVfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX1tcXFwiZGVmYXVsdFxcXCJdKSh0eXBlKTtcXG4gICAgICB9XFxuICAgIH1cXG4gIH1dKTtcXG59KCk7XFxuX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyID0gVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXI7XFxuKDAsX2JhYmVsX3J1bnRpbWVfaGVscGVyc19kZWZpbmVQcm9wZXJ0eV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fW1xcXCJkZWZhdWx0XFxcIl0pKFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLCBcXFwiX3RyYW5zZm9ybXNcXFwiLCBbXSk7XFxuKDAsX2JhYmVsX3J1bnRpbWVfaGVscGVyc19kZWZpbmVQcm9wZXJ0eV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fW1xcXCJkZWZhdWx0XFxcIl0pKFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLCBcXFwiX2lzUGlwZWxpbmVDb25maWd1cmVkXFxcIiwgZmFsc2UpO1xcbigwLF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfZGVmaW5lUHJvcGVydHlfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX1tcXFwiZGVmYXVsdFxcXCJdKShUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlciwgXFxcIl93b3JrZXJOYW1lXFxcIiwgdm9pZCAwKTtcXG4oZnVuY3Rpb24gKCkge1xcbiAgd29ya2VyLm9uZXJyb3IgPSBmdW5jdGlvbiAoZXJyb3IpIHtcXG4gICAgcmV0dXJuIGNvbnNvbGUuZXJyb3IoJ1tUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlcl0gRXJyb3I6IFslc10nLCBlcnJvcik7XFxuICB9O1xcbiAgd29ya2VyLm9ubWVzc2FnZSA9IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5oYW5kbGVNZXNzYWdlLmJpbmQoX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyKTtcXG4gIGlmICh3b3JrZXIuUlRDVHJhbnNmb3JtRXZlbnQpIHtcXG4gICAgd29ya2VyLm9ucnRjdHJhbnNmb3JtID0gZnVuY3Rpb24gKF9yZWYyKSB7XFxuICAgICAgdmFyIHRyYW5zZm9ybWVyID0gX3JlZjIudHJhbnNmb3JtZXI7XFxuICAgICAgX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLl93b3JrZXJOYW1lID0gdHJhbnNmb3JtZXIub3B0aW9ucy5uYW1lO1xcbiAgICAgIHZhciBzb3VyY2UgPSB0cmFuc2Zvcm1lci5yZWFkYWJsZTtcXG4gICAgICB2YXIgc2luayA9IHRyYW5zZm9ybWVyLndyaXRhYmxlO1xcbiAgICAgIF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5jb25maWd1cmVQaXBlbGluZShzb3VyY2UsIHNpbmspO1xcbiAgICB9O1xcbiAgfVxcbn0pKCk7XFxuLyogdW51c2VkIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIF9fV0VCUEFDS19ERUZBVUxUX0VYUE9SVF9fID0gKG51bGwpO1xcbi8qKioqKiovIH0pKClcXG47XFxuXCIsIFwiV29ya2VyXCIsIHVuZGVmaW5lZCwgdW5kZWZpbmVkKTtcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBlc2xpbnQtZW52IGJyb3dzZXIgKi9cblxuLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZWYsIG5vLXVzZS1iZWZvcmUtZGVmaW5lLCBuZXctY2FwICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChjb250ZW50LCB3b3JrZXJDb25zdHJ1Y3Rvciwgd29ya2VyT3B0aW9ucywgdXJsKSB7XG4gIHZhciBnbG9iYWxTY29wZSA9IHNlbGYgfHwgd2luZG93O1xuXG4gIHRyeSB7XG4gICAgdHJ5IHtcbiAgICAgIHZhciBibG9iO1xuXG4gICAgICB0cnkge1xuICAgICAgICAvLyBOZXcgQVBJXG4gICAgICAgIGJsb2IgPSBuZXcgZ2xvYmFsU2NvcGUuQmxvYihbY29udGVudF0pO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBCbG9iQnVpbGRlciA9IERlcHJlY2F0ZWQsIGJ1dCB3aWRlbHkgaW1wbGVtZW50ZWRcbiAgICAgICAgdmFyIEJsb2JCdWlsZGVyID0gZ2xvYmFsU2NvcGUuQmxvYkJ1aWxkZXIgfHwgZ2xvYmFsU2NvcGUuV2ViS2l0QmxvYkJ1aWxkZXIgfHwgZ2xvYmFsU2NvcGUuTW96QmxvYkJ1aWxkZXIgfHwgZ2xvYmFsU2NvcGUuTVNCbG9iQnVpbGRlcjtcbiAgICAgICAgYmxvYiA9IG5ldyBCbG9iQnVpbGRlcigpO1xuICAgICAgICBibG9iLmFwcGVuZChjb250ZW50KTtcbiAgICAgICAgYmxvYiA9IGJsb2IuZ2V0QmxvYigpO1xuICAgICAgfVxuXG4gICAgICB2YXIgVVJMID0gZ2xvYmFsU2NvcGUuVVJMIHx8IGdsb2JhbFNjb3BlLndlYmtpdFVSTDtcbiAgICAgIHZhciBvYmplY3RVUkwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgdmFyIHdvcmtlciA9IG5ldyBnbG9iYWxTY29wZVt3b3JrZXJDb25zdHJ1Y3Rvcl0ob2JqZWN0VVJMLCB3b3JrZXJPcHRpb25zKTtcbiAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwob2JqZWN0VVJMKTtcbiAgICAgIHJldHVybiB3b3JrZXI7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIG5ldyBnbG9iYWxTY29wZVt3b3JrZXJDb25zdHJ1Y3Rvcl0oXCJkYXRhOmFwcGxpY2F0aW9uL2phdmFzY3JpcHQsXCIuY29uY2F0KGVuY29kZVVSSUNvbXBvbmVudChjb250ZW50KSksIHdvcmtlck9wdGlvbnMpO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmICghdXJsKSB7XG4gICAgICB0aHJvdyBFcnJvcihcIklubGluZSB3b3JrZXIgaXMgbm90IHN1cHBvcnRlZFwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IGdsb2JhbFNjb3BlW3dvcmtlckNvbnN0cnVjdG9yXSh1cmwsIHdvcmtlck9wdGlvbnMpO1xuICB9XG59OyIsImZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KHIsIGEpIHtcbiAgKG51bGwgPT0gYSB8fCBhID4gci5sZW5ndGgpICYmIChhID0gci5sZW5ndGgpO1xuICBmb3IgKHZhciBlID0gMCwgbiA9IEFycmF5KGEpOyBlIDwgYTsgZSsrKSBuW2VdID0gcltlXTtcbiAgcmV0dXJuIG47XG59XG5leHBvcnQgeyBfYXJyYXlMaWtlVG9BcnJheSBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKHIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkocikpIHJldHVybiByO1xufVxuZXhwb3J0IHsgX2FycmF5V2l0aEhvbGVzIGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgYXJyYXlMaWtlVG9BcnJheSBmcm9tIFwiLi9hcnJheUxpa2VUb0FycmF5LmpzXCI7XG5mdW5jdGlvbiBfYXJyYXlXaXRob3V0SG9sZXMocikge1xuICBpZiAoQXJyYXkuaXNBcnJheShyKSkgcmV0dXJuIGFycmF5TGlrZVRvQXJyYXkocik7XG59XG5leHBvcnQgeyBfYXJyYXlXaXRob3V0SG9sZXMgYXMgZGVmYXVsdCB9OyIsImZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoZSkge1xuICBpZiAodm9pZCAwID09PSBlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7XG4gIHJldHVybiBlO1xufVxuZXhwb3J0IHsgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JTdGVwKG4sIHQsIGUsIHIsIG8sIGEsIGMpIHtcbiAgdHJ5IHtcbiAgICB2YXIgaSA9IG5bYV0oYyksXG4gICAgICB1ID0gaS52YWx1ZTtcbiAgfSBjYXRjaCAobikge1xuICAgIHJldHVybiB2b2lkIGUobik7XG4gIH1cbiAgaS5kb25lID8gdCh1KSA6IFByb21pc2UucmVzb2x2ZSh1KS50aGVuKHIsIG8pO1xufVxuZnVuY3Rpb24gX2FzeW5jVG9HZW5lcmF0b3Iobikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciB0ID0gdGhpcyxcbiAgICAgIGUgPSBhcmd1bWVudHM7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyLCBvKSB7XG4gICAgICB2YXIgYSA9IG4uYXBwbHkodCwgZSk7XG4gICAgICBmdW5jdGlvbiBfbmV4dChuKSB7XG4gICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChhLCByLCBvLCBfbmV4dCwgX3Rocm93LCBcIm5leHRcIiwgbik7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBfdGhyb3cobikge1xuICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoYSwgciwgbywgX25leHQsIF90aHJvdywgXCJ0aHJvd1wiLCBuKTtcbiAgICAgIH1cbiAgICAgIF9uZXh0KHZvaWQgMCk7XG4gICAgfSk7XG4gIH07XG59XG5leHBvcnQgeyBfYXN5bmNUb0dlbmVyYXRvciBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGEsIG4pIHtcbiAgaWYgKCEoYSBpbnN0YW5jZW9mIG4pKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xufVxuZXhwb3J0IHsgX2NsYXNzQ2FsbENoZWNrIGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgdG9Qcm9wZXJ0eUtleSBmcm9tIFwiLi90b1Byb3BlcnR5S2V5LmpzXCI7XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyhlLCByKSB7XG4gIGZvciAodmFyIHQgPSAwOyB0IDwgci5sZW5ndGg7IHQrKykge1xuICAgIHZhciBvID0gclt0XTtcbiAgICBvLmVudW1lcmFibGUgPSBvLmVudW1lcmFibGUgfHwgITEsIG8uY29uZmlndXJhYmxlID0gITAsIFwidmFsdWVcIiBpbiBvICYmIChvLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgdG9Qcm9wZXJ0eUtleShvLmtleSksIG8pO1xuICB9XG59XG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoZSwgciwgdCkge1xuICByZXR1cm4gciAmJiBfZGVmaW5lUHJvcGVydGllcyhlLnByb3RvdHlwZSwgciksIHQgJiYgX2RlZmluZVByb3BlcnRpZXMoZSwgdCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCBcInByb3RvdHlwZVwiLCB7XG4gICAgd3JpdGFibGU6ICExXG4gIH0pLCBlO1xufVxuZXhwb3J0IHsgX2NyZWF0ZUNsYXNzIGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgdG9Qcm9wZXJ0eUtleSBmcm9tIFwiLi90b1Byb3BlcnR5S2V5LmpzXCI7XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkoZSwgciwgdCkge1xuICByZXR1cm4gKHIgPSB0b1Byb3BlcnR5S2V5KHIpKSBpbiBlID8gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIHtcbiAgICB2YWx1ZTogdCxcbiAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICBjb25maWd1cmFibGU6ICEwLFxuICAgIHdyaXRhYmxlOiAhMFxuICB9KSA6IGVbcl0gPSB0LCBlO1xufVxuZXhwb3J0IHsgX2RlZmluZVByb3BlcnR5IGFzIGRlZmF1bHQgfTsiLCJmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YodCkge1xuICByZXR1cm4gX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uICh0KSB7XG4gICAgcmV0dXJuIHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KTtcbiAgfSwgX2dldFByb3RvdHlwZU9mKHQpO1xufVxuZXhwb3J0IHsgX2dldFByb3RvdHlwZU9mIGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgc2V0UHJvdG90eXBlT2YgZnJvbSBcIi4vc2V0UHJvdG90eXBlT2YuanNcIjtcbmZ1bmN0aW9uIF9pbmhlcml0cyh0LCBlKSB7XG4gIGlmIChcImZ1bmN0aW9uXCIgIT0gdHlwZW9mIGUgJiYgbnVsbCAhPT0gZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpO1xuICB0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZSAmJiBlLnByb3RvdHlwZSwge1xuICAgIGNvbnN0cnVjdG9yOiB7XG4gICAgICB2YWx1ZTogdCxcbiAgICAgIHdyaXRhYmxlOiAhMCxcbiAgICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgICB9XG4gIH0pLCBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgXCJwcm90b3R5cGVcIiwge1xuICAgIHdyaXRhYmxlOiAhMVxuICB9KSwgZSAmJiBzZXRQcm90b3R5cGVPZih0LCBlKTtcbn1cbmV4cG9ydCB7IF9pbmhlcml0cyBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheShyKSB7XG4gIGlmIChcInVuZGVmaW5lZFwiICE9IHR5cGVvZiBTeW1ib2wgJiYgbnVsbCAhPSByW1N5bWJvbC5pdGVyYXRvcl0gfHwgbnVsbCAhPSByW1wiQEBpdGVyYXRvclwiXSkgcmV0dXJuIEFycmF5LmZyb20ocik7XG59XG5leHBvcnQgeyBfaXRlcmFibGVUb0FycmF5IGFzIGRlZmF1bHQgfTsiLCJmdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQociwgbCkge1xuICB2YXIgdCA9IG51bGwgPT0gciA/IG51bGwgOiBcInVuZGVmaW5lZFwiICE9IHR5cGVvZiBTeW1ib2wgJiYgcltTeW1ib2wuaXRlcmF0b3JdIHx8IHJbXCJAQGl0ZXJhdG9yXCJdO1xuICBpZiAobnVsbCAhPSB0KSB7XG4gICAgdmFyIGUsXG4gICAgICBuLFxuICAgICAgaSxcbiAgICAgIHUsXG4gICAgICBhID0gW10sXG4gICAgICBmID0gITAsXG4gICAgICBvID0gITE7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChpID0gKHQgPSB0LmNhbGwocikpLm5leHQsIDAgPT09IGwpIHtcbiAgICAgICAgaWYgKE9iamVjdCh0KSAhPT0gdCkgcmV0dXJuO1xuICAgICAgICBmID0gITE7XG4gICAgICB9IGVsc2UgZm9yICg7ICEoZiA9IChlID0gaS5jYWxsKHQpKS5kb25lKSAmJiAoYS5wdXNoKGUudmFsdWUpLCBhLmxlbmd0aCAhPT0gbCk7IGYgPSAhMCk7XG4gICAgfSBjYXRjaCAocikge1xuICAgICAgbyA9ICEwLCBuID0gcjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKCFmICYmIG51bGwgIT0gdFtcInJldHVyblwiXSAmJiAodSA9IHRbXCJyZXR1cm5cIl0oKSwgT2JqZWN0KHUpICE9PSB1KSkgcmV0dXJuO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaWYgKG8pIHRocm93IG47XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhO1xuICB9XG59XG5leHBvcnQgeyBfaXRlcmFibGVUb0FycmF5TGltaXQgYXMgZGVmYXVsdCB9OyIsImZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7XG59XG5leHBvcnQgeyBfbm9uSXRlcmFibGVSZXN0IGFzIGRlZmF1bHQgfTsiLCJmdW5jdGlvbiBfbm9uSXRlcmFibGVTcHJlYWQoKSB7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xufVxuZXhwb3J0IHsgX25vbkl0ZXJhYmxlU3ByZWFkIGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiLi90eXBlb2YuanNcIjtcbmltcG9ydCBhc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIi4vYXNzZXJ0VGhpc0luaXRpYWxpemVkLmpzXCI7XG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0LCBlKSB7XG4gIGlmIChlICYmIChcIm9iamVjdFwiID09IF90eXBlb2YoZSkgfHwgXCJmdW5jdGlvblwiID09IHR5cGVvZiBlKSkgcmV0dXJuIGU7XG4gIGlmICh2b2lkIDAgIT09IGUpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZFwiKTtcbiAgcmV0dXJuIGFzc2VydFRoaXNJbml0aWFsaXplZCh0KTtcbn1cbmV4cG9ydCB7IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIGFzIGRlZmF1bHQgfTsiLCJmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YodCwgZSkge1xuICByZXR1cm4gX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgcmV0dXJuIHQuX19wcm90b19fID0gZSwgdDtcbiAgfSwgX3NldFByb3RvdHlwZU9mKHQsIGUpO1xufVxuZXhwb3J0IHsgX3NldFByb3RvdHlwZU9mIGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgYXJyYXlXaXRoSG9sZXMgZnJvbSBcIi4vYXJyYXlXaXRoSG9sZXMuanNcIjtcbmltcG9ydCBpdGVyYWJsZVRvQXJyYXlMaW1pdCBmcm9tIFwiLi9pdGVyYWJsZVRvQXJyYXlMaW1pdC5qc1wiO1xuaW1wb3J0IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IGZyb20gXCIuL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzXCI7XG5pbXBvcnQgbm9uSXRlcmFibGVSZXN0IGZyb20gXCIuL25vbkl0ZXJhYmxlUmVzdC5qc1wiO1xuZnVuY3Rpb24gX3NsaWNlZFRvQXJyYXkociwgZSkge1xuICByZXR1cm4gYXJyYXlXaXRoSG9sZXMocikgfHwgaXRlcmFibGVUb0FycmF5TGltaXQociwgZSkgfHwgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkociwgZSkgfHwgbm9uSXRlcmFibGVSZXN0KCk7XG59XG5leHBvcnQgeyBfc2xpY2VkVG9BcnJheSBhcyBkZWZhdWx0IH07IiwiaW1wb3J0IGFycmF5V2l0aG91dEhvbGVzIGZyb20gXCIuL2FycmF5V2l0aG91dEhvbGVzLmpzXCI7XG5pbXBvcnQgaXRlcmFibGVUb0FycmF5IGZyb20gXCIuL2l0ZXJhYmxlVG9BcnJheS5qc1wiO1xuaW1wb3J0IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IGZyb20gXCIuL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzXCI7XG5pbXBvcnQgbm9uSXRlcmFibGVTcHJlYWQgZnJvbSBcIi4vbm9uSXRlcmFibGVTcHJlYWQuanNcIjtcbmZ1bmN0aW9uIF90b0NvbnN1bWFibGVBcnJheShyKSB7XG4gIHJldHVybiBhcnJheVdpdGhvdXRIb2xlcyhyKSB8fCBpdGVyYWJsZVRvQXJyYXkocikgfHwgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkocikgfHwgbm9uSXRlcmFibGVTcHJlYWQoKTtcbn1cbmV4cG9ydCB7IF90b0NvbnN1bWFibGVBcnJheSBhcyBkZWZhdWx0IH07IiwiaW1wb3J0IF90eXBlb2YgZnJvbSBcIi4vdHlwZW9mLmpzXCI7XG5mdW5jdGlvbiB0b1ByaW1pdGl2ZSh0LCByKSB7XG4gIGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0O1xuICB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTtcbiAgaWYgKHZvaWQgMCAhPT0gZSkge1xuICAgIHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpO1xuICAgIGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpO1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTtcbiAgfVxuICByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpO1xufVxuZXhwb3J0IHsgdG9QcmltaXRpdmUgYXMgZGVmYXVsdCB9OyIsImltcG9ydCBfdHlwZW9mIGZyb20gXCIuL3R5cGVvZi5qc1wiO1xuaW1wb3J0IHRvUHJpbWl0aXZlIGZyb20gXCIuL3RvUHJpbWl0aXZlLmpzXCI7XG5mdW5jdGlvbiB0b1Byb3BlcnR5S2V5KHQpIHtcbiAgdmFyIGkgPSB0b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTtcbiAgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBpICsgXCJcIjtcbn1cbmV4cG9ydCB7IHRvUHJvcGVydHlLZXkgYXMgZGVmYXVsdCB9OyIsImZ1bmN0aW9uIF90eXBlb2Yobykge1xuICBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7XG5cbiAgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykge1xuICAgIHJldHVybiB0eXBlb2YgbztcbiAgfSA6IGZ1bmN0aW9uIChvKSB7XG4gICAgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87XG4gIH0sIF90eXBlb2Yobyk7XG59XG5leHBvcnQgeyBfdHlwZW9mIGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgYXJyYXlMaWtlVG9BcnJheSBmcm9tIFwiLi9hcnJheUxpa2VUb0FycmF5LmpzXCI7XG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkociwgYSkge1xuICBpZiAocikge1xuICAgIGlmIChcInN0cmluZ1wiID09IHR5cGVvZiByKSByZXR1cm4gYXJyYXlMaWtlVG9BcnJheShyLCBhKTtcbiAgICB2YXIgdCA9IHt9LnRvU3RyaW5nLmNhbGwocikuc2xpY2UoOCwgLTEpO1xuICAgIHJldHVybiBcIk9iamVjdFwiID09PSB0ICYmIHIuY29uc3RydWN0b3IgJiYgKHQgPSByLmNvbnN0cnVjdG9yLm5hbWUpLCBcIk1hcFwiID09PSB0IHx8IFwiU2V0XCIgPT09IHQgPyBBcnJheS5mcm9tKHIpIDogXCJBcmd1bWVudHNcIiA9PT0gdCB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdCh0KSA/IGFycmF5TGlrZVRvQXJyYXkociwgYSkgOiB2b2lkIDA7XG4gIH1cbn1cbmV4cG9ydCB7IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSBhcyBkZWZhdWx0IH07IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0ZnVuY3Rpb24oKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG5cdFx0ZnVuY3Rpb24oKSB7IHJldHVybiBtb2R1bGU7IH07XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBkZWZpbml0aW9uKSB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18uZyA9IChmdW5jdGlvbigpIHtcblx0aWYgKHR5cGVvZiBnbG9iYWxUaGlzID09PSAnb2JqZWN0JykgcmV0dXJuIGdsb2JhbFRoaXM7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIHRoaXMgfHwgbmV3IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcpIHJldHVybiB3aW5kb3c7XG5cdH1cbn0pKCk7IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqLCBwcm9wKSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKTsgfSIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zICovXG52YXIgZyA9XG4gICh0eXBlb2YgZ2xvYmFsVGhpcyAhPT0gJ3VuZGVmaW5lZCcgJiYgZ2xvYmFsVGhpcykgfHxcbiAgKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyAmJiBzZWxmKSB8fFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbiAgKHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnICYmIGdsb2JhbCkgfHxcbiAge31cblxudmFyIHN1cHBvcnQgPSB7XG4gIHNlYXJjaFBhcmFtczogJ1VSTFNlYXJjaFBhcmFtcycgaW4gZyxcbiAgaXRlcmFibGU6ICdTeW1ib2wnIGluIGcgJiYgJ2l0ZXJhdG9yJyBpbiBTeW1ib2wsXG4gIGJsb2I6XG4gICAgJ0ZpbGVSZWFkZXInIGluIGcgJiZcbiAgICAnQmxvYicgaW4gZyAmJlxuICAgIChmdW5jdGlvbigpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIG5ldyBCbG9iKClcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfSkoKSxcbiAgZm9ybURhdGE6ICdGb3JtRGF0YScgaW4gZyxcbiAgYXJyYXlCdWZmZXI6ICdBcnJheUJ1ZmZlcicgaW4gZ1xufVxuXG5mdW5jdGlvbiBpc0RhdGFWaWV3KG9iaikge1xuICByZXR1cm4gb2JqICYmIERhdGFWaWV3LnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKG9iailcbn1cblxuaWYgKHN1cHBvcnQuYXJyYXlCdWZmZXIpIHtcbiAgdmFyIHZpZXdDbGFzc2VzID0gW1xuICAgICdbb2JqZWN0IEludDhBcnJheV0nLFxuICAgICdbb2JqZWN0IFVpbnQ4QXJyYXldJyxcbiAgICAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLFxuICAgICdbb2JqZWN0IEludDE2QXJyYXldJyxcbiAgICAnW29iamVjdCBVaW50MTZBcnJheV0nLFxuICAgICdbb2JqZWN0IEludDMyQXJyYXldJyxcbiAgICAnW29iamVjdCBVaW50MzJBcnJheV0nLFxuICAgICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nLFxuICAgICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nXG4gIF1cblxuICB2YXIgaXNBcnJheUJ1ZmZlclZpZXcgPVxuICAgIEFycmF5QnVmZmVyLmlzVmlldyB8fFxuICAgIGZ1bmN0aW9uKG9iaikge1xuICAgICAgcmV0dXJuIG9iaiAmJiB2aWV3Q2xhc3Nlcy5pbmRleE9mKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopKSA+IC0xXG4gICAgfVxufVxuXG5mdW5jdGlvbiBub3JtYWxpemVOYW1lKG5hbWUpIHtcbiAgaWYgKHR5cGVvZiBuYW1lICE9PSAnc3RyaW5nJykge1xuICAgIG5hbWUgPSBTdHJpbmcobmFtZSlcbiAgfVxuICBpZiAoL1teYS16MC05XFwtIyQlJicqKy5eX2B8fiFdL2kudGVzdChuYW1lKSB8fCBuYW1lID09PSAnJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgY2hhcmFjdGVyIGluIGhlYWRlciBmaWVsZCBuYW1lOiBcIicgKyBuYW1lICsgJ1wiJylcbiAgfVxuICByZXR1cm4gbmFtZS50b0xvd2VyQ2FzZSgpXG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVZhbHVlKHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgdmFsdWUgPSBTdHJpbmcodmFsdWUpXG4gIH1cbiAgcmV0dXJuIHZhbHVlXG59XG5cbi8vIEJ1aWxkIGEgZGVzdHJ1Y3RpdmUgaXRlcmF0b3IgZm9yIHRoZSB2YWx1ZSBsaXN0XG5mdW5jdGlvbiBpdGVyYXRvckZvcihpdGVtcykge1xuICB2YXIgaXRlcmF0b3IgPSB7XG4gICAgbmV4dDogZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgdmFsdWUgPSBpdGVtcy5zaGlmdCgpXG4gICAgICByZXR1cm4ge2RvbmU6IHZhbHVlID09PSB1bmRlZmluZWQsIHZhbHVlOiB2YWx1ZX1cbiAgICB9XG4gIH1cblxuICBpZiAoc3VwcG9ydC5pdGVyYWJsZSkge1xuICAgIGl0ZXJhdG9yW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBpdGVyYXRvclxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBpdGVyYXRvclxufVxuXG5leHBvcnQgZnVuY3Rpb24gSGVhZGVycyhoZWFkZXJzKSB7XG4gIHRoaXMubWFwID0ge31cblxuICBpZiAoaGVhZGVycyBpbnN0YW5jZW9mIEhlYWRlcnMpIHtcbiAgICBoZWFkZXJzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICAgIHRoaXMuYXBwZW5kKG5hbWUsIHZhbHVlKVxuICAgIH0sIHRoaXMpXG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShoZWFkZXJzKSkge1xuICAgIGhlYWRlcnMuZm9yRWFjaChmdW5jdGlvbihoZWFkZXIpIHtcbiAgICAgIGlmIChoZWFkZXIubGVuZ3RoICE9IDIpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSGVhZGVycyBjb25zdHJ1Y3RvcjogZXhwZWN0ZWQgbmFtZS92YWx1ZSBwYWlyIHRvIGJlIGxlbmd0aCAyLCBmb3VuZCcgKyBoZWFkZXIubGVuZ3RoKVxuICAgICAgfVxuICAgICAgdGhpcy5hcHBlbmQoaGVhZGVyWzBdLCBoZWFkZXJbMV0pXG4gICAgfSwgdGhpcylcbiAgfSBlbHNlIGlmIChoZWFkZXJzKSB7XG4gICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoaGVhZGVycykuZm9yRWFjaChmdW5jdGlvbihuYW1lKSB7XG4gICAgICB0aGlzLmFwcGVuZChuYW1lLCBoZWFkZXJzW25hbWVdKVxuICAgIH0sIHRoaXMpXG4gIH1cbn1cblxuSGVhZGVycy5wcm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgbmFtZSA9IG5vcm1hbGl6ZU5hbWUobmFtZSlcbiAgdmFsdWUgPSBub3JtYWxpemVWYWx1ZSh2YWx1ZSlcbiAgdmFyIG9sZFZhbHVlID0gdGhpcy5tYXBbbmFtZV1cbiAgdGhpcy5tYXBbbmFtZV0gPSBvbGRWYWx1ZSA/IG9sZFZhbHVlICsgJywgJyArIHZhbHVlIDogdmFsdWVcbn1cblxuSGVhZGVycy5wcm90b3R5cGVbJ2RlbGV0ZSddID0gZnVuY3Rpb24obmFtZSkge1xuICBkZWxldGUgdGhpcy5tYXBbbm9ybWFsaXplTmFtZShuYW1lKV1cbn1cblxuSGVhZGVycy5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24obmFtZSkge1xuICBuYW1lID0gbm9ybWFsaXplTmFtZShuYW1lKVxuICByZXR1cm4gdGhpcy5oYXMobmFtZSkgPyB0aGlzLm1hcFtuYW1lXSA6IG51bGxcbn1cblxuSGVhZGVycy5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24obmFtZSkge1xuICByZXR1cm4gdGhpcy5tYXAuaGFzT3duUHJvcGVydHkobm9ybWFsaXplTmFtZShuYW1lKSlcbn1cblxuSGVhZGVycy5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgdGhpcy5tYXBbbm9ybWFsaXplTmFtZShuYW1lKV0gPSBub3JtYWxpemVWYWx1ZSh2YWx1ZSlcbn1cblxuSGVhZGVycy5wcm90b3R5cGUuZm9yRWFjaCA9IGZ1bmN0aW9uKGNhbGxiYWNrLCB0aGlzQXJnKSB7XG4gIGZvciAodmFyIG5hbWUgaW4gdGhpcy5tYXApIHtcbiAgICBpZiAodGhpcy5tYXAuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgIGNhbGxiYWNrLmNhbGwodGhpc0FyZywgdGhpcy5tYXBbbmFtZV0sIG5hbWUsIHRoaXMpXG4gICAgfVxuICB9XG59XG5cbkhlYWRlcnMucHJvdG90eXBlLmtleXMgPSBmdW5jdGlvbigpIHtcbiAgdmFyIGl0ZW1zID0gW11cbiAgdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7XG4gICAgaXRlbXMucHVzaChuYW1lKVxuICB9KVxuICByZXR1cm4gaXRlcmF0b3JGb3IoaXRlbXMpXG59XG5cbkhlYWRlcnMucHJvdG90eXBlLnZhbHVlcyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgaXRlbXMgPSBbXVxuICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUpIHtcbiAgICBpdGVtcy5wdXNoKHZhbHVlKVxuICB9KVxuICByZXR1cm4gaXRlcmF0b3JGb3IoaXRlbXMpXG59XG5cbkhlYWRlcnMucHJvdG90eXBlLmVudHJpZXMgPSBmdW5jdGlvbigpIHtcbiAgdmFyIGl0ZW1zID0gW11cbiAgdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7XG4gICAgaXRlbXMucHVzaChbbmFtZSwgdmFsdWVdKVxuICB9KVxuICByZXR1cm4gaXRlcmF0b3JGb3IoaXRlbXMpXG59XG5cbmlmIChzdXBwb3J0Lml0ZXJhYmxlKSB7XG4gIEhlYWRlcnMucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0gPSBIZWFkZXJzLnByb3RvdHlwZS5lbnRyaWVzXG59XG5cbmZ1bmN0aW9uIGNvbnN1bWVkKGJvZHkpIHtcbiAgaWYgKGJvZHkuX25vQm9keSkgcmV0dXJuXG4gIGlmIChib2R5LmJvZHlVc2VkKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBUeXBlRXJyb3IoJ0FscmVhZHkgcmVhZCcpKVxuICB9XG4gIGJvZHkuYm9keVVzZWQgPSB0cnVlXG59XG5cbmZ1bmN0aW9uIGZpbGVSZWFkZXJSZWFkeShyZWFkZXIpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgIHJlYWRlci5vbmxvYWQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJlc29sdmUocmVhZGVyLnJlc3VsdClcbiAgICB9XG4gICAgcmVhZGVyLm9uZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJlamVjdChyZWFkZXIuZXJyb3IpXG4gICAgfVxuICB9KVxufVxuXG5mdW5jdGlvbiByZWFkQmxvYkFzQXJyYXlCdWZmZXIoYmxvYikge1xuICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKVxuICB2YXIgcHJvbWlzZSA9IGZpbGVSZWFkZXJSZWFkeShyZWFkZXIpXG4gIHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcihibG9iKVxuICByZXR1cm4gcHJvbWlzZVxufVxuXG5mdW5jdGlvbiByZWFkQmxvYkFzVGV4dChibG9iKSB7XG4gIHZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpXG4gIHZhciBwcm9taXNlID0gZmlsZVJlYWRlclJlYWR5KHJlYWRlcilcbiAgdmFyIG1hdGNoID0gL2NoYXJzZXQ9KFtBLVphLXowLTlfLV0rKS8uZXhlYyhibG9iLnR5cGUpXG4gIHZhciBlbmNvZGluZyA9IG1hdGNoID8gbWF0Y2hbMV0gOiAndXRmLTgnXG4gIHJlYWRlci5yZWFkQXNUZXh0KGJsb2IsIGVuY29kaW5nKVxuICByZXR1cm4gcHJvbWlzZVxufVxuXG5mdW5jdGlvbiByZWFkQXJyYXlCdWZmZXJBc1RleHQoYnVmKSB7XG4gIHZhciB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmKVxuICB2YXIgY2hhcnMgPSBuZXcgQXJyYXkodmlldy5sZW5ndGgpXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB2aWV3Lmxlbmd0aDsgaSsrKSB7XG4gICAgY2hhcnNbaV0gPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHZpZXdbaV0pXG4gIH1cbiAgcmV0dXJuIGNoYXJzLmpvaW4oJycpXG59XG5cbmZ1bmN0aW9uIGJ1ZmZlckNsb25lKGJ1Zikge1xuICBpZiAoYnVmLnNsaWNlKSB7XG4gICAgcmV0dXJuIGJ1Zi5zbGljZSgwKVxuICB9IGVsc2Uge1xuICAgIHZhciB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmLmJ5dGVMZW5ndGgpXG4gICAgdmlldy5zZXQobmV3IFVpbnQ4QXJyYXkoYnVmKSlcbiAgICByZXR1cm4gdmlldy5idWZmZXJcbiAgfVxufVxuXG5mdW5jdGlvbiBCb2R5KCkge1xuICB0aGlzLmJvZHlVc2VkID0gZmFsc2VcblxuICB0aGlzLl9pbml0Qm9keSA9IGZ1bmN0aW9uKGJvZHkpIHtcbiAgICAvKlxuICAgICAgZmV0Y2gtbW9jayB3cmFwcyB0aGUgUmVzcG9uc2Ugb2JqZWN0IGluIGFuIEVTNiBQcm94eSB0b1xuICAgICAgcHJvdmlkZSB1c2VmdWwgdGVzdCBoYXJuZXNzIGZlYXR1cmVzIHN1Y2ggYXMgZmx1c2guIEhvd2V2ZXIsIG9uXG4gICAgICBFUzUgYnJvd3NlcnMgd2l0aG91dCBmZXRjaCBvciBQcm94eSBzdXBwb3J0IHBvbGx5ZmlsbHMgbXVzdCBiZSB1c2VkO1xuICAgICAgdGhlIHByb3h5LXBvbGx5ZmlsbCBpcyB1bmFibGUgdG8gcHJveHkgYW4gYXR0cmlidXRlIHVubGVzcyBpdCBleGlzdHNcbiAgICAgIG9uIHRoZSBvYmplY3QgYmVmb3JlIHRoZSBQcm94eSBpcyBjcmVhdGVkLiBUaGlzIGNoYW5nZSBlbnN1cmVzXG4gICAgICBSZXNwb25zZS5ib2R5VXNlZCBleGlzdHMgb24gdGhlIGluc3RhbmNlLCB3aGlsZSBtYWludGFpbmluZyB0aGVcbiAgICAgIHNlbWFudGljIG9mIHNldHRpbmcgUmVxdWVzdC5ib2R5VXNlZCBpbiB0aGUgY29uc3RydWN0b3IgYmVmb3JlXG4gICAgICBfaW5pdEJvZHkgaXMgY2FsbGVkLlxuICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtYXNzaWduXG4gICAgdGhpcy5ib2R5VXNlZCA9IHRoaXMuYm9keVVzZWRcbiAgICB0aGlzLl9ib2R5SW5pdCA9IGJvZHlcbiAgICBpZiAoIWJvZHkpIHtcbiAgICAgIHRoaXMuX25vQm9keSA9IHRydWU7XG4gICAgICB0aGlzLl9ib2R5VGV4dCA9ICcnXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgYm9keSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMuX2JvZHlUZXh0ID0gYm9keVxuICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5ibG9iICYmIEJsb2IucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcbiAgICAgIHRoaXMuX2JvZHlCbG9iID0gYm9keVxuICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5mb3JtRGF0YSAmJiBGb3JtRGF0YS5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSkge1xuICAgICAgdGhpcy5fYm9keUZvcm1EYXRhID0gYm9keVxuICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5zZWFyY2hQYXJhbXMgJiYgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICB0aGlzLl9ib2R5VGV4dCA9IGJvZHkudG9TdHJpbmcoKVxuICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5hcnJheUJ1ZmZlciAmJiBzdXBwb3J0LmJsb2IgJiYgaXNEYXRhVmlldyhib2R5KSkge1xuICAgICAgdGhpcy5fYm9keUFycmF5QnVmZmVyID0gYnVmZmVyQ2xvbmUoYm9keS5idWZmZXIpXG4gICAgICAvLyBJRSAxMC0xMSBjYW4ndCBoYW5kbGUgYSBEYXRhVmlldyBib2R5LlxuICAgICAgdGhpcy5fYm9keUluaXQgPSBuZXcgQmxvYihbdGhpcy5fYm9keUFycmF5QnVmZmVyXSlcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuYXJyYXlCdWZmZXIgJiYgKEFycmF5QnVmZmVyLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpIHx8IGlzQXJyYXlCdWZmZXJWaWV3KGJvZHkpKSkge1xuICAgICAgdGhpcy5fYm9keUFycmF5QnVmZmVyID0gYnVmZmVyQ2xvbmUoYm9keSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fYm9keVRleHQgPSBib2R5ID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGJvZHkpXG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmhlYWRlcnMuZ2V0KCdjb250ZW50LXR5cGUnKSkge1xuICAgICAgaWYgKHR5cGVvZiBib2R5ID09PSAnc3RyaW5nJykge1xuICAgICAgICB0aGlzLmhlYWRlcnMuc2V0KCdjb250ZW50LXR5cGUnLCAndGV4dC9wbGFpbjtjaGFyc2V0PVVURi04JylcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUJsb2IgJiYgdGhpcy5fYm9keUJsb2IudHlwZSkge1xuICAgICAgICB0aGlzLmhlYWRlcnMuc2V0KCdjb250ZW50LXR5cGUnLCB0aGlzLl9ib2R5QmxvYi50eXBlKVxuICAgICAgfSBlbHNlIGlmIChzdXBwb3J0LnNlYXJjaFBhcmFtcyAmJiBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcbiAgICAgICAgdGhpcy5oZWFkZXJzLnNldCgnY29udGVudC10eXBlJywgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PVVURi04JylcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoc3VwcG9ydC5ibG9iKSB7XG4gICAgdGhpcy5ibG9iID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgcmVqZWN0ZWQgPSBjb25zdW1lZCh0aGlzKVxuICAgICAgaWYgKHJlamVjdGVkKSB7XG4gICAgICAgIHJldHVybiByZWplY3RlZFxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5fYm9keUJsb2IpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5QmxvYilcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUFycmF5QnVmZmVyKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobmV3IEJsb2IoW3RoaXMuX2JvZHlBcnJheUJ1ZmZlcl0pKVxuICAgICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5Rm9ybURhdGEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb3VsZCBub3QgcmVhZCBGb3JtRGF0YSBib2R5IGFzIGJsb2InKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShuZXcgQmxvYihbdGhpcy5fYm9keVRleHRdKSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB0aGlzLmFycmF5QnVmZmVyID0gZnVuY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikge1xuICAgICAgdmFyIGlzQ29uc3VtZWQgPSBjb25zdW1lZCh0aGlzKVxuICAgICAgaWYgKGlzQ29uc3VtZWQpIHtcbiAgICAgICAgcmV0dXJuIGlzQ29uc3VtZWRcbiAgICAgIH0gZWxzZSBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShcbiAgICAgICAgICB0aGlzLl9ib2R5QXJyYXlCdWZmZXIuYnVmZmVyLnNsaWNlKFxuICAgICAgICAgICAgdGhpcy5fYm9keUFycmF5QnVmZmVyLmJ5dGVPZmZzZXQsXG4gICAgICAgICAgICB0aGlzLl9ib2R5QXJyYXlCdWZmZXIuYnl0ZU9mZnNldCArIHRoaXMuX2JvZHlBcnJheUJ1ZmZlci5ieXRlTGVuZ3RoXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX2JvZHlBcnJheUJ1ZmZlcilcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuYmxvYikge1xuICAgICAgcmV0dXJuIHRoaXMuYmxvYigpLnRoZW4ocmVhZEJsb2JBc0FycmF5QnVmZmVyKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvdWxkIG5vdCByZWFkIGFzIEFycmF5QnVmZmVyJylcbiAgICB9XG4gIH1cblxuICB0aGlzLnRleHQgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgcmVqZWN0ZWQgPSBjb25zdW1lZCh0aGlzKVxuICAgIGlmIChyZWplY3RlZCkge1xuICAgICAgcmV0dXJuIHJlamVjdGVkXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2JvZHlCbG9iKSB7XG4gICAgICByZXR1cm4gcmVhZEJsb2JBc1RleHQodGhpcy5fYm9keUJsb2IpXG4gICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVhZEFycmF5QnVmZmVyQXNUZXh0KHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikpXG4gICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5Rm9ybURhdGEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY291bGQgbm90IHJlYWQgRm9ybURhdGEgYm9keSBhcyB0ZXh0JylcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5VGV4dClcbiAgICB9XG4gIH1cblxuICBpZiAoc3VwcG9ydC5mb3JtRGF0YSkge1xuICAgIHRoaXMuZm9ybURhdGEgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLnRleHQoKS50aGVuKGRlY29kZSlcbiAgICB9XG4gIH1cblxuICB0aGlzLmpzb24gPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy50ZXh0KCkudGhlbihKU09OLnBhcnNlKVxuICB9XG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuLy8gSFRUUCBtZXRob2RzIHdob3NlIGNhcGl0YWxpemF0aW9uIHNob3VsZCBiZSBub3JtYWxpemVkXG52YXIgbWV0aG9kcyA9IFsnQ09OTkVDVCcsICdERUxFVEUnLCAnR0VUJywgJ0hFQUQnLCAnT1BUSU9OUycsICdQQVRDSCcsICdQT1NUJywgJ1BVVCcsICdUUkFDRSddXG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZU1ldGhvZChtZXRob2QpIHtcbiAgdmFyIHVwY2FzZWQgPSBtZXRob2QudG9VcHBlckNhc2UoKVxuICByZXR1cm4gbWV0aG9kcy5pbmRleE9mKHVwY2FzZWQpID4gLTEgPyB1cGNhc2VkIDogbWV0aG9kXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSZXF1ZXN0KGlucHV0LCBvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBSZXF1ZXN0KSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1BsZWFzZSB1c2UgdGhlIFwibmV3XCIgb3BlcmF0b3IsIHRoaXMgRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uJylcbiAgfVxuXG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9XG4gIHZhciBib2R5ID0gb3B0aW9ucy5ib2R5XG5cbiAgaWYgKGlucHV0IGluc3RhbmNlb2YgUmVxdWVzdCkge1xuICAgIGlmIChpbnB1dC5ib2R5VXNlZCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQWxyZWFkeSByZWFkJylcbiAgICB9XG4gICAgdGhpcy51cmwgPSBpbnB1dC51cmxcbiAgICB0aGlzLmNyZWRlbnRpYWxzID0gaW5wdXQuY3JlZGVudGlhbHNcbiAgICBpZiAoIW9wdGlvbnMuaGVhZGVycykge1xuICAgICAgdGhpcy5oZWFkZXJzID0gbmV3IEhlYWRlcnMoaW5wdXQuaGVhZGVycylcbiAgICB9XG4gICAgdGhpcy5tZXRob2QgPSBpbnB1dC5tZXRob2RcbiAgICB0aGlzLm1vZGUgPSBpbnB1dC5tb2RlXG4gICAgdGhpcy5zaWduYWwgPSBpbnB1dC5zaWduYWxcbiAgICBpZiAoIWJvZHkgJiYgaW5wdXQuX2JvZHlJbml0ICE9IG51bGwpIHtcbiAgICAgIGJvZHkgPSBpbnB1dC5fYm9keUluaXRcbiAgICAgIGlucHV0LmJvZHlVc2VkID0gdHJ1ZVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aGlzLnVybCA9IFN0cmluZyhpbnB1dClcbiAgfVxuXG4gIHRoaXMuY3JlZGVudGlhbHMgPSBvcHRpb25zLmNyZWRlbnRpYWxzIHx8IHRoaXMuY3JlZGVudGlhbHMgfHwgJ3NhbWUtb3JpZ2luJ1xuICBpZiAob3B0aW9ucy5oZWFkZXJzIHx8ICF0aGlzLmhlYWRlcnMpIHtcbiAgICB0aGlzLmhlYWRlcnMgPSBuZXcgSGVhZGVycyhvcHRpb25zLmhlYWRlcnMpXG4gIH1cbiAgdGhpcy5tZXRob2QgPSBub3JtYWxpemVNZXRob2Qob3B0aW9ucy5tZXRob2QgfHwgdGhpcy5tZXRob2QgfHwgJ0dFVCcpXG4gIHRoaXMubW9kZSA9IG9wdGlvbnMubW9kZSB8fCB0aGlzLm1vZGUgfHwgbnVsbFxuICB0aGlzLnNpZ25hbCA9IG9wdGlvbnMuc2lnbmFsIHx8IHRoaXMuc2lnbmFsIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCdBYm9ydENvbnRyb2xsZXInIGluIGcpIHtcbiAgICAgIHZhciBjdHJsID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgICAgcmV0dXJuIGN0cmwuc2lnbmFsO1xuICAgIH1cbiAgfSgpKTtcbiAgdGhpcy5yZWZlcnJlciA9IG51bGxcblxuICBpZiAoKHRoaXMubWV0aG9kID09PSAnR0VUJyB8fCB0aGlzLm1ldGhvZCA9PT0gJ0hFQUQnKSAmJiBib2R5KSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQm9keSBub3QgYWxsb3dlZCBmb3IgR0VUIG9yIEhFQUQgcmVxdWVzdHMnKVxuICB9XG4gIHRoaXMuX2luaXRCb2R5KGJvZHkpXG5cbiAgaWYgKHRoaXMubWV0aG9kID09PSAnR0VUJyB8fCB0aGlzLm1ldGhvZCA9PT0gJ0hFQUQnKSB7XG4gICAgaWYgKG9wdGlvbnMuY2FjaGUgPT09ICduby1zdG9yZScgfHwgb3B0aW9ucy5jYWNoZSA9PT0gJ25vLWNhY2hlJykge1xuICAgICAgLy8gU2VhcmNoIGZvciBhICdfJyBwYXJhbWV0ZXIgaW4gdGhlIHF1ZXJ5IHN0cmluZ1xuICAgICAgdmFyIHJlUGFyYW1TZWFyY2ggPSAvKFs/Jl0pXz1bXiZdKi9cbiAgICAgIGlmIChyZVBhcmFtU2VhcmNoLnRlc3QodGhpcy51cmwpKSB7XG4gICAgICAgIC8vIElmIGl0IGFscmVhZHkgZXhpc3RzIHRoZW4gc2V0IHRoZSB2YWx1ZSB3aXRoIHRoZSBjdXJyZW50IHRpbWVcbiAgICAgICAgdGhpcy51cmwgPSB0aGlzLnVybC5yZXBsYWNlKHJlUGFyYW1TZWFyY2gsICckMV89JyArIG5ldyBEYXRlKCkuZ2V0VGltZSgpKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gT3RoZXJ3aXNlIGFkZCBhIG5ldyAnXycgcGFyYW1ldGVyIHRvIHRoZSBlbmQgd2l0aCB0aGUgY3VycmVudCB0aW1lXG4gICAgICAgIHZhciByZVF1ZXJ5U3RyaW5nID0gL1xcPy9cbiAgICAgICAgdGhpcy51cmwgKz0gKHJlUXVlcnlTdHJpbmcudGVzdCh0aGlzLnVybCkgPyAnJicgOiAnPycpICsgJ189JyArIG5ldyBEYXRlKCkuZ2V0VGltZSgpXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cblJlcXVlc3QucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBuZXcgUmVxdWVzdCh0aGlzLCB7Ym9keTogdGhpcy5fYm9keUluaXR9KVxufVxuXG5mdW5jdGlvbiBkZWNvZGUoYm9keSkge1xuICB2YXIgZm9ybSA9IG5ldyBGb3JtRGF0YSgpXG4gIGJvZHlcbiAgICAudHJpbSgpXG4gICAgLnNwbGl0KCcmJylcbiAgICAuZm9yRWFjaChmdW5jdGlvbihieXRlcykge1xuICAgICAgaWYgKGJ5dGVzKSB7XG4gICAgICAgIHZhciBzcGxpdCA9IGJ5dGVzLnNwbGl0KCc9JylcbiAgICAgICAgdmFyIG5hbWUgPSBzcGxpdC5zaGlmdCgpLnJlcGxhY2UoL1xcKy9nLCAnICcpXG4gICAgICAgIHZhciB2YWx1ZSA9IHNwbGl0LmpvaW4oJz0nKS5yZXBsYWNlKC9cXCsvZywgJyAnKVxuICAgICAgICBmb3JtLmFwcGVuZChkZWNvZGVVUklDb21wb25lbnQobmFtZSksIGRlY29kZVVSSUNvbXBvbmVudCh2YWx1ZSkpXG4gICAgICB9XG4gICAgfSlcbiAgcmV0dXJuIGZvcm1cbn1cblxuZnVuY3Rpb24gcGFyc2VIZWFkZXJzKHJhd0hlYWRlcnMpIHtcbiAgdmFyIGhlYWRlcnMgPSBuZXcgSGVhZGVycygpXG4gIC8vIFJlcGxhY2UgaW5zdGFuY2VzIG9mIFxcclxcbiBhbmQgXFxuIGZvbGxvd2VkIGJ5IGF0IGxlYXN0IG9uZSBzcGFjZSBvciBob3Jpem9udGFsIHRhYiB3aXRoIGEgc3BhY2VcbiAgLy8gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzAjc2VjdGlvbi0zLjJcbiAgdmFyIHByZVByb2Nlc3NlZEhlYWRlcnMgPSByYXdIZWFkZXJzLnJlcGxhY2UoL1xccj9cXG5bXFx0IF0rL2csICcgJylcbiAgLy8gQXZvaWRpbmcgc3BsaXQgdmlhIHJlZ2V4IHRvIHdvcmsgYXJvdW5kIGEgY29tbW9uIElFMTEgYnVnIHdpdGggdGhlIGNvcmUtanMgMy42LjAgcmVnZXggcG9seWZpbGxcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2dpdGh1Yi9mZXRjaC9pc3N1ZXMvNzQ4XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy83NTFcbiAgcHJlUHJvY2Vzc2VkSGVhZGVyc1xuICAgIC5zcGxpdCgnXFxyJylcbiAgICAubWFwKGZ1bmN0aW9uKGhlYWRlcikge1xuICAgICAgcmV0dXJuIGhlYWRlci5pbmRleE9mKCdcXG4nKSA9PT0gMCA/IGhlYWRlci5zdWJzdHIoMSwgaGVhZGVyLmxlbmd0aCkgOiBoZWFkZXJcbiAgICB9KVxuICAgIC5mb3JFYWNoKGZ1bmN0aW9uKGxpbmUpIHtcbiAgICAgIHZhciBwYXJ0cyA9IGxpbmUuc3BsaXQoJzonKVxuICAgICAgdmFyIGtleSA9IHBhcnRzLnNoaWZ0KCkudHJpbSgpXG4gICAgICBpZiAoa2V5KSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHBhcnRzLmpvaW4oJzonKS50cmltKClcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBoZWFkZXJzLmFwcGVuZChrZXksIHZhbHVlKVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUud2FybignUmVzcG9uc2UgJyArIGVycm9yLm1lc3NhZ2UpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuICByZXR1cm4gaGVhZGVyc1xufVxuXG5Cb2R5LmNhbGwoUmVxdWVzdC5wcm90b3R5cGUpXG5cbmV4cG9ydCBmdW5jdGlvbiBSZXNwb25zZShib2R5SW5pdCwgb3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUmVzcG9uc2UpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignUGxlYXNlIHVzZSB0aGUgXCJuZXdcIiBvcGVyYXRvciwgdGhpcyBET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4nKVxuICB9XG4gIGlmICghb3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSB7fVxuICB9XG5cbiAgdGhpcy50eXBlID0gJ2RlZmF1bHQnXG4gIHRoaXMuc3RhdHVzID0gb3B0aW9ucy5zdGF0dXMgPT09IHVuZGVmaW5lZCA/IDIwMCA6IG9wdGlvbnMuc3RhdHVzXG4gIGlmICh0aGlzLnN0YXR1cyA8IDIwMCB8fCB0aGlzLnN0YXR1cyA+IDU5OSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiRmFpbGVkIHRvIGNvbnN0cnVjdCAnUmVzcG9uc2UnOiBUaGUgc3RhdHVzIHByb3ZpZGVkICgwKSBpcyBvdXRzaWRlIHRoZSByYW5nZSBbMjAwLCA1OTldLlwiKVxuICB9XG4gIHRoaXMub2sgPSB0aGlzLnN0YXR1cyA+PSAyMDAgJiYgdGhpcy5zdGF0dXMgPCAzMDBcbiAgdGhpcy5zdGF0dXNUZXh0ID0gb3B0aW9ucy5zdGF0dXNUZXh0ID09PSB1bmRlZmluZWQgPyAnJyA6ICcnICsgb3B0aW9ucy5zdGF0dXNUZXh0XG4gIHRoaXMuaGVhZGVycyA9IG5ldyBIZWFkZXJzKG9wdGlvbnMuaGVhZGVycylcbiAgdGhpcy51cmwgPSBvcHRpb25zLnVybCB8fCAnJ1xuICB0aGlzLl9pbml0Qm9keShib2R5SW5pdClcbn1cblxuQm9keS5jYWxsKFJlc3BvbnNlLnByb3RvdHlwZSlcblxuUmVzcG9uc2UucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBuZXcgUmVzcG9uc2UodGhpcy5fYm9keUluaXQsIHtcbiAgICBzdGF0dXM6IHRoaXMuc3RhdHVzLFxuICAgIHN0YXR1c1RleHQ6IHRoaXMuc3RhdHVzVGV4dCxcbiAgICBoZWFkZXJzOiBuZXcgSGVhZGVycyh0aGlzLmhlYWRlcnMpLFxuICAgIHVybDogdGhpcy51cmxcbiAgfSlcbn1cblxuUmVzcG9uc2UuZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHJlc3BvbnNlID0gbmV3IFJlc3BvbnNlKG51bGwsIHtzdGF0dXM6IDIwMCwgc3RhdHVzVGV4dDogJyd9KVxuICByZXNwb25zZS5vayA9IGZhbHNlXG4gIHJlc3BvbnNlLnN0YXR1cyA9IDBcbiAgcmVzcG9uc2UudHlwZSA9ICdlcnJvcidcbiAgcmV0dXJuIHJlc3BvbnNlXG59XG5cbnZhciByZWRpcmVjdFN0YXR1c2VzID0gWzMwMSwgMzAyLCAzMDMsIDMwNywgMzA4XVxuXG5SZXNwb25zZS5yZWRpcmVjdCA9IGZ1bmN0aW9uKHVybCwgc3RhdHVzKSB7XG4gIGlmIChyZWRpcmVjdFN0YXR1c2VzLmluZGV4T2Yoc3RhdHVzKSA9PT0gLTEpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCBzdGF0dXMgY29kZScpXG4gIH1cblxuICByZXR1cm4gbmV3IFJlc3BvbnNlKG51bGwsIHtzdGF0dXM6IHN0YXR1cywgaGVhZGVyczoge2xvY2F0aW9uOiB1cmx9fSlcbn1cblxuZXhwb3J0IHZhciBET01FeGNlcHRpb24gPSBnLkRPTUV4Y2VwdGlvblxudHJ5IHtcbiAgbmV3IERPTUV4Y2VwdGlvbigpXG59IGNhdGNoIChlcnIpIHtcbiAgRE9NRXhjZXB0aW9uID0gZnVuY3Rpb24obWVzc2FnZSwgbmFtZSkge1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2VcbiAgICB0aGlzLm5hbWUgPSBuYW1lXG4gICAgdmFyIGVycm9yID0gRXJyb3IobWVzc2FnZSlcbiAgICB0aGlzLnN0YWNrID0gZXJyb3Iuc3RhY2tcbiAgfVxuICBET01FeGNlcHRpb24ucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShFcnJvci5wcm90b3R5cGUpXG4gIERPTUV4Y2VwdGlvbi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBET01FeGNlcHRpb25cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZldGNoKGlucHV0LCBpbml0KSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICB2YXIgcmVxdWVzdCA9IG5ldyBSZXF1ZXN0KGlucHV0LCBpbml0KVxuXG4gICAgaWYgKHJlcXVlc3Quc2lnbmFsICYmIHJlcXVlc3Quc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgIHJldHVybiByZWplY3QobmV3IERPTUV4Y2VwdGlvbignQWJvcnRlZCcsICdBYm9ydEVycm9yJykpXG4gICAgfVxuXG4gICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpXG5cbiAgICBmdW5jdGlvbiBhYm9ydFhocigpIHtcbiAgICAgIHhoci5hYm9ydCgpXG4gICAgfVxuXG4gICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIG9wdGlvbnMgPSB7XG4gICAgICAgIHN0YXR1c1RleHQ6IHhoci5zdGF0dXNUZXh0LFxuICAgICAgICBoZWFkZXJzOiBwYXJzZUhlYWRlcnMoeGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpIHx8ICcnKVxuICAgICAgfVxuICAgICAgLy8gVGhpcyBjaGVjayBpZiBzcGVjaWZpY2FsbHkgZm9yIHdoZW4gYSB1c2VyIGZldGNoZXMgYSBmaWxlIGxvY2FsbHkgZnJvbSB0aGUgZmlsZSBzeXN0ZW1cbiAgICAgIC8vIE9ubHkgaWYgdGhlIHN0YXR1cyBpcyBvdXQgb2YgYSBub3JtYWwgcmFuZ2VcbiAgICAgIGlmIChyZXF1ZXN0LnVybC5pbmRleE9mKCdmaWxlOi8vJykgPT09IDAgJiYgKHhoci5zdGF0dXMgPCAyMDAgfHwgeGhyLnN0YXR1cyA+IDU5OSkpIHtcbiAgICAgICAgb3B0aW9ucy5zdGF0dXMgPSAyMDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvcHRpb25zLnN0YXR1cyA9IHhoci5zdGF0dXM7XG4gICAgICB9XG4gICAgICBvcHRpb25zLnVybCA9ICdyZXNwb25zZVVSTCcgaW4geGhyID8geGhyLnJlc3BvbnNlVVJMIDogb3B0aW9ucy5oZWFkZXJzLmdldCgnWC1SZXF1ZXN0LVVSTCcpXG4gICAgICB2YXIgYm9keSA9ICdyZXNwb25zZScgaW4geGhyID8geGhyLnJlc3BvbnNlIDogeGhyLnJlc3BvbnNlVGV4dFxuICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgcmVzb2x2ZShuZXcgUmVzcG9uc2UoYm9keSwgb3B0aW9ucykpXG4gICAgICB9LCAwKVxuICAgIH1cblxuICAgIHhoci5vbmVycm9yID0gZnVuY3Rpb24oKSB7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICByZWplY3QobmV3IFR5cGVFcnJvcignTmV0d29yayByZXF1ZXN0IGZhaWxlZCcpKVxuICAgICAgfSwgMClcbiAgICB9XG5cbiAgICB4aHIub250aW1lb3V0ID0gZnVuY3Rpb24oKSB7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICByZWplY3QobmV3IFR5cGVFcnJvcignTmV0d29yayByZXF1ZXN0IHRpbWVkIG91dCcpKVxuICAgICAgfSwgMClcbiAgICB9XG5cbiAgICB4aHIub25hYm9ydCA9IGZ1bmN0aW9uKCkge1xuICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgcmVqZWN0KG5ldyBET01FeGNlcHRpb24oJ0Fib3J0ZWQnLCAnQWJvcnRFcnJvcicpKVxuICAgICAgfSwgMClcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBmaXhVcmwodXJsKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gdXJsID09PSAnJyAmJiBnLmxvY2F0aW9uLmhyZWYgPyBnLmxvY2F0aW9uLmhyZWYgOiB1cmxcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIHVybFxuICAgICAgfVxuICAgIH1cblxuICAgIHhoci5vcGVuKHJlcXVlc3QubWV0aG9kLCBmaXhVcmwocmVxdWVzdC51cmwpLCB0cnVlKVxuXG4gICAgaWYgKHJlcXVlc3QuY3JlZGVudGlhbHMgPT09ICdpbmNsdWRlJykge1xuICAgICAgeGhyLndpdGhDcmVkZW50aWFscyA9IHRydWVcbiAgICB9IGVsc2UgaWYgKHJlcXVlc3QuY3JlZGVudGlhbHMgPT09ICdvbWl0Jykge1xuICAgICAgeGhyLndpdGhDcmVkZW50aWFscyA9IGZhbHNlXG4gICAgfVxuXG4gICAgaWYgKCdyZXNwb25zZVR5cGUnIGluIHhocikge1xuICAgICAgaWYgKHN1cHBvcnQuYmxvYikge1xuICAgICAgICB4aHIucmVzcG9uc2VUeXBlID0gJ2Jsb2InXG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBzdXBwb3J0LmFycmF5QnVmZmVyXG4gICAgICApIHtcbiAgICAgICAgeGhyLnJlc3BvbnNlVHlwZSA9ICdhcnJheWJ1ZmZlcidcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaW5pdCAmJiB0eXBlb2YgaW5pdC5oZWFkZXJzID09PSAnb2JqZWN0JyAmJiAhKGluaXQuaGVhZGVycyBpbnN0YW5jZW9mIEhlYWRlcnMgfHwgKGcuSGVhZGVycyAmJiBpbml0LmhlYWRlcnMgaW5zdGFuY2VvZiBnLkhlYWRlcnMpKSkge1xuICAgICAgdmFyIG5hbWVzID0gW107XG4gICAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhpbml0LmhlYWRlcnMpLmZvckVhY2goZnVuY3Rpb24obmFtZSkge1xuICAgICAgICBuYW1lcy5wdXNoKG5vcm1hbGl6ZU5hbWUobmFtZSkpXG4gICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKG5hbWUsIG5vcm1hbGl6ZVZhbHVlKGluaXQuaGVhZGVyc1tuYW1lXSkpXG4gICAgICB9KVxuICAgICAgcmVxdWVzdC5oZWFkZXJzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICAgICAgaWYgKG5hbWVzLmluZGV4T2YobmFtZSkgPT09IC0xKSB7XG4gICAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIobmFtZSwgdmFsdWUpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcXVlc3QuaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7XG4gICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKG5hbWUsIHZhbHVlKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAocmVxdWVzdC5zaWduYWwpIHtcbiAgICAgIHJlcXVlc3Quc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgYWJvcnRYaHIpXG5cbiAgICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgLy8gRE9ORSAoc3VjY2VzcyBvciBmYWlsdXJlKVxuICAgICAgICBpZiAoeGhyLnJlYWR5U3RhdGUgPT09IDQpIHtcbiAgICAgICAgICByZXF1ZXN0LnNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIGFib3J0WGhyKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgeGhyLnNlbmQodHlwZW9mIHJlcXVlc3QuX2JvZHlJbml0ID09PSAndW5kZWZpbmVkJyA/IG51bGwgOiByZXF1ZXN0Ll9ib2R5SW5pdClcbiAgfSlcbn1cblxuZmV0Y2gucG9seWZpbGwgPSB0cnVlXG5cbmlmICghZy5mZXRjaCkge1xuICBnLmZldGNoID0gZmV0Y2hcbiAgZy5IZWFkZXJzID0gSGVhZGVyc1xuICBnLlJlcXVlc3QgPSBSZXF1ZXN0XG4gIGcuUmVzcG9uc2UgPSBSZXNwb25zZVxufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5pbXBvcnQgQ2hhbm5lbHMgZnJvbSAnLi9DaGFubmVscyc7XG5pbXBvcnQgQ2hhbm5lbFN0YXRlIGZyb20gJy4vQ2hhbm5lbFN0YXRlJztcblxuZXhwb3J0IHtcbiAgU0RLLFxuICBDaGFubmVscyxcbiAgQ2hhbm5lbFN0YXRlXG59O1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIFNESyxcbiAgQ2hhbm5lbHMsXG4gIENoYW5uZWxTdGF0ZVxufTsiXSwibmFtZXMiOlsiR2xvYmFsU2NvcGUiLCJEaXNwb3NhYmxlIiwiRGlzcG9zYWJsZUxpc3QiLCJTdWJqZWN0IiwiUmVhZE9ubHlTdWJqZWN0IiwidmlzaWJpbGl0eUNoYW5nZUV2ZW50IiwiQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IiLCJfY2xhc3NDYWxsQ2hlY2siLCJfZGVmaW5lUHJvcGVydHkiLCJEYXRlIiwibm93IiwiX2lzRm9yZWdyb3VuZCIsIl9yZWFkT25seUlzRm9yZWdyb3VuZCIsImluaXRpYWxpemUiLCJfY3JlYXRlQ2xhc3MiLCJrZXkiLCJnZXQiLCJ2YWx1ZSIsImdldFRpbWVTaW5jZUxhc3RDaGFuZ2UiLCJfdGltZU9mTGFzdFRhYkZvY3VzQ2hhbmdlIiwiZ2V0TGFzdEJhY2tncm91bmREdXJhdGlvbiIsIl9sYXN0QmFja2dyb3VuZER1cmF0aW9uIiwiZGlzcG9zZSIsIl9kaXNwb3NhYmxlcyIsIl90aGlzIiwiYmFja2dyb3VuZEVudHJ5VGltZSIsImhhbmRsZVZpc2liaWxpdHlDaGFuZ2UiLCJpc05vd0ZvcmVncm91bmQiLCJkb2N1bWVudElzSGlkZGVuIiwidXNlRXZlbnRDYXB0dXJlUGhhc2UiLCJhZGREb2N1bWVudEV2ZW50TGlzdGVuZXIiLCJhZGQiLCJyZW1vdmVEb2N1bWVudEV2ZW50TGlzdGVuZXIiLCJkZWZhdWx0IiwiQnJvd3NlckRldGVjdG9yIiwiX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbiIsIl9icm93c2VyTmFtZSIsIl9icm93c2VyTWFqb3JWZXJzaW9uIiwiX2lzQW5kcm9pZCIsIl9pc0Nocm9tZTY5IiwiX2lzQ2hyb21lNzAiLCJfaXNDaHJvbWU3MSIsIl9pc0Nocm9tZTcyIiwiX2lzQ2hyb21lNzQiLCJfaXNDaHJvbWU3NSIsIl9pc0Nocm9tZTc2IiwiX2lzQ2hyb21lNzciLCJpc01vYmlsZSIsIl9pc01vYmlsZSIsInBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uIiwibmF2aWdhdG9yIiwidXNlckFnZW50IiwiYnJvd3Nlck5hbWVBbmRWZXJzaW9uIiwibWF0Y2giLCJfYnJvd3Nlck5hbWVBbmRWZXJzaW9uUmVnZXgiLCJwYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbkZvcklFIiwicGFyc2VCcm93c2VyTmFtZSIsImJyb3dzZXJOYW1lTGlzdCIsInNwbGl0IiwicGFyc2VCcm93c2VyTWFqb3JWZXJzaW9uIiwiYnJvd3NlclZlcnNpb25MaXN0IiwiZnVsbFZlcnNpb24iLCJOdW1iZXIiLCJtc2llIiwiaW5kZXhPZiIsImNvbmNhdCIsInBhcnNlSW50Iiwic3Vic3RyaW5nIiwidHJpZGVudCIsInZlcnNpb24iLCJfQnJvd3NlckRldGVjdG9yIiwidGVzdCIsIl9uYXZpZ2F0b3IiLCJfbmF2aWdhdG9yMiIsImluY2x1ZGVzIiwiVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nIiwiVGVsZW1ldHJ5RGVmYXVsdCIsIkxvZ2dpbmdMZXZlbE1hcHBpbmciLCJMb2dnZXJEZWZhdWx0cyIsIlBsYWluQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlciIsImdldFN0cmluZ1ZhbHVlIiwibmFtZSIsImRlZmF1bHRTdHJpbmdWYWx1ZSIsImdldEJvb2xlYW5WYWx1ZSIsImRlZmF1bHRCb29sZWFuVmFsdWUiLCJjb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUb1RlbGVtZXRyeUxldmVsVHlwZSIsImRlZmF1bHRUZWxlbWV0cnlMZXZlbCIsImNvbnZlcnRMb2dnaW5nTGV2ZWxUb0xvZ2dpbmdMZXZlbFR5cGUiLCJkZWZhdWx0TG9nZ2luZ0xldmVsIiwiZGVmYXVsdENvbnNvbGVMb2dnaW5nTGV2ZWwiLCJkZWZhdWx0VGVsZW1ldHJ5TG9nZ2luZ0xldmVsIiwiRmVhdHVyZUVuYWJsZW1lbnQiLCJTREsiLCJHYXJiYWdlQ29sbGVjdG9yTWFuYWdlciIsIkVycm9yIiwiZm9yY2VHYXJiYWdlQ29sbGVjdGlvbiIsInNraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcyIsImlzRm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvblN1cHBvcnRlZCIsImZvcmNlQ2hyb21lR2FyYmFnZUNvbGxlY3Rpb24iLCJpc1F1ZXVlTWljcm90YXNrU3VwcG9ydGVkIiwicXVldWVNaWNyb3Rhc2siLCJvdmVybG9hZE1lbW9yeVRvSW52b2tlR2FyYmFnZUNvbGxlY3Rpb24iLCJiaW5kIiwic2V0VGltZW91dCIsImltZyIsImRvY3VtZW50Q3JlYXRlRWxlbWVudCIsInNyYyIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsIkJsb2IiLCJBcnJheUJ1ZmZlciIsIm9uZXJyb3IiLCJyZXZva2VPYmplY3RVUkwiLCJOZXR3b3JrTW9uaXRvciIsIm5hdmlnYXRvckNvbm5lY3Rpb24iLCJ1bmRlZmluZWQiLCJpc1N1cHBvcnRlZCIsInNldHVwTmV0d29ya0NoYW5nZUxpc3RlbmVycyIsInVwZGF0ZVN0YXRpc3RpY3MiLCJfaXNTdXBwb3J0ZWQiLCJfcnR0IiwiX2VmZmVjdGl2ZVR5cGUiLCJfZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkiLCJnZXREb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSIsIl9yZWYiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmEiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmEyIiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hMyIsImRvd25saW5rIiwiZG93bmxpbmtNYXgiLCJnZXRFZmZlY3RpdmVUeXBlIiwiX3JlZjIiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmE0IiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hNSIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTYiLCJlZmZlY3RpdmVUeXBlIiwidHlwZSIsImdldFJvdW5kVHJpcFRpbWUiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmE3IiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hOCIsInJ0dCIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTkiLCJsaXN0ZW5lciIsImFkZEV2ZW50TGlzdGVuZXIiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmEwIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIk1ldHJpY3NUeXBlIiwiTWV0cmljVHlwZSIsIkR1cmF0aW9ucyIsIkxvZ2dlckZhY3RvcnkiLCJTdHJlYW1TZXR1cExpc3RlbmVyIiwicGFnZUxvYWRUaW1lIiwiZ2V0TG9nZ2VyIiwibWV0cmljc1NlcnZpY2UiLCJfc3RhcnRUaW1lIiwiX3BhZ2VMb2FkVGltZSIsInN1Y2Nlc3MiLCJzdHJlYW1JZCIsInJlY29yZFN0cmVhbU1ldHJpYyIsIlNldHVwQ29tcGxldGVkIiwiZmFpbCIsIlNldHVwRmFpbGVkIiwibWV0cmljVHlwZSIsIl9tZXRyaWNTdWJtaXR0ZWQiLCJzZXR1cFRpbWUiLCJtZXRyaWNOYW1lIiwiZ2V0TmFtZSIsInB1c2giLCJydW50aW1lIiwidWludDY0IiwiX2xvZ2dlciIsImluZm8iLCJ0b0lzb1N0cmluZyIsIkVkZ2VUb2tlbiIsImVkZ2VBdXRoVG9rZW5QcmVmaXgiLCJFZGdlQXV0aFBhcnNlciIsInBhcnNlVG9rZW4iLCJ0b2tlbiIsImlzRW5jb2RlZEVkZ2VUb2tlblZhbGlkIiwiZXJyb3IiLCJkZWNvZGVkVG9rZW4iLCJhdG9iIiwic3Vic3RyIiwibGVuZ3RoIiwiZWRnZVRva2VuIiwiSlNPTiIsInBhcnNlIiwiZSIsInN0YXJ0c1dpdGgiLCJfZWRnZVRva2VuJHRva2VuIiwiX2VkZ2VUb2tlbiR0b2tlbjIiLCJfYXBwbGljYXRpb25JZCIsImFwcGxpY2F0aW9uSWQiLCJfdG9rZW4iLCJ1cmkiLCJjYXBhYmlsaXRpZXMiLCJCdWlsZEZlYXR1cmVzIiwiX3NlbmRMb2NhbENhbmRpZGF0ZXMiLCJfc2VuZExvZ3MiLCJfc2VuZE1ldHJpY3MiLCJfbG9nVG9Db25zb2xlIiwiYXBwbHlGZWF0dXJlcyIsImZlYXR1cmVzIiwiX19GRUFUVVJFU19fIiwic2VuZExvY2FsQ2FuZGlkYXRlcyIsInNlbmRMb2dzIiwic2VuZE1ldHJpY3MiLCJsb2dUb0NvbnNvbGUiLCJpc0Nocm9tZTc0IiwiaXNDaHJvbWU3NSIsImlzQ2hyb21lNzYiLCJpc0Nocm9tZTc3IiwiYWRkVHJhbmNlaXZlckRpc2FibGVkIiwiaXNDaHJvbWU2OSIsImlzQ2hyb21lNzAiLCJpc0Nocm9tZTcxIiwiaXNDaHJvbWU3MiIsImJyb3dzZXJOYW1lIiwiYnJvd3Nlck1ham9yVmVyc2lvbiIsIl9HbG9iYWxTY29wZSR2YWx1ZSIsIk1lZGlhU3RyZWFtVHJhY2tQcm9jZXNzb3IiLCJNZWRpYVN0cmVhbVRyYWNrR2VuZXJhdG9yIiwiUlRDUnRwUmVjZWl2ZXIiLCJwcm90b3R5cGUiLCJjcmVhdGVFbmNvZGVkU3RyZWFtcyIsIlJUQ1J0cFNjcmlwdFRyYW5zZm9ybSIsIl9HbG9iYWxTY29wZSR2YWx1ZTIiLCJIVE1MVmlkZW9FbGVtZW50IiwicmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayIsIl9HbG9iYWxTY29wZSR2YWx1ZTMiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJpc1JlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2tTdXBwb3J0ZWQiLCJpc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCIsImlzUlRDUnRwU2NyaXB0VHJhbnNmb3JtU3VwcG9ydGVkIiwiUGFyYW1ldGVycyIsIl9kaXNjb3ZlcnlQYXJhbWV0ZXJzIiwiYXBwbHlQYXJhbWV0ZXJzIiwicGFyYW1ldGVycyIsIl9fUEFSQU1FVEVSU19fIiwiZGlzY292ZXJ5IiwiaW50ZW50aW9ucyIsImJyb3dzZXJHbG9iYWxTY29wZSIsImRvY3VtZW50IiwibG9jYXRpb24iLCJ3aW5kb3ciLCJnbG9iYWxTY29wZSIsIl9kb2N1bWVudCIsIl9sb2NhdGlvbiIsIl93aW5kb3ciLCJGb3JtRGF0YSIsIk1lZGlhU3RyZWFtIiwiTWVkaWFTdHJlYW1UcmFjayIsIk1lZGlhU291cmNlIiwiUlRDUGVlckNvbm5lY3Rpb24iLCJSVENTZXNzaW9uRGVzY3JpcHRpb24iLCJSVENJY2VDYW5kaWRhdGUiLCJVUkxTZWFyY2hQYXJhbXMiLCJjbGVhckludGVydmFsIiwiY2xlYXJUaW1lb3V0IiwiY3JlYXRlRWxlbWVudCIsImhhc0ZvY3VzIiwiaGlkZGVuIiwicXVlcnlTZWxlY3RvciIsImZldGNoIiwiaG9zdG5hbWUiLCJzZWFyY2giLCJjb25uZWN0aW9uIiwib25MaW5lIiwic2V0SW50ZXJ2YWwiLCJzZXRJbnN0YW5jZSIsInByb3ZpZGVkR2xvYmFsU2NvcGUiLCJnZXRJbnN0YW5jZSIsIl9yZWFkT25seUluc3RhbmNlIiwic3Vic2NyaWJlIiwiY2FsbGJhY2siLCJfR2xvYmFsU2NvcGUiLCJfaW5zdGFuY2UiLCJkaXNwb3NhYmxlIiwiX2Rpc3Bvc2VkIiwiX2Rpc3Bvc2FibGUiLCJjYWxsIiwiX2xpc3QiLCJmb3JFYWNoIiwidG9TdHJpbmciLCJtYXhEaWdpdHNJbkZsb2F0QWZ0ZXJEb3QiLCJOdW1iZXJzIiwiY291bnROdW1iZXJMZW5ndGgiLCJpbmNyZW1lbnRGb3JOZWdhdGl2ZVZhbHVlIiwibnVtYmVyIiwiY291bnREaWdpdHNCZWZvcmVEZWNpbWFsIiwiTWF0aCIsImZsb29yIiwiY291bnREaWdpdHNBZnRlckRlY2ltYWwiLCJmaXhSb3VuZGluZyIsInByZWNpc2lvbiIsInBvd2VyIiwicG93Iiwicm91bmQiLCJkaWdpdHNCZWZvcmVEZWNpbWFsIiwib3JpZ2luYWxWYWx1ZSIsIm1vZGlmaWVkVmFsdWUiLCJjb3VudCIsIlN0cmluZ3MiLCJyYW5kb20iLCJyYW5kb20xM0NoYXJhY3RlcnMiLCJsb29wcyIsImNlaWwiLCJBcnJheSIsImZpbGwiLCJyZWR1Y2UiLCJzdHJpbmciLCJmdW5jIiwiYXNzZXJ0VW5yZWFjaGFibGUiLCJ4IiwiQXBwZW5kZXJzIiwiX2FwcGVuZGVycyIsImFwcGVuZGVyIiwicmVtb3ZlIiwiaXRlbXMiLCJpdGVtIiwiTG9nZ2luZ0xldmVsIiwiQ29uc29sZUFwcGVuZGVyIiwidGhyZXNob2xkIiwiX3RocmVzaG9sZCIsImxvZyIsImxvZ0xldmVsIiwibWVzc2FnZSIsImNhdGVnb3J5IiwiZGF0ZSIsImZ1bGxNZXNzYWdlIiwidG9JU09TdHJpbmciLCJXYXJuIiwiY29uc29sZSIsIkxvZ2dlciIsImFwcGVuZGVycyIsIl9jYXRlZ29yeSIsInRyYWNlIiwiVHJhY2UiLCJfbGVuIiwiYXJndW1lbnRzIiwiYXJncyIsIl9rZXkiLCJkZWJ1ZyIsIkRlYnVnIiwiX2xlbjIiLCJfa2V5MiIsIkluZm8iLCJfbGVuMyIsIl9rZXkzIiwid2FybiIsIl9sZW40IiwiX2tleTQiLCJfbGVuNSIsIl9rZXk1IiwiZmF0YWwiLCJGYXRhbCIsIl9sZW42IiwiX2tleTYiLCJsZXZlbCIsInJlcGxhY2VQbGFjZWhvbGRlcnMiLCJfdGhpczIiLCJyZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nIiwiaW5kZXgiLCJyZXBsYWNlQXJndW1lbnQiLCJzcGxpY2UiLCJzdHJpbmdpZnkiLCJhY2N1bXVsYXRvciIsImN1cnJlbnRWYWx1ZSIsImFycmF5IiwiZXJyb3JTdGFja0Fsc29IYXNFcnJvck1lc3NhZ2UiLCJzdGFjayIsImFyZyIsImNhY2hlIiwiXyIsIk9iamVjdCIsImFyZ3VtZW50IiwiZGF0YSIsInRvU3RyaW5nU3RyIiwiTG9nZ2luZ1RocmVzaG9sZCIsIlRlbGVtZXRyeUFwcGVuZGVyIiwiVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiIsIkNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIiLCJfdGVsZW1ldHJ5Q29uZmlndXJhdGlvbiIsImxvZ2dlciIsIl9sb2dnZXJzIiwiYXBwbHlMb2dnZXJDb25maWdGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImFwcGx5TG9nZ2luZ0xldmVsIiwiYXBwbHlBcHBlbmRlckxvZ2dpbmdMZXZlbCIsImFwcGx5Q29uc29sZUxvZ2dlciIsImFwcGx5VGVsZW1ldHJ5TG9nZ2VyIiwicGFyYW1ldGVyVmFsdWUiLCJzZXRUaHJlc2hvbGQiLCJhcHBseUFwcGVuZGVyIiwibG9nZ2luZ0xldmVsIiwiT2ZmIiwiQWxsIiwiY29udmVydExvZ2dpbmdMZXZlbFR5cGVUb0xvZ2dpbmdMZXZlbCIsImxvZ2dpbmdMZXZlbFR5cGUiLCJUZWxlbWV0cnlMZXZlbCIsIm1ldHJpY3MiLCJfbWV0cmljcyIsImdldFRlbGVtZXRyeUxldmVsIiwiVGltZVRvRmlyc3RGcmFtZSIsIkVzc2VudGlhbCIsIkNoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUiLCJTdGFsbGVkIiwiQnVmZmVyaW5nIiwiUm91bmRUcmlwVGltZSIsIkRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5IiwiTmV0d29ya1R5cGUiLCJSZXNvbHV0aW9uQ2hhbmdlZCIsIkFwcGxpY2F0aW9uRm9yZWdyb3VuZCIsIkFwcGxpY2F0aW9uQmFja2dyb3VuZCIsIk1ldHJpY3NDb25maWd1cmF0aW9uIiwiX3VybCIsInNldCIsInVybCIsIm1ldHJpY3NVcmwiLCJwYXRobmFtZSIsIl9lbnZpcm9ubWVudCIsImVudmlyb25tZW50IiwiX3RlbmFuY3kiLCJ0ZW5hbmN5IiwiX3Nlc3Npb25JZCIsInNlc3Npb25JZCIsIk1ldHJpY3NTZXJ2aWNlIiwiVGVsZW1ldHJ5VXJsIiwiRW52aXJvbm1lbnQiLCJNZXRyaWNzRmFjdG9yeSIsImdldE1ldHJpY3NTZXJ2aWNlIiwiX3R5cGVvZiIsIm1ldHJpY3NTZXJ2aWNlcyIsIl9tZXRyaWNzU2VydmljZXMiLCJtZXRyaWNzQ29uZmlndXJhdGlvbiIsImNsaWVudFNlc3Npb25JZCIsImdldFRlbGVtZXRyeVVybCIsImdldEVudmlyb25tZW50RnJvbVVybCIsImNvbnZlcnRUZWxlbWV0cnlMZXZlbFR5cGVUb1RlbGVtZXRyeUxldmVsIiwidGVsZW1ldHJ5TGV2ZWwiLCJzZXRUZWxlbWV0cnlMZXZlbCIsInZhbHVlcyIsInQiLCJyIiwiU3ltYm9sIiwibiIsIml0ZXJhdG9yIiwibyIsInRvU3RyaW5nVGFnIiwiaSIsImMiLCJHZW5lcmF0b3IiLCJ1IiwiY3JlYXRlIiwiX3JlZ2VuZXJhdG9yRGVmaW5lMiIsImYiLCJwIiwieSIsIkciLCJ2IiwiYSIsImQiLCJsIiwiVHlwZUVycm9yIiwiZG9uZSIsIkdlbmVyYXRvckZ1bmN0aW9uIiwiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUiLCJnZXRQcm90b3R5cGVPZiIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiZGlzcGxheU5hbWUiLCJfcmVnZW5lcmF0b3IiLCJ3IiwibSIsImRlZmluZVByb3BlcnR5IiwiX3JlZ2VuZXJhdG9yRGVmaW5lIiwiX2ludm9rZSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIkV4cG9uZW50aWFsQmFja29mZiIsIlZlcnNpb25NYW5hZ2VyIiwicmVxdWVzdFNpemVMaW1pdCIsIm1heEJ1ZmZlcmVkUmVjb3JkcyIsIl9tZXRyaWNzQ29uZmlndXJhdGlvbiIsIl9leHBvbmVudGlhbEJhY2tvZmYiLCJnZXRMb2NhdGlvbkhvc3RuYW1lRnJvbUdsb2JhbFNjb3BlIiwidGhlbiIsImxvY2F0aW9uSG9zdG5hbWUiLCJfZG9tYWluIiwibWV0cmljIiwicHJldmlvdXNWYWx1ZSIsInJlc291cmNlIiwia2luZCIsIm1ldHJpY1JlY29yZCIsInRpbWVzdGFtcCIsImZ1bGxRdWFsaWZpZWROYW1lIiwic2RrVmVyc2lvbiIsImlnbm9yZWQiLCJzZW5kTWV0cmljc0lmQWJsZSIsIlByb21pc2UiLCJyZXNvbHZlTG9jYXRpb25Ib3N0bmFtZSIsImdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfY2FsbGVlIiwibWV0cmljc01lc3NhZ2VzIiwiZm9ybURhdGEiLCJfY29udGV4dCIsImFwcGVuZCIsInJlY29yZHMiLCJtZXRob2QiLCJib2R5IiwiX3giLCJhcHBseSIsIl9zZW5kTWV0cmljc0lmQWJsZSIsIl9jYWxsZWUyIiwiX2NvbnRleHQyIiwiX2lzU2VuZGluZyIsInNsaWNlIiwicmVzcG9uc2UiLCJpc1Jlc3BvbnNlU3RhdHVzQ29kZVJldHJ5YWJsZSIsIl9mYWlsdXJlQ291bnQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJnZXRFeHBvbmVudGlhbEJhY2tvZmZJbnRlcnZhbEJ5RmFpbHVyZUNvdW50Iiwic3RhdHVzIiwidGVsZW1ldHJ5TGV2ZWxUeXBlIiwiVmFuaWxsYVBlZXJDb25uZWN0aW9uRmFjdG9yeSIsIkVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyIsImRlZmF1bHRUcmFja0tpbmRzIiwiUGVlckNvbm5lY3Rpb25TZXJ2aWNlIiwiX3BlZXJDb25uZWN0aW9uRmFjdG9yeSIsImluaXRpYXRlSW5pdGlhbFByZWNhY2hpbmciLCJpc1ByZWNhY2hpbmdFbmFibGVkIiwicHJlY2FjaGVDcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyIiwiX3ByZWNhY2hlQ3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlciIsIl9jYWNoZWQiLCJkaXJlY3Rpb24iLCJwZWVyQ29ubmVjdGlvbiIsImNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIiLCJfY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlciIsIl9jYWxsZWUzIiwidHJhY2tLaW5kcyIsImVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyIsImNvbmZpZ3VyYXRpb24iLCJfYXJnczMiLCJfY29udGV4dDMiLCJEaXNhYmxlZCIsImlzVHJhY2tzS2luZHNFcXVpdmFsZW50VG9EZWZhdWx0IiwiRW5hYmxlZCIsImNyZWF0ZVBlZXJDb25uZWN0aW9uIiwic3VwcG9ydHNBZGRUcmFuc2NlaXZlciIsImF1ZGlvVHJhbnNjZWl2ZXJzIiwidmlkZW9UcmFuc2NlaXZlcnMiLCJvcHRpb25zIiwiX3QiLCJfdDIiLCJfdDMiLCJfdDQiLCJfdDUiLCJfdDYiLCJhZGRUcmFuc2NlaXZlciIsImNyZWF0ZU9mZmVyIiwibG9jYWxPZmZlciIsIm9mZmVyVG9SZWNlaXZlQXVkaW8iLCJvZmZlclRvUmVjZWl2ZVZpZGVvIiwidHJhY2tzS2luZHMiLCJjb3VudFRyYWNrS2luZHMiLCJ0cmFja0tpbmRDb3VudCIsImF1ZGlvIiwidmlkZW8iLCJjb3VudGVkVHJhY2tLaW5kcyIsImNvdW50ZWREZWZhdWx0VHJhY2tLaW5kcyIsIlJ0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyIiwidHJ1bmNhdGVJY2VTZXJ2ZXJzIiwiaWNlU2VydmVycyIsInVybHMiLCJ1c2VybmFtZSIsImNyZWRlbnRpYWwiLCJTZHBQYXJzZXIiLCJ1cGRhdGVTdGF0aXN0aWNUaW1lb3V0IiwiZ2V0U3RhdHNUaW1lb3V0RHVyYXRpb24iLCJSdGNDb25uZWN0aW9uTW9uaXRvciIsIm1lZGlhU3RyZWFtIiwiZXN0aW1hdGVkUm91bmRUcmlwVGltZSIsImlzRm9yZWdyb3VuZCIsIl9wZWVyQ29ubmVjdGlvbiIsIl9lc3RpbWF0ZWRSb3VuZFRyaXBUaW1lIiwiX3RyYWNrc1RvTW9uaXRvciIsImdldFRyYWNrcyIsIm1hcCIsInRyYWNrIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uMiIsImdldEN1cnJlbnRPZmZlckRpc2FibGVkIiwiY3VycmVudFJlbW90ZURlc2NyaXB0aW9uIiwic2RwIiwicGFyc2VkU0RQIiwiX2VzdGltYXRlZEF1ZGlvQ29kZWMiLCJhdWRpb0NvZGVjIiwiX2VzdGltYXRlZFZpZGVvQ29kZWMiLCJ2aWRlb0NvZGVjIiwiaXNJbml0aWFsU3Vic2NyaXB0aW9uQ2FsbGJhY2siLCJmb3JlZ3JvdW5kIiwiX2lzTW9uaXRvclJ1bm5pbmciLCJfbW9uaXRvckdlbmVyYXRpb24iLCJfdXBkYXRlVGltZW91dCIsInVwZGF0ZVN0YXRpc3RpYyIsIl9ydGNTdGF0aXN0aWMiLCJfdXBkYXRlU3RhdGlzdGljIiwiZ2V0S2luZEZvclNhZmFyaTExIiwiZ2VuZXJhdGlvbiIsInRpbWVvdXRIYW5kbGUiLCJfdGhpcyRfcGVlckNvbm5lY3Rpb24zIiwic3RhdHNQcm9taXNlIiwidGltZW91dFByb21pc2UiLCJzdGF0cyIsInJ0Y1N0YXRpc3RpY3MiLCJyb3VuZFRyaXBUaW1lIiwibGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wIiwiZ2V0U3RhdHNQcm9taXNlQmFzZWREaXNhYmxlZCIsInVwZGF0ZVN0YXRpc3RpY0xlZ2FjeSIsImlkIiwiZ2V0U3RhdHMiLCJyZXNvbHZlIiwicmFjZSIsInJlcG9ydCIsImN1cnJlbnRSb3VuZFRyaXBUaW1lIiwibWVkaWFUeXBlIiwiY29kZWMiLCJjb2RlY0lkIiwibWltZVR5cGUiLCJfdGhpczIkX3J0Y1N0YXRpc3RpYyQiLCJfdGhpczIkX3J0Y1N0YXRpc3RpYyQyIiwiX3RoaXMyJF9ydGNTdGF0aXN0aWMkMyIsIl90aGlzMiRfcnRjU3RhdGlzdGljJDQiLCJfdGhpczIkX3J0Y1N0YXRpc3RpYyQ1IiwiX3RoaXMyJF9ydGNTdGF0aXN0aWMkNiIsIl90aGlzMiRfcnRjU3RhdGlzdGljJDciLCJieXRlcyIsImJ5dGVzUmVjZWl2ZWQiLCJwcmV2aW91c0J5dGVzUmVjZWl2ZWQiLCJieXRlc0RlbHRhIiwidGltZURlbHRhIiwiYml0cmF0ZSIsInNzcmMiLCJwYWNrZXRzTG9zdCIsInBhY2tldHNSZWNlaXZlZCIsImdldENvZGVjQnlUeXBlIiwiZnJhbWVzRGVjb2RlZCIsImZwcyIsIl91cGRhdGVTdGF0aXN0aWNMZWdhY3kiLCJfdGhpczMiLCJfdGhpcyRfcGVlckNvbm5lY3Rpb240IiwiZ2V0U3RhdHNMZWdhY3kiLCJyZXN1bHQiLCJuYW1lcyIsInN0YXQiLCJfdGhpczMkX3J0Y1N0YXRpc3RpYyQiLCJfdGhpczMkX3J0Y1N0YXRpc3RpYyQyIiwiX3NkcCIsInNkcFNwbGl0QnlMaW5lcyIsInNkcFNwbGl0QnlUcmFja3MiLCJfYXVkaW9Db2RlYyIsImFwcGx5Q29kZWMiLCJfdmlkZW9Db2RlYyIsIl9pc0F1ZGlvVHJhY2tFbmFibGVkIiwiaXNUcmFja0J5VHlwZUVuYWJsZWQiLCJfaXNWaWRlb1RyYWNrRW5hYmxlZCIsInNkcFNlY3Rpb25Gb3JUeXBlIiwiZmluZCIsInNkcFRyYWNrIiwiX3NkcFNwbGl0QnlMaW5lcyRmaW5kIiwicnRtYXAiLCJzZHBMaW5lIiwidXNlZENvZGVjTGluZSIsInVzZWRDb2RlYyIsImNvZGVjTmFtZSIsIlZhbmlsbGFQZWVyQ29ubmVjdGlvbiIsIndlYmtpdFJUQ1BlZXJDb25uZWN0aW9uRW5hYmxlZCIsIndlYmtpdFJUQ1BlZXJDb25uZWN0aW9uIiwiY3VycmVudExvY2FsRGVzY3JpcHRpb24iLCJjb25uZWN0aW9uU3RhdGUiLCJpY2VDb25uZWN0aW9uU3RhdGUiLCJfdGhpcyRfcGVlckNvbm5lY3Rpb241IiwiZ2V0Q29uZmlndXJhdGlvbiIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjYiLCJzZXRDb25maWd1cmF0aW9uIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uNyIsImdldFRyYW5zY2VpdmVyc0Rpc2FibGVkIiwiZ2V0VHJhbnNjZWl2ZXJzIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uOCIsIl9jcmVhdGVPZmZlciIsInByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkIiwicmVqZWN0IiwiX2NyZWF0ZUFuc3dlciIsImNyZWF0ZUFuc3dlciIsIl94MiIsIl9zZXRMb2NhbERlc2NyaXB0aW9uIiwiZGVzY3JpcHRpb24iLCJzZXRMb2NhbERlc2NyaXB0aW9uIiwiX3gzIiwiX3NldFJlbW90ZURlc2NyaXB0aW9uIiwiX2NhbGxlZTQiLCJfZGVzY3JpcHRpb24kc2RwIiwiaGFzQ3J5cHRvIiwiX2NvbnRleHQ0Iiwic2V0UmVtb3RlRGVzY3JpcHRpb24iLCJfeDQiLCJnZXRTZW5kZXJzIiwiZ2V0UmVjZWl2ZXJzIiwic2VsZWN0b3IiLCJhZGRTdHJlYW0iLCJfdGhpczQiLCJhZGRUcmFjayIsIm9udHJhY2siLCJoYW5kbGVyIiwib25pY2VjYW5kaWRhdGUiLCJvbmNvbm5lY3Rpb25zdGF0ZWNoYW5nZSIsIm9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlIiwiY2xvc2UiLCJfdGhpcyRfcGVlckNvbm5lY3Rpb245IiwiX2NyZWF0ZVBlZXJDb25uZWN0aW9uIiwicmVzb2x2ZVBlZXJDb25uZWN0aW9uUHJvbWlzZSIsInN1YmplY3QiLCJfc3ViamVjdCIsIkRpc3Bvc2FibGVMaXN0ZW5lciIsIl9EaXNwb3NhYmxlIiwibGlzdGVuZXJzIiwiX2NhbGxTdXBlciIsImlkeCIsIl9pbmhlcml0cyIsIl9saXN0ZW5lcnMiLCJfdmFsdWUiLCJjaGFuZ2VkIiwiY29tcGFyYWJsZSIsImVxdWFscyIsIl9pIiwiX2FyciIsImJhc2VVUkwiLCJvcmlnaW4iLCJEaXNjb3ZlcnlVcmkiLCJfR2xvYmFsU2NvcGUkZ2V0SW5zdGEiLCJfY2xpZW50U2Vzc2lvbklkIiwiX2xvYWRlZFRpbWVzdGFtcCIsIl9yZWFkT25seUluaXRpYWxpemVkIiwiX3JlYWRPbmx5RGlzY292ZXJ5VXJpIiwiX3JlYWRPbmx5UGVlckNvbm5lY3Rpb25GYWN0b3J5IiwiX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZSIsIl9hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24iLCJfYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSIsIl9hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSIsIl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0IiwiX3NraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcyIsIl93ZWJQbGF5ZXJMb2FkZXIiLCJfc2hha2FQbGF5ZXJMb2FkZXIiLCJfaGxzSnNMb2FkZXIiLCJfbWV0cmljc1NlcnZpY2UiLCJfYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IiLCJfdGVsZW1ldHJ5VXJsIiwiX21heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMiLCJyZXRyaWVzQW1vdW50IiwiX3RlbGVtZXRyeUxldmVsIiwiYXBwbHlUZWxlbWV0cnlDb25maWd1cmF0aW9uIiwidGVsZW1ldHJ5Q29uZmlndXJhdGlvbiIsImlnbm9yZWRFbnZpcm9ubWVudCIsImlnbm9yZWREaXNjb3ZlcnlVcmkiLCJ0ZWxlbWV0cnlVcmwiLCJ0ZWxlbWV0cnlBcHBlbmRlciIsImlnbm9yZWRUZW5hbmN5IiwiYXBwbHlNZXRyaWNzQ29uZmlndXJhdGlvbiIsImlnbm9yZWRUZWxlbWV0cnlMZXZlbCIsImFwcGx5QXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24iLCJhcHBseUF1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbkZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiYXBwbHlGb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0RnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24iLCJhcHBseVNraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlc0Zyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiYXBwbHlEaXNjb3ZlcnlVcmlEZWZhdWx0RnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24iLCJkaXNjb3ZlcnlVcmkiLCJjaGFubmVsVG9rZW4iLCJ1cmlWYWx1ZSIsImJhc2VVUklWYWx1ZSIsIm9uTG9hZCIsIl9pbml0aWFsaXplZCIsImFkZFdpbmRvd0V2ZW50TGlzdGVuZXIiLCJpbml0Iiwib3B0aW9uc1dpdGhPcHRpb25hbGdsb2JhbFNjb3BlIiwicGVlckNvbm5lY3Rpb25GYWN0b3J5IiwiY29uc29sZUxvZ2dpbmdMZXZlbCIsImNvbnNvbGVBcHBlbmRlciIsImF1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0iLCJhdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSIsIndlYlBsYXllckxvYWRlciIsInNoYWthUGxheWVyTG9hZGVyIiwiaGxzSnNMb2FkZXIiLCJfdGhpcyRfYXBwbGljYXRpb25BY3QiLCJfU0RLIiwic2VnbWVudHMiLCJwcm90b2NvbCIsInVuc2hpZnQiLCJlbmRzV2l0aCIsImpvaW4iLCJCaXRyYXRlU3RhdGUiLCJCaXRyYXRlTW9kZSIsIkRpbWVuc2lvbiIsIkNoYW5uZWxTdGF0ZSIsIlZpZGVvVGVsZW1ldHJ5IiwiU2Vzc2lvblRlbGVtZXRyeSIsIlRva2VuQ29udGV4dCIsIkNoYW5uZWxDb250ZXh0IiwiRW5jb2RlZFN0cmVhbVNpbmsiLCJTdHJlYW1UcmFja1RyYW5zZm9ybSIsIlN0cmVhbVRyYW5zZm9ybUNvbnRleHQiLCJQZWVyQ29ubmVjdGlvbkNvbnRleHQiLCJTdGF0ZUNvbnRleHQiLCJGcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCIsIlN0cmVhbVN1YnNjcmliZXJGYWN0b3J5IiwiRGlzY292ZXJ5IiwiZGVmYXVsdFN0cmVhbVRlcm1pbmF0aW9uUmVhc29uIiwiZm9yZWdyb3VuZFJlc3RhcnRSZWFzb25CYWNrZ3JvdW5kVGltZW91dCIsImZvcmVncm91bmRSZXN0YXJ0UmVhc29uVW5oZWFsdGh5IiwiZm9yZWdyb3VuZFJlc3RhcnRSZWFzb25VbmhlYWx0aHlIZWFsdGhDaGVjayIsImZhaWx1cmVDb3VudENsZWFuVXBJbnRlcnZhbEluTWlsbGlzZWNvbmRzIiwic3RhbmRieVBvbGxpbmdJbnRlcnZhbEluTWlsbGlzZWNvbmRzIiwiYmFja2dyb3VuZFJlY292ZXJ5RmFpbHNhZmVJbnRlcnZhbEluTWlsbGlzZWNvbmRzIiwic3RyZWFtRGVsZXRpb25UaHJlc2hvbGRJbk1pbGxpc2Vjb25kcyIsIkNoYW5uZWwiLCJ2aWRlb0VsZW1lbnQiLCJjaGFubmVsQ29udGV4dE9wdGlvbnMiLCJ0YXJnZXRMYWciLCJvblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrIiwib25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2siLCJwZWVyQ29ubmVjdGlvbkNvbnRleHRPcHRpb25zIiwiZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCIsInN0cmVhbVRyYW5zZm9ybUNvbnRleHRPcHRpb25zIiwiaGFzSW5zZXJ0YWJsZVN0cmVhbXMiLCJoYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMiLCJ2aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrIiwiYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayIsImVuY29kZWRWaWRlb1N0cmVhbVNpbmsiLCJlbmNvZGVkQXVkaW9TdHJlYW1TaW5rIiwiX3Rva2VuQ29udGV4dCIsIl9jaGFubmVsQ29udGV4dCIsIl9wZWVyQ29ubmVjdGlvbkNvbnRleHQiLCJfc3RyZWFtVHJhbnNmb3JtQ29udGV4dCIsIl9zdGF0ZUNvbnRleHQiLCJfY2hhbm5lbFN0YXJ0VGltZSIsIl9yZWFkT25seVBlZXJDb25uZWN0aW9uIiwiX3JlYWRPbmx5U3RhdGUiLCJzdGF0ZSIsIl9yZWFkT25seUV4aXN0cyIsImV4aXN0cyIsIl9yZWFkT25seUF1dG9NdXRlZCIsImF1dG9NdXRlZCIsIl9yZWFkT25seUF1dG9QYXVzZWQiLCJhdXRvUGF1c2VkIiwiX3JlYWRPbmx5VG9rZW5FeHBpcmluZyIsInRva2VuRXhwaXJpbmciLCJfcmVhZE9ubHlBdXRob3JpemVkIiwiYXV0aG9yaXplZCIsIl9yZWFkT25seU9ubGluZSIsIm9ubGluZSIsIl9yZWFkT25seUxvYWRpbmciLCJsb2FkaW5nIiwiX3JlYWRPbmx5UGxheWluZyIsInBsYXlpbmciLCJfcmVhZE9ubHlTdGFuZGJ5Iiwic3RhbmRieSIsIl9yZWFkT25seVN0b3BwZWQiLCJzdG9wcGVkIiwiX3JlYWRPbmx5VGFyZ2V0TGFnIiwiX3JlYWRPbmx5TGFnIiwibGFnIiwiX3JlYWRPbmx5Qml0cmF0ZUxpbWl0IiwiYml0cmF0ZUxpbWl0IiwiX3JlYWRPbmx5UmVzb2x1dGlvbiIsInJlc29sdXRpb24iLCJfcmVhZE9ubHlGYWlsdXJlQ291bnQiLCJmYWlsdXJlQ291bnQiLCJfcmVhZE9ubHlFbmRQb2ludCIsImVuZFBvaW50IiwiX3JlYWRPbmx5U3RyZWFtIiwic3RyZWFtIiwiX3JlYWRPbmx5UnRjU3RhdGlzdGljcyIsIl9yZWFkT25seU1lZGlhU3RyZWFtIiwiX3Nlc3Npb25UZWxlbWV0cnkiLCJjaGFubmVsRGlzcG9zYWJsZXMiLCJfdmlkZW9NZXRhRGF0YUNoYW5nZWRIYW5kbGVyIiwiaGFuZGxlVmlkZW9NZXRhRGF0YUNoYW5nZWQiLCJfZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQiLCJjb25maWd1cmVGcmFtZVRpbWluZ0luZm9ybWF0aW9uIiwiX3JlYWRPbmx5SXNGcmFtZVRpbWluZ0luZm9ybWF0aW9uRW5hYmxlZCIsImlzRW5hYmxlZCIsIl9yZWFkT25seURlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIiwiZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24iLCJfcmVhZE9ubHlSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24iLCJyZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24iLCJyZW5kZXJlckRpc3Bvc2FibGVzIiwidmlkZW9UZWxlbWV0cnkiLCJkYXRhc2V0Iiwic2V0dXBMaXN0ZW5lckZvclRpbWVUb0ZpcnN0VGltZSIsInNldHVwTGlzdGVuZXJGb3JSZWJ1ZmZlcmluZyIsIlN0b3BwZWQiLCJyZXN0YXJ0QWZ0ZXJTdG9wIiwiY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0IiwiUGxheWluZyIsIm9uVmlkZW9SZXNvbHV0aW9uQ2hhbmdlcyIsImVsYXBzZWRJbk1pbGxpc2Vjb25kcyIsImNoYW5uZWxJbml0aWFsaXphdGlvbiIsImdldFRpbWUiLCJsaW1pdEJpdHJhdGUiLCJLZWVwIiwiTm9ybWFsIiwiZGVzdHJveVN0cmVhbU9uVW5tb3VudCIsInJlbW92ZVdpbmRvd0V2ZW50TGlzdGVuZXIiLCJzdGFydCIsImF1dG9tYXRpY1JldHJ5T25GYWlsdXJlIiwidHJ5UmVzdGFydCIsInJlYXNvbiIsImlzU3RhcnRpbmciLCJpc1Rlcm1pbmFsU3RhdGUiLCJhcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciIsImxhc3RCYWNrZ3JvdW5kRHVyYXRpb24iLCJzaG91bGRGb3JjZVJlc3RhcnQiLCJpc1N0cmVhbURlbGV0ZWRCeVBsYXRmb3JtIiwiUmVjb25uZWN0aW5nIiwiaXNSZXRyeWFibGVTdGF0ZSIsIl9zdHJlYW1TdWJzY3JpYmVyIiwiaXNTdWJzY3JpYmVySGVhbHRoeSIsImlzSGVhbHRoeSIsInBhdXNlIiwic3JjT2JqZWN0IiwiSW5pdGlhbGl6aW5nIiwid2lkdGgiLCJ2aWRlb1dpZHRoIiwiaGVpZ2h0IiwidmlkZW9IZWlnaHQiLCJlbXB0eSIsImRpc3Bvc2FibGVzIiwic2V0Qml0cmF0ZUxpbWl0IiwiY2xlYXJCaXRyYXRlTGltaXQiLCJiaXRyYXRlSW5CaXRzUGVyU2Vjb25kIiwiUmVzZXQiLCJ1cGRhdGVUYXJnZXRMYWciLCJfc3RvcCIsInByb2Nlc3NTdG9wIiwic3RvcCIsImNsZWFuVXBSZXNvdXJjZXMiLCJfcmVzdW1lIiwicGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQiLCJyZXN1bWUiLCJtdXRlIiwibXV0ZWQiLCJ1bm11dGUiLCJfZGlzcG9zZSIsImlzRGlzcG9zZWQiLCJnZXRVcmkiLCJfc3RhcnQiLCJwcm9jZXNzU3RhcnQiLCJVbmF1dGhvcml6ZWQiLCJHZW9SZXN0cmljdGVkIiwiR2VvQmxvY2tlZCIsIlVuc3VwcG9ydGVkRmVhdHVyZSIsIkNvbmZpZ3VyYXRpb25FcnJvciIsIk9mZmxpbmUiLCJTdGFydGluZyIsIlBhdXNlZCIsIlJlY292ZXJpbmciLCJTdGFuZEJ5IiwiVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yIiwiQ29ubmVjdGlvbkVycm9yIiwiQ2xpZW50U3RhcnRFcnJvciIsImlzU3RyZWFtSGVhbHRoeSIsIl9wcm9jZXNzU3RhcnQiLCJfY2FsbGVlNSIsIl90aGlzNSIsImlzUmVjb3ZlcnkiLCJsaXN0ZW5PblN0cmVhbVNldHVwIiwiX1N0cmVhbVRyYWNrVHJhbnNmb3JtIiwidmFsaWQiLCJ2YWxpZGF0aW9uUmVzdWx0IiwiX1N0cmVhbVRyYWNrVHJhbnNmb3JtMiIsIl92YWxpZCIsIl92YWxpZGF0aW9uUmVzdWx0IiwiX0VuY29kZWRTdHJlYW1TaW5rJHZhIiwiX3ZhbGlkMiIsIl92YWxpZGF0aW9uUmVzdWx0MiIsIl9FbmNvZGVkU3RyZWFtU2luayR2YTIiLCJfdmFsaWQzIiwiX3ZhbGlkYXRpb25SZXN1bHQzIiwiaGFzVHJhbnNmb3JtU3RyZWFtQ2FsbGJhY2siLCJoYXNFbmNvZGVkU3RyZWFtU2luayIsImhhbmRsZVN0cmVhbUZhaWx1cmVDYWxsYmFjayIsIl9jb250ZXh0NSIsInZhbGlkYXRlTWVkaWFTdHJlYW1UcmFja1RyYW5zZm9ybSIsInZhbGlkYXRlRW5jb2RlZFN0cmVhbVNpbmsiLCJpc0luc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkIiwiY2xlYXJDYWNoZWRDbG9zZXN0RW5kcG9pbnQiLCJ0aW1lb3V0SWQiLCJoYW5kbGVTdHJlYW1GYWlsdXJlIiwiZ2V0UmV0cnlJbnRlcnZhbCIsIl9yZXN0YXJ0QWZ0ZXJTdG9wIiwiX2NhbGxlZTYiLCJfY29udGV4dDYiLCJfcGxheSIsIl9jYWxsZWU3IiwiX2NvbnRleHQ3IiwicGxheSIsIl9oYW5kbGVTdHJlYW1GYWlsdXJlIiwiX2NhbGxlZTgiLCJfY29udGV4dDgiLCJfdGhpczYiLCJkaXNwb3NlUGVlckNvbm5lY3Rpb24iLCJkaXNwb3NlTWVkaWFTdHJlYW0iLCJkZXN0cm95U3RyZWFtIiwicGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyIsIl90aGlzNyIsImZyYW1lVGltaW5nSW5mb3JtYXRpb25DYXBhYmlsaXR5IiwiY2FwYWJpbGl0eSIsInNob3VsZEV4dHJhY3RUaW1lY29kZSIsInNob3VsZEV4dHJhY3RUaW1lc3RhbXBzIiwiaXNDaGFubmVsRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1cHBvcnRlZCIsIm9wdGlvbiIsInRyaW0iLCJfcGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQiLCJfY2FsbGVlOSIsIl90aGlzOCIsInBsYXlQcm9taXNlIiwiX2NvbnRleHQ5IiwiaGFzQXVkaW9UcmFjayIsImZpbHRlciIsImF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlT2ZmIiwiQ2hhbm5lbHMiLCJjcmVhdGVDaGFubmVsIiwiaW5pdGlhbGl6ZWQiLCJjaGFubmVsT3B0aW9ucyIsIm9wdGlvbnNXaXRoUmVhbFRpbWVTdWJzY3JpYmVDYWxsYmFja3MiLCJkZWZhdWx0VGFyZ2V0TGFnIiwiX29wdGlvbnMkdGFyZ2V0TGFnIiwiX29wdGlvbnMkb25SZWFsVGltZVN1IiwiX29wdGlvbnMkb25SZWFsVGltZVN1MiIsInJ0Y0F1ZGlvU3RhdGlzdGljIiwicnRjVmlkZW9TdGF0aXN0aWMiLCJhcHBseVN0YXR1cyIsImFwcGx5U2Vzc2lvbkFuZFN0cmVhbVByb3BlcnRpZXNUb1ZpZGVvRWxlbWVudCIsIm1hcFN1YnNjcmliZVN0YXR1c1RvQ2hhbm5lbFN0YXR1cyIsIm1hcFN1YnNjcmliZVN0YXR1c1RvRXhpc3RzIiwiX3RoaXMkbWVkaWFTdHJlYW0kdmFsIiwiYXVkaW9UcmFjayIsIm1lZGlhU3RyZWFtVHJhY2siLCJyZWNlaXZlciIsIm1pZCIsInRyYW5zZm9ybVBpcGVsaW5lV29ya2VyIiwidHJhbnNmb3JtTWVzc2FnZVJvdXRlciIsInRyYW5zZm9ybUZ1bmN0aW9uTmFtZXMiLCJ2aWRlb1RyYWNrIiwiQXVkaW9Db2RlYyIsIkF1ZGlvQ29kZWNNYXBwaW5nIiwiY29udmVydEF1ZGlvQ29kZWNUb0F1ZGlvQ29kZWNUeXBlIiwiT1BVUyIsIkFBQyIsImNvbnZlcnRBdWRpb0NvZGVjVHlwZVRvQXVkaW9Db2RlYyIsImF1ZGlvQ29kZWNUeXBlIiwiYXVkaW9Db2RlY1N0cmluZyIsInRvVXBwZXJDYXNlIiwiVmlkZW9Db2RlYyIsIlZpZGVvQ29kZWNNYXBwaW5nIiwiY29udmVydFZpZGVvQ29kZWNUb1ZpZGVvQ29kZWNUeXBlIiwiSDI2NCIsIlZQOCIsIlZQOSIsImNvbnZlcnRWaWRlb0NvZGVjVHlwZVRvVmlkZW9Db2RlYyIsInZpZGVvQ29kZWNUeXBlIiwidmlkZW9Db2RlY1N0cmluZyIsIlVpbnQ4QXJyYXkiLCJkZWZhdWx0RGlzY292ZXJ5VXJpIiwiQml0cmF0ZU1vZGVNYXBwaW5nIiwiY29udmVydEJpdHJhdGVNb2RlVG9CaXRyYXRlTW9kZVR5cGUiLCJiaXRyYXRlTW9kZSIsIkZvcmNlIiwiQml0cmF0ZVN0YXRlTWFwcGluZyIsImNvbnZlcnRCaXRyYXRlU3RhdGVUb0JpdHJhdGVTdGF0ZVR5cGUiLCJiaXRyYXRlU3RhdGUiLCJEaXNjb3ZlcnlTZXJ2aWNlIiwiZGlzY292ZXJ5Q2FjaGVJbnRlcnZhbCIsIl9wcmVjYWNoZUNsb3Nlc3RFbmRQb2ludERpc2NvdmVyeSIsInJlc29sdmVFbmRQb2ludFByb21pc2UiLCJkaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nIiwicHJlY2FjaGVDbG9zZXN0RW5kUG9pbnREaXNjb3ZlcnkiLCJfZGlzY292ZXJDbG9zZXN0RW5kUG9pbnRXaXRoQ2FjaGluZyIsImRpc2NvdmVyeVNlcnZpY2UiLCJjYWNoZWRWYWx1ZSIsIl9jYWNoZSIsImRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50IiwiRW5kUG9pbnQiLCJkZWZhdWx0VGltZW91dCIsIl91cmkiLCJfZGlzY292ZXJOZWFyYnlFbmRQb2ludHMiLCJ0aW1lb3V0IiwiYXNTdHJpbmciLCJlbmRQb2ludHMiLCJvayIsInRleHQiLCJkaXNjb3Zlck5lYXJieUVuZFBvaW50cyIsIl9kaXNjb3ZlckNsb3Nlc3RFbmRQb2ludCIsImZhaWxlZFJlcXVlc3RzIiwicHJvcGFnYXRlRmFpbHVyZUlmQWxsUmVxdWVzdHNGYWlsZWQiLCJfYXJnczIiLCJidWlsZERpc2NvdmVyeVVybCIsInBpbmciLCJ0aW1lIiwiX2Rpc2NvdmVyeVVyaSIsImRpc2NvdmVyeVBhcmFtZXRlcnMiLCJzZWFyY2hQYXJhbXMiLCJhcGlWZXJzaW9uIiwiX3RpbWVvdXQiLCJfcm91bmRUcmlwVGltZSIsIl9waW5nIiwiZmluaXNoZWQiLCJidWlsZFBpbmdVcmwiLCJfc3Vic2NyaWJlIiwibG9jYWxTZXNzaW9uRGVzY3JpcHRpb24iLCJfb3B0aW9ucyRvblN1YnNjcmliZVIiLCJfb3B0aW9ucyRvblN1YnNjcmliZVI0IiwiY2xpZW50VmVyc2lvbiIsInJlcXVlc3RCb2R5IiwiaHR0cFJlc3BvbnNlIiwianNvblJlc3BvbnNlQm9keSIsIl9vcHRpb25zJG9uU3Vic2NyaWJlUjIiLCJfcmVzcG9uc2UiLCJfb3B0aW9ucyRvblN1YnNjcmliZVIzIiwiX3Jlc3BvbnNlMiIsInN1YnNjcmliZVJlc3BvbnNlIiwiYnVpbGRVcmwiLCJiZWFyZXJUb2tlbiIsImh0dHBSb3VuZFRyaXBUaW1lIiwic2Vzc2lvbkRlc2NyaXB0aW9uIiwiY3JlYXRlQW5zd2VyRGVzY3JpcHRpb24iLCJjcmVhdGVPZmZlckRlc2NyaXB0aW9uIiwib25TdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2siLCJwYXJzZUpzb25Cb2R5IiwiaGFuZGxlU3RyZWFtUmVzcG9uc2VDb250ZXh0Iiwic3RyZWFtUmVzcG9uc2VDb250ZXh0IiwibWFwSHR0cFN0YXR1c1RvU3Vic2NyaWJlU3RhdHVzIiwib25TdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrIiwibm9ybWFsaXplU3Vic2NyaWJlUmVzcG9uc2UiLCJfcHVibGlzaCIsImJvZHlXaXRoT2ZmZXIiLCJib2R5V2l0aG91dE9mZmVyIiwicHVibGlzaFJlc3BvbnNlIiwibWFwSHR0cFN0YXR1c1RvUHVibGlzaFN0YXR1cyIsIm5vcm1hbGl6ZVB1Ymxpc2hSZXNwb25zZSIsInB1Ymxpc2giLCJfeDUiLCJfeDYiLCJfeDciLCJzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlIiwic2hhcmVkU2VjcmV0IiwibWFwSHR0cFN0YXR1c1RvU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMiLCJjb252ZXJ0SHR0cFJlc3BvbnNlVG9TZXRSZW1vdGVEZXNjcmlwdGlvbiIsIl94OCIsIl94OSIsIl9saW1pdEJpdHJhdGUiLCJtYXBIdHRwU3RhdHVzVG9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cyIsIl94MCIsIl94MSIsIl94MTAiLCJfeDExIiwiX3gxMiIsIl9hZGRJY2VDYW5kaWRhdGVzIiwiY2FuZGlkYXRlcyIsImRpc2NvdmVyeUNvbXBsZXRlZCIsImFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZSIsIl9hcmdzNiIsIm1hcEh0dHBTdGF0dXNUb0FkZEljZUNhbmRpZGF0ZXNTdGF0dXMiLCJjb252ZXJ0SHR0cFJlc3BvbnNlVG9BZGRJY2VDYW5kaWRhdGVzIiwiYWRkSWNlQ2FuZGlkYXRlcyIsIl94MTMiLCJfeDE0IiwiX3gxNSIsIl9kZXN0cm95U3RyZWFtIiwiZGVzdHJveVN0cmVhbVJlc3BvbnNlIiwibWFwSHR0cFN0YXR1c1RvU2V0RGVzdHJveVN0cmVhbVN0YXR1cyIsImNvbnZlcnRIdHRwUmVzcG9uc2VUb0Rlc3Ryb3lTdHJlYW0iLCJfeDE2IiwiX3gxNyIsIl9kZXN0cm95U3RyZWFtT25Vbm1vdW50Iiwic2VuZEJlYWNvbiIsIl94MTgiLCJfeDE5IiwicGF0aCIsInBhdGhBc0FycmF5IiwiX3BhcnNlSnNvbkJvZHkiLCJfdDciLCJqc29uIiwiX3gyMCIsImNvbnRleHQiLCJydGNDb25maWd1cmF0aW9uIiwiY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSIsImNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSIsImNvbnZlcnRJUnRjQ29uZmlndXJhdGlvblRvUlRDQ29uZmlndXJhdGlvbiIsImJ1bmRsZVBvbGljeSIsImljZUNhbmRpZGF0ZVBvb2xTaXplIiwiaWNlVHJhbnNwb3J0UG9saWN5IiwicnRjcE11eFBvbGljeSIsIl9jb252ZXJ0SHR0cFJlc3BvbnNlVG9TZXRSZW1vdGVEZXNjcmlwdGlvbiIsIl9jYWxsZWUwIiwiX2NvbnRleHQwIiwiX3gyMSIsIl9jb252ZXJ0SHR0cFJlc3BvbnNlVG9BZGRJY2VDYW5kaWRhdGVzIiwiX2NhbGxlZTEiLCJfY29udGV4dDEiLCJfeDIyIiwiX2NvbnZlcnRIdHRwUmVzcG9uc2VUb0Rlc3Ryb3lTdHJlYW0iLCJfY2FsbGVlMTAiLCJfY29udGV4dDEwIiwiX3gyMyIsIlRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZSIsIkZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyIiwiTWFwIiwiY2FuUHJvY2Vzc0ZyYW1lVGltaW5nSW5mb3JtYXRpb24iLCJzZXR1cFZpZGVvRWxlbWVudEhhbmRsaW5nIiwicmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdCIsInNldHVwRnJhbWVUaW1pbmdJbmZvcm1hdGlvblRyYW5zZm9ybSIsInRyYWNrSWQiLCJkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3QiLCJpc0VuYWJsZWRTdWJqZWN0IiwicmVnaXN0ZXJSb3V0ZSIsIkZyYW1lVGltaW5nSW5mb3JtYXRpb24iLCJoYW5kbGVGcmFtZVRpbWluZ01lc3NhZ2UiLCJfdHJhbnNmb3JtTmFtZSIsIl9PYmplY3QkZW50cmllcyIsImVudHJpZXMiLCJfT2JqZWN0JGVudHJpZXMkX2kiLCJfc2xpY2VkVG9BcnJheSIsInJ0cFRpbWVzdGFtcCIsIm1ldGFkYXRhIiwicnRwVGltZXN0YW1wTnVtYmVyIiwiX2RlY29kZWRGcmFtZVRpbWluZ0luIiwiX2RlY29kZWRGcmFtZVRpbWluZ0luMiIsImZyYW1lVGltaW5nSW5mb3JtYXRpb24iLCJ0aW1lY29kZSIsInJlY2VpdmVUaW1lc3RhbXAiLCJzb3VyY2VUaW1lc3RhbXAiLCJpbmdlc3RUaW1lc3RhbXAiLCJlbmNvZGVUaW1lc3RhbXAiLCJ0cmFuc2NvZGVUaW1lc3RhbXAiLCJwbGF5YmFja1N0YXRlIiwiX2N1cnJlbnRQbGF5YmFja1N0YXRlIiwiX2RlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uQnlSdHBUaW1lc3RhbXAiLCJ2aWRlb0VsZW1lbnRTdWJqZWN0IiwiY2xlYXIiLCJfdmlkZW9FbGVtZW50RGlzcG9zYWJsZXMiLCJzZXR1cFZpZGVvRXZlbnRMaXN0ZW5lcnMiLCJoYW5kbGVWaWRlb0ZyYW1lQ2FsbGJhY2siLCJfYXJtVmlkZW9GcmFtZUNhbGxiYWNrIiwidGltZXN0YW1wc1RvRGVsZXRlIiwiX2l0ZXJhdG9yIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJfc3RlcCIsInMiLCJfc3RlcCR2YWx1ZSIsImZyYW1lVGltaW5nIiwiX29iamVjdFNwcmVhZCIsInJlbmRlclRpbWVzdGFtcCIsInBlcmZvcm1hbmNlIiwidGltZU9yaWdpbiIsImVyciIsIl9pMiIsIl90aW1lc3RhbXBzVG9EZWxldGUiLCJvblBsYXlpbmciLCJvblBhdXNlIiwib25TdGFsbGVkIiwib25XYWl0aW5nIiwib25FbmRlZCIsIm9uRXJyb3IiLCJfYXJtZWRWaWRlb0ZyYW1lQ2FsbGJhY2tJZCIsImNhbmNlbFZpZGVvRnJhbWVDYWxsYmFjayIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJJbnNlcnRhYmxlU3RyZWFtcyIsIlZpZGVvRnJhbWVEZXRlY3RvciIsIkVuY29kZWRNZWRpYVRyYW5zZm9ybU1hbmFnZXIiLCJpY2VDYW5kaWRhdGVBY2N1bXVsYXRpb25JbnRlcnZhbCIsImRlZmF1bHRTdHJlYW1TZXR1cFRpbWVvdXQiLCJSZWFsVGltZVN0cmVhbVN1YnNjcmliZXIiLCJjaGFubmVsQ29udGV4dCIsInBlZXJDb25uZWN0aW9uQ29udGV4dCIsInN0cmVhbVRyYW5zZm9ybUNvbnRleHQiLCJmcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCIsInJlcXVpcmVzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zIiwiYWxsIiwiX3JlZjMiLCJfcmVmMyQiLCJzdWJzY3JpYmVPcHRpb25zIiwiY2xpZW50T2ZmZXJEaXNhYmxlZCIsInN1cHBvcnRzU2V0Q29uZmlndXJhdGlvbiIsInN1cHBvcnRzR2V0Q29uZmlndXJhdGlvbiIsImFwcGx5UnRjQ29uZmlndXJhdGlvbiIsInN1Ym1pdENhbmRpZGF0ZXNUaW1lb3V0IiwiY2FuY2VsRGlzY292ZXJ5IiwiY2FuZGlkYXRlIiwiX3RoaXMkX2NoYW5uZWxDb250ZXh0IiwiX3JlZjQiLCJyZXRyeUNhbGxiYWNrIiwibmF2aWdhdG9ySXNPbkxpbmUiLCJyZWNvbm5lY3RQZWVyQ29ubmVjdGlvbiIsIm1lZGlhU3RyZWFtUHJvbWlzZSIsIm9uVHJhY2tEaXNhYmxlZCIsInN0cmVhbXMiLCJ0cmFja0xpc3RlbmVyIiwiYW5zd2VyIiwiX3JlZjUiLCJtYXBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1c1RvQ2hhbm5lbFN0YXR1cyIsIl9wZWVyQ29ubmVjdGlvbiRjdXJyZSIsIl90aGlzJF9jaGFubmVsQ29udGV4dDIiLCJfcGVlckNvbm5lY3Rpb24kZ2V0VHIiLCJfcGVlckNvbm5lY3Rpb24kZ2V0VHIyIiwicGFyc2VkUmVtb3RlRGVzY3JpcHRpb24iLCJyZWNlaXZlcnMiLCJnZXRWaWRlb1RyYWNrcyIsInZpZGVvVHJhY2tSZWNlaXZlciIsInN1cHBvcnRzR2V0VHJhbnNjZWl2ZXJzIiwidHJhbnNjZWl2ZXIiLCJnZXRBdWRpb1RyYWNrcyIsImF1ZGlvVHJhY2tSZWNlaXZlciIsImNyZWF0ZUVuY29kZWRTdHJlYW1QaXBlbGluZSIsInJlcXVpcmVzRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiIsImZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyQ29udGV4dCIsInJlcXVpcmVzRW5jb2RlZE1lZGlhVHJhbnNmb3JtIiwiZW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlckNvbnRleHQiLCJjb25maWd1cmVFbmNvZGVkU3RyZWFtUGlwZWxpbmUiLCJfSW5zZXJ0YWJsZVN0cmVhbXMkY28iLCJjb25maWd1cmVJbnNlcnRhYmxlU3RyZWFtVHJhbnNmb3JtYXRpb24iLCJ0cmFuc2Zvcm1lZFN0cmVhbSIsInJ0Y0Nvbm5lY3Rpb25Nb25pdG9yIiwicnRjQ29ubmVjdGlvbk1vbml0b3JTdGF0aXN0aWNTdWJzY3JpcHRpb24iLCJydGNTdGF0aXN0aWMiLCJzdGF0aXN0aWNzIiwiYXVkaW9UcmFja0ZhaWxlZCIsInZpZGVvVHJhY2tGYWlsZWQiLCJfYXBwbHlSdGNDb25maWd1cmF0aW9uIiwib3B0aW9uYWxQZWVyQ29ubmVjdGlvbiIsIm5ld1J0Y0NvbmZpZ3VyYXRpb24iLCJtYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzIiwiYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uIiwiX3BlZXJDb25uZWN0aW9uJGN1cnJlMiIsImlzQ2xpZW50T2ZmZXJGbG93IiwiaWNlUmVzdGFydCIsIm9mZmVyIiwiX21lZGlhU3RyZWFtJGdldFRyYWNrIiwiaGFzQWN0aXZlVHJhY2tzIiwic29tZSIsInJlYWR5U3RhdGUiLCJwYXVzZWQiLCJpc1JlbmRlcmluZ0ZyYW1lcyIsIlJlYWxUaW1lU3RyZWFtU3Vic2NyaWJlckZhY3RvcnkiLCJ0b2tlbkNhcGFiaWxpdGllcyIsImRldGVjdGlvblRpbWVvdXRJbk1pbGxpc2Vjb25kcyIsImlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lU3VwcG9ydGVkIiwic3RhcnRUaW1lIiwicmVzb2x2ZWQiLCJTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyIiwiU2tpcEZyYW1lIiwiRW5jb2RlZFZpZGVvQ2h1bmsiLCJjaHVuayIsImVuY29kZWRWaWRlb1N0cmVhbUNhbGxiYWNrIiwiRW5jb2RlZEF1ZGlvQ2h1bmsiLCJlbmNvZGVkQXVkaW9TdHJlYW1DYWxsYmFjayIsIl9lbmNvZGVkQXVkaW9TdHJlYW1DYWxsYmFjayIsImdldEludmFsaWRTdXJyb2dhdGVBdWRpb0RhdGEiLCJnZXRTdXJyb2dhdGVBdWRpb1NpbGVudFBlckNvZGVjIiwiX2VuY29kZWRWaWRlb1N0cmVhbUNhbGxiYWNrIiwic3Vycm9nYXRlIiwiZ2V0SW52YWxpZFN1cnJvZ2F0ZVZpZGVvSUZyYW1lIiwiZ2V0SW52YWxpZFN1cnJvZ2F0ZVZpZGVvUEZyYW1lIiwiZ2V0U3Vycm9nYXRlVmlkZW9JRnJhbWVQZXJDb2RlYyIsImdldFN1cnJvZ2F0ZVZpZGVvUEZyYW1lUGVyQ29kZWMiLCJtb2RlIiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9uIiwiRiIsIm5leHQiLCJfYXJyYXlMaWtlVG9BcnJheSIsImNvbnN0cnVjdG9yIiwiZnJvbSIsIlRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyIiwiVHJhbnNmb3JtTWVzc2FnZVR5cGUiLCJUcmFuc2Zvcm1NZXNzYWdlUm91dGVyIiwiY3JlYXRlVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXJGb3JUcmFjayIsIndvcmtlciIsInRlcm1pbmF0ZSIsInZpZGVvVHJhY2tNZWRpYVN0cmVhbVRyYWNrIiwiYXVkaW9UcmFja01lZGlhU3RyZWFtVHJhY2siLCJfY29uZmlndXJlRW5jb2RlZFN0cmVhbVBpcGVsaW5lIiwiYWRkVHJhY2tUcmFuc2Zvcm1zIiwiY29uZmlndXJlUlRDUnRwU2NyaXB0VHJhbnNmb3JtIiwiY29uZmlndXJlRW5jb2RlZFN0cmVhbXMiLCJ0cmFuc2Zvcm1GdW5jdGlvbk5hbWUiLCJwb3N0TWVzc2FnZSIsIkFkZFRyYW5zZm9ybSIsImNvbmZpZ3VyZVJUQ1J0cFNjcmlwdFRyYW5zZm9ybUZvclRyYWNrIiwidHJhY2tSZWNlaXZlciIsInRyYWNrTWVkaWFTdHJlYW1UcmFjayIsInRyYWNrVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIiLCJ0cmFuc2Zvcm0iLCJQaXBlbGluZUNvbmZpZ3VyZWQiLCJvbmNlIiwiY29uZmlndXJlRW5jb2RlZFN0cmVhbXNGb3JUcmFjayIsImFjdGlvbnMiLCJlbmNvZGVkUmVjZWl2ZXJTdHJlYW1zIiwiQ29uZmlndXJlUGlwZWxpbmUiLCJzb3VyY2UiLCJyZWFkYWJsZSIsInNpbmsiLCJ0cmFuc2ZlciIsImluc2VydGFibGVTdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayIsImNvbnRyb2xsZXIiLCJ0cmFuc2Zvcm1lciIsIlRyYW5zZm9ybVN0cmVhbSIsInByb2Nlc3NvciIsImdlbmVyYXRvciIsInBpcGVUaHJvdWdoIiwicGlwZVRvIiwicmVtb3ZlVHJhY2siLCJhdWRpb1B1bXBlciIsIkF1ZGlvIiwiYXBwZW5kQ2hpbGQiLCJyZW1vdmVDaGlsZCIsImFubmV4QkZvdXJCeXRlU3RhcnRDb2RlIiwic3Vycm9nYXRlSDI2NDI4eDE2SUZyYW1lIiwic3Vycm9nYXRlSDI2NDI4eDE2UEZyYW1lIiwiX2R1bW15QXVkaW9TaWxlbnRQZXJDb2RlYyIsImJ1ZmZlciIsIl9zaW5nbGVaZXJvQnl0ZSIsIl9pc1NhZmFyaSIsIl9zdXJyb2dhdGUyOHgxNkgyNjRJRnJhbWUiLCJfZHVtbXkyeDJWaWRlb0lGcmFtZVBlckNvZGVjIiwiX2lzQW5kcm9pZENocm9tZSIsIl9zdXJyb2dhdGUyOHgxNlBGcmFtZUZyYW1lTnVtYmVyIiwiX3N1cnJvZ2F0ZTI4eDE2UEZyYW1lRnJhbWVOdW1iZXJSZXNldCIsIl9zdXJyb2dhdGUyOHgxNkgyNjRQRnJhbWUiLCJfZHVtbXkyeDJWaWRlb1BGcmFtZVBlckNvZGVjIiwiX1N1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIiLCJpc0FuZHJvaWQiLCJUcmFuc2Zvcm1QaXBlbGluZU1lc3NhZ2VSb3V0ZXIiLCJtZXNzYWdlVHlwZSIsInJvdXRlTWVzc2FnZSIsIl9tZXNzYWdlUm91dGVzIiwicm91dGVNZXNzYWdlRGF0YSIsIkNodW5rIiwiTWV0YWRhdGEiLCJfX0JVSUxEX1ZFUlNJT05fXyIsIl9kZWZhdWx0VmVyc2lvbiIsIlRlbGVtZXRyeVNlcnZpY2UiLCJfdGVsZW1ldHJ5U2VydmljZSIsInZhbHVlT2YiLCJsb2dSZWNvcmQiLCJfbG9ncyIsInNlbmRMb2dzSWZBYmxlIiwibG9nTWVzc2FnZXMiLCJfc2VuZExvZ3NJZkFibGUiLCJudW1iZXJPZkxvZ3NUb1NlbmQiLCJzaXplT2ZMb2dzVG9TZW5kIiwiZ2V0SXRlbVNpemUiLCJnZXRMb2dTaXplIiwic3VtIiwiZHVyYXRpb24iLCJfZHVyYXRpb24iLCJpc05lZ2F0aXZlIiwiYWJzIiwib2Zmc2V0IiwibWlsbGlzZWNvbmRzIiwic2Vjb25kcyIsIm1pbnV0ZXMiLCJob3VycyIsInBhcnRzIiwiU3RyaW5nIiwicGFkU3RhcnQiLCJ0YXJnZXRMZW5ndGgiLCJwYWRTdHJpbmciLCJyZXBlYXQiLCJkZWZhdWx0QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsImRlZmF1bHRNaW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiZGVmYXVsdE1heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJiYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwibWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsIm1heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJfYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsIl9taW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiX21heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJiYWNrb2ZmSW50ZXJ2YWxJblNlY29uZHMiLCJyYW5kb21pemF0aW9uIiwiZXhwb25lbnRpYWxCYWNrb2ZmIiwiZXhwb25lbnRpYWxCYWNrb2ZmV2l0aFJhbmRvbWl6YXRpb24iLCJleHBvbmVudGlhbEJhY2tvZmZXaXRoUmFuZG9taXphdGlvbkluTWlsbGlzZWNvbmQiLCJtYXgiLCJtaW4iLCJvdGhlciIsIl9uZXR3b3JrTW9uaXRvciIsInJlY29yZEZvcmVncm91bmRDaGFuZ2UiLCJyZWNvcmROZXR3b3JrUlRUVXBkYXRlIiwicmVjb3JkTmV0d29ya1R5cGVDaGFuZ2VVcGRhdGUiLCJkb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSIsInJlY29yZE5ldHdvcmtEb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eVVwZGF0ZSIsInRpbWVTaW5jZUxhc3RDaGFuZ2UiLCJuZXdSVFQiLCJvbGRSdHQiLCJfbGFzdE5ldHdvcmtTdGF0aXN0aWNzIiwibmV3TmV0d29ya1R5cGUiLCJvbGROZXR3b3JrVHlwZSIsIm5ld0NhcGFjaXR5Iiwib2xkQ2FwYWNpdHkiLCJub29wIiwiY2hhbm5lbFN0YXJ0VGltZSIsIl9zdHJlYW1JZCIsIl9zdGFydFJlY29yZGluZ0ZpcnN0RnJhbWUiLCJfbGlzdGVuVG9GaXJzdFRpbWUiLCJjYWxsVGltZVRvRmlyc3RGcmFtZSIsIl9jbGVhclRpbWVUb0ZpcnN0RnJhbWVMaXN0ZW5lciIsIl9saXN0ZW5Gb3JTdGFsbCIsIm9uU3RhbGwiLCJfbGlzdGVuRm9yQ29udGludWF0aW9uIiwiZXZlbnQiLCJvbkNvbnRpbnVhdGlvbiIsIl9jbGVhclJlYnVmZmVyaW5nTGlzdGVuZXIiLCJwdXNoVGltZVRvRmlyc3RGcmFtZSIsInB1c2hDaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lIiwiX3RpbWVUb0ZpcnN0RnJhbWUiLCJkdXJhdGlvblNpbmNlUGFnZUxvYWQiLCJfY2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZSIsIl92aWRlb1N0YWxsZWQiLCJidWZmZXJlZCIsImJ1ZmZlckxlbmd0aCIsImhhc05vdFByb2dyZXNzZWRTaW5jZUxhc3RQcm9ncmVzc0V2ZW50IiwiZW5kIiwiX2xhc3RQcm9ncmVzcyIsInRpbWVTaW5jZVN0b3AiLCJuZXdSZXNvbHV0aW9uIiwiX3ZpZGVvUmVzb2x1dGlvbiJdLCJzb3VyY2VSb290IjoiIn0=
|
|
11972
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbm5lbHMuanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ1ZBO0FBQ0E7QUFDQTs7QUFHcUQ7QUFDVDtBQUNRO0FBQ2hCO0FBQ2dCO0FBRXBELElBQU1LLHFCQUFxQixHQUFHLGtCQUFrQjtBQUFDLElBRTVCQywwQkFBMEI7RUFPN0MsU0FBQUEsMkJBQUEsRUFBYztJQUFBQyxpRkFBQSxPQUFBRCwwQkFBQTtJQUFBRSxpRkFBQSx1QkFOa0MsSUFBSU4sNERBQWMsQ0FBQyxDQUFDO0lBQUFNLGlGQUFBO0lBQUFBLGlGQUFBO0lBQUFBLGlGQUFBLG9DQUdmQyxJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDO0lBQUFGLGlGQUFBLGtDQUNULElBQUk7SUFHeEQsSUFBSSxDQUFDRyxhQUFhLEdBQUcsSUFBSVIsbURBQU8sQ0FBVSxJQUFJLENBQUM7SUFDL0MsSUFBSSxDQUFDUyxxQkFBcUIsR0FBRyxJQUFJUiwyREFBZSxDQUFDLElBQUksQ0FBQ08sYUFBYSxDQUFDO0lBQ3BFLElBQUksQ0FBQ0UsVUFBVSxDQUFDLENBQUM7RUFDbkI7RUFBQyxPQUFBQyw4RUFBQSxDQUFBUiwwQkFBQTtJQUFBUyxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQTZDO01BQzNDLE9BQU8sSUFBSSxDQUFDSixxQkFBcUI7SUFDbkM7RUFBQztJQUFBRyxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFPQyxzQkFBc0JBLENBQUEsRUFBVztNQUN0QyxPQUFPVCxJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDUyx5QkFBeUI7SUFDcEQ7RUFBQztJQUFBSixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFPRyx5QkFBeUJBLENBQUEsRUFBdUI7TUFDckQsT0FBTyxJQUFJLENBQUNDLHVCQUF1QjtJQUNyQztFQUFDO0lBQUFOLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQU9LLE9BQU9BLENBQUEsRUFBUztNQUNyQixJQUFJLENBQUNDLFlBQVksQ0FBQ0QsT0FBTyxDQUFDLENBQUM7SUFDN0I7RUFBQztJQUFBUCxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFRSixVQUFVQSxDQUFBLEVBQVM7TUFBQSxJQUFBVyxLQUFBO01BQ3pCLElBQUlDLG1CQUF1QyxHQUFHLElBQUk7TUFDbEQsSUFBTUMsc0JBQXNCLEdBQUcsU0FBekJBLHNCQUFzQkEsQ0FBQSxFQUFTO1FBQ25DLElBQU1DLGVBQWUsR0FBRyxDQUFDM0IsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ1csZ0JBQWdCO1FBRTNELElBQUksQ0FBQ0QsZUFBZSxFQUFFO1VBQ3BCRixtQkFBbUIsR0FBR2hCLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUM7VUFDaENjLEtBQUksQ0FBQ0gsdUJBQXVCLEdBQUcsSUFBSTtRQUNyQyxDQUFDLE1BQU0sSUFBSUksbUJBQW1CLEVBQUU7VUFDOUJELEtBQUksQ0FBQ0gsdUJBQXVCLEdBQUdaLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUMsR0FBR2UsbUJBQW1CO1FBQ2pFO1FBRUFELEtBQUksQ0FBQ2IsYUFBYSxDQUFDTSxLQUFLLEdBQUdVLGVBQWU7TUFDNUMsQ0FBQztNQUVELElBQU1FLG9CQUFvQixHQUFHLEtBQUs7TUFFbEM3QixnRUFBVyxDQUFDaUIsS0FBSyxDQUFDYSx3QkFBd0IsQ0FBQ3pCLHFCQUFxQixFQUFFcUIsc0JBQXNCLEVBQUVHLG9CQUFvQixDQUFDO01BRS9HLElBQUksQ0FBQ04sWUFBWSxDQUFDUSxHQUFHLENBQUMsSUFBSTlCLHdEQUFVLENBQUM7UUFBQSxPQUFNRCxnRUFBVyxDQUFDaUIsS0FBSyxDQUFDZSwyQkFBMkIsQ0FBQzNCLHFCQUFxQixFQUFFcUIsc0JBQXNCLEVBQUVHLG9CQUFvQixDQUFDO01BQUEsRUFBQyxDQUFDO0lBQ2pLO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDOURIO0FBQ0E7QUFDQTtBQUZBLElBSXFCSyxlQUFlO0VBQUEsU0FBQUEsZ0JBQUE7SUFBQTNCLGlGQUFBLE9BQUEyQixlQUFBO0VBQUE7RUFBQSxPQUFBcEIsOEVBQUEsQ0FBQW9CLGVBQUE7SUFBQW5CLEdBQUE7SUFBQUMsR0FBQSxFQWtCbEMsU0FBQUEsSUFBQSxFQUEyQztNQUN6QyxPQUFPa0IsZUFBZSxDQUFDQyxzQkFBc0I7SUFDL0M7RUFBQztJQUFBcEIsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFpQztNQUMvQixPQUFPLElBQUksQ0FBQ29CLFlBQVk7SUFDMUI7RUFBQztJQUFBckIsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUF5QztNQUN2QyxPQUFPLElBQUksQ0FBQ3FCLG9CQUFvQjtJQUNsQztFQUFDO0lBQUF0QixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQWdDO01BQzlCLE9BQU9rQixlQUFlLENBQUNJLFVBQVU7SUFDbkM7RUFBQztJQUFBdkIsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFpQztNQUMvQixPQUFPa0IsZUFBZSxDQUFDSyxXQUFXO0lBQ3BDO0VBQUM7SUFBQXhCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBaUM7TUFDL0IsT0FBT2tCLGVBQWUsQ0FBQ00sV0FBVztJQUNwQztFQUFDO0lBQUF6QixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQWlDO01BQy9CLE9BQU9rQixlQUFlLENBQUNPLFdBQVc7SUFDcEM7RUFBQztJQUFBMUIsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFpQztNQUMvQixPQUFPa0IsZUFBZSxDQUFDUSxXQUFXO0lBQ3BDO0VBQUM7SUFBQTNCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBaUM7TUFDL0IsT0FBT2tCLGVBQWUsQ0FBQ1MsV0FBVztJQUNwQztFQUFDO0lBQUE1QixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQWlDO01BQy9CLE9BQU9rQixlQUFlLENBQUNVLFdBQVc7SUFDcEM7RUFBQztJQUFBN0IsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFpQztNQUMvQixPQUFPa0IsZUFBZSxDQUFDVyxXQUFXO0lBQ3BDO0VBQUM7SUFBQTlCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBaUM7TUFDL0IsT0FBT2tCLGVBQWUsQ0FBQ1ksV0FBVztJQUNwQztFQUFDO0lBQUEvQixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFPOEIsUUFBUUEsQ0FBQSxFQUFZO01BQ3pCLE9BQU9iLGVBQWUsQ0FBQ2MsU0FBUztJQUNsQztFQUFDO0lBQUFqQyxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFlZ0MsMEJBQTBCQSxDQUFBLEVBQVc7TUFDbEQsSUFBSSxDQUFDQyxTQUFTLElBQUksQ0FBQ0EsU0FBUyxDQUFDQyxTQUFTLEVBQUU7UUFDdEMsT0FBTyxFQUFFO01BQ1g7TUFFQSxJQUFNQyxxQkFBcUIsR0FBR0YsU0FBUyxDQUFDQyxTQUFTLENBQUNFLEtBQUssQ0FBQ25CLGVBQWUsQ0FBQ29CLDJCQUEyQixDQUFDO01BRXBHLElBQUlGLHFCQUFxQixJQUFJQSxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUNyRCxPQUFPQSxxQkFBcUIsQ0FBQyxDQUFDLENBQUM7TUFDakM7TUFFQSxPQUFPbEIsZUFBZSxDQUFDcUIsK0JBQStCLENBQUMsQ0FBQztJQUMxRDtFQUFDO0lBQUF4QyxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFldUMsZ0JBQWdCQSxDQUFBLEVBQVc7TUFDeEMsSUFBSSxDQUFDdEIsZUFBZSxDQUFDQyxzQkFBc0IsRUFBRTtRQUMzQyxPQUFPLEVBQUU7TUFDWDtNQUVBLElBQU1zQixlQUFlLEdBQUd2QixlQUFlLENBQUNDLHNCQUFzQixDQUFDdUIsS0FBSyxDQUFDLEdBQUcsQ0FBQztNQUV6RSxJQUFJLENBQUNELGVBQWUsSUFBSSxDQUFDQSxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDM0MsT0FBTyxFQUFFO01BQ1g7TUFFQSxPQUFPQSxlQUFlLENBQUMsQ0FBQyxDQUFDO0lBQzNCO0VBQUM7SUFBQTFDLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQWUwQyx3QkFBd0JBLENBQUEsRUFBVztNQUNoRCxJQUFJLENBQUN6QixlQUFlLENBQUNDLHNCQUFzQixFQUFFO1FBQzNDLE9BQU8sQ0FBQztNQUNWO01BRUEsSUFBTXlCLGtCQUFrQixHQUFHMUIsZUFBZSxDQUFDQyxzQkFBc0IsQ0FBQ3VCLEtBQUssQ0FBQyxHQUFHLENBQUM7TUFFNUUsSUFBSSxDQUFDRSxrQkFBa0IsSUFBSSxDQUFDQSxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUNqRCxPQUFPLENBQUM7TUFDVjtNQUVBLElBQU1DLFdBQVcsR0FBR0Qsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO01BRXpDLElBQUksQ0FBQ0MsV0FBVyxFQUFFO1FBQ2hCLE9BQU8sQ0FBQztNQUNWO01BRUEsT0FBT0MsTUFBTSxDQUFDRCxXQUFXLENBQUNILEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDL0M7RUFBQztJQUFBM0MsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBZXNDLCtCQUErQkEsQ0FBQSxFQUFXO01BQ3ZELElBQUksQ0FBQ0wsU0FBUyxJQUFJLENBQUNBLFNBQVMsQ0FBQ0MsU0FBUyxFQUFFO1FBQ3RDLE9BQU8sRUFBRTtNQUNYO01BRUEsSUFBTUEsU0FBUyxHQUFHRCxTQUFTLENBQUNDLFNBQVM7TUFDckMsSUFBTVksSUFBSSxHQUFHWixTQUFTLENBQUNhLE9BQU8sQ0FBQyxPQUFPLENBQUM7TUFFdkMsSUFBSUQsSUFBSSxHQUFHLENBQUMsRUFBRTtRQUNaO1FBQ0EsYUFBQUUsTUFBQSxDQUFhQyxRQUFRLENBQUNmLFNBQVMsQ0FBQ2dCLFNBQVMsQ0FBQ0osSUFBSSxHQUFHLENBQUMsRUFBRVosU0FBUyxDQUFDYSxPQUFPLENBQUMsR0FBRyxFQUFFRCxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztNQUN4RjtNQUVBLElBQU1LLE9BQU8sR0FBR2pCLFNBQVMsQ0FBQ2EsT0FBTyxDQUFDLFVBQVUsQ0FBQztNQUU3QyxJQUFJSSxPQUFPLEdBQUcsQ0FBQyxFQUFFO1FBQ2Y7UUFDQSxJQUFNQyxPQUFPLEdBQUdsQixTQUFTLENBQUNhLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFFeEMsYUFBQUMsTUFBQSxDQUFhQyxRQUFRLENBQUNmLFNBQVMsQ0FBQ2dCLFNBQVMsQ0FBQ0UsT0FBTyxHQUFHLENBQUMsRUFBRWxCLFNBQVMsQ0FBQ2EsT0FBTyxDQUFDLEdBQUcsRUFBRUssT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7TUFDOUY7TUFFQSxPQUFPLEVBQUU7SUFDWDtFQUFDO0FBQUE7QUFBQUMsZ0JBQUEsR0E3SWtCcEMsZUFBZTtBQUFBMUIsaUZBQUEsQ0FBZjBCLGVBQWUsaUNBQ29CLDRKQUE0SjtBQUFBMUIsaUZBQUEsQ0FEL0wwQixlQUFlLDRCQUVlQSxnQkFBZSxDQUFDZSwwQkFBMEIsQ0FBQyxDQUFDO0FBQUF6QyxpRkFBQSxDQUYxRTBCLGVBQWUsa0JBR0tBLGdCQUFlLENBQUNzQixnQkFBZ0IsQ0FBQyxDQUFDO0FBQUFoRCxpRkFBQSxDQUh0RDBCLGVBQWUsMEJBSWFBLGdCQUFlLENBQUN5Qix3QkFBd0IsQ0FBQyxDQUFDO0FBQUFuRCxpRkFBQSxDQUp0RTBCLGVBQWUsZUFNRyxpREFBaUQsQ0FBRXFDLElBQUksRUFBQUMsVUFBQSxHQUFDdEIsU0FBUyxjQUFBc0IsVUFBQSx1QkFBVEEsVUFBQSxDQUFXckIsU0FBUyxDQUFDO0FBQUEzQyxpRkFBQSxDQU4vRjBCLGVBQWUsZ0JBT0ksVUFBVSxDQUFFcUMsSUFBSSxFQUFBRSxXQUFBLEdBQUN2QixTQUFTLGNBQUF1QixXQUFBLHVCQUFUQSxXQUFBLENBQVd0QixTQUFTLENBQUM7QUFBQTNDLGlGQUFBLENBUHpEMEIsZUFBZSxpQkFTSUEsZ0JBQWUsQ0FBQ0Msc0JBQXNCLENBQUN1QyxRQUFRLENBQUMsWUFBWSxDQUFDO0FBQUFsRSxpRkFBQSxDQVRoRjBCLGVBQWUsaUJBVUlBLGdCQUFlLENBQUNDLHNCQUFzQixDQUFDdUMsUUFBUSxDQUFDLFlBQVksQ0FBQztBQUFBbEUsaUZBQUEsQ0FWaEYwQixlQUFlLGlCQVdJQSxnQkFBZSxDQUFDQyxzQkFBc0IsQ0FBQ3VDLFFBQVEsQ0FBQyxZQUFZLENBQUM7QUFBQWxFLGlGQUFBLENBWGhGMEIsZUFBZSxpQkFZSUEsZ0JBQWUsQ0FBQ0Msc0JBQXNCLENBQUN1QyxRQUFRLENBQUMsWUFBWSxDQUFDO0FBQUFsRSxpRkFBQSxDQVpoRjBCLGVBQWUsaUJBYUlBLGdCQUFlLENBQUNDLHNCQUFzQixDQUFDdUMsUUFBUSxDQUFDLFlBQVksQ0FBQztBQUFBbEUsaUZBQUEsQ0FiaEYwQixlQUFlLGlCQWNJQSxnQkFBZSxDQUFDQyxzQkFBc0IsQ0FBQ3VDLFFBQVEsQ0FBQyxZQUFZLENBQUM7QUFBQWxFLGlGQUFBLENBZGhGMEIsZUFBZSxpQkFlSUEsZ0JBQWUsQ0FBQ0Msc0JBQXNCLENBQUN1QyxRQUFRLENBQUMsWUFBWSxDQUFDO0FBQUFsRSxpRkFBQSxDQWZoRjBCLGVBQWUsaUJBZ0JJQSxnQkFBZSxDQUFDQyxzQkFBc0IsQ0FBQ3VDLFFBQVEsQ0FBQyxZQUFZLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNwQnJHO0FBQ0E7QUFDQTs7QUFFc0U7QUFDWDtBQUNLO0FBQ1Y7O0FBRXREO0FBQ0E7QUFBQSxJQUNxQkssaUNBQWlDO0VBQUEsU0FBQUEsa0NBQUE7SUFBQXhFLGlGQUFBLE9BQUF3RSxpQ0FBQTtFQUFBO0VBQUEsT0FBQWpFLDhFQUFBLENBQUFpRSxpQ0FBQTtJQUFBaEUsR0FBQTtJQUFBRSxLQUFBLEVBQ3BELFNBQWMrRCxjQUFjQSxDQUFDQyxJQUFZLEVBQVU7TUFDakQsT0FBT0YsaUNBQWlDLENBQUNHLGtCQUFrQixDQUFDRCxJQUFJLENBQUM7SUFDbkU7RUFBQztJQUFBbEUsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBY2tFLGVBQWVBLENBQUNGLElBQVksRUFBVztNQUNuRCxPQUFPRixpQ0FBaUMsQ0FBQ0ssbUJBQW1CLENBQUNILElBQUksQ0FBQztJQUNwRTtFQUFDO0lBQUFsRSxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQW9FO01BQ2xFLE9BQU87UUFDTCxzQkFBc0IsRUFBRTJELHVFQUFxQixDQUFDVSx5Q0FBeUMsQ0FBQ1QsaUVBQWdCLENBQUNVLHFCQUFxQixDQUFDO1FBQy9ILHNCQUFzQixFQUFFVCxtRUFBbUIsQ0FBQ1UscUNBQXFDLENBQUNULDhEQUFjLENBQUNVLG1CQUFtQixDQUFDO1FBQ3JILDhCQUE4QixFQUFFWCxtRUFBbUIsQ0FBQ1UscUNBQXFDLENBQUNULDhEQUFjLENBQUNXLDBCQUEwQixDQUFDO1FBQ3BJLGdDQUFnQyxFQUFFWixtRUFBbUIsQ0FBQ1UscUNBQXFDLENBQUNULDhEQUFjLENBQUNZLDRCQUE0QixDQUFDO1FBQ3hJLHNCQUFzQixFQUFFLEVBQUU7UUFDMUIsWUFBWSxFQUFFLEVBQUU7UUFDaEIsaUJBQWlCLEVBQUU7TUFDckIsQ0FBQztJQUNIO0VBQUM7SUFBQTNFLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBc0U7TUFDcEUsT0FBTztRQUNMLHVDQUF1QyxFQUFFLElBQUk7UUFDN0MsZ0RBQWdELEVBQUUsSUFBSTtRQUN0RCw0Q0FBNEMsRUFBRSxJQUFJO1FBQ2xELGtEQUFrRCxFQUFFO01BQ3RELENBQUM7SUFDSDtFQUFDO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3ZDSDtBQUNBO0FBQ0E7O0FBRXFEO0FBQ1k7QUFDcEM7QUFBQSxJQUVSNkUsdUJBQXVCO0VBOEIxQyxTQUFBQSx3QkFBQSxFQUFzQjtJQUFBdEYsaUZBQUEsT0FBQXNGLHVCQUFBO0lBQ3BCLE1BQU0sSUFBSUMsS0FBSyxDQUFDLHdFQUF3RSxDQUFDO0VBQzNGO0VBQUMsT0FBQWhGLDhFQUFBLENBQUErRSx1QkFBQTtJQUFBOUUsR0FBQTtJQUFBRSxLQUFBLEVBL0JELFNBQU84RSxzQkFBc0JBLENBQUEsRUFBUztNQUNwQyxJQUFJSixzRUFBaUIsQ0FBQzVDLFFBQVEsSUFBSTZDLGdEQUFHLENBQUNJLG9DQUFvQyxFQUFFO1FBQzFFO01BQ0Y7TUFFQSxJQUFJTCxzRUFBaUIsQ0FBQ00sdUNBQXVDLEVBQUU7UUFDN0QsSUFBSSxDQUFDQyw0QkFBNEIsQ0FBQyxDQUFDO01BQ3JDO0lBQ0Y7RUFBQztJQUFBbkYsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBZWlGLDRCQUE0QkEsQ0FBQSxFQUFTO01BQ2xELElBQUlQLHNFQUFpQixDQUFDUSx5QkFBeUIsRUFBRTtRQUMvQ25HLGdFQUFXLENBQUNpQixLQUFLLENBQUNtRixjQUFjLENBQUMsSUFBSSxDQUFDQyx1Q0FBdUMsQ0FBQ0MsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO01BQzNGLENBQUMsTUFBTTtRQUNMdEcsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ3NGLFVBQVUsQ0FBQyxJQUFJLENBQUNGLHVDQUF1QyxDQUFDQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO01BQzFGO0lBQ0Y7RUFBQztJQUFBdkYsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBZW9GLHVDQUF1Q0EsQ0FBQSxFQUFTO01BQzdELElBQUlHLEdBQTRCLEdBQUd4RyxnRUFBVyxDQUFDaUIsS0FBSyxDQUFDd0YscUJBQXFCLENBQW1CLEtBQUssQ0FBQztNQUVuR0QsR0FBRyxDQUFDRSxHQUFHLEdBQUcxRyxnRUFBVyxDQUFDaUIsS0FBSyxDQUFDMEYsR0FBRyxDQUFDQyxlQUFlLENBQUMsSUFBSUMsSUFBSSxDQUFDLENBQUMsSUFBSUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7TUFDckZOLEdBQUcsQ0FBQ08sT0FBTyxHQUFHLFlBQVc7UUFDdkIvRyxnRUFBVyxDQUFDaUIsS0FBSyxDQUFDMEYsR0FBRyxDQUFDSyxlQUFlLENBQUMsSUFBSSxDQUFDTixHQUFHLENBQUM7UUFFL0NGLEdBQUcsR0FBRyxJQUFJO01BQ1osQ0FBQztJQUNIO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDcENIO0FBQ0E7QUFDQTs7QUFFcUQ7QUFFVDtBQUNRO0FBQ2hCO0FBQUEsSUFFZlMsY0FBYztFQU9qQyxTQUFBQSxlQUFBLEVBQWM7SUFBQTFHLGlGQUFBLE9BQUEwRyxjQUFBO0lBQUF6RyxpRkFBQSx1QkFOa0MsSUFBSU4sNERBQWMsQ0FBQyxDQUFDO0lBQUFNLGlGQUFBLHVCQUMzQlIsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ2lHLG1CQUFtQixLQUFLQyxTQUFTO0lBQUEzRyxpRkFBQSxlQUN2QyxJQUFJTCxtREFBTyxDQUFxQmdILFNBQVMsQ0FBQztJQUFBM0csaUZBQUEseUJBQ2hDLElBQUlMLG1EQUFPLENBQXFCZ0gsU0FBUyxDQUFDO0lBQUEzRyxpRkFBQSxzQ0FDN0IsSUFBSUwsbURBQU8sQ0FBcUJnSCxTQUFTLENBQUM7SUFHcEgsSUFBSSxDQUFDLElBQUksQ0FBQ0MsV0FBVyxFQUFFO01BQ3JCO0lBQ0Y7SUFFQSxJQUFJLENBQUNDLDJCQUEyQixDQUFDLENBQUM7SUFDbEMsSUFBSSxDQUFDQyxnQkFBZ0IsQ0FBQyxDQUFDO0VBQ3pCO0VBQUMsT0FBQXhHLDhFQUFBLENBQUFtRyxjQUFBO0lBQUFsRyxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQTJCO01BQ3pCLE9BQU8sSUFBSSxDQUFDdUcsWUFBWTtJQUMxQjtFQUFDO0lBQUF4RyxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXVDO01BQ3JDLE9BQU8sSUFBSSxDQUFDd0csSUFBSTtJQUNsQjtFQUFDO0lBQUF6RyxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQWlEO01BQy9DLE9BQU8sSUFBSSxDQUFDeUcsY0FBYztJQUM1QjtFQUFDO0lBQUExRyxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQThEO01BQzVELE9BQU8sSUFBSSxDQUFDMEcsMkJBQTJCO0lBQ3pDO0VBQUM7SUFBQTNHLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQUFLLE9BQU9BLENBQUEsRUFBUztNQUNkLElBQUksQ0FBQ0MsWUFBWSxDQUFDRCxPQUFPLENBQUMsQ0FBQztJQUM3QjtFQUFDO0lBQUFQLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQVEwRyw2QkFBNkJBLENBQUEsRUFBVztNQUFBLElBQUFDLElBQUEsRUFBQUMscUJBQUEsRUFBQUMsc0JBQUEsRUFBQUMsc0JBQUE7TUFDOUMsUUFBQUgsSUFBQSxJQUFBQyxxQkFBQSxJQUFBQyxzQkFBQSxHQUFPOUgsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ2lHLG1CQUFtQixjQUFBWSxzQkFBQSx1QkFBckNBLHNCQUFBLENBQXVDRSxRQUFRLGNBQUFILHFCQUFBLGNBQUFBLHFCQUFBLElBQUFFLHNCQUFBLEdBQUkvSCxnRUFBVyxDQUFDaUIsS0FBSyxDQUFDaUcsbUJBQW1CLGNBQUFhLHNCQUFBLHVCQUFyQ0Esc0JBQUEsQ0FBdUNFLFdBQVcsY0FBQUwsSUFBQSxjQUFBQSxJQUFBLEdBQUksQ0FBQyxDQUFDO0lBQ3BIO0VBQUM7SUFBQTdHLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQVFpSCxnQkFBZ0JBLENBQUEsRUFBVztNQUFBLElBQUFDLEtBQUEsRUFBQUMsc0JBQUEsRUFBQUMsc0JBQUEsRUFBQUMsc0JBQUE7TUFDakMsUUFBQUgsS0FBQSxJQUFBQyxzQkFBQSxJQUFBQyxzQkFBQSxHQUFPckksZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ2lHLG1CQUFtQixjQUFBbUIsc0JBQUEsdUJBQXJDQSxzQkFBQSxDQUF1Q0UsYUFBYSxjQUFBSCxzQkFBQSxjQUFBQSxzQkFBQSxJQUFBRSxzQkFBQSxHQUFJdEksZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ2lHLG1CQUFtQixjQUFBb0Isc0JBQUEsdUJBQXJDQSxzQkFBQSxDQUF1Q0UsSUFBSSxjQUFBTCxLQUFBLGNBQUFBLEtBQUEsR0FBSSxTQUFTO0lBQ3pIO0VBQUM7SUFBQXBILEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQVF3SCxnQkFBZ0JBLENBQUEsRUFBVztNQUFBLElBQUFDLHNCQUFBLEVBQUFDLHNCQUFBO01BQ2pDLFFBQUFELHNCQUFBLElBQUFDLHNCQUFBLEdBQU8zSSxnRUFBVyxDQUFDaUIsS0FBSyxDQUFDaUcsbUJBQW1CLGNBQUF5QixzQkFBQSx1QkFBckNBLHNCQUFBLENBQXVDQyxHQUFHLGNBQUFGLHNCQUFBLGNBQUFBLHNCQUFBLEdBQUksQ0FBQyxDQUFDO0lBQ3pEO0VBQUM7SUFBQTNILEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQVFvRywyQkFBMkJBLENBQUEsRUFBUztNQUFBLElBQUE3RixLQUFBO1FBQUFxSCxzQkFBQTtNQUMxQyxJQUFNQyxRQUFRLEdBQUcsU0FBWEEsUUFBUUEsQ0FBQTtRQUFBLE9BQWV0SCxLQUFJLENBQUM4RixnQkFBZ0IsQ0FBQyxDQUFDO01BQUE7TUFFcEQsQ0FBQXVCLHNCQUFBLEdBQUE3SSxnRUFBVyxDQUFDaUIsS0FBSyxDQUFDaUcsbUJBQW1CLGNBQUEyQixzQkFBQSx1QkFBckNBLHNCQUFBLENBQXVDRSxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUVELFFBQVEsQ0FBQztNQUUzRSxJQUFJLENBQUN2SCxZQUFZLENBQUNRLEdBQUcsQ0FBQyxJQUFJOUIsd0RBQVUsQ0FBQztRQUFBLElBQUErSSxzQkFBQTtRQUFBLFFBQUFBLHNCQUFBLEdBQU1oSixnRUFBVyxDQUFDaUIsS0FBSyxDQUFDaUcsbUJBQW1CLGNBQUE4QixzQkFBQSx1QkFBckNBLHNCQUFBLENBQXVDQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUVILFFBQVEsQ0FBQztNQUFBLEVBQUMsQ0FBQztJQUM3SDtFQUFDO0lBQUEvSCxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFRcUcsZ0JBQWdCQSxDQUFBLEVBQVM7TUFDL0IsSUFBSSxDQUFDRSxJQUFJLENBQUN2RyxLQUFLLEdBQUcsSUFBSSxDQUFDd0gsZ0JBQWdCLENBQUMsQ0FBQztNQUN6QyxJQUFJLENBQUNoQixjQUFjLENBQUN4RyxLQUFLLEdBQUcsSUFBSSxDQUFDaUgsZ0JBQWdCLENBQUMsQ0FBQztNQUNuRCxJQUFJLENBQUNSLDJCQUEyQixDQUFDekcsS0FBSyxHQUFHLElBQUksQ0FBQzBHLDZCQUE2QixDQUFDLENBQUM7SUFDL0U7RUFBQztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdEVIO0FBQ0E7QUFDQTs7QUFFaUQ7QUFDRjtBQUNOO0FBRVo7QUFDdUI7QUFFN0MsSUFBTTJCLG1CQUFtQjtFQU85QixTQUFBQSxvQkFBWUMsWUFBb0IsRUFBRTtJQUFBaEosaUZBQUEsT0FBQStJLG1CQUFBO0lBQUE5SSxpRkFBQSxrQkFORTZJLDZEQUFhLENBQUNHLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQztJQUFBaEosaUZBQUEseUJBQ2hEb0YsZ0RBQUcsQ0FBQzZELGNBQWM7SUFBQWpKLGlGQUFBO0lBQUFBLGlGQUFBO0lBQUFBLGlGQUFBLDJCQUd6QixLQUFLO0lBRzlCLElBQUksQ0FBQ2tKLFVBQVUsR0FBR2pKLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUM7SUFDNUIsSUFBSSxDQUFDaUosYUFBYSxHQUFHSixZQUFZO0VBQ25DO0VBQUMsT0FBQXpJLDhFQUFBLENBQUF3SSxtQkFBQTtJQUFBdkksR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQTJJLE9BQU9BLENBQUNDLFFBQWdCLEVBQVE7TUFDOUIsSUFBSSxDQUFDQyxrQkFBa0IsQ0FBQ1osNERBQVcsQ0FBQ2EsY0FBYyxFQUFFRixRQUFRLENBQUM7SUFDL0Q7RUFBQztJQUFBOUksR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQStJLElBQUlBLENBQUEsRUFBUztNQUNYLElBQUksQ0FBQ0Ysa0JBQWtCLENBQUNaLDREQUFXLENBQUNlLFdBQVcsQ0FBQztJQUNsRDtFQUFDO0lBQUFsSixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFRNkksa0JBQWtCQSxDQUFDSSxVQUF1QixFQUFFTCxRQUFpQixFQUFRO01BQzNFLElBQUksSUFBSSxDQUFDTSxnQkFBZ0IsRUFBRTtRQUN6QjtNQUNGO01BRUEsSUFBSSxDQUFDQSxnQkFBZ0IsR0FBRyxJQUFJO01BRTVCLElBQU16SixHQUFHLEdBQUdELElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUM7TUFDdEIsSUFBTTBKLFNBQVMsR0FBRzFKLEdBQUcsR0FBRyxJQUFJLENBQUNnSixVQUFVO01BQ3ZDLElBQU1XLFVBQVUsR0FBRyxJQUFJbEIsMkRBQVUsQ0FBQ2UsVUFBVSxDQUFDLENBQUNJLE9BQU8sQ0FBQyxDQUFDO01BRXZELElBQUksQ0FBQ2IsY0FBYyxDQUFDYyxJQUFJLENBQUM7UUFDdkJMLFVBQVUsRUFBVkEsVUFBVTtRQUNWTSxPQUFPLEVBQUUsQ0FBQzlKLEdBQUcsR0FBRyxJQUFJLENBQUNpSixhQUFhLElBQUksSUFBSTtRQUMxQzFJLEtBQUssRUFBRTtVQUFDd0osTUFBTSxFQUFFTDtRQUFTLENBQUM7UUFDMUJQLFFBQVEsRUFBUkE7TUFDRixDQUFDLENBQUM7TUFFRixJQUFJLENBQUNhLE9BQU8sQ0FBQ0MsSUFBSSxDQUNmLHNDQUFzQyxFQUN0QyxJQUFJdkIsc0RBQVMsQ0FBQzFJLEdBQUcsR0FBRyxJQUFJLENBQUNpSixhQUFhLENBQUMsQ0FBQ2lCLFdBQVcsQ0FBQyxDQUFDLEVBQ3JEZixRQUFRLEVBQ1JRLFVBQVUsRUFDVixJQUFJakIsc0RBQVMsQ0FBQ2dCLFNBQVMsQ0FBQyxDQUFDUSxXQUFXLENBQUMsQ0FDdkMsQ0FBQztJQUNIO0VBQUM7QUFBQSxJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN4REg7QUFDQTtBQUNBOztBQUVvRDtBQUVoQjtBQUdwQyxJQUFNRSxtQkFBbUIsR0FBRyxTQUFTO0FBQUMsSUFFakJDLGNBQWM7RUFBQSxTQUFBQSxlQUFBO0lBQUF4SyxpRkFBQSxPQUFBd0ssY0FBQTtFQUFBO0VBQUEsT0FBQWpLLDhFQUFBLENBQUFpSyxjQUFBO0lBQUFoSyxHQUFBO0lBQUFFLEtBQUEsRUFHakMsU0FBTytKLFVBQVVBLENBQUNDLEtBQXVCLEVBQWE7TUFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQ0MsdUJBQXVCLENBQUNELEtBQUssQ0FBQyxFQUFFO1FBQ3hDRixjQUFjLENBQUNMLE9BQU8sQ0FBQ1MsS0FBSyxDQUFDLHlCQUF5QixFQUFFRixLQUFLLENBQUM7UUFFOUQsT0FBTyxJQUFJSixrREFBUyxDQUFDLElBQUksQ0FBQztNQUM1QjtNQUVBLElBQUk7UUFDRixJQUFNTyxZQUFZLEdBQUdDLElBQUksQ0FBQ0osS0FBSyxDQUFDSyxNQUFNLENBQUNSLG1CQUFtQixDQUFDUyxNQUFNLENBQUMsQ0FBQztRQUNuRSxJQUFNQyxTQUFTLEdBQUdDLElBQUksQ0FBQ0MsS0FBSyxDQUFDTixZQUFZLENBQUM7UUFFMUNJLFNBQVMsQ0FBQ1AsS0FBSyxHQUFHUSxJQUFJLENBQUNDLEtBQUssQ0FBQ0YsU0FBUyxDQUFDUCxLQUFLLENBQUM7UUFFN0MsT0FBTyxJQUFJSixrREFBUyxDQUFDVyxTQUFTLENBQUM7TUFDakMsQ0FBQyxDQUFDLE9BQU9HLENBQUMsRUFBRTtRQUNWWixjQUFjLENBQUNMLE9BQU8sQ0FBQ1MsS0FBSyxDQUFDLDBCQUEwQixFQUFFUSxDQUFDLENBQUM7UUFFM0QsT0FBTyxJQUFJZCxrREFBUyxDQUFDLElBQUksQ0FBQztNQUM1QjtJQUNGO0VBQUM7SUFBQTlKLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQU9pSyx1QkFBdUJBLENBQUNELEtBQXVCLEVBQVc7TUFDL0QsT0FBTyxDQUFDLENBQUNBLEtBQUssSUFBSUEsS0FBSyxDQUFDVyxVQUFVLENBQUNkLG1CQUFtQixDQUFDO0lBQ3pEO0VBQUM7QUFBQTtBQUFBdEssaUZBQUEsQ0ExQmtCdUssY0FBYyxhQUNDMUIsNkRBQWEsQ0FBQ0csU0FBUyxDQUFDLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNaN0U7QUFDQTtBQUNBOztBQUVxRDtBQUFBLElBWWhDcUIsU0FBUztFQUk1QixTQUFBQSxVQUFZVyxTQUE0QixFQUFFO0lBQUEsSUFBQUssZ0JBQUEsRUFBQUMsaUJBQUE7SUFBQXZMLGlGQUFBLE9BQUFzSyxTQUFBO0lBQUFySyxpRkFBQTtJQUFBQSxpRkFBQTtJQUN4QyxJQUFJLENBQUN1TCxjQUFjLEdBQUcsQ0FBQVAsU0FBUyxhQUFUQSxTQUFTLHVCQUFUQSxTQUFTLENBQUVRLGFBQWEsS0FBSSxFQUFFO0lBQ3BELElBQUksQ0FBQ0MsTUFBTSxHQUFHO01BQ1pDLEdBQUcsRUFBRVYsU0FBUyxhQUFUQSxTQUFTLGdCQUFBSyxnQkFBQSxHQUFUTCxTQUFTLENBQUVQLEtBQUssY0FBQVksZ0JBQUEsZUFBaEJBLGdCQUFBLENBQWtCSyxHQUFHLEdBQUcsSUFBSWxNLGdFQUFXLENBQUNpQixLQUFLLENBQUMwRixHQUFHLENBQUM2RSxTQUFTLENBQUNQLEtBQUssQ0FBQ2lCLEdBQUcsQ0FBQyxHQUFHLElBQUk7TUFDbEZDLFlBQVksRUFBRSxDQUFBWCxTQUFTLGFBQVRBLFNBQVMsd0JBQUFNLGlCQUFBLEdBQVROLFNBQVMsQ0FBRVAsS0FBSyxjQUFBYSxpQkFBQSx1QkFBaEJBLGlCQUFBLENBQWtCSyxZQUFZLEtBQUk7SUFDbEQsQ0FBQztFQUNIO0VBQUMsT0FBQXJMLDhFQUFBLENBQUErSixTQUFBO0lBQUE5SixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXNCO01BQ3BCLE9BQU8sSUFBSSxDQUFDaUwsTUFBTSxDQUFDQyxHQUFHO0lBQ3hCO0VBQUM7SUFBQW5MLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBNkI7TUFDM0IsT0FBTyxJQUFJLENBQUNpTCxNQUFNLENBQUNFLFlBQVk7SUFDakM7RUFBQztJQUFBcEwsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFzQjtNQUNwQixPQUFPLElBQUksQ0FBQytLLGNBQWM7SUFDNUI7RUFBQztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3RDSDtBQUNBO0FBQ0E7QUFGQSxJQWNxQkssYUFBYTtFQUFBLFNBQUFBLGNBQUE7SUFBQTdMLGlGQUFBLE9BQUE2TCxhQUFBO0VBQUE7RUFBQSxPQUFBdEwsOEVBQUEsQ0FBQXNMLGFBQUE7SUFBQXJMLEdBQUE7SUFBQUMsR0FBQSxFQU1oQyxTQUFBQSxJQUFBLEVBQTBDO01BQ3hDLE9BQU8sSUFBSSxDQUFDcUwsb0JBQW9CO0lBQ2xDO0VBQUM7SUFBQXRMLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBd0M7TUFDdEMsT0FBTyxJQUFJLENBQUNzTCxTQUFTO0lBQ3ZCO0VBQUM7SUFBQXZMLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBNkM7TUFDM0MsT0FBTyxJQUFJLENBQUN1TCxZQUFZO0lBQzFCO0VBQUM7SUFBQXhMLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBNEM7TUFDMUMsT0FBTyxJQUFJLENBQUN3TCxhQUFhO0lBQzNCO0VBQUM7SUFBQXpMLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQU93TCxhQUFhQSxDQUFBLEVBQVM7TUFDM0IsSUFBSTtRQUNGLElBQU1DLFFBQVEsR0FBR0MsNkZBQVk7UUFFN0IsSUFBSSxDQUFDTixvQkFBb0IsR0FBRyxxQkFBcUIsSUFBSUssUUFBUSxHQUFHQSxRQUFRLENBQUNFLG1CQUFtQixHQUFHLElBQUk7UUFDbkcsSUFBSSxDQUFDTixTQUFTLEdBQUcsVUFBVSxJQUFJSSxRQUFRLEdBQUdBLFFBQVEsQ0FBQ0csUUFBUSxHQUFHLEtBQUs7UUFDbkUsSUFBSSxDQUFDTixZQUFZLEdBQUcsYUFBYSxJQUFJRyxRQUFRLEdBQUdBLFFBQVEsQ0FBQ0ksV0FBVyxHQUFHLEtBQUs7UUFDNUUsSUFBSSxDQUFDTixhQUFhLEdBQUcsY0FBYyxJQUFJRSxRQUFRLEdBQUdBLFFBQVEsQ0FBQ0ssWUFBWSxHQUFHLEtBQUs7TUFDakYsQ0FBQyxDQUFDLE9BQU9wQixDQUFDLEVBQUU7UUFDVixJQUFJLENBQUNVLG9CQUFvQixHQUFHLElBQUk7UUFDaEMsSUFBSSxDQUFDQyxTQUFTLEdBQUcsS0FBSztRQUN0QixJQUFJLENBQUNDLFlBQVksR0FBRyxLQUFLO1FBQ3pCLElBQUksQ0FBQ0MsYUFBYSxHQUFHLEtBQUs7TUFDNUI7SUFDRjtFQUFDO0FBQUE7QUFBQWhNLGlGQUFBLENBcENrQjRMLGFBQWE7QUFBQTVMLGlGQUFBLENBQWI0TCxhQUFhO0FBQUE1TCxpRkFBQSxDQUFiNEwsYUFBYTtBQUFBNUwsaUZBQUEsQ0FBYjRMLGFBQWE7QUFBQTtBQXVDbENBLGFBQWEsQ0FBQ0ssYUFBYSxDQUFDLENBQUMsQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3JEN0I7QUFDQTtBQUNBOztBQUVxRDtBQUNBO0FBQUEsSUFFaEM5RyxpQkFBaUI7RUFBQSxTQUFBQSxrQkFBQTtJQUFBcEYsaUZBQUEsT0FBQW9GLGlCQUFBO0VBQUE7RUFBQSxPQUFBN0UsOEVBQUEsQ0FBQTZFLGlCQUFBO0lBQUE1RSxHQUFBO0lBQUFDLEdBQUEsRUFDcEMsU0FBQUEsSUFBQSxFQUEwQztNQUN4QztNQUNBLE9BQU9rQiw0REFBZSxDQUFDOEssVUFBVSxJQUMvQjlLLDREQUFlLENBQUMrSyxVQUFVLElBQzFCL0ssNERBQWUsQ0FBQ2dMLFVBQVUsSUFDMUJoTCw0REFBZSxDQUFDaUwsVUFBVTtJQUM5QjtFQUFDO0lBQUFwTSxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQThDO01BQzVDLE9BQU8yRSxpQkFBaUIsQ0FBQ3lILHFCQUFxQjtJQUNoRDtFQUFDO0lBQUFyTSxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQTRDO01BQzFDO01BQ0EsT0FBT2tCLDREQUFlLENBQUNtTCxVQUFVLElBQy9CbkwsNERBQWUsQ0FBQ29MLFVBQVUsSUFDMUJwTCw0REFBZSxDQUFDcUwsVUFBVSxJQUMxQnJMLDREQUFlLENBQUNzTCxVQUFVO0lBQzlCO0VBQUM7SUFBQXpNLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBbUQ7TUFDakQsT0FBT2tCLDREQUFlLENBQUN1TCxXQUFXLEtBQUssUUFBUSxJQUFJdkwsNERBQWUsQ0FBQ3dMLG1CQUFtQixJQUFJLEVBQUU7SUFDOUY7RUFBQztJQUFBM00sR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUE4QztNQUM1QyxPQUFPa0IsNERBQWUsQ0FBQ3VMLFdBQVcsS0FBSyxRQUFRLElBQUl2TCw0REFBZSxDQUFDd0wsbUJBQW1CLElBQUksRUFBRSxJQUMxRnhMLDREQUFlLENBQUN1TCxXQUFXLEtBQUssU0FBUyxJQUFJdkwsNERBQWUsQ0FBQ3dMLG1CQUFtQixJQUFJLEVBQUU7SUFDMUY7RUFBQztJQUFBM00sR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFzQztNQUNwQyxPQUFPa0IsNERBQWUsQ0FBQ3VMLFdBQVcsS0FBSyxRQUFRLElBQUl2TCw0REFBZSxDQUFDd0wsbUJBQW1CLElBQUksRUFBRSxJQUMxRnhMLDREQUFlLENBQUN1TCxXQUFXLEtBQUssU0FBUyxJQUFJdkwsNERBQWUsQ0FBQ3dMLG1CQUFtQixJQUFJLEVBQUU7SUFDMUY7RUFBQztJQUFBM00sR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFxRDtNQUNuRCxPQUFPa0IsNERBQWUsQ0FBQ3VMLFdBQVcsS0FBSyxRQUFRLElBQUl2TCw0REFBZSxDQUFDd0wsbUJBQW1CLElBQUksRUFBRTtJQUM5RjtFQUFDO0lBQUEzTSxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQW9EO01BQ2xELE9BQU9rQiw0REFBZSxDQUFDdUwsV0FBVyxLQUFLLFNBQVMsSUFBSXZMLDREQUFlLENBQUN3TCxtQkFBbUIsSUFBSSxFQUFFO0lBQy9GO0VBQUM7SUFBQTNNLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBeUM7TUFDdkMsT0FBT2tCLDREQUFlLENBQUN1TCxXQUFXLEtBQUssUUFBUSxJQUM3Q3ZMLDREQUFlLENBQUN1TCxXQUFXLEtBQUssZ0JBQWdCO0lBQ3BEO0VBQUM7SUFBQTFNLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBMEM7TUFDeEMsT0FBT2tCLDREQUFlLENBQUN1TCxXQUFXLEtBQUssSUFBSTtJQUM3QztFQUFDO0lBQUExTSxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQThEO01BQUEsSUFBQTJNLGtCQUFBO01BQzVELE9BQU96TCw0REFBZSxDQUFDdUwsV0FBVyxLQUFLLFFBQVEsSUFBSSxTQUFBRSxrQkFBQSxHQUFPM04sZ0VBQVcsQ0FBQ2lCLEtBQUssY0FBQTBNLGtCQUFBLHVCQUFqQkEsa0JBQUEsQ0FBbUJsSCxxQkFBcUIsTUFBSyxVQUFVO0lBQ25IO0VBQUM7SUFBQTFGLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBZ0Q7TUFDOUMsT0FBT2tCLDREQUFlLENBQUN1TCxXQUFXLEtBQUssUUFBUSxJQUFJdkwsNERBQWUsQ0FBQ3dMLG1CQUFtQixJQUFJLEVBQUUsSUFDMUZ4TCw0REFBZSxDQUFDdUwsV0FBVyxLQUFLLFNBQVMsSUFBSXZMLDREQUFlLENBQUN3TCxtQkFBbUIsSUFBSSxFQUFFLElBQ3RGeEwsNERBQWUsQ0FBQ3VMLFdBQVcsS0FBSyxRQUFRO0lBQzVDO0VBQUM7SUFBQTFNLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBK0I7TUFDN0IsT0FBT2tCLDREQUFlLENBQUNhLFFBQVEsQ0FBQyxDQUFDO0lBQ25DO0VBQUM7SUFBQWhDLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBbUQ7TUFDakQsT0FBTyxFQUFFLE9BQU80TSx5QkFBeUIsS0FBSyxXQUFXLElBQ3ZELE9BQU9DLHlCQUF5QixLQUFLLFdBQVcsQ0FBQztJQUNyRDtFQUFDO0lBQUE5TSxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQTBEO01BQ3hELE9BQU8sT0FBTzhNLGNBQWMsS0FBSyxXQUFXLElBQUksT0FBT0EsY0FBYyxDQUFDQyxTQUFTLENBQUNDLG9CQUFvQixLQUFLLFdBQVc7SUFDdEg7RUFBQztJQUFBak4sR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUF1RDtNQUNyRCxPQUFPLE9BQU9pTixxQkFBcUIsS0FBSyxXQUFXO0lBQ3JEO0VBQUM7SUFBQWxOLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBMkQ7TUFBQSxJQUFBa04sbUJBQUE7TUFDekQsT0FBTyxTQUFBQSxtQkFBQSxHQUFPbE8sZ0VBQVcsQ0FBQ2lCLEtBQUssY0FBQWlOLG1CQUFBLHVCQUFqQkEsbUJBQUEsQ0FBbUJDLGdCQUFnQixDQUFDSixTQUFTLENBQUNLLHlCQUF5QixNQUFLLFdBQVc7SUFDdkc7RUFBQztJQUFBck4sR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUF1RDtNQUFBLElBQUFxTixtQkFBQTtNQUNyRCxPQUFPLFNBQUFBLG1CQUFBLEdBQU9yTyxnRUFBVyxDQUFDaUIsS0FBSyxjQUFBb04sbUJBQUEsdUJBQWpCQSxtQkFBQSxDQUFtQkMscUJBQXFCLE1BQUssVUFBVTtJQUN2RTtFQUFDO0lBQUF2TixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQStEO01BQzdELE9BQU8yRSxpQkFBaUIsQ0FBQzRJLG9DQUFvQyxLQUN2RDVJLGlCQUFpQixDQUFDNkksbUNBQW1DLElBQUk3SSxpQkFBaUIsQ0FBQzhJLGdDQUFnQyxDQUFDO0lBQ3BIO0VBQUM7SUFBQTFOLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBb0Q7TUFDbEQsT0FBT2tCLDREQUFlLENBQUN1TCxXQUFXLEtBQUssU0FBUyxJQUFJdkwsNERBQWUsQ0FBQ3VMLFdBQVcsS0FBSyxRQUFRO0lBQzlGO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNyR0g7QUFDQTtBQUNBO0FBRkEsSUFZcUJpQixVQUFVO0VBQUEsU0FBQUEsV0FBQTtJQUFBbk8saUZBQUEsT0FBQW1PLFVBQUE7RUFBQTtFQUFBLE9BQUE1Tiw4RUFBQSxDQUFBNE4sVUFBQTtJQUFBM04sR0FBQTtJQUFBQyxHQUFBLEVBRzdCLFNBQUFBLElBQUEsRUFBc0Q7TUFDcEQsT0FBTyxJQUFJLENBQUMyTixvQkFBb0I7SUFDbEM7RUFBQztJQUFBNU4sR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBTzJOLGVBQWVBLENBQUEsRUFBUztNQUM3QixJQUFJO1FBQ0YsSUFBTUMsVUFBVSxHQUFHQywyQ0FBYztRQUVqQyxJQUFJLENBQUNILG9CQUFvQixHQUFHLFdBQVcsSUFBSUUsVUFBVSxHQUFHQSxVQUFVLENBQUNFLFNBQVMsR0FBRztVQUFDQyxVQUFVLEVBQUU7UUFBRSxDQUFDO01BQ2pHLENBQUMsQ0FBQyxPQUFPckQsQ0FBQyxFQUFFO1FBQ1YsSUFBSSxDQUFDZ0Qsb0JBQW9CLEdBQUc7VUFBQ0ssVUFBVSxFQUFFO1FBQUUsQ0FBQztNQUM5QztJQUNGO0VBQUM7QUFBQTtBQUFBeE8saUZBQUEsQ0Fma0JrTyxVQUFVO0FBQUE7QUFrQi9CQSxVQUFVLENBQUNFLGVBQWUsQ0FBQyxDQUFDLEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM5QjVCO0FBQ0E7QUFDQTs7QUFVb0M7QUFDZ0I7QUFJcEQsSUFBTUssa0JBQXNDLEdBQUc7RUFDN0NDLFFBQVEsRUFBUkEsUUFBUTtFQUNSQyxRQUFRLEVBQVJBLFFBQVE7RUFDUmpNLFNBQVMsRUFBVEEsU0FBUztFQUNUa00sTUFBTSxFQUFOQTtBQUNGLENBQUM7QUFFTSxJQUFNcFAsV0FBVztFQVF0QixTQUFBQSxZQUFZcVAsV0FBK0IsRUFBRTtJQUFBOU8saUZBQUEsT0FBQVAsV0FBQTtJQUFBUSxpRkFBQTtJQUFBQSxpRkFBQTtJQUFBQSxpRkFBQTtJQUFBQSxpRkFBQTtJQUMzQyxJQUFJLENBQUM4TyxTQUFTLEdBQUdELFdBQVcsQ0FBQ0gsUUFBUTtJQUNyQyxJQUFJLENBQUNLLFNBQVMsR0FBR0YsV0FBVyxDQUFDRixRQUFRO0lBQ3JDLElBQUksQ0FBQzNLLFVBQVUsR0FBRzZLLFdBQVcsQ0FBQ25NLFNBQVM7SUFDdkMsSUFBSSxDQUFDc00sT0FBTyxHQUFHSCxXQUFXLENBQUNELE1BQU07RUFDbkM7O0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFBQSxPQUFBdE8sOEVBQUEsQ0FBQWQsV0FBQTtJQUFBZSxHQUFBO0lBQUFDLEdBQUEsRUFhQSxTQUFBQSxJQUFBLEVBQThDO01BQzVDLE9BQU8sSUFBSSxDQUFDd08sT0FBTyxDQUFDQyxlQUFlO0lBQ3JDO0VBQUM7SUFBQTFPLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBZ0M7TUFDOUIsT0FBTyxJQUFJLENBQUN3TyxPQUFPLENBQUNFLFFBQVE7SUFDOUI7RUFBQztJQUFBM08sR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFnRDtNQUM5QyxPQUFPLElBQUksQ0FBQ3dPLE9BQU8sQ0FBQ3JCLGdCQUFnQjtJQUN0QztFQUFDO0lBQUFwTixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXNDO01BQ3BDLE9BQU8sSUFBSSxDQUFDd08sT0FBTyxDQUFDRyxXQUFXO0lBQ2pDO0VBQUM7SUFBQTVPLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBZ0Q7TUFDOUMsT0FBTyxJQUFJLENBQUN3TyxPQUFPLENBQUNJLGdCQUFnQjtJQUN0QztFQUFDO0lBQUE3TyxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXNDO01BQ3BDLE9BQU8sSUFBSSxDQUFDd08sT0FBTyxDQUFDSyxXQUFXO0lBQ2pDO0VBQUM7SUFBQTlPLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBa0Q7TUFDaEQsT0FBTyxJQUFJLENBQUN3TyxPQUFPLENBQUNNLGlCQUFpQjtJQUN2QztFQUFDO0lBQUEvTyxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQTBEO01BQ3hELE9BQU8sSUFBSSxDQUFDd08sT0FBTyxDQUFDTyxxQkFBcUI7SUFDM0M7RUFBQztJQUFBaFAsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUE4QztNQUM1QyxPQUFPLElBQUksQ0FBQ3dPLE9BQU8sQ0FBQ1EsZUFBZTtJQUNyQztFQUFDO0lBQUFqUCxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXNCO01BQ3BCLE9BQU8sSUFBSSxDQUFDd08sT0FBTyxDQUFDN0ksR0FBRztJQUN6QjtFQUFDO0lBQUE1RixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQThDO01BQzVDLE9BQU8sSUFBSSxDQUFDd08sT0FBTyxDQUFDUyxlQUFlO0lBQ3JDO0VBQUM7SUFBQWxQLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBc0k7TUFDcEksT0FBTyxJQUFJLENBQUNzTyxTQUFTLENBQUN2RyxnQkFBZ0IsQ0FBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUNnSixTQUFTLENBQUM7SUFDN0Q7RUFBQztJQUFBdk8sR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFvSTtNQUNsSSxPQUFPLElBQUksQ0FBQ3dPLE9BQU8sQ0FBQ3pHLGdCQUFnQixDQUFDekMsSUFBSSxDQUFDLElBQUksQ0FBQ2tKLE9BQU8sQ0FBQztJQUN6RDtFQUFDO0lBQUF6TyxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXVEO01BQ3JELE9BQU8sSUFBSSxDQUFDd08sT0FBTyxDQUFDVSxhQUFhLENBQUM1SixJQUFJLENBQUMsSUFBSSxDQUFDa0osT0FBTyxDQUFDO0lBQ3REO0VBQUM7SUFBQXpPLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBc0Q7TUFDcEQsT0FBTyxJQUFJLENBQUN3TyxPQUFPLENBQUNXLFlBQVksQ0FBQzdKLElBQUksQ0FBQyxJQUFJLENBQUNrSixPQUFPLENBQUM7SUFDckQ7RUFBQztJQUFBek8sR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFtRjtNQUNqRixPQUFPLElBQUksQ0FBQ3NPLFNBQVMsQ0FBQ2MsYUFBYSxDQUFDOUosSUFBSSxDQUFDLElBQUksQ0FBQ2dKLFNBQVMsQ0FBQztJQUMxRDtFQUFDO0lBQUF2TyxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXNDO01BQ3BDLE9BQU8sSUFBSSxDQUFDc08sU0FBUyxDQUFDZSxRQUFRLENBQUMvSixJQUFJLENBQUMsSUFBSSxDQUFDZ0osU0FBUyxDQUFDO0lBQ3JEO0VBQUM7SUFBQXZPLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBZ0M7TUFDOUIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDc08sU0FBUyxDQUFDZ0IsTUFBTTtJQUNoQztFQUFDO0lBQUF2UCxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQTBGO01BQ3hGLE9BQU8sSUFBSSxDQUFDc08sU0FBUyxDQUFDaUIsYUFBYSxDQUFDakssSUFBSSxDQUFDLElBQUksQ0FBQ2dKLFNBQVMsQ0FBQztJQUMxRDtFQUFDO0lBQUF2TyxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXNGO01BQ3BGLE9BQU8sSUFBSSxDQUFDd08sT0FBTyxDQUFDZ0IsS0FBSyxDQUFDbEssSUFBSSxDQUFDLElBQUksQ0FBQ2tKLE9BQU8sQ0FBQztJQUM5QztFQUFDO0lBQUF6TyxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQStCO01BQzdCLE9BQU8sSUFBSSxDQUFDdU8sU0FBUyxDQUFDa0IsUUFBUTtJQUNoQztFQUFDO0lBQUExUCxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQTZCO01BQzNCLE9BQU8sSUFBSSxDQUFDdU8sU0FBUyxDQUFDbUIsTUFBTTtJQUM5QjtFQUFDO0lBQUEzUCxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQTJEO01BQ3pELE9BQU8sSUFBSSxDQUFDd0QsVUFBVSxDQUFDbU0sVUFBVTtJQUNuQztFQUFDO0lBQUE1UCxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQWlDO01BQy9CLE9BQU8sSUFBSSxDQUFDd0QsVUFBVSxDQUFDb00sTUFBTTtJQUMvQjtFQUFDO0lBQUE3UCxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXVDO01BQ3JDLE9BQU8sSUFBSSxDQUFDd08sT0FBTyxDQUFDLHNCQUFzQixDQUFDLElBQUksSUFBSSxDQUFDQSxPQUFPLENBQUMsZ0JBQWdCLENBQUM7SUFDL0U7RUFBQztJQUFBek8sR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUF1RjtNQUFBLElBQUFRLEtBQUE7TUFDckYsT0FBTyxJQUFJLENBQUNnRCxVQUFVLENBQUNxTSxVQUFVLEdBQzdCLFVBQUNDLEdBQUcsRUFBRUMsSUFBSTtRQUFBLE9BQUt2UCxLQUFJLENBQUNnRCxVQUFVLENBQUNxTSxVQUFVLENBQUVDLEdBQUcsRUFBRUMsSUFBSSxLQUFLNUosU0FBUyxHQUFHLElBQUksR0FBRzRKLElBQUksQ0FBQztNQUFBLElBQ2pGNUosU0FBUztJQUNmO0VBQUM7SUFBQXBHLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBc0Q7TUFDcEQsT0FBTyxJQUFJLENBQUN3TyxPQUFPLENBQUNwSixjQUFjLENBQUNFLElBQUksQ0FBQyxJQUFJLENBQUNrSixPQUFPLENBQUM7SUFDdkQ7RUFBQztJQUFBek8sR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUF5STtNQUN2SSxPQUFPLElBQUksQ0FBQ3NPLFNBQVMsQ0FBQ3JHLG1CQUFtQixDQUFDM0MsSUFBSSxDQUFDLElBQUksQ0FBQ2dKLFNBQVMsQ0FBQztJQUNoRTtFQUFDO0lBQUF2TyxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXdFO01BQ3RFLE9BQU8sSUFBSSxDQUFDd08sT0FBTyxDQUFDbEIscUJBQXFCLENBQUNoSSxJQUFJLENBQUMsSUFBSSxDQUFDa0osT0FBTyxDQUFDO0lBQzlEO0VBQUM7SUFBQXpPLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBdUk7TUFDckksT0FBTyxJQUFJLENBQUN3TyxPQUFPLENBQUN2RyxtQkFBbUIsQ0FBQzNDLElBQUksQ0FBQyxJQUFJLENBQUNrSixPQUFPLENBQUM7SUFDNUQ7RUFBQztJQUFBek8sR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUF3RjtNQUN0RixPQUFPLElBQUksQ0FBQ3dPLE9BQU8sQ0FBQ3dCLFdBQVcsQ0FBQzFLLElBQUksQ0FBQyxJQUFJLENBQUNrSixPQUFPLENBQUM7SUFDcEQ7RUFBQztJQUFBek8sR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUF1RjtNQUNyRixPQUFPLElBQUksQ0FBQ3dPLE9BQU8sQ0FBQ2pKLFVBQVUsQ0FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQ2tKLE9BQU8sQ0FBQztJQUNuRDtFQUFDO0lBQUF6TyxHQUFBO0lBQUFFLEtBQUEsRUE1SUQsU0FBY2dRLFdBQVdBLENBQUNDLG1CQUF5QyxFQUFRO01BQ3pFLE1BQU0sSUFBSXBMLEtBQUssQ0FBQyxxREFBcUQsQ0FBQztJQUN4RTtFQUFDO0lBQUEvRSxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFja1EsV0FBV0EsQ0FBQSxFQUFrQztNQUN6RCxPQUFPblIsV0FBVyxDQUFDb1IsaUJBQWlCO0lBQ3RDO0VBQUM7SUFBQXJRLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQWNvUSxTQUFTQSxDQUFDQyxRQUE4QyxFQUFlO01BQ25GLE9BQU90UixXQUFXLENBQUNvUixpQkFBaUIsQ0FBQ0MsU0FBUyxDQUFDQyxRQUFRLENBQUM7SUFDMUQ7RUFBQztBQUFBO0FBbUlGQyxZQUFBLEdBaEtZdlIsV0FBVztBQUFBUSxpRkFBQSxDQUFYUixXQUFXLGVBQ2MsSUFBSUcsbURBQU8sQ0FBZSxJQUFJSCxZQUFXLENBQUNpUCxrQkFBa0IsQ0FBQyxDQUFDO0FBQUF6TyxpRkFBQSxDQUR2RlIsV0FBVyx1QkFFcUQsSUFBSUksMkRBQWUsQ0FBQ0osWUFBVyxDQUFDd1IsU0FBUyxDQUFDO0FBZ0t2SCwrREFBZXhSLFdBQVcsQ0FBQ21SLFdBQVcsQ0FBQyxDQUFDLEU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMxTHhDO0FBQ0E7QUFDQTtBQUZBLElBTXFCbFIsVUFBVTtFQUk3QixTQUFBQSxXQUFZd1IsVUFBc0IsRUFBRTtJQUFBbFIsaUZBQUEsT0FBQU4sVUFBQTtJQUFBTyxpRkFBQTtJQUFBQSxpRkFBQTtJQUNsQyxJQUFJLENBQUNrUixTQUFTLEdBQUcsS0FBSztJQUN0QixJQUFJLENBQUNDLFdBQVcsR0FBR0YsVUFBVTtFQUMvQjtFQUFDLE9BQUEzUSw4RUFBQSxDQUFBYixVQUFBO0lBQUFjLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQUFLLE9BQU9BLENBQUEsRUFBUztNQUNkLElBQUksSUFBSSxDQUFDb1EsU0FBUyxFQUFFO1FBQ2xCO01BQ0Y7TUFFQSxJQUFJLENBQUNBLFNBQVMsR0FBRyxJQUFJO01BRXJCLE9BQU8sSUFBSSxDQUFDQyxXQUFXLENBQUNDLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDcEM7RUFBQztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3ZCSDtBQUNBO0FBQ0E7QUFGQSxJQU1xQjFSLGNBQWM7RUFBQSxTQUFBQSxlQUFBO0lBQUFLLGlGQUFBLE9BQUFMLGNBQUE7SUFBQU0saUZBQUEsZ0JBQ08sRUFBRTtFQUFBO0VBQUEsT0FBQU0sOEVBQUEsQ0FBQVosY0FBQTtJQUFBYSxHQUFBO0lBQUFFLEtBQUEsRUFFMUMsU0FBQWMsR0FBR0EsQ0FBQzBQLFVBQXVCLEVBQVE7TUFDakMsSUFBSSxDQUFDSSxLQUFLLENBQUN0SCxJQUFJLENBQUNrSCxVQUFVLENBQUM7SUFDN0I7RUFBQztJQUFBMVEsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQUssT0FBT0EsQ0FBQSxFQUFTO01BQ2QsSUFBSSxDQUFDdVEsS0FBSyxDQUFDQyxPQUFPLENBQUMsVUFBQUwsVUFBVTtRQUFBLE9BQUlBLFVBQVUsQ0FBQ25RLE9BQU8sQ0FBQyxDQUFDO01BQUEsRUFBQztNQUN0RCxJQUFJLENBQUN1USxLQUFLLENBQUN0RyxNQUFNLEdBQUcsQ0FBQztJQUN2QjtFQUFDO0lBQUF4SyxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBOFEsUUFBUUEsQ0FBQSxFQUFXO01BQ2pCLHFDQUFBOU4sTUFBQSxDQUFxQyxJQUFJLENBQUM0TixLQUFLLENBQUN0RyxNQUFNO0lBQ3hEO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDcEJIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQU15Ryx3QkFBd0IsR0FBRyxFQUFFO0FBQUMsSUFFZkMsT0FBTztFQTRDMUIsU0FBQUEsUUFBQSxFQUFzQjtJQUFBMVIsaUZBQUEsT0FBQTBSLE9BQUE7SUFDcEIsTUFBTSxJQUFJbk0sS0FBSyxDQUFDLHdEQUF3RCxDQUFDO0VBQzNFO0VBQUMsT0FBQWhGLDhFQUFBLENBQUFtUixPQUFBO0lBQUFsUixHQUFBO0lBQUFFLEtBQUEsRUE3Q0QsU0FBT2lSLGlCQUFpQkEsQ0FBQ2pSLEtBQWEsRUFBVTtNQUM5QyxJQUFJa1IseUJBQXlCLEdBQUcsQ0FBQztNQUNqQyxJQUFJQyxNQUFNLEdBQUduUixLQUFLO01BRWxCLElBQUltUixNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ2RBLE1BQU0sSUFBSSxDQUFDLENBQUM7UUFDWkQseUJBQXlCLEVBQUU7TUFDN0I7TUFFQSxPQUFPRixPQUFPLENBQUNJLHdCQUF3QixDQUFDRCxNQUFNLENBQUMsR0FBR0QseUJBQXlCLElBQUlDLE1BQU0sS0FBS0UsSUFBSSxDQUFDQyxLQUFLLENBQUNILE1BQU0sQ0FBQyxHQUFHSCxPQUFPLENBQUNPLHVCQUF1QixDQUFDSixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pLO0VBQUM7SUFBQXJSLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQWV3UixXQUFXQSxDQUFDeFIsS0FBYSxFQUFFeVIsU0FBaUIsRUFBVTtNQUNuRSxJQUFNQyxLQUFLLEdBQUdMLElBQUksQ0FBQ00sR0FBRyxDQUFDLEVBQUUsRUFBRUYsU0FBUyxDQUFDO01BRXJDLE9BQU9KLElBQUksQ0FBQ08sS0FBSyxDQUFDNVIsS0FBSyxHQUFHMFIsS0FBSyxDQUFDLEdBQUdBLEtBQUs7SUFDMUM7RUFBQztJQUFBNVIsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBZW9SLHdCQUF3QkEsQ0FBQ3BSLEtBQWEsRUFBVTtNQUM3RCxJQUFJNlIsbUJBQW1CLEdBQUcsQ0FBQztNQUMzQixJQUFJVixNQUFNLEdBQUduUixLQUFLO01BRWxCLE9BQU9tUixNQUFNLElBQUksRUFBRSxFQUFFO1FBQ25CQSxNQUFNLEdBQUdBLE1BQU0sR0FBRyxFQUFFO1FBQ3BCVSxtQkFBbUIsRUFBRTtNQUN2QjtNQUVBLE9BQU9BLG1CQUFtQjtJQUM1QjtFQUFDO0lBQUEvUixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFldVIsdUJBQXVCQSxDQUFDdlIsS0FBYSxFQUFVO01BQzVELElBQU04UixhQUFhLEdBQUc5UixLQUFLO01BQzNCLElBQUkrUixhQUFhLEdBQUdWLElBQUksQ0FBQ0MsS0FBSyxDQUFDdFIsS0FBSyxDQUFDO01BQ3JDLElBQUlnUyxLQUFLLEdBQUcsQ0FBQztNQUViLE9BQU9ELGFBQWEsS0FBS0QsYUFBYSxJQUFJRSxLQUFLLEdBQUdqQix3QkFBd0IsRUFBRTtRQUMxRWlCLEtBQUssRUFBRTtRQUNQRCxhQUFhLEdBQUdmLE9BQU8sQ0FBQ1EsV0FBVyxDQUFDTSxhQUFhLEVBQUVFLEtBQUssQ0FBQztNQUMzRDtNQUVBLE9BQU9BLEtBQUs7SUFDZDtFQUFDO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2pESDtBQUNBO0FBQ0E7QUFGQSxJQUlxQkMsT0FBTztFQWExQixTQUFBQSxRQUFBLEVBQXNCO0lBQUEzUyxpRkFBQSxPQUFBMlMsT0FBQTtJQUNwQixNQUFNLElBQUlwTixLQUFLLENBQUMsd0RBQXdELENBQUM7RUFDM0U7RUFBQyxPQUFBaEYsOEVBQUEsQ0FBQW9TLE9BQUE7SUFBQW5TLEdBQUE7SUFBQUUsS0FBQSxFQWRELFNBQU9rUyxNQUFNQSxDQUFDNUgsTUFBYyxFQUFVO01BQ3BDLElBQU02SCxrQkFBa0IsR0FBRyxTQUFyQkEsa0JBQWtCQSxDQUFBLEVBQWlCO1FBQ3ZDLE9BQU9kLElBQUksQ0FBQ2EsTUFBTSxDQUFDLENBQUMsQ0FBQ3BCLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQzVOLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO01BQ3BELENBQUM7TUFFRCxJQUFNa1AsS0FBYSxHQUFHZixJQUFJLENBQUNnQixJQUFJLENBQUMvSCxNQUFNLEdBQUcsRUFBRSxDQUFDO01BRTVDLE9BQU8sSUFBSWdJLEtBQUssQ0FBQ0YsS0FBSyxDQUFDLENBQUNHLElBQUksQ0FBQ0osa0JBQWtCLENBQUMsQ0FBQ0ssTUFBTSxDQUFDLFVBQUNDLE1BQU0sRUFBRUMsSUFBSSxFQUFLO1FBQ3hFLE9BQU9ELE1BQU0sR0FBR0MsSUFBSSxDQUFDLENBQUM7TUFDeEIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDeFAsU0FBUyxDQUFDLENBQUMsRUFBRW9ILE1BQU0sQ0FBQztJQUM3QjtFQUFDO0FBQUE7Ozs7Ozs7Ozs7OztBQ2ZIO0FBQ0E7QUFDQTs7QUFFTyxTQUFTcUksaUJBQWlCQSxDQUFDQyxDQUFRLEVBQVM7RUFDakQsTUFBTSxJQUFJL04sS0FBSyxzQkFBQTdCLE1BQUEsQ0FBc0I0UCxDQUFDLG9DQUFpQyxDQUFDO0FBQzFFO0FBRUEsK0RBQWVELGlCQUFpQixFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDUmhDO0FBQ0E7QUFDQTtBQUZBLElBTXFCRSxTQUFTO0VBQUEsU0FBQUEsVUFBQTtJQUFBdlQsaUZBQUEsT0FBQXVULFNBQUE7SUFBQXRULGlGQUFBLHFCQUNXLEVBQUU7RUFBQTtFQUFBLE9BQUFNLDhFQUFBLENBQUFnVCxTQUFBO0lBQUEvUyxHQUFBO0lBQUFDLEdBQUEsRUFFekMsU0FBQUEsSUFBQSxFQUE4QjtNQUM1QixPQUFPLElBQUksQ0FBQytTLFVBQVU7SUFDeEI7RUFBQztJQUFBaFQsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQWMsR0FBR0EsQ0FBQ2lTLFFBQW1CLEVBQVE7TUFDN0IsSUFBSSxDQUFDRCxVQUFVLENBQUN4SixJQUFJLENBQUN5SixRQUFRLENBQUM7SUFDaEM7RUFBQztJQUFBalQsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQWdULE1BQU1BLENBQUNELFFBQW1CLEVBQVE7TUFDaEMsSUFBSSxDQUFDRCxVQUFVLEdBQUcsSUFBSSxDQUFDQSxVQUFVLENBQUNOLE1BQU0sQ0FBQyxVQUFDUyxLQUFLLEVBQUVDLElBQUksRUFBSztRQUN4RCxJQUFJLEVBQUVBLElBQUksS0FBS0gsUUFBUSxDQUFDLEVBQUU7VUFDeEJFLEtBQUssQ0FBQzNKLElBQUksQ0FBQzRKLElBQUksQ0FBQztRQUNsQjtRQUVBLE9BQU9ELEtBQUs7TUFDZCxDQUFDLEVBQUUsRUFBc0IsQ0FBQztJQUM1QjtFQUFDO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3pCSDtBQUNBO0FBQ0E7O0FBR3NDO0FBQUEsSUFFakJHLGVBQWU7RUFtQmxDLFNBQUFBLGdCQUFZQyxTQUF1QixFQUFFO0lBQUEvVCxpRkFBQSxPQUFBOFQsZUFBQTtJQUFBN1QsaUZBQUE7SUFDbkMsSUFBSSxDQUFDK1QsVUFBVSxHQUFHRCxTQUFTO0VBQzdCO0VBQUMsT0FBQXhULDhFQUFBLENBQUF1VCxlQUFBO0lBQUF0VCxHQUFBO0lBQUFFLEtBQUEsRUFsQkQsU0FBQXVULEdBQUdBLENBQUNDLFFBQXNCLEVBQUVDLE9BQWUsRUFBRUMsUUFBZ0IsRUFBRUMsSUFBVSxFQUFRO01BQy9FLElBQUlILFFBQVEsR0FBRyxJQUFJLENBQUNGLFVBQVUsRUFBRTtRQUM5QjtNQUNGO01BRUEsSUFBTU0sV0FBVyxNQUFBNVEsTUFBQSxDQUFNMlEsSUFBSSxDQUFDRSxXQUFXLENBQUMsQ0FBQyxRQUFBN1EsTUFBQSxDQUFLMFEsUUFBUSxTQUFBMVEsTUFBQSxDQUFNbVEsaURBQVksQ0FBQ0ssUUFBUSxDQUFDLFFBQUF4USxNQUFBLENBQUt5USxPQUFPLENBQUU7TUFFaEcsSUFBSUQsUUFBUSxHQUFHTCxpREFBWSxDQUFDVyxJQUFJLEVBQUU7UUFDaENDLE9BQU8sQ0FBQ1IsR0FBRyxDQUFDSyxXQUFXLENBQUM7UUFFeEI7TUFDRjtNQUVBRyxPQUFPLENBQUM3SixLQUFLLENBQUMwSixXQUFXLENBQUM7SUFDNUI7RUFBQztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDeEJIO0FBQ0E7QUFDQTs7QUFFQTs7QUFJaUU7QUFFMUQsSUFBS1QsWUFBWSwwQkFBWkEsWUFBWTtFQUFaQSxZQUFZLENBQVpBLFlBQVk7RUFBWkEsWUFBWSxDQUFaQSxZQUFZO0VBQVpBLFlBQVksQ0FBWkEsWUFBWTtFQUFaQSxZQUFZLENBQVpBLFlBQVk7RUFBWkEsWUFBWSxDQUFaQSxZQUFZO0VBQVpBLFlBQVksQ0FBWkEsWUFBWTtFQUFaQSxZQUFZLENBQVpBLFlBQVk7RUFBWkEsWUFBWSxDQUFaQSxZQUFZO0VBQUEsT0FBWkEsWUFBWTtBQUFBO0FBU3ZCLElBSW9CYSxNQUFNO0VBa016QixTQUFBQSxPQUFZTixRQUFnQixFQUFFTyxTQUFvQixFQUFFWixTQUEyQixFQUFFO0lBQUEvVCxpRkFBQSxPQUFBMFUsTUFBQTtJQUFBelUsaUZBQUE7SUFBQUEsaUZBQUE7SUFBQUEsaUZBQUE7SUFDL0UsSUFBSSxDQUFDMlUsU0FBUyxHQUFHUixRQUFRO0lBQ3pCLElBQUksQ0FBQ1osVUFBVSxHQUFHbUIsU0FBUztJQUMzQixJQUFJLENBQUNYLFVBQVUsR0FBR0QsU0FBUztFQUM3QjtFQUFDLE9BQUF4VCw4RUFBQSxDQUFBbVUsTUFBQTtJQUFBbFUsR0FBQTtJQUFBQyxHQUFBLEVBak1ELFNBQUFBLElBQUEsRUFBdUI7TUFDckIsT0FBTyxJQUFJLENBQUNtVSxTQUFTO0lBQ3ZCO0VBQUM7SUFBQXBVLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBMkI7TUFDekIsT0FBTyxJQUFJLENBQUMrUyxVQUFVO0lBQ3hCO0VBQUM7SUFBQWhULEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBa0M7TUFDaEMsT0FBTyxJQUFJLENBQUN1VCxVQUFVO0lBQ3hCO0VBQUM7SUFBQXhULEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQUFtVSxLQUFLQSxDQUFBLEVBQXFCO01BQ3hCLElBQUksQ0FBQyxJQUFJLENBQUNiLFVBQVUsQ0FBQ3RULEtBQUssSUFBSSxJQUFJLENBQUNzVCxVQUFVLENBQUN0VCxLQUFLLEdBQUdtVCxZQUFZLENBQUNpQixLQUFLLEVBQUU7UUFDeEU7TUFDRjtNQUFDLFNBQUFDLElBQUEsR0FBQUMsU0FBQSxDQUFBaEssTUFBQSxFQUhNaUssSUFBSSxPQUFBakMsS0FBQSxDQUFBK0IsSUFBQSxHQUFBRyxJQUFBLE1BQUFBLElBQUEsR0FBQUgsSUFBQSxFQUFBRyxJQUFBO1FBQUpELElBQUksQ0FBQUMsSUFBQSxJQUFBRixTQUFBLENBQUFFLElBQUE7TUFBQTtNQUtYLElBQUksQ0FBQ2pCLEdBQUcsQ0FBQ0osWUFBWSxDQUFDaUIsS0FBSyxFQUFFRyxJQUFJLENBQUM7SUFDcEM7RUFBQztJQUFBelUsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQXlVLEtBQUtBLENBQUEsRUFBcUI7TUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQ25CLFVBQVUsQ0FBQ3RULEtBQUssSUFBSSxJQUFJLENBQUNzVCxVQUFVLENBQUN0VCxLQUFLLEdBQUdtVCxZQUFZLENBQUN1QixLQUFLLEVBQUU7UUFDeEU7TUFDRjtNQUFDLFNBQUFDLEtBQUEsR0FBQUwsU0FBQSxDQUFBaEssTUFBQSxFQUhNaUssSUFBSSxPQUFBakMsS0FBQSxDQUFBcUMsS0FBQSxHQUFBQyxLQUFBLE1BQUFBLEtBQUEsR0FBQUQsS0FBQSxFQUFBQyxLQUFBO1FBQUpMLElBQUksQ0FBQUssS0FBQSxJQUFBTixTQUFBLENBQUFNLEtBQUE7TUFBQTtNQUtYLElBQUksQ0FBQ3JCLEdBQUcsQ0FBQ0osWUFBWSxDQUFDdUIsS0FBSyxFQUFFSCxJQUFJLENBQUM7SUFDcEM7RUFBQztJQUFBelUsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQTBKLElBQUlBLENBQUEsRUFBcUI7TUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQzRKLFVBQVUsQ0FBQ3RULEtBQUssSUFBSSxJQUFJLENBQUNzVCxVQUFVLENBQUN0VCxLQUFLLEdBQUdtVCxZQUFZLENBQUMwQixJQUFJLEVBQUU7UUFDdkU7TUFDRjtNQUFDLFNBQUFDLEtBQUEsR0FBQVIsU0FBQSxDQUFBaEssTUFBQSxFQUhLaUssSUFBSSxPQUFBakMsS0FBQSxDQUFBd0MsS0FBQSxHQUFBQyxLQUFBLE1BQUFBLEtBQUEsR0FBQUQsS0FBQSxFQUFBQyxLQUFBO1FBQUpSLElBQUksQ0FBQVEsS0FBQSxJQUFBVCxTQUFBLENBQUFTLEtBQUE7TUFBQTtNQUtWLElBQUksQ0FBQ3hCLEdBQUcsQ0FBQ0osWUFBWSxDQUFDMEIsSUFBSSxFQUFFTixJQUFJLENBQUM7SUFDbkM7RUFBQztJQUFBelUsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQWdWLElBQUlBLENBQUEsRUFBcUI7TUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQzFCLFVBQVUsQ0FBQ3RULEtBQUssSUFBSSxJQUFJLENBQUNzVCxVQUFVLENBQUN0VCxLQUFLLEdBQUdtVCxZQUFZLENBQUNXLElBQUksRUFBRTtRQUN2RTtNQUNGO01BQUMsU0FBQW1CLEtBQUEsR0FBQVgsU0FBQSxDQUFBaEssTUFBQSxFQUhLaUssSUFBSSxPQUFBakMsS0FBQSxDQUFBMkMsS0FBQSxHQUFBQyxLQUFBLE1BQUFBLEtBQUEsR0FBQUQsS0FBQSxFQUFBQyxLQUFBO1FBQUpYLElBQUksQ0FBQVcsS0FBQSxJQUFBWixTQUFBLENBQUFZLEtBQUE7TUFBQTtNQUtWLElBQUksQ0FBQzNCLEdBQUcsQ0FBQ0osWUFBWSxDQUFDVyxJQUFJLEVBQUVTLElBQUksQ0FBQztJQUNuQztFQUFDO0lBQUF6VSxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBa0ssS0FBS0EsQ0FBQSxFQUFxQjtNQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDb0osVUFBVSxDQUFDdFQsS0FBSyxJQUFJLElBQUksQ0FBQ3NULFVBQVUsQ0FBQ3RULEtBQUssR0FBR21ULFlBQVksQ0FBQ3RPLEtBQUssRUFBRTtRQUN4RTtNQUNGO01BQUMsU0FBQXNRLEtBQUEsR0FBQWIsU0FBQSxDQUFBaEssTUFBQSxFQUhNaUssSUFBSSxPQUFBakMsS0FBQSxDQUFBNkMsS0FBQSxHQUFBQyxLQUFBLE1BQUFBLEtBQUEsR0FBQUQsS0FBQSxFQUFBQyxLQUFBO1FBQUpiLElBQUksQ0FBQWEsS0FBQSxJQUFBZCxTQUFBLENBQUFjLEtBQUE7TUFBQTtNQUtYLElBQUksQ0FBQzdCLEdBQUcsQ0FBQ0osWUFBWSxDQUFDdE8sS0FBSyxFQUFFMFAsSUFBSSxDQUFDO0lBQ3BDO0VBQUM7SUFBQXpVLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQUFxVixLQUFLQSxDQUFBLEVBQXFCO01BQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMvQixVQUFVLENBQUN0VCxLQUFLLElBQUksSUFBSSxDQUFDc1QsVUFBVSxDQUFDdFQsS0FBSyxHQUFHbVQsWUFBWSxDQUFDbUMsS0FBSyxFQUFFO1FBQ3hFO01BQ0Y7TUFBQyxTQUFBQyxLQUFBLEdBQUFqQixTQUFBLENBQUFoSyxNQUFBLEVBSE1pSyxJQUFJLE9BQUFqQyxLQUFBLENBQUFpRCxLQUFBLEdBQUFDLEtBQUEsTUFBQUEsS0FBQSxHQUFBRCxLQUFBLEVBQUFDLEtBQUE7UUFBSmpCLElBQUksQ0FBQWlCLEtBQUEsSUFBQWxCLFNBQUEsQ0FBQWtCLEtBQUE7TUFBQTtNQUtYLElBQUksQ0FBQ2pDLEdBQUcsQ0FBQ0osWUFBWSxDQUFDbUMsS0FBSyxFQUFFZixJQUFJLENBQUM7SUFDcEM7RUFBQztJQUFBelUsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBUXVULEdBQUdBLENBQUNrQyxLQUFhLEVBQUVsQixJQUFTLEVBQVE7TUFBQSxJQUFBaFUsS0FBQTtNQUMxQyxJQUFNb1QsSUFBSSxHQUFHLElBQUluVSxJQUFJLENBQUMsQ0FBQztNQUN2QixJQUFNaVUsT0FBTyxHQUFHLElBQUksQ0FBQ2lDLG1CQUFtQixDQUFDbkIsSUFBSSxDQUFDO01BRTlDLElBQUksQ0FBQ3pCLFVBQVUsQ0FBQzlTLEtBQUssQ0FBQzZRLE9BQU8sQ0FBQyxVQUFDa0MsUUFBbUIsRUFBSztRQUNyREEsUUFBUSxDQUFDUSxHQUFHLENBQUNrQyxLQUFLLEVBQUVoQyxPQUFPLEVBQUVsVCxLQUFJLENBQUNtVCxRQUFRLEVBQUVDLElBQUksQ0FBQztNQUNuRCxDQUFDLENBQUM7SUFDSjtFQUFDO0lBQUE3VCxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFRMFYsbUJBQW1CQSxDQUFDbkIsSUFBUyxFQUFVO01BQUEsSUFBQW9CLE1BQUE7TUFDN0MsSUFBSUMseUJBQXlCLEdBQUdyQixJQUFJLENBQUMsQ0FBQyxDQUFDO01BQ3ZDLElBQUlzQixLQUFLLEdBQUcsQ0FBQztNQUViLE9BQU9ELHlCQUF5QixDQUFDN1MsT0FBTyxJQUFJd1IsSUFBSSxDQUFDakssTUFBTSxHQUFHLENBQUMsSUFBSXVMLEtBQUssSUFBSSxDQUFDLEVBQUU7UUFDekVBLEtBQUssR0FBR0QseUJBQXlCLENBQUM3UyxPQUFPLENBQUMsR0FBRyxFQUFFOFMsS0FBSyxDQUFDO1FBRXJELElBQUlBLEtBQUssR0FBRyxDQUFDLEVBQUU7VUFDYixJQUFNdE8sSUFBSSxHQUFHcU8seUJBQXlCLENBQUMxUyxTQUFTLENBQUMyUyxLQUFLLEdBQUcsQ0FBQyxFQUFFQSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1VBRXRFLFFBQVF0TyxJQUFJO1lBQ1YsS0FBSyxHQUFHO2NBQ047Y0FDQXFPLHlCQUF5QixHQUFHQSx5QkFBeUIsQ0FBQzFTLFNBQVMsQ0FBQyxDQUFDLEVBQUUyUyxLQUFLLENBQUMsR0FBR0QseUJBQXlCLENBQUMxUyxTQUFTLENBQUMyUyxLQUFLLEdBQUcsQ0FBQyxDQUFDO2NBQzFIQSxLQUFLLEVBQUU7Y0FFUDtZQUNGLEtBQUssR0FBRztZQUNSLEtBQUssR0FBRztjQUNOO2NBQ0F0QixJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUdxQix5QkFBeUIsR0FBRyxJQUFJLENBQUNFLGVBQWUsQ0FDeEQsSUFBSSxDQUFDaEYsUUFBUSxDQUFDeUQsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ3RCcUIseUJBQXlCLEVBQ3pCQyxLQUNGLENBQUM7Y0FDRHRCLElBQUksQ0FBQ3dCLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2NBRWpCO1lBQ0YsS0FBSyxHQUFHO2NBQ047Y0FDQXhCLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBR3FCLHlCQUF5QixHQUFHLElBQUksQ0FBQ0UsZUFBZSxDQUN4RCxJQUFJLENBQUNFLFNBQVMsQ0FBQ3pCLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUN2QnFCLHlCQUF5QixFQUN6QkMsS0FDRixDQUFDO2NBRUR0QixJQUFJLENBQUN3QixNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztjQUVqQjtZQUNGO2NBQ0UsT0FBT3hCLElBQUksQ0FBQ3pELFFBQVEsQ0FBQyxDQUFDO1VBQzFCO1FBQ0Y7TUFDRjtNQUVBLElBQUl5RCxJQUFJLENBQUNqSyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ25CaUssSUFBSSxHQUFHQSxJQUFJLENBQUMvQixNQUFNLENBQUMsVUFBQ3lELFdBQW1CLEVBQUVDLFlBQTRCLEVBQUVMLEtBQWEsRUFBRU0sS0FBZSxFQUFLO1VBQ3hHLElBQUlOLEtBQUssR0FBRyxDQUFDLEtBQUtNLEtBQUssQ0FBQzdMLE1BQU0sSUFBSTRMLFlBQVksWUFBWXJSLEtBQUssRUFBRTtZQUMvRCxJQUFJSCxzRUFBaUIsQ0FBQzBSLDZCQUE2QixFQUFFO2NBQ25ELE9BQU9ILFdBQVcsR0FBRyxJQUFJLEdBQUdOLE1BQUksQ0FBQzdFLFFBQVEsQ0FBQ29GLFlBQVksQ0FBQ0csS0FBSyxDQUFDO1lBQy9EO1lBRUEsT0FBT0osV0FBVyxHQUFHLElBQUksR0FBR04sTUFBSSxDQUFDN0UsUUFBUSxDQUFDb0YsWUFBWSxDQUFDekMsT0FBTyxDQUFDLEdBQUcsSUFBSSxHQUFHa0MsTUFBSSxDQUFDN0UsUUFBUSxDQUFDb0YsWUFBWSxDQUFDRyxLQUFLLENBQUM7VUFDNUc7VUFFQSxPQUFPSixXQUFXLE9BQUFqVCxNQUFBLENBQU8yUyxNQUFJLENBQUM3RSxRQUFRLENBQUNvRixZQUFZLENBQUMsTUFBRztRQUN6RCxDQUFDLENBQUM7TUFDSjtNQUVBLE9BQU8zQixJQUFJLENBQUN6RCxRQUFRLENBQUMsQ0FBQztJQUN4QjtFQUFDO0lBQUFoUixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFRZ1csU0FBU0EsQ0FBQ00sR0FBUSxFQUFVO01BQ2xDLElBQU1DLEtBQWUsR0FBRyxFQUFFO01BRTFCLElBQUk7UUFDRixPQUFPL0wsSUFBSSxDQUFDd0wsU0FBUyxDQUNuQk0sR0FBRyxZQUFZelIsS0FBSyxHQUFHLElBQUksQ0FBQ2lNLFFBQVEsQ0FBQ3dGLEdBQUcsQ0FBQyxHQUFHQSxHQUFHLEVBQy9DLFVBQUNFLENBQUMsRUFBRXhXLEtBQUssRUFBSztVQUNaLElBQUksQ0FBQyxDQUFDQSxLQUFLLElBQUlBLEtBQUssWUFBWXlXLE1BQU0sRUFBRTtZQUN0QyxJQUFJRixLQUFLLENBQUM5UyxRQUFRLENBQUN6RCxLQUFLLENBQUMsRUFBRTtjQUN6QixPQUFPLGFBQWE7WUFDdEI7WUFFQXVXLEtBQUssQ0FBQ2pOLElBQUksQ0FBQ3RKLEtBQUssQ0FBQztVQUNuQjtVQUVBLE9BQU9BLEtBQUs7UUFDZCxDQUFDLEVBQ0QsQ0FDRixDQUFDO01BQ0gsQ0FBQyxDQUFDLE9BQU8wSyxDQUFDLEVBQUU7UUFDVixPQUFPLGlDQUFpQztNQUMxQztJQUNGO0VBQUM7SUFBQTVLLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQVE4VixlQUFlQSxDQUFDWSxRQUFhLEVBQUVkLHlCQUFpQyxFQUFFQyxLQUFhLEVBQVU7TUFDL0YsT0FBT0QseUJBQXlCLENBQUMxUyxTQUFTLENBQUMsQ0FBQyxFQUFFMlMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDL0UsUUFBUSxDQUFDNEYsUUFBUSxDQUFDLEdBQUdkLHlCQUF5QixDQUFDMVMsU0FBUyxDQUFDMlMsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNqSTtFQUFDO0lBQUEvVixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFROFEsUUFBUUEsQ0FBQ2hCLElBQVMsRUFBVTtNQUNsQyxJQUFJLE9BQU9BLElBQUksS0FBSyxRQUFRLEVBQUU7UUFDNUIsT0FBT0EsSUFBSTtNQUNiO01BRUEsSUFBSSxPQUFPQSxJQUFJLEtBQUssU0FBUyxFQUFFO1FBQzdCLE9BQU9BLElBQUksR0FBRyxNQUFNLEdBQUcsT0FBTztNQUNoQztNQUVBLElBQUksT0FBT0EsSUFBSSxLQUFLLFFBQVEsRUFBRTtRQUM1QixPQUFPQSxJQUFJLENBQUNnQixRQUFRLENBQUMsQ0FBQztNQUN4QjtNQUVBLElBQUk2RixXQUFXLEdBQUcsRUFBRTtNQUVwQixJQUFJN0csSUFBSSxFQUFFO1FBQ1IsSUFBSSxPQUFPQSxJQUFJLEtBQUssVUFBVSxFQUFFO1VBQzlCNkcsV0FBVyxHQUFHN0csSUFBSSxDQUFDZ0IsUUFBUSxDQUFDLENBQUM7UUFDL0IsQ0FBQyxNQUFNLElBQUloQixJQUFJLFlBQVkyRyxNQUFNLEVBQUU7VUFDakMsSUFBSTtZQUNGRSxXQUFXLEdBQUc3RyxJQUFJLENBQUNnQixRQUFRLENBQUMsQ0FBQztVQUMvQixDQUFDLENBQUMsT0FBT3BHLENBQUMsRUFBRTtZQUNWaU0sV0FBVyxHQUFHLDZCQUE2QjtVQUM3QztRQUNGO01BQ0Y7TUFFQSxPQUFPQSxXQUFXO0lBQ3BCO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN2Tkg7QUFDQTtBQUNBOztBQUV5RDtBQUNYO0FBQUEsSUFFekI5UyxjQUFjO0VBQUEsU0FBQUEsZUFBQTtJQUFBdkUsaUZBQUEsT0FBQXVFLGNBQUE7RUFBQTtFQUFBLE9BQUFoRSw4RUFBQSxDQUFBZ0UsY0FBQTtJQUFBL0QsR0FBQTtJQUFBQyxHQUFBLEVBQ2pDLFNBQUFBLElBQUEsRUFBK0M7TUFDN0MsT0FBT29ULHdEQUFZLENBQUNoSSxrRUFBYSxDQUFDUyxRQUFRLENBQUM7SUFDN0M7RUFBQztJQUFBOUwsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFzRDtNQUNwRCxPQUFPb1Qsd0RBQVksQ0FBQ2hJLGtFQUFhLENBQUNXLFlBQVksQ0FBQztJQUNqRDtFQUFDO0lBQUFoTSxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXdEO01BQ3RELE9BQU9vVCx3REFBWSxDQUFDMEIsSUFBSTtJQUMxQjtFQUFDO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNsQkg7QUFDQTtBQUNBOztBQUdnRTtBQUM1QjtBQUNjO0FBQ0Y7QUFDYztBQUNXO0FBQ007QUFDakM7QUFBQSxJQUV6QnpNLGFBQWE7RUE0RGhDLFNBQUFBLGNBQUEsRUFBc0I7SUFBQTlJLGlGQUFBLE9BQUE4SSxhQUFBO0lBQ3BCLE1BQU0sSUFBSXZELEtBQUssQ0FBQyw4REFBOEQsQ0FBQztFQUNqRjtFQUFDLE9BQUFoRiw4RUFBQSxDQUFBdUksYUFBQTtJQUFBdEksR0FBQTtJQUFBQyxHQUFBLEVBeERELFNBQUFBLElBQUEsRUFBNEQ7TUFDMUQsT0FBT3FJLGFBQWEsQ0FBQzRPLHVCQUF1QjtJQUM5QztFQUFDO0lBQUFsWCxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFPdUksU0FBU0EsQ0FBQ21MLFFBQWdCLEVBQVc7TUFDMUMsSUFBSSxPQUFPQSxRQUFRLEtBQUssUUFBUSxFQUFFO1FBQ2hDQSxRQUFRLEdBQUcsS0FBSztNQUNsQjtNQUVBLElBQU11RCxNQUFNLEdBQUc3TyxhQUFhLENBQUM4TyxRQUFRLENBQUN4RCxRQUFRLENBQUM7TUFFL0MsSUFBSXVELE1BQU0sRUFBRTtRQUNWLE9BQU9BLE1BQU07TUFDZjtNQUVBLE9BQU83TyxhQUFhLENBQUM4TyxRQUFRLENBQUN4RCxRQUFRLENBQUMsR0FBRyxJQUFJTSwrQ0FBTSxDQUFDTixRQUFRLEVBQUUsSUFBSSxDQUFDWixVQUFVLEVBQUUsSUFBSSxDQUFDUSxVQUFVLENBQUM7SUFDbEc7RUFBQztJQUFBeFQsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBT21YLDJDQUEyQ0EsQ0FBQSxFQUFTO01BQ3pEL08sYUFBYSxDQUFDZ1AsaUJBQWlCLENBQUMsQ0FBQztNQUNqQ2hQLGFBQWEsQ0FBQ2lQLHlCQUF5QixDQUFDLFNBQVMsRUFBRWpQLGFBQWEsQ0FBQ2tQLGtCQUFrQixDQUFDalMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO01BQy9GK0MsYUFBYSxDQUFDaVAseUJBQXlCLENBQUMsV0FBVyxFQUFFalAsYUFBYSxDQUFDbVAsb0JBQW9CLENBQUNsUyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckc7RUFBQztJQUFBdkYsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBZW9YLGlCQUFpQkEsQ0FBQSxFQUFTO01BQ3ZDLElBQU1JLGNBQWMsR0FBR1QseUVBQTRCLENBQUNoVCxjQUFjLENBQUMsc0JBQXNCLENBQXFCO01BRTlHLElBQUlvUCxpREFBWSxDQUFDcUUsY0FBYyxDQUFDLEVBQUU7UUFDaEMsSUFBSSxDQUFDbEUsVUFBVSxDQUFDbUUsWUFBWSxDQUFDdEUsaURBQVksQ0FBQ3FFLGNBQWMsQ0FBQyxDQUFDO01BQzVEO01BRUE7SUFDRjtFQUFDO0lBQUExWCxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFlcVgseUJBQXlCQSxDQUFDclQsSUFBWSxFQUFFMFQsYUFBNEMsRUFBUTtNQUN6RyxJQUFNRixjQUFjLEdBQUdULHlFQUE0QixDQUFDaFQsY0FBYyxXQUFBZixNQUFBLENBQVdnQixJQUFJLG1CQUFnQixDQUFxQjtNQUV0SCxJQUFJd1QsY0FBYyxLQUFLLEtBQUssRUFBRTtRQUM1QjtNQUNGO01BRUFFLGFBQWEsQ0FBQ3ZFLGlEQUFZLENBQUNxRSxjQUFjLENBQUMsQ0FBQztJQUM3QztFQUFDO0lBQUExWCxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFlc1gsa0JBQWtCQSxDQUFDN0IsS0FBbUIsRUFBUTtNQUMzRCxJQUFJLENBQUMzQyxVQUFVLENBQUNoUyxHQUFHLENBQUMsSUFBSXNTLHdEQUFlLENBQUNxQyxLQUFLLElBQUk1Uix3REFBYyxDQUFDVywwQkFBMEIsQ0FBQyxDQUFDO0lBQzlGO0VBQUM7SUFBQTFFLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQWV1WCxvQkFBb0JBLENBQUM5QixLQUFtQixFQUFRO01BQzdELElBQUksQ0FBQ3VCLHVCQUF1QixDQUFDM0QsU0FBUyxHQUFHb0MsS0FBSyxJQUFJNVIsd0RBQWMsQ0FBQ1ksNEJBQTRCO01BRTdGLElBQUksQ0FBQ3FPLFVBQVUsQ0FBQ2hTLEdBQUcsQ0FBQyxJQUFJK1YsbUVBQWlCLENBQUMsSUFBSSxDQUFDRyx1QkFBdUIsQ0FBQyxDQUFDO0lBQzFFO0VBQUM7QUFBQTtBQUFBelgsaUZBQUEsQ0ExRGtCNkksYUFBYSxjQUN5QixDQUFDLENBQUM7QUFBQTdJLGlGQUFBLENBRHhDNkksYUFBYSxnQkFFTyxJQUFJeUssa0RBQVMsQ0FBQyxDQUFDO0FBQUF0VCxpRkFBQSxDQUZuQzZJLGFBQWEsZ0JBR2MsSUFBSXdPLHlEQUFnQixDQUFDLENBQUM7QUFBQXJYLGlGQUFBLENBSGpENkksYUFBYSw2QkFJaUMsSUFBSTBPLHlFQUFzQixDQUFDLENBQUM7QUFKN0Q7QUFpRWxDMU8sYUFBYSxDQUFDK08sMkNBQTJDLENBQUMsQ0FBQyxDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDL0UzRDtBQUNBO0FBQ0E7O0FBRTBEO0FBQ0Y7QUFBQSxJQUVuQ3ZULG1CQUFtQjtFQUFBLFNBQUFBLG9CQUFBO0lBQUF0RSxpRkFBQSxPQUFBc0UsbUJBQUE7RUFBQTtFQUFBLE9BQUEvRCw4RUFBQSxDQUFBK0QsbUJBQUE7SUFBQTlELEdBQUE7SUFBQUUsS0FBQSxFQUN0QyxTQUFPc0UscUNBQXFDQSxDQUFDcVQsWUFBMEIsRUFBb0I7TUFDekYsUUFBUUEsWUFBWTtRQUNsQixLQUFLeEUsaURBQVksQ0FBQ3lFLEdBQUc7VUFDbkIsT0FBTyxLQUFLO1FBQ2QsS0FBS3pFLGlEQUFZLENBQUNpQixLQUFLO1VBQ3JCLE9BQU8sT0FBTztRQUNoQixLQUFLakIsaURBQVksQ0FBQ3VCLEtBQUs7VUFDckIsT0FBTyxPQUFPO1FBQ2hCLEtBQUt2QixpREFBWSxDQUFDMEIsSUFBSTtVQUNwQixPQUFPLE1BQU07UUFDZixLQUFLMUIsaURBQVksQ0FBQ1csSUFBSTtVQUNwQixPQUFPLE1BQU07UUFDZixLQUFLWCxpREFBWSxDQUFDdE8sS0FBSztVQUNyQixPQUFPLE9BQU87UUFDaEIsS0FBS3NPLGlEQUFZLENBQUNtQyxLQUFLO1VBQ3JCLE9BQU8sT0FBTztRQUNoQixLQUFLbkMsaURBQVksQ0FBQzBFLEdBQUc7VUFDbkIsT0FBTyxLQUFLO1FBQ2Q7VUFDRWxGLG1FQUFpQixDQUFDZ0YsWUFBWSxDQUFDO01BQ25DO0lBQ0Y7RUFBQztJQUFBN1gsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBTzhYLHFDQUFxQ0EsQ0FBQ0MsZ0JBQWtDLEVBQWdCO01BQzdGLFFBQVFBLGdCQUFnQjtRQUN0QixLQUFLLEtBQUs7VUFDUixPQUFPNUUsaURBQVksQ0FBQ3lFLEdBQUc7UUFDekIsS0FBSyxPQUFPO1VBQ1YsT0FBT3pFLGlEQUFZLENBQUNpQixLQUFLO1FBQzNCLEtBQUssT0FBTztVQUNWLE9BQU9qQixpREFBWSxDQUFDdUIsS0FBSztRQUMzQixLQUFLLE1BQU07VUFDVCxPQUFPdkIsaURBQVksQ0FBQzBCLElBQUk7UUFDMUIsS0FBSyxNQUFNO1VBQ1QsT0FBTzFCLGlEQUFZLENBQUNXLElBQUk7UUFDMUIsS0FBSyxPQUFPO1VBQ1YsT0FBT1gsaURBQVksQ0FBQ3RPLEtBQUs7UUFDM0IsS0FBSyxPQUFPO1VBQ1YsT0FBT3NPLGlEQUFZLENBQUNtQyxLQUFLO1FBQzNCLEtBQUssS0FBSztVQUNSLE9BQU9uQyxpREFBWSxDQUFDMEUsR0FBRztRQUN6QjtVQUNFbEYsbUVBQWlCLENBQUNvRixnQkFBZ0IsQ0FBQztNQUN2QztJQUNGO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDcERIO0FBQ0E7QUFDQTs7QUFFOEM7QUFBQSxJQUd6Qm5CLGdCQUFnQjtFQUFBLFNBQUFBLGlCQUFBO0lBQUF0WCxpRkFBQSxPQUFBc1gsZ0JBQUE7SUFBQXJYLGlGQUFBLHFCQUNBc0UsdURBQWMsQ0FBQ1UsbUJBQW1CO0VBQUE7RUFBQSxPQUFBMUUsOEVBQUEsQ0FBQStXLGdCQUFBO0lBQUE5VyxHQUFBO0lBQUFDLEdBQUEsRUFFckUsU0FBQUEsSUFBQSxFQUEwQjtNQUN4QixPQUFPLElBQUksQ0FBQ3VULFVBQVU7SUFDeEI7RUFBQztJQUFBeFQsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQXlYLFlBQVlBLENBQUNwRSxTQUF1QixFQUFRO01BQzFDLElBQUksQ0FBQ0MsVUFBVSxHQUFHRCxTQUFTO0lBQzdCO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNoQkg7QUFDQTtBQUNBOztBQUVzRDtBQUNJO0FBQ2xCO0FBQUEsSUFFbkJuTCxVQUFVO0VBRzdCLFNBQUFBLFdBQVkrUCxPQUFvQixFQUFFO0lBQUEzWSxpRkFBQSxPQUFBNEksVUFBQTtJQUFBM0ksaUZBQUE7SUFDaEMsSUFBSSxDQUFDMlksUUFBUSxHQUFHRCxPQUFPO0VBQ3pCO0VBQUMsT0FBQXBZLDhFQUFBLENBQUFxSSxVQUFBO0lBQUFwSSxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBcUosT0FBT0EsQ0FBQSxFQUFXO01BQ2hCLE9BQU9wQixvREFBVyxDQUFDLElBQUksQ0FBQ2lRLFFBQVEsQ0FBQztJQUNuQztFQUFDO0lBQUFwWSxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBbVksaUJBQWlCQSxDQUFBLEVBQW1CO01BQ2xDLFFBQVEsSUFBSSxDQUFDRCxRQUFRO1FBQ25CLEtBQUtqUSxvREFBVyxDQUFDbVEsZ0JBQWdCO1VBQy9CLE9BQU9KLGlFQUFjLENBQUNLLFNBQVM7UUFDakMsS0FBS3BRLG9EQUFXLENBQUNxUSwrQkFBK0I7VUFDOUMsT0FBT04saUVBQWMsQ0FBQ0ssU0FBUztRQUNqQyxLQUFLcFEsb0RBQVcsQ0FBQ3NRLE9BQU87VUFDdEIsT0FBT1AsaUVBQWMsQ0FBQ0gsR0FBRztRQUMzQixLQUFLNVAsb0RBQVcsQ0FBQ3VRLFNBQVM7VUFDeEIsT0FBT1IsaUVBQWMsQ0FBQ0gsR0FBRztRQUMzQixLQUFLNVAsb0RBQVcsQ0FBQ2EsY0FBYztVQUM3QixPQUFPa1AsaUVBQWMsQ0FBQ0gsR0FBRztRQUMzQixLQUFLNVAsb0RBQVcsQ0FBQ2UsV0FBVztVQUMxQixPQUFPZ1AsaUVBQWMsQ0FBQ0gsR0FBRztRQUMzQixLQUFLNVAsb0RBQVcsQ0FBQ3dRLGFBQWE7VUFDNUIsT0FBT1QsaUVBQWMsQ0FBQ0gsR0FBRztRQUMzQixLQUFLNVAsb0RBQVcsQ0FBQ3lRLDBCQUEwQjtVQUN6QyxPQUFPVixpRUFBYyxDQUFDSCxHQUFHO1FBQzNCLEtBQUs1UCxvREFBVyxDQUFDMFEsV0FBVztVQUMxQixPQUFPWCxpRUFBYyxDQUFDSCxHQUFHO1FBQzNCLEtBQUs1UCxvREFBVyxDQUFDMlEsaUJBQWlCO1VBQ2hDLE9BQU9aLGlFQUFjLENBQUNILEdBQUc7UUFDM0IsS0FBSzVQLG9EQUFXLENBQUM0USxxQkFBcUI7VUFDcEMsT0FBT2IsaUVBQWMsQ0FBQ0gsR0FBRztRQUMzQixLQUFLNVAsb0RBQVcsQ0FBQzZRLHFCQUFxQjtVQUNwQyxPQUFPZCxpRUFBYyxDQUFDSCxHQUFHO1FBQzNCO1VBQ0VsRixtRUFBaUIsQ0FBQyxJQUFJLENBQUN1RixRQUFRLENBQUM7TUFDcEM7SUFDRjtFQUFDO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDaERIO0FBQ0E7QUFDQTs7QUFFcUQ7QUFDSDtBQUUzQyxJQUFLRixjQUFjLDBCQUFkQSxjQUFjO0VBQWRBLGNBQWMsQ0FBZEEsY0FBYztFQUFkQSxjQUFjLENBQWRBLGNBQWM7RUFBZEEsY0FBYyxDQUFkQSxjQUFjO0VBQUEsT0FBZEEsY0FBYztBQUFBO0FBSXpCLElBSW9CZSxvQkFBb0I7RUFBQSxTQUFBQSxxQkFBQTtJQUFBelosaUZBQUEsT0FBQXlaLG9CQUFBO0lBQUF4WixpRkFBQSxlQUN4QixtREFBbUQ7SUFBQUEsaUZBQUEsbUJBQ3ZDLEdBQUc7SUFBQUEsaUZBQUEscUJBQ0QsR0FBRztJQUFBQSxpRkFBQSx1QkFDRCxHQUFHO0lBQUFBLGlGQUFBLHFCQUNHb0UseURBQWdCLENBQUNVLHFCQUFxQjtFQUFBO0VBQUEsT0FBQXhFLDhFQUFBLENBQUFrWixvQkFBQTtJQUFBalosR0FBQTtJQUFBQyxHQUFBLEVBRTNFLFNBQUFBLElBQUEsRUFBa0I7TUFDaEIsT0FBTyxJQUFJLENBQUNpWixJQUFJO0lBQ2xCLENBQUM7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQVFwSixHQUFXLEVBQUU7TUFDbkIsSUFBTXFKLFVBQVUsR0FBRyxJQUFJbmEsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQzBGLEdBQUcsQ0FBQ21LLEdBQUcsQ0FBQztNQUVqRHFKLFVBQVUsQ0FBQ0MsUUFBUSxHQUFHRCxVQUFVLENBQUNDLFFBQVEsR0FBRyxVQUFVO01BRXRELElBQUksQ0FBQ0gsSUFBSSxHQUFHRSxVQUFVLENBQUNwSSxRQUFRLENBQUMsQ0FBQztJQUNuQztFQUFDO0lBQUFoUixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQTBCO01BQ3hCLE9BQU8sSUFBSSxDQUFDcVosWUFBWTtJQUMxQixDQUFDO0lBQUFILEdBQUEsRUFFRCxTQUFBQSxJQUFnQkksV0FBbUIsRUFBRTtNQUNuQyxJQUFJLENBQUNELFlBQVksR0FBR0MsV0FBVztJQUNqQztFQUFDO0lBQUF2WixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXNCO01BQ3BCLE9BQU8sSUFBSSxDQUFDdVosUUFBUTtJQUN0QixDQUFDO0lBQUFMLEdBQUEsRUFFRCxTQUFBQSxJQUFZTSxPQUFlLEVBQUU7TUFDM0IsSUFBSSxDQUFDRCxRQUFRLEdBQUdDLE9BQU87SUFDekI7RUFBQztJQUFBelosR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUF3QjtNQUN0QixPQUFPLElBQUksQ0FBQ3laLFVBQVU7SUFDeEIsQ0FBQztJQUFBUCxHQUFBLEVBRUQsU0FBQUEsSUFBY1EsU0FBaUIsRUFBRTtNQUMvQixJQUFJLENBQUNELFVBQVUsR0FBR0MsU0FBUztJQUM3QjtFQUFDO0lBQUEzWixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQWdDO01BQzlCLE9BQU8sSUFBSSxDQUFDdVQsVUFBVTtJQUN4QixDQUFDO0lBQUEyRixHQUFBLEVBRUQsU0FBQUEsSUFBYzVGLFNBQXlCLEVBQUU7TUFDdkMsSUFBSSxDQUFDQyxVQUFVLEdBQUdELFNBQVM7SUFDN0I7RUFBQztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDaEVIO0FBQ0E7QUFDQTs7QUFFOEM7QUFDOEI7QUFDL0M7QUFDa0I7QUFDRjtBQUNnQjtBQUFBLElBRXhDd0csY0FBYztFQXNDakMsU0FBQUEsZUFBQSxFQUFzQjtJQUFBdmEsaUZBQUEsT0FBQXVhLGNBQUE7SUFDcEIsTUFBTSxJQUFJaFYsS0FBSyxDQUFDLCtEQUErRCxDQUFDO0VBQ2xGO0VBQUMsT0FBQWhGLDhFQUFBLENBQUFnYSxjQUFBO0lBQUEvWixHQUFBO0lBQUFFLEtBQUEsRUFyQ0QsU0FBTzhaLGlCQUFpQkEsQ0FBQ2pLLEdBQVcsRUFBa0I7TUFDcEQsSUFBSSxPQUFPQSxHQUFHLEtBQUssUUFBUSxFQUFFO1FBQzNCLE1BQU0sSUFBSWhMLEtBQUssMkNBQUE3QixNQUFBLENBQUErVyx5RUFBQSxDQUFrRGxLLEdBQUcsT0FBRyxDQUFDO01BQzFFO01BRUEsSUFBTW1LLGVBQWUsR0FBR0gsY0FBYyxDQUFDSSxnQkFBZ0IsQ0FBQ3BLLEdBQUcsQ0FBQztNQUU1RCxJQUFJbUssZUFBZSxFQUFFO1FBQ25CLE9BQU9BLGVBQWU7TUFDeEI7TUFFQSxJQUFNRSxvQkFBb0IsR0FBRyxJQUFJbkIsNkRBQW9CLENBQUMsQ0FBQztNQUV2RG1CLG9CQUFvQixDQUFDVCxTQUFTLEdBQUc5VSxnREFBRyxDQUFDd1YsZUFBZTtNQUNwREQsb0JBQW9CLENBQUNYLE9BQU8sR0FBRzVVLGdEQUFHLENBQUM0VSxPQUFPLENBQUN2WixLQUFLO01BQ2hEa2Esb0JBQW9CLENBQUNySyxHQUFHLEdBQUc4Six5REFBWSxDQUFDUyxlQUFlLENBQUN2SyxHQUFHLENBQUM7TUFDNURxSyxvQkFBb0IsQ0FBQ2IsV0FBVyxHQUFHTyx3REFBVyxDQUFDUyxxQkFBcUIsQ0FBQ3hLLEdBQUcsQ0FBQztNQUV6RXFLLG9CQUFvQixDQUFDN0csU0FBUyxHQUFHM1AsK0RBQXFCLENBQUM0Vyx5Q0FBeUMsQ0FBQzNWLGdEQUFHLENBQUM0VixjQUFjLENBQUM7TUFFcEgsT0FBT1YsY0FBYyxDQUFDSSxnQkFBZ0IsQ0FBQ3BLLEdBQUcsQ0FBQyxHQUFHLElBQUk2Six1REFBYyxDQUFDUSxvQkFBb0IsQ0FBQztJQUN4RjtFQUFDO0lBQUFwYSxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFPd2EsaUJBQWlCQSxDQUFDRCxjQUE4QixFQUFRO01BQzdELElBQU1QLGVBQWUsR0FBR3ZELE1BQU0sQ0FBQ2dFLE1BQU0sQ0FBQ1osY0FBYyxDQUFDSSxnQkFBZ0IsQ0FBQztNQUV0RSxJQUFJRCxlQUFlLElBQUlBLGVBQWUsQ0FBQzFQLE1BQU0sRUFBRTtRQUM3QzBQLGVBQWUsQ0FBQ25KLE9BQU8sQ0FBQyxVQUFBckksY0FBYyxFQUFJO1VBQ3hDLElBQU0wUixvQkFBb0IsR0FBRzFSLGNBQWMsQ0FBQzBSLG9CQUFvQjtVQUVoRUEsb0JBQW9CLENBQUM3RyxTQUFTLEdBQUdrSCxjQUFjO1FBQ2pELENBQUMsQ0FBQztNQUNKO0lBQ0Y7RUFBQztBQUFBO0FBQUFoYixpRkFBQSxDQXBDa0JzYSxjQUFjLHNCQUN1QyxDQUFDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCQ1g1RSx1S0FBQW5QLENBQUEsRUFBQWdRLENBQUEsRUFBQUMsQ0FBQSx3QkFBQUMsTUFBQSxHQUFBQSxNQUFBLE9BQUFDLENBQUEsR0FBQUYsQ0FBQSxDQUFBRyxRQUFBLGtCQUFBQyxDQUFBLEdBQUFKLENBQUEsQ0FBQUssV0FBQSw4QkFBQUMsRUFBQU4sQ0FBQSxFQUFBRSxDQUFBLEVBQUFFLENBQUEsRUFBQUUsQ0FBQSxRQUFBQyxDQUFBLEdBQUFMLENBQUEsSUFBQUEsQ0FBQSxDQUFBL04sU0FBQSxZQUFBcU8sU0FBQSxHQUFBTixDQUFBLEdBQUFNLFNBQUEsRUFBQUMsQ0FBQSxHQUFBM0UsTUFBQSxDQUFBNEUsTUFBQSxDQUFBSCxDQUFBLENBQUFwTyxTQUFBLFVBQUF3TyxtQkFBQSxDQUFBRixDQUFBLHVCQUFBVCxDQUFBLEVBQUFFLENBQUEsRUFBQUUsQ0FBQSxRQUFBRSxDQUFBLEVBQUFDLENBQUEsRUFBQUUsQ0FBQSxFQUFBRyxDQUFBLE1BQUFDLENBQUEsR0FBQVQsQ0FBQSxRQUFBVSxDQUFBLE9BQUFDLENBQUEsS0FBQUYsQ0FBQSxLQUFBWCxDQUFBLEtBQUFjLENBQUEsRUFBQWpSLENBQUEsRUFBQWtSLENBQUEsRUFBQUMsQ0FBQSxFQUFBTixDQUFBLEVBQUFNLENBQUEsQ0FBQXhXLElBQUEsQ0FBQXFGLENBQUEsTUFBQW1SLENBQUEsV0FBQUEsRUFBQW5CLENBQUEsRUFBQUMsQ0FBQSxXQUFBTSxDQUFBLEdBQUFQLENBQUEsRUFBQVEsQ0FBQSxNQUFBRSxDQUFBLEdBQUExUSxDQUFBLEVBQUFnUixDQUFBLENBQUFiLENBQUEsR0FBQUYsQ0FBQSxFQUFBaUIsQ0FBQSxnQkFBQUMsRUFBQWxCLENBQUEsRUFBQUUsQ0FBQSxTQUFBSyxDQUFBLEdBQUFQLENBQUEsRUFBQVMsQ0FBQSxHQUFBUCxDQUFBLEVBQUFILENBQUEsT0FBQWUsQ0FBQSxJQUFBRixDQUFBLEtBQUFSLENBQUEsSUFBQUwsQ0FBQSxHQUFBYyxDQUFBLENBQUFsUixNQUFBLEVBQUFvUSxDQUFBLFVBQUFLLENBQUEsRUFBQUUsQ0FBQSxHQUFBTyxDQUFBLENBQUFkLENBQUEsR0FBQW1CLENBQUEsR0FBQUgsQ0FBQSxDQUFBRixDQUFBLEVBQUFNLENBQUEsR0FBQWIsQ0FBQSxLQUFBTixDQUFBLFFBQUFJLENBQUEsR0FBQWUsQ0FBQSxLQUFBakIsQ0FBQSxNQUFBTyxDQUFBLEdBQUFILENBQUEsRUFBQUMsQ0FBQSxHQUFBRCxDQUFBLFlBQUFDLENBQUEsV0FBQUQsQ0FBQSxNQUFBQSxDQUFBLE1BQUF2USxDQUFBLElBQUF1USxDQUFBLE9BQUFZLENBQUEsTUFBQWQsQ0FBQSxHQUFBSixDQUFBLFFBQUFrQixDQUFBLEdBQUFaLENBQUEsUUFBQUMsQ0FBQSxNQUFBUSxDQUFBLENBQUFDLENBQUEsR0FBQWQsQ0FBQSxFQUFBYSxDQUFBLENBQUFiLENBQUEsR0FBQUksQ0FBQSxPQUFBWSxDQUFBLEdBQUFDLENBQUEsS0FBQWYsQ0FBQSxHQUFBSixDQUFBLFFBQUFNLENBQUEsTUFBQUosQ0FBQSxJQUFBQSxDQUFBLEdBQUFpQixDQUFBLE1BQUFiLENBQUEsTUFBQU4sQ0FBQSxFQUFBTSxDQUFBLE1BQUFKLENBQUEsRUFBQWEsQ0FBQSxDQUFBYixDQUFBLEdBQUFpQixDQUFBLEVBQUFaLENBQUEsY0FBQUgsQ0FBQSxJQUFBSixDQUFBLGFBQUFpQixDQUFBLFFBQUFILENBQUEsT0FBQVosQ0FBQSxxQkFBQUUsQ0FBQSxFQUFBUyxDQUFBLEVBQUFNLENBQUEsUUFBQVAsQ0FBQSxZQUFBUSxTQUFBLHVDQUFBTixDQUFBLFVBQUFELENBQUEsSUFBQUssQ0FBQSxDQUFBTCxDQUFBLEVBQUFNLENBQUEsR0FBQVosQ0FBQSxHQUFBTSxDQUFBLEVBQUFKLENBQUEsR0FBQVUsQ0FBQSxHQUFBcEIsQ0FBQSxHQUFBUSxDQUFBLE9BQUF4USxDQUFBLEdBQUEwUSxDQUFBLE1BQUFLLENBQUEsS0FBQVIsQ0FBQSxLQUFBQyxDQUFBLEdBQUFBLENBQUEsUUFBQUEsQ0FBQSxTQUFBUSxDQUFBLENBQUFiLENBQUEsUUFBQWdCLENBQUEsQ0FBQVgsQ0FBQSxFQUFBRSxDQUFBLEtBQUFNLENBQUEsQ0FBQWIsQ0FBQSxHQUFBTyxDQUFBLEdBQUFNLENBQUEsQ0FBQUMsQ0FBQSxHQUFBUCxDQUFBLGFBQUFHLENBQUEsTUFBQU4sQ0FBQSxRQUFBQyxDQUFBLEtBQUFILENBQUEsWUFBQUwsQ0FBQSxHQUFBTyxDQUFBLENBQUFGLENBQUEsV0FBQUwsQ0FBQSxHQUFBQSxDQUFBLENBQUEvSixJQUFBLENBQUFzSyxDQUFBLEVBQUFHLENBQUEsVUFBQVcsU0FBQSwyQ0FBQXJCLENBQUEsQ0FBQXNCLElBQUEsU0FBQXRCLENBQUEsRUFBQVUsQ0FBQSxHQUFBVixDQUFBLENBQUExYSxLQUFBLEVBQUFrYixDQUFBLFNBQUFBLENBQUEsb0JBQUFBLENBQUEsS0FBQVIsQ0FBQSxHQUFBTyxDQUFBLGVBQUFQLENBQUEsQ0FBQS9KLElBQUEsQ0FBQXNLLENBQUEsR0FBQUMsQ0FBQSxTQUFBRSxDQUFBLEdBQUFXLFNBQUEsdUNBQUFoQixDQUFBLGdCQUFBRyxDQUFBLE9BQUFELENBQUEsR0FBQXZRLENBQUEsY0FBQWdRLENBQUEsSUFBQWUsQ0FBQSxHQUFBQyxDQUFBLENBQUFiLENBQUEsUUFBQU8sQ0FBQSxHQUFBVCxDQUFBLENBQUFoSyxJQUFBLENBQUFrSyxDQUFBLEVBQUFhLENBQUEsT0FBQUUsQ0FBQSxrQkFBQWxCLENBQUEsSUFBQU8sQ0FBQSxHQUFBdlEsQ0FBQSxFQUFBd1EsQ0FBQSxNQUFBRSxDQUFBLEdBQUFWLENBQUEsY0FBQWEsQ0FBQSxtQkFBQXZiLEtBQUEsRUFBQTBhLENBQUEsRUFBQXNCLElBQUEsRUFBQVAsQ0FBQSxTQUFBZCxDQUFBLEVBQUFJLENBQUEsRUFBQUUsQ0FBQSxRQUFBRyxDQUFBLFFBQUFRLENBQUEsZ0JBQUFULFVBQUEsY0FBQWMsa0JBQUEsY0FBQUMsMkJBQUEsS0FBQXhCLENBQUEsR0FBQWpFLE1BQUEsQ0FBQTBGLGNBQUEsTUFBQWpCLENBQUEsTUFBQUwsQ0FBQSxJQUFBSCxDQUFBLENBQUFBLENBQUEsSUFBQUcsQ0FBQSxTQUFBUyxtQkFBQSxDQUFBWixDQUFBLE9BQUFHLENBQUEsaUNBQUFILENBQUEsR0FBQVUsQ0FBQSxHQUFBYywwQkFBQSxDQUFBcFAsU0FBQSxHQUFBcU8sU0FBQSxDQUFBck8sU0FBQSxHQUFBMkosTUFBQSxDQUFBNEUsTUFBQSxDQUFBSCxDQUFBLFlBQUFLLEVBQUE3USxDQUFBLFdBQUErTCxNQUFBLENBQUEyRixjQUFBLEdBQUEzRixNQUFBLENBQUEyRixjQUFBLENBQUExUixDQUFBLEVBQUF3UiwwQkFBQSxLQUFBeFIsQ0FBQSxDQUFBMlIsU0FBQSxHQUFBSCwwQkFBQSxFQUFBWixtQkFBQSxDQUFBNVEsQ0FBQSxFQUFBcVEsQ0FBQSx5QkFBQXJRLENBQUEsQ0FBQW9DLFNBQUEsR0FBQTJKLE1BQUEsQ0FBQTRFLE1BQUEsQ0FBQUQsQ0FBQSxHQUFBMVEsQ0FBQSxXQUFBdVIsaUJBQUEsQ0FBQW5QLFNBQUEsR0FBQW9QLDBCQUFBLEVBQUFaLG1CQUFBLENBQUFGLENBQUEsaUJBQUFjLDBCQUFBLEdBQUFaLG1CQUFBLENBQUFZLDBCQUFBLGlCQUFBRCxpQkFBQSxHQUFBQSxpQkFBQSxDQUFBSyxXQUFBLHdCQUFBaEIsbUJBQUEsQ0FBQVksMEJBQUEsRUFBQW5CLENBQUEsd0JBQUFPLG1CQUFBLENBQUFGLENBQUEsR0FBQUUsbUJBQUEsQ0FBQUYsQ0FBQSxFQUFBTCxDQUFBLGdCQUFBTyxtQkFBQSxDQUFBRixDQUFBLEVBQUFQLENBQUEsaUNBQUFTLG1CQUFBLENBQUFGLENBQUEsOERBQUFtQixZQUFBLFlBQUFBLGFBQUEsYUFBQUMsQ0FBQSxFQUFBdkIsQ0FBQSxFQUFBd0IsQ0FBQSxFQUFBbEIsQ0FBQTtBQUFBLFNBQUFELG9CQUFBNVEsQ0FBQSxFQUFBaVEsQ0FBQSxFQUFBRSxDQUFBLEVBQUFILENBQUEsUUFBQU8sQ0FBQSxHQUFBeEUsTUFBQSxDQUFBaUcsY0FBQSxRQUFBekIsQ0FBQSx1QkFBQXZRLENBQUEsSUFBQXVRLENBQUEsUUFBQUssbUJBQUEsWUFBQXFCLG1CQUFBalMsQ0FBQSxFQUFBaVEsQ0FBQSxFQUFBRSxDQUFBLEVBQUFILENBQUEsYUFBQUssRUFBQUosQ0FBQSxFQUFBRSxDQUFBLElBQUFTLG1CQUFBLENBQUE1USxDQUFBLEVBQUFpUSxDQUFBLFlBQUFqUSxDQUFBLGdCQUFBa1MsT0FBQSxDQUFBakMsQ0FBQSxFQUFBRSxDQUFBLEVBQUFuUSxDQUFBLFNBQUFpUSxDQUFBLEdBQUFNLENBQUEsR0FBQUEsQ0FBQSxDQUFBdlEsQ0FBQSxFQUFBaVEsQ0FBQSxJQUFBM2EsS0FBQSxFQUFBNmEsQ0FBQSxFQUFBZ0MsVUFBQSxHQUFBbkMsQ0FBQSxFQUFBb0MsWUFBQSxHQUFBcEMsQ0FBQSxFQUFBcUMsUUFBQSxHQUFBckMsQ0FBQSxNQUFBaFEsQ0FBQSxDQUFBaVEsQ0FBQSxJQUFBRSxDQUFBLElBQUFFLENBQUEsYUFBQUEsQ0FBQSxjQUFBQSxDQUFBLG1CQUFBTyxtQkFBQSxDQUFBNVEsQ0FBQSxFQUFBaVEsQ0FBQSxFQUFBRSxDQUFBLEVBQUFILENBQUE7QUFEQTtBQUNBO0FBQ0E7O0FBRXFEO0FBRUQ7QUFDUTtBQUNEO0FBQ3JCO0FBSXRDLElBQU13QyxnQkFBZ0IsR0FBRyxJQUFJO0FBQzdCLElBQU1DLGtCQUFrQixHQUFHLElBQUk7QUFBQyxJQWtDWHpELGNBQWM7RUFTakMsU0FBQUEsZUFBWVEsb0JBQTBDLEVBQUU7SUFBQSxJQUFBM1osS0FBQTtJQUFBakIsaUZBQUEsT0FBQW9hLGNBQUE7SUFBQW5hLGlGQUFBLGtCQVJwQjZJLDZEQUFhLENBQUNHLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQztJQUFBaEosaUZBQUE7SUFBQUEsaUZBQUE7SUFBQUEsaUZBQUEsbUJBR3BDLEVBQUU7SUFBQUEsaUZBQUEscUJBQ2IsS0FBSztJQUFBQSxpRkFBQSx3QkFDWCxDQUFDO0lBQUFBLGlGQUFBLGtCQUNQLEVBQUU7SUFHbEIsSUFBSSxDQUFDNmQscUJBQXFCLEdBQUdsRCxvQkFBb0I7SUFDakQsSUFBSSxDQUFDbUQsbUJBQW1CLEdBQUcsSUFBSUwsZ0VBQWtCLENBQUMsQ0FBQztJQUNuRCxJQUFJLENBQUNNLGtDQUFrQyxDQUFDLENBQUMsQ0FBQ0MsSUFBSSxDQUFDLFVBQUFDLGdCQUFnQixFQUFJO01BQ2pFamQsS0FBSSxDQUFDa2QsT0FBTyxHQUFHRCxnQkFBZ0I7SUFDakMsQ0FBQyxDQUFDO0VBQ0o7RUFBQyxPQUFBM2QsOEVBQUEsQ0FBQTZaLGNBQUE7SUFBQTVaLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBaUQ7TUFDL0MsT0FBTyxJQUFJLENBQUNxZCxxQkFBcUI7SUFDbkM7RUFBQztJQUFBdGQsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQXNKLElBQUlBLENBQUNvVSxNQUFlLEVBQVE7TUFDMUIsSUFBTzlVLFFBQVEsR0FBbUQ4VSxNQUFNLENBQWpFOVUsUUFBUTtRQUFFNUksS0FBSyxHQUE0QzBkLE1BQU0sQ0FBdkQxZCxLQUFLO1FBQUUyZCxhQUFhLEdBQTZCRCxNQUFNLENBQWhEQyxhQUFhO1FBQUVwVSxPQUFPLEdBQW9CbVUsTUFBTSxDQUFqQ25VLE9BQU87UUFBRXFVLFFBQVEsR0FBVUYsTUFBTSxDQUF4QkUsUUFBUTtRQUFFQyxJQUFJLEdBQUlILE1BQU0sQ0FBZEcsSUFBSTtNQUM5RCxJQUFNNVUsVUFBVSxHQUFHLElBQUlmLG1EQUFVLENBQUN3VixNQUFNLENBQUN6VSxVQUFVLENBQUM7TUFFcEQsSUFBSSxJQUFJLENBQUNtVSxxQkFBcUIsQ0FBQy9KLFNBQVMsR0FBR3BLLFVBQVUsQ0FBQ2tQLGlCQUFpQixDQUFDLENBQUMsRUFBRTtRQUN6RTtNQUNGO01BRUEsSUFBTTJGLFlBQVksR0FBRztRQUNuQkMsU0FBUyxFQUFFLElBQUl2ZSxJQUFJLENBQUMsQ0FBQyxDQUFDcVUsV0FBVyxDQUFDLENBQUM7UUFDbkMwRixPQUFPLEVBQUUsSUFBSSxDQUFDNkQscUJBQXFCLENBQUM3RCxPQUFPO1FBQzNDRSxTQUFTLEVBQUUsSUFBSSxDQUFDMkQscUJBQXFCLENBQUMzRCxTQUFTO1FBQy9DN1EsUUFBUSxFQUFSQSxRQUFRO1FBQ1I4VSxNQUFNLEVBQUV6VSxVQUFVLENBQUNJLE9BQU8sQ0FBQyxDQUFDO1FBQzVCckosS0FBSyxFQUFMQSxLQUFLO1FBQ0wyZCxhQUFhLEVBQWJBLGFBQWE7UUFDYkssaUJBQWlCLEVBQUUsSUFBSSxDQUFDUCxPQUFPO1FBQy9CcEUsV0FBVyxFQUFFLElBQUksQ0FBQytELHFCQUFxQixDQUFDL0QsV0FBVztRQUNuRGpXLE9BQU8sRUFBRTZaLG1FQUFjLENBQUNnQixVQUFVO1FBQ2xDMVUsT0FBTyxFQUFQQSxPQUFPO1FBQ1BxVSxRQUFRLEVBQVJBLFFBQVE7UUFDUkMsSUFBSSxFQUFKQTtNQUNGLENBQUM7TUFFRCxJQUFJLENBQUMzRixRQUFRLENBQUM1TyxJQUFJLENBQUN3VSxZQUFZLENBQUM7TUFFaEMsSUFBTUksT0FBTyxHQUFHLElBQUksQ0FBQ0MsaUJBQWlCLENBQUMsQ0FBQztJQUMxQztFQUFDO0lBQUFyZSxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFRc2Qsa0NBQWtDQSxDQUFBLEVBQW9CO01BQzVELE9BQU8sSUFBSWMsT0FBTyxDQUFTLFVBQUFDLHVCQUF1QixFQUFJO1FBQ3BELElBQU1DLHVCQUF1QixHQUFHdmYsZ0VBQVcsQ0FBQ3FSLFNBQVMsQ0FBQyxVQUFBaEMsV0FBVyxFQUFJO1VBQ25FLElBQUksQ0FBQ0EsV0FBVyxFQUFFO1lBQ2hCO1VBQ0Y7VUFFQWlRLHVCQUF1QixDQUFDalEsV0FBVyxDQUFDb1AsZ0JBQWdCLENBQUM7VUFDckRwUCxXQUFXLENBQUM5SSxVQUFVLENBQUM7WUFBQSxPQUFNZ1osdUJBQXVCLENBQUNqZSxPQUFPLENBQUMsQ0FBQztVQUFBLEdBQUUsQ0FBQyxDQUFDO1FBQ3BFLENBQUMsQ0FBQztNQUNKLENBQUMsQ0FBQztJQUNKO0VBQUM7SUFBQVAsR0FBQTtJQUFBRSxLQUFBO01BQUEsSUFBQXNMLFlBQUEsR0FBQWlULG1GQUFBLGNBQUFoQyxZQUFBLEdBQUFFLENBQUEsQ0FFRCxTQUFBK0IsUUFBMEJDLGVBQXFDO1FBQUEsSUFBQUMsUUFBQTtRQUFBLE9BQUFuQyxZQUFBLEdBQUFDLENBQUEsV0FBQW1DLFFBQUE7VUFBQSxrQkFBQUEsUUFBQSxDQUFBOUQsQ0FBQTtZQUFBO2NBQ3ZENkQsUUFBUSxHQUFHLElBQUkzZixnRUFBVyxDQUFDaUIsS0FBSyxDQUFDeU8sUUFBUSxDQUFDLENBQUM7Y0FFakRpUSxRQUFRLENBQUNFLE1BQU0sQ0FBQyxVQUFVLEVBQUVwVSxJQUFJLENBQUN3TCxTQUFTLENBQUM7Z0JBQUM2SSxPQUFPLEVBQUVKO2NBQWUsQ0FBQyxDQUFDLENBQUM7Y0FBQ0UsUUFBQSxDQUFBOUQsQ0FBQTtjQUFBLE9BRTNEOWIsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ3VQLEtBQUssQ0FBQyxJQUFJLENBQUM2TixxQkFBcUIsQ0FBQ3ZOLEdBQUcsRUFBRTtnQkFDbkVpUCxNQUFNLEVBQUUsTUFBTTtnQkFDZEMsSUFBSSxFQUFFTDtjQUNSLENBQUMsQ0FBQztZQUFBO2NBQUEsT0FBQUMsUUFBQSxDQUFBL0MsQ0FBQSxJQUFBK0MsUUFBQSxDQUFBaEQsQ0FBQTtVQUFBO1FBQUEsR0FBQTZDLE9BQUE7TUFBQSxDQUNIO01BQUEsU0FUYTNTLFdBQVdBLENBQUFtVCxFQUFBO1FBQUEsT0FBQTFULFlBQUEsQ0FBQTJULEtBQUEsT0FBQTNLLFNBQUE7TUFBQTtNQUFBLE9BQVh6SSxXQUFXO0lBQUE7RUFBQTtJQUFBL0wsR0FBQTtJQUFBRSxLQUFBO01BQUEsSUFBQWtmLGtCQUFBLEdBQUFYLG1GQUFBLGNBQUFoQyxZQUFBLEdBQUFFLENBQUEsQ0FXekIsU0FBQTBDLFNBQUE7UUFBQSxJQUFBeEosTUFBQTtRQUFBLElBQUE4SSxlQUFBO1FBQUEsT0FBQWxDLFlBQUEsR0FBQUMsQ0FBQSxXQUFBNEMsU0FBQTtVQUFBLGtCQUFBQSxTQUFBLENBQUF2RSxDQUFBO1lBQUE7Y0FBQSxNQUNNLElBQUksQ0FBQzNDLFFBQVEsQ0FBQzVOLE1BQU0sSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDK1UsVUFBVSxJQUFJLENBQUN0Z0IsZ0VBQVcsQ0FBQ2lCLEtBQUs7Z0JBQUFvZixTQUFBLENBQUF2RSxDQUFBO2dCQUFBO2NBQUE7Y0FBQSxPQUFBdUUsU0FBQSxDQUFBeEQsQ0FBQTtZQUFBO2NBSXRFLElBQUksQ0FBQ3lELFVBQVUsR0FBRyxJQUFJO2NBRWhCWixlQUFlLEdBQUcsSUFBSSxDQUFDdkcsUUFBUSxDQUFDb0gsS0FBSyxDQUFDLENBQUMsRUFBRXBDLGdCQUFnQixDQUFDO2NBRWhFLElBQUksQ0FBQ2hGLFFBQVEsR0FBRyxJQUFJLENBQUNBLFFBQVEsQ0FBQ29ILEtBQUssQ0FBQ3BDLGdCQUFnQixDQUFDO2NBQUMsT0FBQWtDLFNBQUEsQ0FBQXhELENBQUEsSUFFL0MsSUFBSSxDQUFDL1AsV0FBVyxDQUFDNFMsZUFBZSxDQUFDLENBQUNsQixJQUFJLENBQUMsVUFBQWdDLFFBQVEsRUFBSTtnQkFDeEQsSUFBSTVKLE1BQUksQ0FBQzZKLDZCQUE2QixDQUFDRCxRQUFRLENBQUMsRUFBRTtrQkFDaEQsSUFBSTVKLE1BQUksQ0FBQ3VDLFFBQVEsQ0FBQzVOLE1BQU0sSUFBSTZTLGtCQUFrQixFQUFFO29CQUM5Q3hILE1BQUksQ0FBQzhKLGFBQWEsRUFBRTtvQkFFcEIxZ0IsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ3NGLFVBQVUsQ0FBQyxZQUFNO3NCQUNqQ3FRLE1BQUksQ0FBQ3VDLFFBQVEsTUFBQWxWLE1BQUEsQ0FBQTBjLG9GQUFBLENBQU9qQixlQUFlLEdBQUFpQixvRkFBQSxDQUFLL0osTUFBSSxDQUFDdUMsUUFBUSxFQUFDO3NCQUV0RHZDLE1BQUksQ0FBQzBKLFVBQVUsR0FBRyxLQUFLO3NCQUV2QixJQUFNbkIsT0FBTyxHQUFHdkksTUFBSSxDQUFDd0ksaUJBQWlCLENBQUMsQ0FBQztvQkFDMUMsQ0FBQyxFQUFFeEksTUFBSSxDQUFDMEgsbUJBQW1CLENBQUNzQywyQ0FBMkMsQ0FBQ2hLLE1BQUksQ0FBQzhKLGFBQWEsQ0FBQyxDQUFDO29CQUU1RjtrQkFDRjtrQkFFQTlKLE1BQUksQ0FBQ2xNLE9BQU8sQ0FBQ1MsS0FBSyxDQUFDLDREQUE0RCxFQUFFeUwsTUFBSSxDQUFDdUMsUUFBUSxDQUFDNU4sTUFBTSxFQUFFbVUsZUFBZSxDQUFDblUsTUFBTSxDQUFDO2dCQUNoSTtnQkFFQXFMLE1BQUksQ0FBQzBKLFVBQVUsR0FBRyxLQUFLO2dCQUN2QjFKLE1BQUksQ0FBQzhKLGFBQWEsR0FBRyxDQUFDO2dCQUV0QixJQUFNdkIsT0FBTyxHQUFHdkksTUFBSSxDQUFDd0ksaUJBQWlCLENBQUMsQ0FBQztnQkFFeEMsT0FBT29CLFFBQVE7Y0FDakIsQ0FBQyxDQUFDLFNBQU0sQ0FBQyxZQUFNO2dCQUNiNUosTUFBSSxDQUFDMEosVUFBVSxHQUFHLEtBQUs7Z0JBRXZCLElBQU1uQixPQUFPLEdBQUd2SSxNQUFJLENBQUN3SSxpQkFBaUIsQ0FBQyxDQUFDO2NBQzFDLENBQUMsQ0FBQztVQUFBO1FBQUEsR0FBQWdCLFFBQUE7TUFBQSxDQUNIO01BQUEsU0F6Q2FoQixpQkFBaUJBLENBQUE7UUFBQSxPQUFBZSxrQkFBQSxDQUFBRCxLQUFBLE9BQUEzSyxTQUFBO01BQUE7TUFBQSxPQUFqQjZKLGlCQUFpQjtJQUFBO0VBQUE7SUFBQXJlLEdBQUE7SUFBQUUsS0FBQSxFQTJDL0IsU0FBUXdmLDZCQUE2QkEsQ0FBQTdZLElBQUEsRUFBOEI7TUFBQSxJQUE1QmlaLE1BQU0sR0FBQWpaLElBQUEsQ0FBTmlaLE1BQU07TUFDM0MsT0FBTyxVQUFVLENBQUN0YyxJQUFJLENBQUNzYyxNQUFNLENBQUM5TyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQzNDO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7QUN2S0g7QUFDQTtBQUNBO0FBRkEsSUFJSzdJLFdBQVcsMEJBQVhBLFdBQVc7RUFBWEEsV0FBVyxDQUFYQSxXQUFXO0VBQVhBLFdBQVcsQ0FBWEEsV0FBVztFQUFYQSxXQUFXLENBQVhBLFdBQVc7RUFBWEEsV0FBVyxDQUFYQSxXQUFXO0VBQVhBLFdBQVcsQ0FBWEEsV0FBVztFQUFYQSxXQUFXLENBQVhBLFdBQVc7RUFBWEEsV0FBVyxDQUFYQSxXQUFXO0VBQVhBLFdBQVcsQ0FBWEEsV0FBVztFQUFYQSxXQUFXLENBQVhBLFdBQVc7RUFBWEEsV0FBVyxDQUFYQSxXQUFXO0VBQVhBLFdBQVcsQ0FBWEEsV0FBVztFQUFYQSxXQUFXLENBQVhBLFdBQVc7RUFBQSxPQUFYQSxXQUFXO0FBQUEsRUFBWEEsV0FBVztBQWVoQiwrREFBZUEsV0FBVyxFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbkIxQjtBQUNBO0FBQ0E7O0FBRTBFO0FBQ2hCO0FBQUEsSUFFckN2RSxxQkFBcUI7RUFBQSxTQUFBQSxzQkFBQTtJQUFBcEUsaUZBQUEsT0FBQW9FLHFCQUFBO0VBQUE7RUFBQSxPQUFBN0QsOEVBQUEsQ0FBQTZELHFCQUFBO0lBQUE1RCxHQUFBO0lBQUFFLEtBQUEsRUFDeEMsU0FBT29FLHlDQUF5Q0EsQ0FBQ21XLGNBQThCLEVBQXNCO01BQ25HLFFBQVFBLGNBQWM7UUFDcEIsS0FBS3ZDLGlFQUFjLENBQUNKLEdBQUc7VUFDckIsT0FBTyxLQUFLO1FBQ2QsS0FBS0ksaUVBQWMsQ0FBQ0ssU0FBUztVQUMzQixPQUFPLFdBQVc7UUFDcEIsS0FBS0wsaUVBQWMsQ0FBQ0gsR0FBRztVQUNyQixPQUFPLEtBQUs7UUFDZDtVQUNFbEYsbUVBQWlCLENBQUM0SCxjQUFjLENBQUM7TUFDckM7SUFDRjtFQUFDO0lBQUF6YSxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFPc2EseUNBQXlDQSxDQUFDdUYsa0JBQXNDLEVBQWtCO01BQ3ZHLFFBQVFBLGtCQUFrQjtRQUN4QixLQUFLLEtBQUs7VUFDUixPQUFPN0gsaUVBQWMsQ0FBQ0osR0FBRztRQUMzQixLQUFLLFdBQVc7VUFDZCxPQUFPSSxpRUFBYyxDQUFDSyxTQUFTO1FBQ2pDLEtBQUssS0FBSztVQUNSLE9BQU9MLGlFQUFjLENBQUNILEdBQUc7UUFDM0I7VUFDRWxGLG1FQUFpQixDQUFDa04sa0JBQWtCLENBQUM7TUFDekM7SUFDRjtFQUFDO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDaENIO0FBQ0E7QUFDQTs7QUFFeUQ7QUFDTTtBQUFBLElBRTFDbGMsZ0JBQWdCO0VBQUEsU0FBQUEsaUJBQUE7SUFBQXJFLGlGQUFBLE9BQUFxRSxnQkFBQTtFQUFBO0VBQUEsT0FBQTlELDhFQUFBLENBQUE4RCxnQkFBQTtJQUFBN0QsR0FBQTtJQUFBQyxHQUFBLEVBQ25DLFNBQUFBLElBQUEsRUFBbUQ7TUFDakQsT0FBT2lZLHlFQUFjLENBQUM3TSxrRUFBYSxDQUFDVSxXQUFXLENBQUM7SUFDbEQ7RUFBQztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCQ1RILHVLQUFBbkIsQ0FBQSxFQUFBZ1EsQ0FBQSxFQUFBQyxDQUFBLHdCQUFBQyxNQUFBLEdBQUFBLE1BQUEsT0FBQUMsQ0FBQSxHQUFBRixDQUFBLENBQUFHLFFBQUEsa0JBQUFDLENBQUEsR0FBQUosQ0FBQSxDQUFBSyxXQUFBLDhCQUFBQyxFQUFBTixDQUFBLEVBQUFFLENBQUEsRUFBQUUsQ0FBQSxFQUFBRSxDQUFBLFFBQUFDLENBQUEsR0FBQUwsQ0FBQSxJQUFBQSxDQUFBLENBQUEvTixTQUFBLFlBQUFxTyxTQUFBLEdBQUFOLENBQUEsR0FBQU0sU0FBQSxFQUFBQyxDQUFBLEdBQUEzRSxNQUFBLENBQUE0RSxNQUFBLENBQUFILENBQUEsQ0FBQXBPLFNBQUEsVUFBQXdPLG1CQUFBLENBQUFGLENBQUEsdUJBQUFULENBQUEsRUFBQUUsQ0FBQSxFQUFBRSxDQUFBLFFBQUFFLENBQUEsRUFBQUMsQ0FBQSxFQUFBRSxDQUFBLEVBQUFHLENBQUEsTUFBQUMsQ0FBQSxHQUFBVCxDQUFBLFFBQUFVLENBQUEsT0FBQUMsQ0FBQSxLQUFBRixDQUFBLEtBQUFYLENBQUEsS0FBQWMsQ0FBQSxFQUFBalIsQ0FBQSxFQUFBa1IsQ0FBQSxFQUFBQyxDQUFBLEVBQUFOLENBQUEsRUFBQU0sQ0FBQSxDQUFBeFcsSUFBQSxDQUFBcUYsQ0FBQSxNQUFBbVIsQ0FBQSxXQUFBQSxFQUFBbkIsQ0FBQSxFQUFBQyxDQUFBLFdBQUFNLENBQUEsR0FBQVAsQ0FBQSxFQUFBUSxDQUFBLE1BQUFFLENBQUEsR0FBQTFRLENBQUEsRUFBQWdSLENBQUEsQ0FBQWIsQ0FBQSxHQUFBRixDQUFBLEVBQUFpQixDQUFBLGdCQUFBQyxFQUFBbEIsQ0FBQSxFQUFBRSxDQUFBLFNBQUFLLENBQUEsR0FBQVAsQ0FBQSxFQUFBUyxDQUFBLEdBQUFQLENBQUEsRUFBQUgsQ0FBQSxPQUFBZSxDQUFBLElBQUFGLENBQUEsS0FBQVIsQ0FBQSxJQUFBTCxDQUFBLEdBQUFjLENBQUEsQ0FBQWxSLE1BQUEsRUFBQW9RLENBQUEsVUFBQUssQ0FBQSxFQUFBRSxDQUFBLEdBQUFPLENBQUEsQ0FBQWQsQ0FBQSxHQUFBbUIsQ0FBQSxHQUFBSCxDQUFBLENBQUFGLENBQUEsRUFBQU0sQ0FBQSxHQUFBYixDQUFBLEtBQUFOLENBQUEsUUFBQUksQ0FBQSxHQUFBZSxDQUFBLEtBQUFqQixDQUFBLE1BQUFPLENBQUEsR0FBQUgsQ0FBQSxFQUFBQyxDQUFBLEdBQUFELENBQUEsWUFBQUMsQ0FBQSxXQUFBRCxDQUFBLE1BQUFBLENBQUEsTUFBQXZRLENBQUEsSUFBQXVRLENBQUEsT0FBQVksQ0FBQSxNQUFBZCxDQUFBLEdBQUFKLENBQUEsUUFBQWtCLENBQUEsR0FBQVosQ0FBQSxRQUFBQyxDQUFBLE1BQUFRLENBQUEsQ0FBQUMsQ0FBQSxHQUFBZCxDQUFBLEVBQUFhLENBQUEsQ0FBQWIsQ0FBQSxHQUFBSSxDQUFBLE9BQUFZLENBQUEsR0FBQUMsQ0FBQSxLQUFBZixDQUFBLEdBQUFKLENBQUEsUUFBQU0sQ0FBQSxNQUFBSixDQUFBLElBQUFBLENBQUEsR0FBQWlCLENBQUEsTUFBQWIsQ0FBQSxNQUFBTixDQUFBLEVBQUFNLENBQUEsTUFBQUosQ0FBQSxFQUFBYSxDQUFBLENBQUFiLENBQUEsR0FBQWlCLENBQUEsRUFBQVosQ0FBQSxjQUFBSCxDQUFBLElBQUFKLENBQUEsYUFBQWlCLENBQUEsUUFBQUgsQ0FBQSxPQUFBWixDQUFBLHFCQUFBRSxDQUFBLEVBQUFTLENBQUEsRUFBQU0sQ0FBQSxRQUFBUCxDQUFBLFlBQUFRLFNBQUEsdUNBQUFOLENBQUEsVUFBQUQsQ0FBQSxJQUFBSyxDQUFBLENBQUFMLENBQUEsRUFBQU0sQ0FBQSxHQUFBWixDQUFBLEdBQUFNLENBQUEsRUFBQUosQ0FBQSxHQUFBVSxDQUFBLEdBQUFwQixDQUFBLEdBQUFRLENBQUEsT0FBQXhRLENBQUEsR0FBQTBRLENBQUEsTUFBQUssQ0FBQSxLQUFBUixDQUFBLEtBQUFDLENBQUEsR0FBQUEsQ0FBQSxRQUFBQSxDQUFBLFNBQUFRLENBQUEsQ0FBQWIsQ0FBQSxRQUFBZ0IsQ0FBQSxDQUFBWCxDQUFBLEVBQUFFLENBQUEsS0FBQU0sQ0FBQSxDQUFBYixDQUFBLEdBQUFPLENBQUEsR0FBQU0sQ0FBQSxDQUFBQyxDQUFBLEdBQUFQLENBQUEsYUFBQUcsQ0FBQSxNQUFBTixDQUFBLFFBQUFDLENBQUEsS0FBQUgsQ0FBQSxZQUFBTCxDQUFBLEdBQUFPLENBQUEsQ0FBQUYsQ0FBQSxXQUFBTCxDQUFBLEdBQUFBLENBQUEsQ0FBQS9KLElBQUEsQ0FBQXNLLENBQUEsRUFBQUcsQ0FBQSxVQUFBVyxTQUFBLDJDQUFBckIsQ0FBQSxDQUFBc0IsSUFBQSxTQUFBdEIsQ0FBQSxFQUFBVSxDQUFBLEdBQUFWLENBQUEsQ0FBQTFhLEtBQUEsRUFBQWtiLENBQUEsU0FBQUEsQ0FBQSxvQkFBQUEsQ0FBQSxLQUFBUixDQUFBLEdBQUFPLENBQUEsZUFBQVAsQ0FBQSxDQUFBL0osSUFBQSxDQUFBc0ssQ0FBQSxHQUFBQyxDQUFBLFNBQUFFLENBQUEsR0FBQVcsU0FBQSx1Q0FBQWhCLENBQUEsZ0JBQUFHLENBQUEsT0FBQUQsQ0FBQSxHQUFBdlEsQ0FBQSxjQUFBZ1EsQ0FBQSxJQUFBZSxDQUFBLEdBQUFDLENBQUEsQ0FBQWIsQ0FBQSxRQUFBTyxDQUFBLEdBQUFULENBQUEsQ0FBQWhLLElBQUEsQ0FBQWtLLENBQUEsRUFBQWEsQ0FBQSxPQUFBRSxDQUFBLGtCQUFBbEIsQ0FBQSxJQUFBTyxDQUFBLEdBQUF2USxDQUFBLEVBQUF3USxDQUFBLE1BQUFFLENBQUEsR0FBQVYsQ0FBQSxjQUFBYSxDQUFBLG1CQUFBdmIsS0FBQSxFQUFBMGEsQ0FBQSxFQUFBc0IsSUFBQSxFQUFBUCxDQUFBLFNBQUFkLENBQUEsRUFBQUksQ0FBQSxFQUFBRSxDQUFBLFFBQUFHLENBQUEsUUFBQVEsQ0FBQSxnQkFBQVQsVUFBQSxjQUFBYyxrQkFBQSxjQUFBQywyQkFBQSxLQUFBeEIsQ0FBQSxHQUFBakUsTUFBQSxDQUFBMEYsY0FBQSxNQUFBakIsQ0FBQSxNQUFBTCxDQUFBLElBQUFILENBQUEsQ0FBQUEsQ0FBQSxJQUFBRyxDQUFBLFNBQUFTLG1CQUFBLENBQUFaLENBQUEsT0FBQUcsQ0FBQSxpQ0FBQUgsQ0FBQSxHQUFBVSxDQUFBLEdBQUFjLDBCQUFBLENBQUFwUCxTQUFBLEdBQUFxTyxTQUFBLENBQUFyTyxTQUFBLEdBQUEySixNQUFBLENBQUE0RSxNQUFBLENBQUFILENBQUEsWUFBQUssRUFBQTdRLENBQUEsV0FBQStMLE1BQUEsQ0FBQTJGLGNBQUEsR0FBQTNGLE1BQUEsQ0FBQTJGLGNBQUEsQ0FBQTFSLENBQUEsRUFBQXdSLDBCQUFBLEtBQUF4UixDQUFBLENBQUEyUixTQUFBLEdBQUFILDBCQUFBLEVBQUFaLG1CQUFBLENBQUE1USxDQUFBLEVBQUFxUSxDQUFBLHlCQUFBclEsQ0FBQSxDQUFBb0MsU0FBQSxHQUFBMkosTUFBQSxDQUFBNEUsTUFBQSxDQUFBRCxDQUFBLEdBQUExUSxDQUFBLFdBQUF1UixpQkFBQSxDQUFBblAsU0FBQSxHQUFBb1AsMEJBQUEsRUFBQVosbUJBQUEsQ0FBQUYsQ0FBQSxpQkFBQWMsMEJBQUEsR0FBQVosbUJBQUEsQ0FBQVksMEJBQUEsaUJBQUFELGlCQUFBLEdBQUFBLGlCQUFBLENBQUFLLFdBQUEsd0JBQUFoQixtQkFBQSxDQUFBWSwwQkFBQSxFQUFBbkIsQ0FBQSx3QkFBQU8sbUJBQUEsQ0FBQUYsQ0FBQSxHQUFBRSxtQkFBQSxDQUFBRixDQUFBLEVBQUFMLENBQUEsZ0JBQUFPLG1CQUFBLENBQUFGLENBQUEsRUFBQVAsQ0FBQSxpQ0FBQVMsbUJBQUEsQ0FBQUYsQ0FBQSw4REFBQW1CLFlBQUEsWUFBQUEsYUFBQSxhQUFBQyxDQUFBLEVBQUF2QixDQUFBLEVBQUF3QixDQUFBLEVBQUFsQixDQUFBO0FBQUEsU0FBQUQsb0JBQUE1USxDQUFBLEVBQUFpUSxDQUFBLEVBQUFFLENBQUEsRUFBQUgsQ0FBQSxRQUFBTyxDQUFBLEdBQUF4RSxNQUFBLENBQUFpRyxjQUFBLFFBQUF6QixDQUFBLHVCQUFBdlEsQ0FBQSxJQUFBdVEsQ0FBQSxRQUFBSyxtQkFBQSxZQUFBcUIsbUJBQUFqUyxDQUFBLEVBQUFpUSxDQUFBLEVBQUFFLENBQUEsRUFBQUgsQ0FBQSxhQUFBSyxFQUFBSixDQUFBLEVBQUFFLENBQUEsSUFBQVMsbUJBQUEsQ0FBQTVRLENBQUEsRUFBQWlRLENBQUEsWUFBQWpRLENBQUEsZ0JBQUFrUyxPQUFBLENBQUFqQyxDQUFBLEVBQUFFLENBQUEsRUFBQW5RLENBQUEsU0FBQWlRLENBQUEsR0FBQU0sQ0FBQSxHQUFBQSxDQUFBLENBQUF2USxDQUFBLEVBQUFpUSxDQUFBLElBQUEzYSxLQUFBLEVBQUE2YSxDQUFBLEVBQUFnQyxVQUFBLEdBQUFuQyxDQUFBLEVBQUFvQyxZQUFBLEdBQUFwQyxDQUFBLEVBQUFxQyxRQUFBLEdBQUFyQyxDQUFBLE1BQUFoUSxDQUFBLENBQUFpUSxDQUFBLElBQUFFLENBQUEsSUFBQUUsQ0FBQSxhQUFBQSxDQUFBLGNBQUFBLENBQUEsbUJBQUFPLG1CQUFBLENBQUE1USxDQUFBLEVBQUFpUSxDQUFBLEVBQUFFLENBQUEsRUFBQUgsQ0FBQTtBQURBO0FBQ0E7QUFDQTs7QUFFb0Q7QUFFaEI7QUFDNkI7QUFHUztBQVNuRSxJQUFLcUYsd0JBQXdCLDBCQUF4QkEsd0JBQXdCO0VBQXhCQSx3QkFBd0IsQ0FBeEJBLHdCQUF3QjtFQUF4QkEsd0JBQXdCLENBQXhCQSx3QkFBd0I7RUFBQSxPQUF4QkEsd0JBQXdCO0FBQUE7QUFLN0IsSUFBTUMsaUJBQXdDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDO0FBQUMsSUFFdERDLHFCQUFxQjtFQXNHeEMsU0FBQUEsc0JBQUEsRUFBc0I7SUFBQTNnQixpRkFBQSxPQUFBMmdCLHFCQUFBO0lBQ3BCLE1BQU0sSUFBSXBiLEtBQUssQ0FBQyxzRUFBc0UsQ0FBQztFQUN6RjtFQUFDLE9BQUFoRiw4RUFBQSxDQUFBb2dCLHFCQUFBO0lBQUFuZ0IsR0FBQTtJQUFBQyxHQUFBLEVBaEdELFNBQUFBLElBQUEsRUFBb0U7TUFDbEUsT0FBT2tnQixxQkFBcUIsQ0FBQ0Msc0JBQXNCO0lBQ3JEO0VBQUM7SUFBQXBnQixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFPbWdCLHlCQUF5QkEsQ0FBQSxFQUFTO01BQ3ZDLElBQUl6YixzRUFBaUIsQ0FBQzBiLG1CQUFtQixFQUFFO1FBQ3pDLElBQU1sQyxPQUFPLEdBQUcrQixxQkFBcUIsQ0FBQ0ksaUNBQWlDLENBQUMsQ0FBQyxTQUNqRSxDQUFDLFVBQUEzVixDQUFDO1VBQUEsT0FBSXVWLHFCQUFxQixDQUFDeFcsT0FBTyxDQUFDUyxLQUFLLENBQUMsMkNBQTJDLEVBQUVRLENBQUMsQ0FBQztRQUFBLEVBQUM7TUFDcEc7SUFDRjtFQUFDO0lBQUE1SyxHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBc2dCLGtDQUFBLEdBQUEvQixtRkFBQSxjQUFBaEMsWUFBQSxHQUFBRSxDQUFBLENBRUQsU0FBQStCLFFBQUE7UUFBQSxPQUFBakMsWUFBQSxHQUFBQyxDQUFBLFdBQUFtQyxRQUFBO1VBQUEsa0JBQUFBLFFBQUEsQ0FBQTlELENBQUE7WUFBQTtjQUFBLE9BQUE4RCxRQUFBLENBQUEvQyxDQUFBLElBQ1NxRSxxQkFBcUIsQ0FBQ00sT0FBTyxHQUFHO2dCQUNyQ0MsU0FBUyxFQUFFLFVBQVU7Z0JBQ3JCQyxjQUFjLEVBQUVSLHFCQUFxQixDQUFDUyx5QkFBeUIsQ0FBQyxDQUFDLFNBQ3pELENBQUMsVUFBQWhXLENBQUMsRUFBSTtrQkFDVnVWLHFCQUFxQixDQUFDTSxPQUFPLEdBQUcsSUFBSTtrQkFFcEMsTUFBTTdWLENBQUM7Z0JBQ1QsQ0FBQztjQUNMLENBQUM7VUFBQTtRQUFBLEdBQUE4VCxPQUFBO01BQUEsQ0FDRjtNQUFBLFNBVlk2QixpQ0FBaUNBLENBQUE7UUFBQSxPQUFBQyxrQ0FBQSxDQUFBckIsS0FBQSxPQUFBM0ssU0FBQTtNQUFBO01BQUEsT0FBakMrTCxpQ0FBaUM7SUFBQTtFQUFBO0lBQUF2Z0IsR0FBQTtJQUFBRSxLQUFBO01BQUEsSUFBQTJnQiwwQkFBQSxHQUFBcEMsbUZBQUEsY0FBQWhDLFlBQUEsR0FBQUUsQ0FBQSxDQVk5QyxTQUFBbUUsU0FBQTtRQUFBLElBQUFKLFNBQUE7VUFBQUssVUFBQTtVQUFBQyx3QkFBQTtVQUFBOWdCLEtBQUE7VUFBQStnQixhQUFBO1VBQUFDLE1BQUEsR0FBQTFNLFNBQUE7UUFBQSxPQUFBaUksWUFBQSxHQUFBQyxDQUFBLFdBQUF5RSxTQUFBO1VBQUEsa0JBQUFBLFNBQUEsQ0FBQXBHLENBQUE7WUFBQTtjQUF1QzJGLFNBQXFDLEdBQUFRLE1BQUEsQ0FBQTFXLE1BQUEsUUFBQTBXLE1BQUEsUUFBQTlhLFNBQUEsR0FBQThhLE1BQUEsTUFBRyxVQUFVO2NBQUVILFVBQVUsR0FBQUcsTUFBQSxDQUFBMVcsTUFBQSxRQUFBMFcsTUFBQSxRQUFBOWEsU0FBQSxHQUFBOGEsTUFBQSxNQUFHaEIsaUJBQWlCO2NBQUVjLHdCQUFrRCxHQUFBRSxNQUFBLENBQUExVyxNQUFBLFFBQUEwVyxNQUFBLFFBQUE5YSxTQUFBLEdBQUE4YSxNQUFBLE1BQUdqQix3QkFBd0IsQ0FBQ21CLFFBQVE7Y0FBQSxNQUMzTWpCLHFCQUFxQixDQUFDTSxPQUFPLElBQUlOLHFCQUFxQixDQUFDTSxPQUFPLENBQUNDLFNBQVMsS0FBS0EsU0FBUyxJQUFJTSx3QkFBd0IsS0FBS2Ysd0JBQXdCLENBQUNtQixRQUFRLElBQUksSUFBSSxDQUFDQyxnQ0FBZ0MsQ0FBQ04sVUFBVSxDQUFDO2dCQUFBSSxTQUFBLENBQUFwRyxDQUFBO2dCQUFBO2NBQUE7Y0FDek03YSxLQUFLLEdBQUdpZ0IscUJBQXFCLENBQUNNLE9BQU8sQ0FBQ0UsY0FBYztjQUUxRFIscUJBQXFCLENBQUNNLE9BQU8sR0FBRyxJQUFJO2NBQUMsT0FBQVUsU0FBQSxDQUFBckYsQ0FBQSxJQUU5QjViLEtBQUs7WUFBQTtjQUdSK2dCLGFBQTJDLEdBQUdyYyxzRUFBaUIsQ0FBQzZJLG1DQUFtQyxHQUFHO2dCQUFDdVQsd0JBQXdCLEVBQUVBLHdCQUF3QixLQUFLZix3QkFBd0IsQ0FBQ3FCO2NBQU8sQ0FBQyxHQUFHbGIsU0FBUztjQUFBLE9BQUErYSxTQUFBLENBQUFyRixDQUFBLElBRTFNcUUscUJBQXFCLENBQUNDLHNCQUFzQixDQUFDbGdCLEtBQUssQ0FBQ3FoQixvQkFBb0IsQ0FBQ04sYUFBYSxDQUFDLENBQzFGeEQsSUFBSTtnQkFBQSxJQUFBNVcsSUFBQSxHQUFBNFgsbUZBQUEsY0FBQWhDLFlBQUEsR0FBQUUsQ0FBQSxDQUFDLFNBQUEwQyxTQUFNc0IsY0FBYztrQkFBQSxJQUFBYSxzQkFBQSxFQUFBQyxpQkFBQSxFQUFBQyxpQkFBQSxFQUFBQyxPQUFBLEVBQUFDLEVBQUEsRUFBQUMsR0FBQSxFQUFBQyxHQUFBLEVBQUFDLEdBQUEsRUFBQUMsR0FBQSxFQUFBQyxHQUFBO2tCQUFBLE9BQUF4RixZQUFBLEdBQUFDLENBQUEsV0FBQTRDLFNBQUE7b0JBQUEsa0JBQUFBLFNBQUEsQ0FBQXZFLENBQUE7c0JBQUE7d0JBQ2xCeUcsc0JBQXNCLEdBQUdiLGNBQWMsQ0FBQ2Esc0JBQXNCO3dCQUM5REMsaUJBQXNDLEdBQUcsRUFBRTt3QkFDM0NDLGlCQUFzQyxHQUFHLEVBQUU7d0JBQUEsS0FFN0NGLHNCQUFzQjswQkFBQWxDLFNBQUEsQ0FBQXZFLENBQUE7MEJBQUE7d0JBQUE7d0JBQ3hCZ0csVUFBVSxDQUFDaFEsT0FBTyxDQUFDLFVBQUFnTixJQUFJLEVBQUk7MEJBQ3pCLElBQUlBLElBQUksS0FBSyxPQUFPLEVBQUU7NEJBQ3BCMEQsaUJBQWlCLENBQUNqWSxJQUFJLENBQUNtWCxjQUFjLENBQUN1QixjQUFjLENBQUNuRSxJQUFJLEVBQUU7OEJBQUMyQyxTQUFTLEVBQVRBOzRCQUFTLENBQUMsQ0FBQyxDQUFDOzRCQUV4RTswQkFDRjswQkFFQSxJQUFJM0MsSUFBSSxLQUFLLE9BQU8sRUFBRTs0QkFDcEIyRCxpQkFBaUIsQ0FBQ2xZLElBQUksQ0FBQ21YLGNBQWMsQ0FBQ3VCLGNBQWMsQ0FBQ25FLElBQUksRUFBRTs4QkFBQzJDLFNBQVMsRUFBVEE7NEJBQVMsQ0FBQyxDQUFDLENBQUM7NEJBRXhFOzBCQUNGO3dCQUNGLENBQUMsQ0FBQzt3QkFBQ2tCLEVBQUEsR0FHREgsaUJBQWlCO3dCQUFBSSxHQUFBLEdBQ2pCSCxpQkFBaUI7d0JBQUFJLEdBQUEsR0FDRG5CLGNBQWM7d0JBQUFyQixTQUFBLENBQUF2RSxDQUFBO3dCQUFBLE9BQ1o0RixjQUFjLENBQUN3QixXQUFXLENBQUMvYixTQUFTLENBQUM7c0JBQUE7d0JBQUEyYixHQUFBLEdBQUF6QyxTQUFBLENBQUF6RCxDQUFBO3dCQUFBLE9BQUF5RCxTQUFBLENBQUF4RCxDQUFBOzBCQUh2RDJGLGlCQUFpQixFQUFBRyxFQUFBOzBCQUNqQkYsaUJBQWlCLEVBQUFHLEdBQUE7MEJBQ2pCbEIsY0FBYyxFQUFBbUIsR0FBQTswQkFDZE0sVUFBVSxFQUFBTDt3QkFBQTtzQkFBQTt3QkFJUkosT0FBTyxHQUFHakIsU0FBUyxLQUFLLFVBQVUsR0FBRzswQkFDekMyQixtQkFBbUIsRUFBRSxJQUFJOzBCQUN6QkMsbUJBQW1CLEVBQUU7d0JBQ3ZCLENBQUMsR0FBRyxDQUFDLENBQUM7d0JBQUFOLEdBQUEsR0FHWXJCLGNBQWM7d0JBQUFyQixTQUFBLENBQUF2RSxDQUFBO3dCQUFBLE9BQ1o0RixjQUFjLENBQUN3QixXQUFXLENBQUNSLE9BQU8sQ0FBQztzQkFBQTt3QkFBQU0sR0FBQSxHQUFBM0MsU0FBQSxDQUFBekQsQ0FBQTt3QkFBQSxPQUFBeUQsU0FBQSxDQUFBeEQsQ0FBQTswQkFEckQ2RSxjQUFjLEVBQUFxQixHQUFBOzBCQUNkSSxVQUFVLEVBQUFIO3dCQUFBO29CQUFBO2tCQUFBLEdBQUE1QyxRQUFBO2dCQUFBLENBRWI7Z0JBQUEsaUJBQUFILEVBQUE7a0JBQUEsT0FBQXJZLElBQUEsQ0FBQXNZLEtBQUEsT0FBQTNLLFNBQUE7Z0JBQUE7Y0FBQSxJQUFDO1VBQUE7UUFBQSxHQUFBc00sUUFBQTtNQUFBLENBQ0w7TUFBQSxTQWxEWUYseUJBQXlCQSxDQUFBO1FBQUEsT0FBQUMsMEJBQUEsQ0FBQTFCLEtBQUEsT0FBQTNLLFNBQUE7TUFBQTtNQUFBLE9BQXpCb00seUJBQXlCO0lBQUE7RUFBQTtJQUFBNWdCLEdBQUE7SUFBQUUsS0FBQSxFQW9EdEMsU0FBZW1oQixnQ0FBZ0NBLENBQUNrQixXQUFrQyxFQUFXO01BQzNGLElBQUlBLFdBQVcsQ0FBQy9YLE1BQU0sS0FBSzBWLGlCQUFpQixDQUFDMVYsTUFBTSxFQUFFO1FBQ25ELE9BQU8sS0FBSztNQUNkO01BRUEsSUFBTWdZLGVBQWUsR0FBRyxTQUFsQkEsZUFBZUEsQ0FBSW5NLEtBQTRCO1FBQUEsT0FBS0EsS0FBSyxDQUFDM0QsTUFBTSxDQUFDLFVBQUMrUCxjQUFjLEVBQUUxRSxJQUFJLEVBQUs7VUFDL0YwRSxjQUFjLENBQUMxRSxJQUFJLENBQUMsR0FBRyxDQUFDMEUsY0FBYyxDQUFDMUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7VUFFdEQsT0FBTzBFLGNBQWM7UUFDdkIsQ0FBQyxFQUFFO1VBQ0RDLEtBQUssRUFBRSxDQUFDO1VBQ1JDLEtBQUssRUFBRTtRQUNULENBQUMsQ0FBQztNQUFBO01BQ0YsSUFBTUMsaUJBQWlCLEdBQUdKLGVBQWUsQ0FBQ0QsV0FBVyxDQUFDO01BQ3RELElBQU1NLHdCQUF3QixHQUFHTCxlQUFlLENBQUN0QyxpQkFBaUIsQ0FBQztNQUVuRSxPQUFPMEMsaUJBQWlCLENBQUNGLEtBQUssS0FBS0csd0JBQXdCLENBQUNILEtBQUssSUFBSUUsaUJBQWlCLENBQUNELEtBQUssS0FBS0Usd0JBQXdCLENBQUNGLEtBQUs7SUFDakk7RUFBQztBQUFBO0FBQUFsakIsaUZBQUEsQ0FwR2tCMGdCLHFCQUFxQixhQUNON1gsNkRBQWEsQ0FBQ0csU0FBUyxDQUFDLHVCQUF1QixDQUFDO0FBQUFoSixpRkFBQSxDQUQvRDBnQixxQkFBcUIsNEJBRTBDLElBQUkvZ0IsbURBQU8sQ0FBeUIsSUFBSTRnQixxRUFBNEIsQ0FBQyxDQUFDLENBQUM7QUFBQXZnQixpRkFBQSxDQUZ0STBnQixxQkFBcUI7QUFBQTtBQTJHMUNBLHFCQUFxQixDQUFDRSx5QkFBeUIsQ0FBQyxDQUFDLEM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDcklqRDtBQUNBO0FBQ0E7QUFGQSxJQUlxQnlDLHVCQUF1QjtFQStCMUMsU0FBQUEsd0JBQUEsRUFBc0I7SUFBQXRqQixpRkFBQSxPQUFBc2pCLHVCQUFBO0lBQ3BCLE1BQU0sSUFBSS9kLEtBQUssQ0FBQyx3RUFBd0UsQ0FBQztFQUMzRjtFQUFDLE9BQUFoRiw4RUFBQSxDQUFBK2lCLHVCQUFBO0lBQUE5aUIsR0FBQTtJQUFBRSxLQUFBLEVBaENELFNBQU82aUIsa0JBQWtCQSxDQUFDOUIsYUFBK0IsRUFBb0I7TUFDM0UsSUFBTStCLFVBQTBCLEdBQUcsRUFBRTtNQUVyQyxJQUFJLENBQUMvQixhQUFhLENBQUMrQixVQUFVLEVBQUU7UUFDN0IsT0FBTy9CLGFBQWE7TUFDdEI7TUFFQSxLQUFLLElBQUk5RixDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUc4RixhQUFhLENBQUMrQixVQUFVLENBQUN4WSxNQUFNLEVBQUUyUSxDQUFDLEVBQUUsRUFBRTtRQUN4RCxJQUFNOEgsSUFBYyxHQUFHLEVBQUU7UUFFekIsS0FBSyxJQUFJbE4sS0FBSyxHQUFHLENBQUMsRUFBRUEsS0FBSyxHQUFHLENBQUMsRUFBRUEsS0FBSyxFQUFFLEVBQUU7VUFDdEMsSUFBTWhHLEdBQUcsR0FBR2tSLGFBQWEsQ0FBQytCLFVBQVUsQ0FBQzdILENBQUMsQ0FBQyxDQUFDOEgsSUFBSSxDQUFDbE4sS0FBSyxDQUFDO1VBRW5ELElBQUloRyxHQUFHLEVBQUU7WUFDUGtULElBQUksQ0FBQ3paLElBQUksQ0FBQ3lYLGFBQWEsQ0FBQytCLFVBQVUsQ0FBQzdILENBQUMsQ0FBQyxDQUFDOEgsSUFBSSxDQUFDbE4sS0FBSyxDQUFDLENBQUM7VUFDcEQ7UUFDRjtRQUVBaU4sVUFBVSxDQUFDeFosSUFBSSxDQUFDO1VBQ2R5WixJQUFJLEVBQUVBLElBQUk7VUFDVkMsUUFBUSxFQUFFakMsYUFBYSxDQUFDK0IsVUFBVSxDQUFDN0gsQ0FBQyxDQUFDLENBQUMrSCxRQUFRO1VBQzlDQyxVQUFVLEVBQUVsQyxhQUFhLENBQUMrQixVQUFVLENBQUM3SCxDQUFDLENBQUMsQ0FBQ2dJO1FBQzFDLENBQUMsQ0FBQztNQUNKO01BRUFsQyxhQUFhLENBQUMrQixVQUFVLEdBQUdBLFVBQVU7TUFFckMsT0FBTy9CLGFBQWE7SUFDdEI7RUFBQztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCQ2hDSCx1S0FBQXJXLENBQUEsRUFBQWdRLENBQUEsRUFBQUMsQ0FBQSx3QkFBQUMsTUFBQSxHQUFBQSxNQUFBLE9BQUFDLENBQUEsR0FBQUYsQ0FBQSxDQUFBRyxRQUFBLGtCQUFBQyxDQUFBLEdBQUFKLENBQUEsQ0FBQUssV0FBQSw4QkFBQUMsRUFBQU4sQ0FBQSxFQUFBRSxDQUFBLEVBQUFFLENBQUEsRUFBQUUsQ0FBQSxRQUFBQyxDQUFBLEdBQUFMLENBQUEsSUFBQUEsQ0FBQSxDQUFBL04sU0FBQSxZQUFBcU8sU0FBQSxHQUFBTixDQUFBLEdBQUFNLFNBQUEsRUFBQUMsQ0FBQSxHQUFBM0UsTUFBQSxDQUFBNEUsTUFBQSxDQUFBSCxDQUFBLENBQUFwTyxTQUFBLFVBQUF3TyxtQkFBQSxDQUFBRixDQUFBLHVCQUFBVCxDQUFBLEVBQUFFLENBQUEsRUFBQUUsQ0FBQSxRQUFBRSxDQUFBLEVBQUFDLENBQUEsRUFBQUUsQ0FBQSxFQUFBRyxDQUFBLE1BQUFDLENBQUEsR0FBQVQsQ0FBQSxRQUFBVSxDQUFBLE9BQUFDLENBQUEsS0FBQUYsQ0FBQSxLQUFBWCxDQUFBLEtBQUFjLENBQUEsRUFBQWpSLENBQUEsRUFBQWtSLENBQUEsRUFBQUMsQ0FBQSxFQUFBTixDQUFBLEVBQUFNLENBQUEsQ0FBQXhXLElBQUEsQ0FBQXFGLENBQUEsTUFBQW1SLENBQUEsV0FBQUEsRUFBQW5CLENBQUEsRUFBQUMsQ0FBQSxXQUFBTSxDQUFBLEdBQUFQLENBQUEsRUFBQVEsQ0FBQSxNQUFBRSxDQUFBLEdBQUExUSxDQUFBLEVBQUFnUixDQUFBLENBQUFiLENBQUEsR0FBQUYsQ0FBQSxFQUFBaUIsQ0FBQSxnQkFBQUMsRUFBQWxCLENBQUEsRUFBQUUsQ0FBQSxTQUFBSyxDQUFBLEdBQUFQLENBQUEsRUFBQVMsQ0FBQSxHQUFBUCxDQUFBLEVBQUFILENBQUEsT0FBQWUsQ0FBQSxJQUFBRixDQUFBLEtBQUFSLENBQUEsSUFBQUwsQ0FBQSxHQUFBYyxDQUFBLENBQUFsUixNQUFBLEVBQUFvUSxDQUFBLFVBQUFLLENBQUEsRUFBQUUsQ0FBQSxHQUFBTyxDQUFBLENBQUFkLENBQUEsR0FBQW1CLENBQUEsR0FBQUgsQ0FBQSxDQUFBRixDQUFBLEVBQUFNLENBQUEsR0FBQWIsQ0FBQSxLQUFBTixDQUFBLFFBQUFJLENBQUEsR0FBQWUsQ0FBQSxLQUFBakIsQ0FBQSxNQUFBTyxDQUFBLEdBQUFILENBQUEsRUFBQUMsQ0FBQSxHQUFBRCxDQUFBLFlBQUFDLENBQUEsV0FBQUQsQ0FBQSxNQUFBQSxDQUFBLE1BQUF2USxDQUFBLElBQUF1USxDQUFBLE9BQUFZLENBQUEsTUFBQWQsQ0FBQSxHQUFBSixDQUFBLFFBQUFrQixDQUFBLEdBQUFaLENBQUEsUUFBQUMsQ0FBQSxNQUFBUSxDQUFBLENBQUFDLENBQUEsR0FBQWQsQ0FBQSxFQUFBYSxDQUFBLENBQUFiLENBQUEsR0FBQUksQ0FBQSxPQUFBWSxDQUFBLEdBQUFDLENBQUEsS0FBQWYsQ0FBQSxHQUFBSixDQUFBLFFBQUFNLENBQUEsTUFBQUosQ0FBQSxJQUFBQSxDQUFBLEdBQUFpQixDQUFBLE1BQUFiLENBQUEsTUFBQU4sQ0FBQSxFQUFBTSxDQUFBLE1BQUFKLENBQUEsRUFBQWEsQ0FBQSxDQUFBYixDQUFBLEdBQUFpQixDQUFBLEVBQUFaLENBQUEsY0FBQUgsQ0FBQSxJQUFBSixDQUFBLGFBQUFpQixDQUFBLFFBQUFILENBQUEsT0FBQVosQ0FBQSxxQkFBQUUsQ0FBQSxFQUFBUyxDQUFBLEVBQUFNLENBQUEsUUFBQVAsQ0FBQSxZQUFBUSxTQUFBLHVDQUFBTixDQUFBLFVBQUFELENBQUEsSUFBQUssQ0FBQSxDQUFBTCxDQUFBLEVBQUFNLENBQUEsR0FBQVosQ0FBQSxHQUFBTSxDQUFBLEVBQUFKLENBQUEsR0FBQVUsQ0FBQSxHQUFBcEIsQ0FBQSxHQUFBUSxDQUFBLE9BQUF4USxDQUFBLEdBQUEwUSxDQUFBLE1BQUFLLENBQUEsS0FBQVIsQ0FBQSxLQUFBQyxDQUFBLEdBQUFBLENBQUEsUUFBQUEsQ0FBQSxTQUFBUSxDQUFBLENBQUFiLENBQUEsUUFBQWdCLENBQUEsQ0FBQVgsQ0FBQSxFQUFBRSxDQUFBLEtBQUFNLENBQUEsQ0FBQWIsQ0FBQSxHQUFBTyxDQUFBLEdBQUFNLENBQUEsQ0FBQUMsQ0FBQSxHQUFBUCxDQUFBLGFBQUFHLENBQUEsTUFBQU4sQ0FBQSxRQUFBQyxDQUFBLEtBQUFILENBQUEsWUFBQUwsQ0FBQSxHQUFBTyxDQUFBLENBQUFGLENBQUEsV0FBQUwsQ0FBQSxHQUFBQSxDQUFBLENBQUEvSixJQUFBLENBQUFzSyxDQUFBLEVBQUFHLENBQUEsVUFBQVcsU0FBQSwyQ0FBQXJCLENBQUEsQ0FBQXNCLElBQUEsU0FBQXRCLENBQUEsRUFBQVUsQ0FBQSxHQUFBVixDQUFBLENBQUExYSxLQUFBLEVBQUFrYixDQUFBLFNBQUFBLENBQUEsb0JBQUFBLENBQUEsS0FBQVIsQ0FBQSxHQUFBTyxDQUFBLGVBQUFQLENBQUEsQ0FBQS9KLElBQUEsQ0FBQXNLLENBQUEsR0FBQUMsQ0FBQSxTQUFBRSxDQUFBLEdBQUFXLFNBQUEsdUNBQUFoQixDQUFBLGdCQUFBRyxDQUFBLE9BQUFELENBQUEsR0FBQXZRLENBQUEsY0FBQWdRLENBQUEsSUFBQWUsQ0FBQSxHQUFBQyxDQUFBLENBQUFiLENBQUEsUUFBQU8sQ0FBQSxHQUFBVCxDQUFBLENBQUFoSyxJQUFBLENBQUFrSyxDQUFBLEVBQUFhLENBQUEsT0FBQUUsQ0FBQSxrQkFBQWxCLENBQUEsSUFBQU8sQ0FBQSxHQUFBdlEsQ0FBQSxFQUFBd1EsQ0FBQSxNQUFBRSxDQUFBLEdBQUFWLENBQUEsY0FBQWEsQ0FBQSxtQkFBQXZiLEtBQUEsRUFBQTBhLENBQUEsRUFBQXNCLElBQUEsRUFBQVAsQ0FBQSxTQUFBZCxDQUFBLEVBQUFJLENBQUEsRUFBQUUsQ0FBQSxRQUFBRyxDQUFBLFFBQUFRLENBQUEsZ0JBQUFULFVBQUEsY0FBQWMsa0JBQUEsY0FBQUMsMkJBQUEsS0FBQXhCLENBQUEsR0FBQWpFLE1BQUEsQ0FBQTBGLGNBQUEsTUFBQWpCLENBQUEsTUFBQUwsQ0FBQSxJQUFBSCxDQUFBLENBQUFBLENBQUEsSUFBQUcsQ0FBQSxTQUFBUyxtQkFBQSxDQUFBWixDQUFBLE9BQUFHLENBQUEsaUNBQUFILENBQUEsR0FBQVUsQ0FBQSxHQUFBYywwQkFBQSxDQUFBcFAsU0FBQSxHQUFBcU8sU0FBQSxDQUFBck8sU0FBQSxHQUFBMkosTUFBQSxDQUFBNEUsTUFBQSxDQUFBSCxDQUFBLFlBQUFLLEVBQUE3USxDQUFBLFdBQUErTCxNQUFBLENBQUEyRixjQUFBLEdBQUEzRixNQUFBLENBQUEyRixjQUFBLENBQUExUixDQUFBLEVBQUF3UiwwQkFBQSxLQUFBeFIsQ0FBQSxDQUFBMlIsU0FBQSxHQUFBSCwwQkFBQSxFQUFBWixtQkFBQSxDQUFBNVEsQ0FBQSxFQUFBcVEsQ0FBQSx5QkFBQXJRLENBQUEsQ0FBQW9DLFNBQUEsR0FBQTJKLE1BQUEsQ0FBQTRFLE1BQUEsQ0FBQUQsQ0FBQSxHQUFBMVEsQ0FBQSxXQUFBdVIsaUJBQUEsQ0FBQW5QLFNBQUEsR0FBQW9QLDBCQUFBLEVBQUFaLG1CQUFBLENBQUFGLENBQUEsaUJBQUFjLDBCQUFBLEdBQUFaLG1CQUFBLENBQUFZLDBCQUFBLGlCQUFBRCxpQkFBQSxHQUFBQSxpQkFBQSxDQUFBSyxXQUFBLHdCQUFBaEIsbUJBQUEsQ0FBQVksMEJBQUEsRUFBQW5CLENBQUEsd0JBQUFPLG1CQUFBLENBQUFGLENBQUEsR0FBQUUsbUJBQUEsQ0FBQUYsQ0FBQSxFQUFBTCxDQUFBLGdCQUFBTyxtQkFBQSxDQUFBRixDQUFBLEVBQUFQLENBQUEsaUNBQUFTLG1CQUFBLENBQUFGLENBQUEsOERBQUFtQixZQUFBLFlBQUFBLGFBQUEsYUFBQUMsQ0FBQSxFQUFBdkIsQ0FBQSxFQUFBd0IsQ0FBQSxFQUFBbEIsQ0FBQTtBQUFBLFNBQUFELG9CQUFBNVEsQ0FBQSxFQUFBaVEsQ0FBQSxFQUFBRSxDQUFBLEVBQUFILENBQUEsUUFBQU8sQ0FBQSxHQUFBeEUsTUFBQSxDQUFBaUcsY0FBQSxRQUFBekIsQ0FBQSx1QkFBQXZRLENBQUEsSUFBQXVRLENBQUEsUUFBQUssbUJBQUEsWUFBQXFCLG1CQUFBalMsQ0FBQSxFQUFBaVEsQ0FBQSxFQUFBRSxDQUFBLEVBQUFILENBQUEsYUFBQUssRUFBQUosQ0FBQSxFQUFBRSxDQUFBLElBQUFTLG1CQUFBLENBQUE1USxDQUFBLEVBQUFpUSxDQUFBLFlBQUFqUSxDQUFBLGdCQUFBa1MsT0FBQSxDQUFBakMsQ0FBQSxFQUFBRSxDQUFBLEVBQUFuUSxDQUFBLFNBQUFpUSxDQUFBLEdBQUFNLENBQUEsR0FBQUEsQ0FBQSxDQUFBdlEsQ0FBQSxFQUFBaVEsQ0FBQSxJQUFBM2EsS0FBQSxFQUFBNmEsQ0FBQSxFQUFBZ0MsVUFBQSxHQUFBbkMsQ0FBQSxFQUFBb0MsWUFBQSxHQUFBcEMsQ0FBQSxFQUFBcUMsUUFBQSxHQUFBckMsQ0FBQSxNQUFBaFEsQ0FBQSxDQUFBaVEsQ0FBQSxJQUFBRSxDQUFBLElBQUFFLENBQUEsYUFBQUEsQ0FBQSxjQUFBQSxDQUFBLG1CQUFBTyxtQkFBQSxDQUFBNVEsQ0FBQSxFQUFBaVEsQ0FBQSxFQUFBRSxDQUFBLEVBQUFILENBQUE7QUFEQTtBQUNBO0FBQ0E7O0FBRXFEO0FBQ1k7QUFDYjtBQUVoQjtBQUVnQjtBQUVoQjtBQWdDcEMsSUFBTXlJLHNCQUFzQixHQUFHLElBQUk7QUFDbkMsSUFBTUMsdUJBQXVCLEdBQUcsSUFBSTtBQUFDLElBRWhCQyxvQkFBb0I7RUFhdkMsU0FBQUEscUJBQVk1QyxjQUErQixFQUFFNkMsV0FBd0IsRUFBRUMsc0JBQThCLEVBQUVDLFlBQXNDLEVBQUU7SUFBQSxJQUFBampCLEtBQUE7SUFBQWpCLGlGQUFBLE9BQUErakIsb0JBQUE7SUFBQTlqQixpRkFBQSxrQkFaM0c2SSw2REFBYSxDQUFDRyxTQUFTLENBQUMsc0JBQXNCLENBQUM7SUFBQWhKLGlGQUFBO0lBQUFBLGlGQUFBLCtCQUVuQyxTQUFTO0lBQUFBLGlGQUFBLCtCQUNULFNBQVM7SUFBQUEsaUZBQUEsd0JBQ2MsSUFBSUwsbURBQU8sQ0FBOEIsQ0FBQyxDQUFDLENBQUM7SUFBQUssaUZBQUEsdUJBQ25FLElBQUlOLDREQUFjLENBQUMsQ0FBQztJQUFBTSxpRkFBQTtJQUFBQSxpRkFBQSw0QkFFeEMsSUFBSTtJQUFBQSxpRkFBQSx5QkFDUSxJQUFJO0lBQUFBLGlGQUFBO0lBQUFBLGlGQUFBLDZCQUVmLENBQUM7SUFHNUIsSUFBSSxDQUFDa2tCLGVBQWUsR0FBR2hELGNBQWM7SUFDckMsSUFBSSxDQUFDaUQsdUJBQXVCLEdBQUdILHNCQUFzQjtJQUNyRCxJQUFJLENBQUNJLGdCQUFnQixHQUFHTCxXQUFXLENBQUNNLFNBQVMsQ0FBQyxDQUFDLENBQUNDLEdBQUcsQ0FBQyxVQUFBQyxLQUFLO01BQUEsT0FBSUEsS0FBSyxDQUFDakcsSUFBSTtJQUFBLEVBQUMsSUFBSSxFQUFFO0lBRTlFLElBQUksSUFBSSxDQUFDNEYsZUFBZSxFQUFFO01BQUEsSUFBQU0scUJBQUEsRUFBQUMsc0JBQUE7TUFDeEIsSUFBSSxDQUFDdGYsc0VBQWlCLENBQUN1Zix1QkFBdUIsS0FBQUYscUJBQUEsR0FBSSxJQUFJLENBQUNOLGVBQWUsY0FBQU0scUJBQUEsZ0JBQUFDLHNCQUFBLEdBQXBCRCxxQkFBQSxDQUFzQkcsd0JBQXdCLGNBQUFGLHNCQUFBLGVBQTlDQSxzQkFBQSxDQUFnREcsR0FBRyxFQUFFO1FBQ3JHLElBQU1DLFNBQVMsR0FBRyxJQUFJbEIsa0RBQVMsQ0FBQyxJQUFJLENBQUNPLGVBQWUsQ0FBQ1Msd0JBQXdCLENBQUNDLEdBQUcsQ0FBQztRQUVsRixJQUFJLENBQUNFLG9CQUFvQixHQUFHRCxTQUFTLENBQUNFLFVBQVU7UUFDaEQsSUFBSSxDQUFDQyxvQkFBb0IsR0FBR0gsU0FBUyxDQUFDSSxVQUFVO01BQ2xEO01BRUEsSUFBSUMsNkJBQTZCLEdBQUcsSUFBSTtNQUV4QyxJQUFJLENBQUNua0IsWUFBWSxDQUFDUSxHQUFHLENBQ25CMGlCLFlBQVksQ0FBQ3BULFNBQVMsQ0FBQyxVQUFBc1UsVUFBVSxFQUFJO1FBQ25DLElBQUlELDZCQUE2QixFQUFFO1VBQ2pDQSw2QkFBNkIsR0FBRyxLQUFLO1VBRXJDO1FBQ0Y7UUFFQSxJQUFJLENBQUNDLFVBQVUsSUFBSSxDQUFDbmtCLEtBQUksQ0FBQ29rQixpQkFBaUIsRUFBRTtVQUMxQztRQUNGOztRQUVBO1FBQ0Fwa0IsS0FBSSxDQUFDcWtCLGtCQUFrQixFQUFFO1FBRXpCLElBQUlya0IsS0FBSSxDQUFDc2tCLGNBQWMsRUFBRTtVQUN2QjlsQixnRUFBVyxDQUFDaUIsS0FBSyxDQUFDa1AsWUFBWSxDQUFDM08sS0FBSSxDQUFDc2tCLGNBQWMsQ0FBQztVQUNuRHRrQixLQUFJLENBQUNza0IsY0FBYyxHQUFHLElBQUk7UUFDNUI7UUFFQXRrQixLQUFJLENBQUNrSixPQUFPLENBQUNnTCxLQUFLLENBQUMsc0RBQXNELENBQUM7UUFDMUVsVSxLQUFJLENBQUN1a0IsZUFBZSxDQUFDLENBQUM7TUFDeEIsQ0FBQyxDQUNILENBQUM7TUFFRCxJQUFJLENBQUNBLGVBQWUsQ0FBQyxDQUFDO0lBQ3hCO0VBQ0Y7RUFBQyxPQUFBamxCLDhFQUFBLENBQUF3akIsb0JBQUE7SUFBQXZqQixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXlEO01BQ3ZELE9BQU8sSUFBSSxDQUFDZ2xCLGFBQWE7SUFDM0I7RUFBQztJQUFBamxCLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQU9LLE9BQU9BLENBQUEsRUFBUztNQUNyQixJQUFJLENBQUN1a0Isa0JBQWtCLEVBQUU7TUFDekIsSUFBSSxDQUFDRCxpQkFBaUIsR0FBRyxLQUFLO01BQzlCLElBQUksQ0FBQ2xCLGVBQWUsR0FBRyxJQUFJO01BQzNCLElBQUksQ0FBQ25qQixZQUFZLENBQUNELE9BQU8sQ0FBQyxDQUFDO01BRTNCLElBQUksSUFBSSxDQUFDd2tCLGNBQWMsRUFBRTtRQUN2QjlsQixnRUFBVyxDQUFDaUIsS0FBSyxDQUFDa1AsWUFBWSxDQUFDLElBQUksQ0FBQzJWLGNBQWMsQ0FBQztRQUNuRCxJQUFJLENBQUNBLGNBQWMsR0FBRyxJQUFJO01BQzVCO0lBQ0Y7RUFBQztJQUFBL2tCLEdBQUE7SUFBQUUsS0FBQTtNQUFBLElBQUFnbEIsZ0JBQUEsR0FBQXpHLG1GQUFBLGNBQUFoQyxZQUFBLEdBQUFFLENBQUEsQ0FFRCxTQUFBK0IsUUFBQTtRQUFBLElBQUE3SSxNQUFBO1FBQUEsSUFBQXNQLGtCQUFBLEVBQUFDLFVBQUEsRUFBQUMsYUFBQSxFQUFBQyxzQkFBQSxFQUFBQyxZQUFBLEVBQUFDLGNBQUEsRUFBQUMsS0FBQSxFQUFBQyxhQUFBLEVBQUFDLGFBQUEsRUFBQUMsMkJBQUEsRUFBQWhFLEVBQUE7UUFBQSxPQUFBbkYsWUFBQSxHQUFBQyxDQUFBLFdBQUFtQyxRQUFBO1VBQUEsa0JBQUFBLFFBQUEsQ0FBQW5ELENBQUEsR0FBQW1ELFFBQUEsQ0FBQTlELENBQUE7WUFBQTtjQUFBLEtBQ01uVyxzRUFBaUIsQ0FBQ2loQiw0QkFBNEI7Z0JBQUFoSCxRQUFBLENBQUE5RCxDQUFBO2dCQUFBO2NBQUE7Y0FBQSxPQUFBOEQsUUFBQSxDQUFBL0MsQ0FBQSxJQUN6QyxJQUFJLENBQUNnSyxxQkFBcUIsQ0FBQyxDQUFDO1lBQUE7Y0FHckM7Y0FDTVgsa0JBQWtCLEdBQUcsU0FBckJBLGtCQUFrQkEsQ0FBSS9SLElBQWtCO2dCQUFBLE9BQWFBLElBQUksQ0FBQzJTLEVBQUUsQ0FBQ3BpQixRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsT0FBTyxHQUFHeVAsSUFBSSxDQUFDMlMsRUFBRSxDQUFDcGlCLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxPQUFPLEdBQUcsRUFBRTtjQUFBO2NBQ25JeWhCLFVBQVUsR0FBRyxJQUFJLENBQUNOLGtCQUFrQjtjQUFBakcsUUFBQSxDQUFBbkQsQ0FBQTtjQUlsQzZKLFlBQVksSUFBQUQsc0JBQUEsR0FBRyxJQUFJLENBQUMzQixlQUFlLGNBQUEyQixzQkFBQSx1QkFBcEJBLHNCQUFBLENBQXNCVSxRQUFRLENBQUMsSUFBSSxDQUFDO2NBQUEsSUFFcERULFlBQVk7Z0JBQUExRyxRQUFBLENBQUE5RCxDQUFBO2dCQUFBO2NBQUE7Y0FBQSxPQUFBOEQsUUFBQSxDQUFBL0MsQ0FBQTtZQUFBO2NBSVgwSixjQUFjLEdBQUcsSUFBSWxILE9BQU8sQ0FBTyxVQUFBMkgsT0FBTyxFQUFJO2dCQUNsRFosYUFBYSxHQUFHcG1CLGdFQUFXLENBQUNpQixLQUFLLENBQUNzRixVQUFVLENBQUM7a0JBQUEsT0FBTXlnQixPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUFBLEdBQUUzQyx1QkFBdUIsQ0FBQztjQUM1RixDQUFDLENBQUM7Y0FBQXpFLFFBQUEsQ0FBQTlELENBQUE7Y0FBQSxPQUNrQnVELE9BQU8sQ0FBQzRILElBQUksQ0FBQyxDQUFDWCxZQUFZLEVBQUVDLGNBQWMsQ0FBQyxDQUFDO1lBQUE7Y0FBMURDLEtBQUssR0FBQTVHLFFBQUEsQ0FBQWhELENBQUE7Y0FBQSxNQUVQdUosVUFBVSxLQUFLLElBQUksQ0FBQ04sa0JBQWtCLElBQUksQ0FBQyxJQUFJLENBQUNELGlCQUFpQjtnQkFBQWhHLFFBQUEsQ0FBQTlELENBQUE7Z0JBQUE7Y0FBQTtjQUFBLE9BQUE4RCxRQUFBLENBQUEvQyxDQUFBO1lBQUE7Y0FJckUsSUFBSSxDQUFDMkosS0FBSyxFQUFFO2dCQUNWLElBQUksQ0FBQzliLE9BQU8sQ0FBQ2dMLEtBQUssQ0FBQyxpREFBaUQsQ0FBQztjQUN2RSxDQUFDLE1BQU07Z0JBQ0MrUSxhQUFtQyxHQUFHLENBQUMsQ0FBQztnQkFDMUNDLGFBQWEsR0FBRyxJQUFJLENBQUMvQix1QkFBdUI7Z0JBR2hENkIsS0FBSyxDQUFDMVUsT0FBTyxDQUFDLFVBQUFvVixNQUFNLEVBQUk7a0JBQ3RCLElBQUlBLE1BQU0sQ0FBQzFlLElBQUksS0FBSyxnQkFBZ0IsSUFBSTBlLE1BQU0sQ0FBQ0Msb0JBQW9CLEVBQUU7b0JBQ25FVCxhQUFhLEdBQUdRLE1BQU0sQ0FBQ0Msb0JBQW9CLEdBQUcsSUFBSTtvQkFFbEQsSUFBSVYsYUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUFFO3NCQUMxQkEsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDQyxhQUFhLEdBQUdBLGFBQWE7b0JBQ3REO29CQUVBLElBQUlELGFBQWEsQ0FBQyxPQUFPLENBQUMsRUFBRTtzQkFDMUJBLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQ0MsYUFBYSxHQUFHQSxhQUFhO29CQUN0RDtrQkFDRjtrQkFFQSxJQUFJUSxNQUFNLENBQUMxZSxJQUFJLEtBQUssZ0JBQWdCLElBQUkwZSxNQUFNLENBQUNQLDJCQUEyQixFQUFFO29CQUMxRUEsMkJBQTJCLEdBQUdPLE1BQU0sQ0FBQ1AsMkJBQTJCO29CQUVoRSxJQUFJRixhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUU7c0JBQzFCQSxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUNFLDJCQUEyQixHQUFHQSwyQkFBMkI7b0JBQ2xGO29CQUVBLElBQUlGLGFBQWEsQ0FBQyxPQUFPLENBQUMsRUFBRTtzQkFDMUJBLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQ0UsMkJBQTJCLEdBQUdBLDJCQUEyQjtvQkFDbEY7a0JBQ0Y7a0JBRUEsSUFBSU8sTUFBTSxDQUFDMWUsSUFBSSxLQUFLLGFBQWEsRUFBRTtvQkFDakMsSUFBTXNXLEtBQUksR0FBR29JLE1BQU0sQ0FBQ3BJLElBQUksSUFBSW9JLE1BQU0sQ0FBQ0UsU0FBUyxJQUFJbEIsa0JBQWtCLENBQUNnQixNQUFNLENBQUM7b0JBQzFFLElBQUlHLEtBQUssR0FBRyxFQUFFO29CQUVkYixLQUFLLENBQUMxVSxPQUFPLENBQUMsVUFBQXFDLElBQUksRUFBSTtzQkFDcEIsSUFBSUEsSUFBSSxDQUFDMlMsRUFBRSxLQUFLSSxNQUFNLENBQUNJLE9BQU8sRUFBRTt3QkFDOUJELEtBQUssR0FBR2xULElBQUksQ0FBQ29ULFFBQVE7c0JBQ3ZCO29CQUNGLENBQUMsQ0FBQztvQkFFRixJQUFJekksS0FBSSxJQUFJbEksTUFBSSxDQUFDZ08sZ0JBQWdCLENBQUNsZ0IsUUFBUSxDQUFDb2EsS0FBSSxDQUFDLEVBQUU7c0JBQUEsSUFBQTBJLHFCQUFBLEVBQUFDLHNCQUFBLEVBQUFDLHNCQUFBLEVBQUFDLHNCQUFBLEVBQUFDLHNCQUFBLEVBQUFDLHNCQUFBLEVBQUFDLHNCQUFBO3NCQUNoRCxJQUFNQyxLQUFLLEdBQUdiLE1BQU0sQ0FBQ2MsYUFBYSxJQUFJLENBQUM7c0JBQ3ZDLElBQU1DLHFCQUFxQixJQUFBVCxxQkFBQSxJQUFBQyxzQkFBQSxHQUFHN1EsTUFBSSxDQUFDb1AsYUFBYSxDQUFDL2tCLEtBQUssY0FBQXdtQixzQkFBQSx3QkFBQUMsc0JBQUEsR0FBeEJELHNCQUFBLENBQTJCM0ksS0FBSSxDQUFDLGNBQUE0SSxzQkFBQSx1QkFBaENBLHNCQUFBLENBQWtDTSxhQUFhLGNBQUFSLHFCQUFBLGNBQUFBLHFCQUFBLEdBQUksQ0FBQztzQkFDbEYsSUFBTVUsVUFBVSxHQUFHSCxLQUFLLEdBQUdFLHFCQUFxQjtzQkFDaEQsSUFBTUUsU0FBUyxHQUFHakIsTUFBTSxDQUFDbEksU0FBUyxJQUFJLEVBQUEySSxzQkFBQSxHQUFBL1EsTUFBSSxDQUFDb1AsYUFBYSxDQUFDL2tCLEtBQUssY0FBQTBtQixzQkFBQSx3QkFBQUMsc0JBQUEsR0FBeEJELHNCQUFBLENBQTJCN0ksS0FBSSxDQUFDLGNBQUE4SSxzQkFBQSx1QkFBaENBLHNCQUFBLENBQWtDNUksU0FBUyxLQUFJLENBQUMsQ0FBQztzQkFDdkYsSUFBTW9KLE9BQU8sR0FBR0YsVUFBVSxJQUFJQyxTQUFTLEdBQUc3VixJQUFJLENBQUNDLEtBQUssQ0FBQyxDQUFDLEdBQUcyVixVQUFVLEdBQ2pFQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztzQkFFdkIxQixhQUFhLENBQUMzSCxLQUFJLENBQUMsR0FBRzt3QkFDcEJ1SixJQUFJLEVBQUVuQixNQUFNLENBQUNtQixJQUFJO3dCQUNqQmpCLFNBQVMsRUFBRXRJLEtBQUk7d0JBQ2ZFLFNBQVMsRUFBRWtJLE1BQU0sQ0FBQ2xJLFNBQVM7d0JBQzNCb0osT0FBTyxFQUFQQSxPQUFPO3dCQUNQSixhQUFhLEVBQUVkLE1BQU0sQ0FBQ2MsYUFBYTt3QkFDbkNNLFdBQVcsRUFBRXBCLE1BQU0sQ0FBQ29CLFdBQVc7d0JBQy9CQyxlQUFlLEVBQUVyQixNQUFNLENBQUNxQixlQUFlO3dCQUN2Q2xCLEtBQUssRUFBRUEsS0FBSyxJQUFJelEsTUFBSSxDQUFDNFIsY0FBYyxDQUFDMUosS0FBSSxDQUFDO3dCQUN6QzRILGFBQWEsRUFBYkE7c0JBQ0YsQ0FBQztzQkFFRCxJQUFJUSxNQUFNLENBQUNQLDJCQUEyQixJQUFJQSwyQkFBMkIsRUFBRTt3QkFDckVGLGFBQWEsQ0FBQzNILEtBQUksQ0FBQyxDQUFDNkgsMkJBQTJCLEdBQUdPLE1BQU0sQ0FBQ1AsMkJBQTJCLElBQUlBLDJCQUEyQjtzQkFDckg7c0JBRUEsSUFBSTdILEtBQUksS0FBSyxPQUFPLEtBQUErSSxzQkFBQSxHQUFJalIsTUFBSSxDQUFDb1AsYUFBYSxDQUFDL2tCLEtBQUssY0FBQTRtQixzQkFBQSxnQkFBQUMsc0JBQUEsR0FBeEJELHNCQUFBLENBQTBCbkUsS0FBSyxjQUFBb0Usc0JBQUEsZUFBL0JBLHNCQUFBLENBQWlDVyxhQUFhLEVBQUU7d0JBQ3RFaEMsYUFBYSxDQUFDM0gsS0FBSSxDQUFDLENBQUMsZUFBZSxDQUFDLEdBQUdvSSxNQUFNLENBQUN1QixhQUFhO3dCQUUzRCxJQUFNQyxHQUFHLEdBQUcsQ0FBQ3hCLE1BQU0sQ0FBQ3VCLGFBQWEsR0FBRzdSLE1BQUksQ0FBQ29QLGFBQWEsQ0FBQy9rQixLQUFLLENBQUN5aUIsS0FBSyxDQUFDK0UsYUFBYSxLQUM3RWhDLGFBQWEsQ0FBQzNILEtBQUksQ0FBQyxDQUFDRSxTQUFTLEdBQUdwSSxNQUFJLENBQUNvUCxhQUFhLENBQUMva0IsS0FBSyxDQUFDeWlCLEtBQUssQ0FBQzFFLFNBQVMsQ0FBQyxHQUMxRSxJQUFJO3dCQUVOeUgsYUFBYSxDQUFDM0gsS0FBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUc0SixHQUFHLEdBQUdwVyxJQUFJLENBQUNPLEtBQUssQ0FBQzZWLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztzQkFDcEU7b0JBQ0Y7a0JBQ0Y7Z0JBQ0YsQ0FBQyxDQUFDO2dCQUVGLElBQUksQ0FBQzFDLGFBQWEsQ0FBQy9rQixLQUFLLEdBQUd3bEIsYUFBYTtjQUMxQztjQUFDN0csUUFBQSxDQUFBOUQsQ0FBQTtjQUFBO1lBQUE7Y0FBQThELFFBQUEsQ0FBQW5ELENBQUE7Y0FBQWtHLEVBQUEsR0FBQS9DLFFBQUEsQ0FBQWhELENBQUE7Y0FBQSxNQUVHdUosVUFBVSxLQUFLLElBQUksQ0FBQ04sa0JBQWtCLElBQUksQ0FBQyxJQUFJLENBQUNELGlCQUFpQjtnQkFBQWhHLFFBQUEsQ0FBQTlELENBQUE7Z0JBQUE7Y0FBQTtjQUFBLE9BQUE4RCxRQUFBLENBQUEvQyxDQUFBO1lBQUE7Y0FJckUsSUFBSSxDQUFDblMsT0FBTyxDQUFDdUwsSUFBSSxDQUFDLHFCQUFxQixFQUFBME0sRUFBTyxDQUFDO1lBQUM7Y0FBQS9DLFFBQUEsQ0FBQW5ELENBQUE7Y0FFaER6YyxnRUFBVyxDQUFDaUIsS0FBSyxDQUFDa1AsWUFBWSxDQUFDaVcsYUFBYSxDQUFDO2NBQUMsT0FBQXhHLFFBQUEsQ0FBQXBELENBQUE7WUFBQTtjQUdoRCxJQUFJLElBQUksQ0FBQ29KLGlCQUFpQixJQUFJTyxVQUFVLEtBQUssSUFBSSxDQUFDTixrQkFBa0IsRUFBRTtnQkFDcEUsSUFBSSxDQUFDQyxjQUFjLEdBQUc5bEIsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ3NGLFVBQVUsQ0FDaEQ7a0JBQUEsT0FBTXFRLE1BQUksQ0FBQ21QLGVBQWUsQ0FBQyxDQUFDO2dCQUFBLEdBQUUzQixzQkFBc0IsQ0FBQztjQUN6RDtZQUFDO2NBQUEsT0FBQXhFLFFBQUEsQ0FBQS9DLENBQUE7VUFBQTtRQUFBLEdBQUE0QyxPQUFBO01BQUEsQ0FDRjtNQUFBLFNBekhhc0csZUFBZUEsQ0FBQTtRQUFBLE9BQUFFLGdCQUFBLENBQUEvRixLQUFBLE9BQUEzSyxTQUFBO01BQUE7TUFBQSxPQUFmd1EsZUFBZTtJQUFBO0VBQUE7SUFBQWhsQixHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBMG5CLHNCQUFBLEdBQUFuSixtRkFBQSxjQUFBaEMsWUFBQSxHQUFBRSxDQUFBLENBMkg3QixTQUFBMEMsU0FBQTtRQUFBLElBQUF3SSxNQUFBO1FBQUEsSUFBQXpDLFVBQUEsRUFBQUMsYUFBQSxFQUFBeUMsc0JBQUEsRUFBQXZDLFlBQUEsRUFBQUMsY0FBQSxFQUFBQyxLQUFBLEVBQUFDLGFBQUEsRUFBQUMsYUFBQSxFQUFBOUQsR0FBQTtRQUFBLE9BQUFwRixZQUFBLEdBQUFDLENBQUEsV0FBQTRDLFNBQUE7VUFBQSxrQkFBQUEsU0FBQSxDQUFBNUQsQ0FBQSxHQUFBNEQsU0FBQSxDQUFBdkUsQ0FBQTtZQUFBO2NBQ1FxSyxVQUFVLEdBQUcsSUFBSSxDQUFDTixrQkFBa0I7Y0FBQXhGLFNBQUEsQ0FBQTVELENBQUE7Y0FJbEM2SixZQUFZLElBQUF1QyxzQkFBQSxHQUFHLElBQUksQ0FBQ25FLGVBQWUsY0FBQW1FLHNCQUFBLHVCQUFwQkEsc0JBQUEsQ0FBc0JDLGNBQWMsQ0FBQyxDQUFDO2NBQUEsSUFFdER4QyxZQUFZO2dCQUFBakcsU0FBQSxDQUFBdkUsQ0FBQTtnQkFBQTtjQUFBO2NBQUEsT0FBQXVFLFNBQUEsQ0FBQXhELENBQUE7WUFBQTtjQUlYMEosY0FBYyxHQUFHLElBQUlsSCxPQUFPLENBQU8sVUFBQTJILE9BQU8sRUFBSTtnQkFDbERaLGFBQWEsR0FBR3BtQixnRUFBVyxDQUFDaUIsS0FBSyxDQUFDc0YsVUFBVSxDQUFDO2tCQUFBLE9BQU15Z0IsT0FBTyxDQUFDLElBQUksQ0FBQztnQkFBQSxHQUFFM0MsdUJBQXVCLENBQUM7Y0FDNUYsQ0FBQyxDQUFDO2NBQUFoRSxTQUFBLENBQUF2RSxDQUFBO2NBQUEsT0FDa0J1RCxPQUFPLENBQUM0SCxJQUFJLENBQUMsQ0FBQ1gsWUFBWSxFQUFFQyxjQUFjLENBQUMsQ0FBQztZQUFBO2NBQTFEQyxLQUFLLEdBQUFuRyxTQUFBLENBQUF6RCxDQUFBO2NBQUEsTUFFUHVKLFVBQVUsS0FBSyxJQUFJLENBQUNOLGtCQUFrQixJQUFJLENBQUMsSUFBSSxDQUFDRCxpQkFBaUI7Z0JBQUF2RixTQUFBLENBQUF2RSxDQUFBO2dCQUFBO2NBQUE7Y0FBQSxPQUFBdUUsU0FBQSxDQUFBeEQsQ0FBQTtZQUFBO2NBSXJFLElBQUksQ0FBQzJKLEtBQUssRUFBRTtnQkFDVixJQUFJLENBQUM5YixPQUFPLENBQUNnTCxLQUFLLENBQUMsdURBQXVELENBQUM7Y0FDN0UsQ0FBQyxNQUFNO2dCQUNDK1EsYUFBbUMsR0FBRyxDQUFDLENBQUM7Z0JBQzFDQyxhQUFhLEdBQUcsSUFBSSxDQUFDL0IsdUJBQXVCO2dCQUVoRDZCLEtBQUssQ0FBQ3VDLE1BQU0sQ0FBQyxDQUFDLENBQUNqWCxPQUFPLENBQUMsVUFBQW9WLE1BQU0sRUFBSTtrQkFDL0JBLE1BQU0sQ0FBQzhCLEtBQUssQ0FBQyxDQUFDLENBQUNsWCxPQUFPLENBQUMsVUFBQTdNLElBQUksRUFBSTtvQkFDN0IsSUFBSUEsSUFBSSxLQUFLLFNBQVMsRUFBRTtzQkFDdEJ5aEIsYUFBYSxHQUFHUSxNQUFNLENBQUMrQixJQUFJLENBQUNoa0IsSUFBSSxDQUFDO29CQUNuQztrQkFDRixDQUFDLENBQUM7a0JBRUYsSUFBSWlpQixNQUFNLENBQUMxZSxJQUFJLEtBQUssTUFBTSxFQUFFO29CQUFBLElBQUEwZ0IscUJBQUEsRUFBQUMsc0JBQUE7b0JBQzFCLElBQU0vQixTQUFTLEdBQUdGLE1BQU0sQ0FBQytCLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQ2xYLFFBQVEsQ0FBQyxDQUFDO29CQUVyRDBVLGFBQWEsQ0FBQ1csU0FBUyxDQUFDLEdBQUc7c0JBQUNwSSxTQUFTLEVBQUV2ZSxJQUFJLENBQUNDLEdBQUcsQ0FBQztvQkFBQyxDQUFDO29CQUNsRCtsQixhQUFhLENBQUNXLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHRixNQUFNLENBQUMrQixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUNsWCxRQUFRLENBQUMsQ0FBQztvQkFDakUwVSxhQUFhLENBQUNXLFNBQVMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHQSxTQUFTO29CQUNqRFgsYUFBYSxDQUFDVyxTQUFTLENBQUMsQ0FBQyxlQUFlLENBQUMsR0FBR0YsTUFBTSxDQUFDK0IsSUFBSSxDQUFDLGVBQWUsQ0FBQztvQkFDeEV4QyxhQUFhLENBQUNXLFNBQVMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxHQUFHRixNQUFNLENBQUMrQixJQUFJLENBQUMsYUFBYSxDQUFDO29CQUNwRXhDLGFBQWEsQ0FBQ1csU0FBUyxDQUFDLENBQUMsaUJBQWlCLENBQUMsR0FBR0YsTUFBTSxDQUFDK0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDO29CQUM1RXhDLGFBQWEsQ0FBQ1csU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUdGLE1BQU0sQ0FBQytCLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQ2xYLFFBQVEsQ0FBQyxDQUFDLElBQUk2VyxNQUFJLENBQUNKLGNBQWMsQ0FBQ3BCLFNBQVMsQ0FBQztvQkFDN0dYLGFBQWEsQ0FBQ1csU0FBUyxDQUFDLENBQUMsZUFBZSxDQUFDLEdBQUdWLGFBQWE7b0JBRXpELElBQUlVLFNBQVMsS0FBSyxPQUFPLEtBQUE4QixxQkFBQSxHQUFJTixNQUFJLENBQUM1QyxhQUFhLENBQUMva0IsS0FBSyxjQUFBaW9CLHFCQUFBLGdCQUFBQyxzQkFBQSxHQUF4QkQscUJBQUEsQ0FBMEJ4RixLQUFLLGNBQUF5RixzQkFBQSxlQUEvQkEsc0JBQUEsQ0FBaUNWLGFBQWEsRUFBRTtzQkFDM0VoQyxhQUFhLENBQUNXLFNBQVMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxHQUFHRixNQUFNLENBQUMrQixJQUFJLENBQUMsZUFBZSxDQUFDO3NCQUN4RXhDLGFBQWEsQ0FBQ1csU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQ1gsYUFBYSxDQUFDVyxTQUFTLENBQUMsQ0FBQ3FCLGFBQWEsR0FBR0csTUFBSSxDQUFDNUMsYUFBYSxDQUFDL2tCLEtBQUssQ0FBQ3lpQixLQUFLLENBQUMrRSxhQUFhLEtBQ3JIaEMsYUFBYSxDQUFDVyxTQUFTLENBQUMsQ0FBQ3BJLFNBQVMsR0FBRzRKLE1BQUksQ0FBQzVDLGFBQWEsQ0FBQy9rQixLQUFLLENBQUN5aUIsS0FBSyxDQUFDMUUsU0FBUyxDQUFDLEdBQ2pGLElBQUksSUFBSSxDQUFDO29CQUNYO2tCQUNGO2dCQUNGLENBQUMsQ0FBQztnQkFFRixJQUFJLENBQUNnSCxhQUFhLENBQUMva0IsS0FBSyxHQUFHd2xCLGFBQWE7Y0FDMUM7Y0FBQ3BHLFNBQUEsQ0FBQXZFLENBQUE7Y0FBQTtZQUFBO2NBQUF1RSxTQUFBLENBQUE1RCxDQUFBO2NBQUFtRyxHQUFBLEdBQUF2QyxTQUFBLENBQUF6RCxDQUFBO2NBQUEsTUFFR3VKLFVBQVUsS0FBSyxJQUFJLENBQUNOLGtCQUFrQixJQUFJLENBQUMsSUFBSSxDQUFDRCxpQkFBaUI7Z0JBQUF2RixTQUFBLENBQUF2RSxDQUFBO2dCQUFBO2NBQUE7Y0FBQSxPQUFBdUUsU0FBQSxDQUFBeEQsQ0FBQTtZQUFBO2NBSXJFLElBQUksQ0FBQ25TLE9BQU8sQ0FBQ3VMLElBQUksQ0FBQywyQkFBMkIsRUFBQTJNLEdBQU8sQ0FBQztZQUFDO2NBQUF2QyxTQUFBLENBQUE1RCxDQUFBO2NBRXREemMsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ2tQLFlBQVksQ0FBQ2lXLGFBQWEsQ0FBQztjQUFDLE9BQUEvRixTQUFBLENBQUE3RCxDQUFBO1lBQUE7Y0FHaEQsSUFBSSxJQUFJLENBQUNvSixpQkFBaUIsSUFBSU8sVUFBVSxLQUFLLElBQUksQ0FBQ04sa0JBQWtCLEVBQUU7Z0JBQ3BFLElBQUksQ0FBQ0MsY0FBYyxHQUFHOWxCLGdFQUFXLENBQUNpQixLQUFLLENBQUNzRixVQUFVLENBQ2hEO2tCQUFBLE9BQU1xaUIsTUFBSSxDQUFDN0MsZUFBZSxDQUFDLENBQUM7Z0JBQUEsR0FBRTNCLHNCQUFzQixDQUFDO2NBQ3pEO1lBQUM7Y0FBQSxPQUFBL0QsU0FBQSxDQUFBeEQsQ0FBQTtVQUFBO1FBQUEsR0FBQXVELFFBQUE7TUFBQSxDQUNGO01BQUEsU0F0RWF5RyxxQkFBcUJBLENBQUE7UUFBQSxPQUFBOEIsc0JBQUEsQ0FBQXpJLEtBQUEsT0FBQTNLLFNBQUE7TUFBQTtNQUFBLE9BQXJCc1IscUJBQXFCO0lBQUE7RUFBQTtJQUFBOWxCLEdBQUE7SUFBQUUsS0FBQSxFQXdFbkMsU0FBUXVuQixjQUFjQSxDQUFDaGdCLElBQVksRUFBVTtNQUMzQyxRQUFRQSxJQUFJO1FBQ1YsS0FBSyxPQUFPO1VBQ1YsT0FBTyxJQUFJLENBQUM4YyxvQkFBb0IsSUFBSSxTQUFTO1FBQy9DLEtBQUssT0FBTztVQUNWLE9BQU8sSUFBSSxDQUFDRSxvQkFBb0IsSUFBSSxTQUFTO1FBQy9DO1VBQ0UsT0FBTyxTQUFTO01BQ3BCO0lBQ0Y7RUFBQztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3BVSDtBQUNBO0FBQ0E7QUFGQSxJQUlxQnJCLFNBQVM7RUFPNUIsU0FBQUEsVUFBWWlCLEdBQVcsRUFBRTtJQUFBN2tCLGlGQUFBLE9BQUE0akIsU0FBQTtJQUFBM2pCLGlGQUFBO0lBQUFBLGlGQUFBO0lBQUFBLGlGQUFBO0lBQUFBLGlGQUFBO0lBQUFBLGlGQUFBO0lBQ3ZCLElBQUksQ0FBQzRvQixJQUFJLEdBQUdoRSxHQUFHO0lBRWYsSUFBTWlFLGVBQWUsR0FBRyxJQUFJLENBQUNELElBQUksQ0FBQzFsQixLQUFLLENBQUMsY0FBYyxDQUFDO0lBQ3ZELElBQU00bEIsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDRixJQUFJLENBQUMxbEIsS0FBSyxDQUFDLGdCQUFnQixDQUFDO0lBRTFELElBQUksQ0FBQzZsQixXQUFXLEdBQUcsSUFBSSxDQUFDQyxVQUFVLENBQUMsT0FBTyxFQUFFSCxlQUFlLENBQUM7SUFDNUQsSUFBSSxDQUFDSSxXQUFXLEdBQUcsSUFBSSxDQUFDRCxVQUFVLENBQUMsT0FBTyxFQUFFSCxlQUFlLENBQUM7SUFDNUQsSUFBSSxDQUFDSyxvQkFBb0IsR0FBRyxJQUFJLENBQUNDLG9CQUFvQixDQUFDLE9BQU8sRUFBRUwsZ0JBQWdCLENBQUM7SUFDaEYsSUFBSSxDQUFDTSxvQkFBb0IsR0FBRyxJQUFJLENBQUNELG9CQUFvQixDQUFDLE9BQU8sRUFBRUwsZ0JBQWdCLENBQUM7RUFDbEY7RUFBQyxPQUFBeG9CLDhFQUFBLENBQUFxakIsU0FBQTtJQUFBcGpCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBeUI7TUFDdkIsT0FBTyxJQUFJLENBQUN1b0IsV0FBVztJQUN6QjtFQUFDO0lBQUF4b0IsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUF5QjtNQUN2QixPQUFPLElBQUksQ0FBQ3lvQixXQUFXO0lBQ3pCO0VBQUM7SUFBQTFvQixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQW1DO01BQ2pDLE9BQU8sSUFBSSxDQUFDMG9CLG9CQUFvQjtJQUNsQztFQUFDO0lBQUEzb0IsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFtQztNQUNqQyxPQUFPLElBQUksQ0FBQzRvQixvQkFBb0I7SUFDbEM7RUFBQztJQUFBN29CLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQVEwb0Isb0JBQW9CQSxDQUFDbmhCLElBQVksRUFBRThnQixnQkFBMEIsRUFBVztNQUM5RSxJQUFNTyxpQkFBaUIsR0FBR1AsZ0JBQWdCLENBQUNRLElBQUksQ0FBQyxVQUFBQyxRQUFRO1FBQUEsT0FBSUEsUUFBUSxDQUFDbmUsVUFBVSxDQUFDcEQsSUFBSSxDQUFDO01BQUEsRUFBQztNQUV0RixJQUFJLENBQUNxaEIsaUJBQWlCLEVBQUU7UUFDdEIsT0FBTyxLQUFLO01BQ2Q7TUFFQSxPQUFPLENBQUNBLGlCQUFpQixDQUFDbmxCLFFBQVEsYUFBYSxDQUFDO0lBQ2xEO0VBQUM7SUFBQTNELEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQVF1b0IsVUFBVUEsQ0FBQ2hoQixJQUFZLEVBQUU2Z0IsZUFBMEIsRUFBVTtNQUFBLElBQUFXLHFCQUFBO01BQ25FLElBQU1DLEtBQUssR0FBRyxFQUFBRCxxQkFBQSxHQUFBWCxlQUFlLENBQUNTLElBQUksQ0FBQyxVQUFBSSxPQUFPO1FBQUEsT0FBSUEsT0FBTyxDQUFDeGxCLFFBQVEsTUFBQVQsTUFBQSxDQUFNdUUsSUFBSSxDQUFFLENBQUM7TUFBQSxFQUFDLGNBQUF3aEIscUJBQUEsdUJBQTlEQSxxQkFBQSxDQUFnRXRtQixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUksRUFBRTtNQUNqRyxJQUFNeW1CLGFBQWEsR0FBR2QsZUFBZSxDQUFDUyxJQUFJLENBQUMsVUFBQUksT0FBTztRQUFBLE9BQUlBLE9BQU8sQ0FBQ3hsQixRQUFRLGFBQUFULE1BQUEsQ0FBYWdtQixLQUFLLENBQUUsQ0FBQztNQUFBLEVBQUM7TUFDNUYsSUFBTUcsU0FBUyxHQUFHLENBQUFELGFBQWEsYUFBYkEsYUFBYSx1QkFBYkEsYUFBYSxDQUFFem1CLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSSxFQUFFO01BQ3BELElBQU0ybUIsU0FBUyxHQUFHRCxTQUFTLENBQUMxbUIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztNQUV6QyxPQUFPMm1CLFNBQVM7SUFDbEI7RUFBQztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCQ3ZESCx1S0FBQTFlLENBQUEsRUFBQWdRLENBQUEsRUFBQUMsQ0FBQSx3QkFBQUMsTUFBQSxHQUFBQSxNQUFBLE9BQUFDLENBQUEsR0FBQUYsQ0FBQSxDQUFBRyxRQUFBLGtCQUFBQyxDQUFBLEdBQUFKLENBQUEsQ0FBQUssV0FBQSw4QkFBQUMsRUFBQU4sQ0FBQSxFQUFBRSxDQUFBLEVBQUFFLENBQUEsRUFBQUUsQ0FBQSxRQUFBQyxDQUFBLEdBQUFMLENBQUEsSUFBQUEsQ0FBQSxDQUFBL04sU0FBQSxZQUFBcU8sU0FBQSxHQUFBTixDQUFBLEdBQUFNLFNBQUEsRUFBQUMsQ0FBQSxHQUFBM0UsTUFBQSxDQUFBNEUsTUFBQSxDQUFBSCxDQUFBLENBQUFwTyxTQUFBLFVBQUF3TyxtQkFBQSxDQUFBRixDQUFBLHVCQUFBVCxDQUFBLEVBQUFFLENBQUEsRUFBQUUsQ0FBQSxRQUFBRSxDQUFBLEVBQUFDLENBQUEsRUFBQUUsQ0FBQSxFQUFBRyxDQUFBLE1BQUFDLENBQUEsR0FBQVQsQ0FBQSxRQUFBVSxDQUFBLE9BQUFDLENBQUEsS0FBQUYsQ0FBQSxLQUFBWCxDQUFBLEtBQUFjLENBQUEsRUFBQWpSLENBQUEsRUFBQWtSLENBQUEsRUFBQUMsQ0FBQSxFQUFBTixDQUFBLEVBQUFNLENBQUEsQ0FBQXhXLElBQUEsQ0FBQXFGLENBQUEsTUFBQW1SLENBQUEsV0FBQUEsRUFBQW5CLENBQUEsRUFBQUMsQ0FBQSxXQUFBTSxDQUFBLEdBQUFQLENBQUEsRUFBQVEsQ0FBQSxNQUFBRSxDQUFBLEdBQUExUSxDQUFBLEVBQUFnUixDQUFBLENBQUFiLENBQUEsR0FBQUYsQ0FBQSxFQUFBaUIsQ0FBQSxnQkFBQUMsRUFBQWxCLENBQUEsRUFBQUUsQ0FBQSxTQUFBSyxDQUFBLEdBQUFQLENBQUEsRUFBQVMsQ0FBQSxHQUFBUCxDQUFBLEVBQUFILENBQUEsT0FBQWUsQ0FBQSxJQUFBRixDQUFBLEtBQUFSLENBQUEsSUFBQUwsQ0FBQSxHQUFBYyxDQUFBLENBQUFsUixNQUFBLEVBQUFvUSxDQUFBLFVBQUFLLENBQUEsRUFBQUUsQ0FBQSxHQUFBTyxDQUFBLENBQUFkLENBQUEsR0FBQW1CLENBQUEsR0FBQUgsQ0FBQSxDQUFBRixDQUFBLEVBQUFNLENBQUEsR0FBQWIsQ0FBQSxLQUFBTixDQUFBLFFBQUFJLENBQUEsR0FBQWUsQ0FBQSxLQUFBakIsQ0FBQSxNQUFBTyxDQUFBLEdBQUFILENBQUEsRUFBQUMsQ0FBQSxHQUFBRCxDQUFBLFlBQUFDLENBQUEsV0FBQUQsQ0FBQSxNQUFBQSxDQUFBLE1BQUF2USxDQUFBLElBQUF1USxDQUFBLE9BQUFZLENBQUEsTUFBQWQsQ0FBQSxHQUFBSixDQUFBLFFBQUFrQixDQUFBLEdBQUFaLENBQUEsUUFBQUMsQ0FBQSxNQUFBUSxDQUFBLENBQUFDLENBQUEsR0FBQWQsQ0FBQSxFQUFBYSxDQUFBLENBQUFiLENBQUEsR0FBQUksQ0FBQSxPQUFBWSxDQUFBLEdBQUFDLENBQUEsS0FBQWYsQ0FBQSxHQUFBSixDQUFBLFFBQUFNLENBQUEsTUFBQUosQ0FBQSxJQUFBQSxDQUFBLEdBQUFpQixDQUFBLE1BQUFiLENBQUEsTUFBQU4sQ0FBQSxFQUFBTSxDQUFBLE1BQUFKLENBQUEsRUFBQWEsQ0FBQSxDQUFBYixDQUFBLEdBQUFpQixDQUFBLEVBQUFaLENBQUEsY0FBQUgsQ0FBQSxJQUFBSixDQUFBLGFBQUFpQixDQUFBLFFBQUFILENBQUEsT0FBQVosQ0FBQSxxQkFBQUUsQ0FBQSxFQUFBUyxDQUFBLEVBQUFNLENBQUEsUUFBQVAsQ0FBQSxZQUFBUSxTQUFBLHVDQUFBTixDQUFBLFVBQUFELENBQUEsSUFBQUssQ0FBQSxDQUFBTCxDQUFBLEVBQUFNLENBQUEsR0FBQVosQ0FBQSxHQUFBTSxDQUFBLEVBQUFKLENBQUEsR0FBQVUsQ0FBQSxHQUFBcEIsQ0FBQSxHQUFBUSxDQUFBLE9BQUF4USxDQUFBLEdBQUEwUSxDQUFBLE1BQUFLLENBQUEsS0FBQVIsQ0FBQSxLQUFBQyxDQUFBLEdBQUFBLENBQUEsUUFBQUEsQ0FBQSxTQUFBUSxDQUFBLENBQUFiLENBQUEsUUFBQWdCLENBQUEsQ0FBQVgsQ0FBQSxFQUFBRSxDQUFBLEtBQUFNLENBQUEsQ0FBQWIsQ0FBQSxHQUFBTyxDQUFBLEdBQUFNLENBQUEsQ0FBQUMsQ0FBQSxHQUFBUCxDQUFBLGFBQUFHLENBQUEsTUFBQU4sQ0FBQSxRQUFBQyxDQUFBLEtBQUFILENBQUEsWUFBQUwsQ0FBQSxHQUFBTyxDQUFBLENBQUFGLENBQUEsV0FBQUwsQ0FBQSxHQUFBQSxDQUFBLENBQUEvSixJQUFBLENBQUFzSyxDQUFBLEVBQUFHLENBQUEsVUFBQVcsU0FBQSwyQ0FBQXJCLENBQUEsQ0FBQXNCLElBQUEsU0FBQXRCLENBQUEsRUFBQVUsQ0FBQSxHQUFBVixDQUFBLENBQUExYSxLQUFBLEVBQUFrYixDQUFBLFNBQUFBLENBQUEsb0JBQUFBLENBQUEsS0FBQVIsQ0FBQSxHQUFBTyxDQUFBLGVBQUFQLENBQUEsQ0FBQS9KLElBQUEsQ0FBQXNLLENBQUEsR0FBQUMsQ0FBQSxTQUFBRSxDQUFBLEdBQUFXLFNBQUEsdUNBQUFoQixDQUFBLGdCQUFBRyxDQUFBLE9BQUFELENBQUEsR0FBQXZRLENBQUEsY0FBQWdRLENBQUEsSUFBQWUsQ0FBQSxHQUFBQyxDQUFBLENBQUFiLENBQUEsUUFBQU8sQ0FBQSxHQUFBVCxDQUFBLENBQUFoSyxJQUFBLENBQUFrSyxDQUFBLEVBQUFhLENBQUEsT0FBQUUsQ0FBQSxrQkFBQWxCLENBQUEsSUFBQU8sQ0FBQSxHQUFBdlEsQ0FBQSxFQUFBd1EsQ0FBQSxNQUFBRSxDQUFBLEdBQUFWLENBQUEsY0FBQWEsQ0FBQSxtQkFBQXZiLEtBQUEsRUFBQTBhLENBQUEsRUFBQXNCLElBQUEsRUFBQVAsQ0FBQSxTQUFBZCxDQUFBLEVBQUFJLENBQUEsRUFBQUUsQ0FBQSxRQUFBRyxDQUFBLFFBQUFRLENBQUEsZ0JBQUFULFVBQUEsY0FBQWMsa0JBQUEsY0FBQUMsMkJBQUEsS0FBQXhCLENBQUEsR0FBQWpFLE1BQUEsQ0FBQTBGLGNBQUEsTUFBQWpCLENBQUEsTUFBQUwsQ0FBQSxJQUFBSCxDQUFBLENBQUFBLENBQUEsSUFBQUcsQ0FBQSxTQUFBUyxtQkFBQSxDQUFBWixDQUFBLE9BQUFHLENBQUEsaUNBQUFILENBQUEsR0FBQVUsQ0FBQSxHQUFBYywwQkFBQSxDQUFBcFAsU0FBQSxHQUFBcU8sU0FBQSxDQUFBck8sU0FBQSxHQUFBMkosTUFBQSxDQUFBNEUsTUFBQSxDQUFBSCxDQUFBLFlBQUFLLEVBQUE3USxDQUFBLFdBQUErTCxNQUFBLENBQUEyRixjQUFBLEdBQUEzRixNQUFBLENBQUEyRixjQUFBLENBQUExUixDQUFBLEVBQUF3UiwwQkFBQSxLQUFBeFIsQ0FBQSxDQUFBMlIsU0FBQSxHQUFBSCwwQkFBQSxFQUFBWixtQkFBQSxDQUFBNVEsQ0FBQSxFQUFBcVEsQ0FBQSx5QkFBQXJRLENBQUEsQ0FBQW9DLFNBQUEsR0FBQTJKLE1BQUEsQ0FBQTRFLE1BQUEsQ0FBQUQsQ0FBQSxHQUFBMVEsQ0FBQSxXQUFBdVIsaUJBQUEsQ0FBQW5QLFNBQUEsR0FBQW9QLDBCQUFBLEVBQUFaLG1CQUFBLENBQUFGLENBQUEsaUJBQUFjLDBCQUFBLEdBQUFaLG1CQUFBLENBQUFZLDBCQUFBLGlCQUFBRCxpQkFBQSxHQUFBQSxpQkFBQSxDQUFBSyxXQUFBLHdCQUFBaEIsbUJBQUEsQ0FBQVksMEJBQUEsRUFBQW5CLENBQUEsd0JBQUFPLG1CQUFBLENBQUFGLENBQUEsR0FBQUUsbUJBQUEsQ0FBQUYsQ0FBQSxFQUFBTCxDQUFBLGdCQUFBTyxtQkFBQSxDQUFBRixDQUFBLEVBQUFQLENBQUEsaUNBQUFTLG1CQUFBLENBQUFGLENBQUEsOERBQUFtQixZQUFBLFlBQUFBLGFBQUEsYUFBQUMsQ0FBQSxFQUFBdkIsQ0FBQSxFQUFBd0IsQ0FBQSxFQUFBbEIsQ0FBQTtBQUFBLFNBQUFELG9CQUFBNVEsQ0FBQSxFQUFBaVEsQ0FBQSxFQUFBRSxDQUFBLEVBQUFILENBQUEsUUFBQU8sQ0FBQSxHQUFBeEUsTUFBQSxDQUFBaUcsY0FBQSxRQUFBekIsQ0FBQSx1QkFBQXZRLENBQUEsSUFBQXVRLENBQUEsUUFBQUssbUJBQUEsWUFBQXFCLG1CQUFBalMsQ0FBQSxFQUFBaVEsQ0FBQSxFQUFBRSxDQUFBLEVBQUFILENBQUEsYUFBQUssRUFBQUosQ0FBQSxFQUFBRSxDQUFBLElBQUFTLG1CQUFBLENBQUE1USxDQUFBLEVBQUFpUSxDQUFBLFlBQUFqUSxDQUFBLGdCQUFBa1MsT0FBQSxDQUFBakMsQ0FBQSxFQUFBRSxDQUFBLEVBQUFuUSxDQUFBLFNBQUFpUSxDQUFBLEdBQUFNLENBQUEsR0FBQUEsQ0FBQSxDQUFBdlEsQ0FBQSxFQUFBaVEsQ0FBQSxJQUFBM2EsS0FBQSxFQUFBNmEsQ0FBQSxFQUFBZ0MsVUFBQSxHQUFBbkMsQ0FBQSxFQUFBb0MsWUFBQSxHQUFBcEMsQ0FBQSxFQUFBcUMsUUFBQSxHQUFBckMsQ0FBQSxNQUFBaFEsQ0FBQSxDQUFBaVEsQ0FBQSxJQUFBRSxDQUFBLElBQUFFLENBQUEsYUFBQUEsQ0FBQSxjQUFBQSxDQUFBLG1CQUFBTyxtQkFBQSxDQUFBNVEsQ0FBQSxFQUFBaVEsQ0FBQSxFQUFBRSxDQUFBLEVBQUFILENBQUE7QUFEQTtBQUNBO0FBQ0E7O0FBRXFEO0FBQ0Q7QUFHYTtBQUFBLElBRzNEMk8scUJBQXFCO0VBSXpCLFNBQUFBLHNCQUFZdEksYUFBZ0MsRUFBRTtJQUFBemhCLGlGQUFBLE9BQUErcEIscUJBQUE7SUFBQTlwQixpRkFBQSxrQkFIVjZJLDZEQUFhLENBQUNHLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQztJQUFBaEosaUZBQUE7SUFJbEYsSUFBSW1GLHNFQUFpQixDQUFDNGtCLDhCQUE4QixFQUFFO01BQ3BEO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQSxJQUFJLENBQUM3RixlQUFlLEdBQUcsSUFBSThGLHVCQUF1QixDQUFDeEksYUFBYSxDQUFDO01BRWpFO0lBQ0Y7SUFFQSxJQUFJLENBQUMwQyxlQUFlLEdBQUcsSUFBSTFrQixnRUFBVyxDQUFDaUIsS0FBSyxDQUFDNk8saUJBQWlCLENBQUNrUyxhQUFhLENBQUM7RUFDL0U7RUFBQyxPQUFBbGhCLDhFQUFBLENBQUF3cEIscUJBQUE7SUFBQXZwQixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXVDO01BQ3JDLE9BQU8sSUFBSSxDQUFDMGpCLGVBQWU7SUFDN0I7RUFBQztJQUFBM2pCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBNEQ7TUFBQSxJQUFBZ2tCLHFCQUFBO01BQzFELE9BQU8sRUFBQUEscUJBQUEsT0FBSSxDQUFDTixlQUFlLGNBQUFNLHFCQUFBLHVCQUFwQkEscUJBQUEsQ0FBc0J5Rix1QkFBdUIsS0FBSSxJQUFJO0lBQzlEO0VBQUM7SUFBQTFwQixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQTZEO01BQUEsSUFBQWlrQixzQkFBQTtNQUMzRCxPQUFPLEVBQUFBLHNCQUFBLE9BQUksQ0FBQ1AsZUFBZSxjQUFBTyxzQkFBQSx1QkFBcEJBLHNCQUFBLENBQXNCRSx3QkFBd0IsS0FBSSxJQUFJO0lBQy9EO0VBQUM7SUFBQXBrQixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXFEO01BQUEsSUFBQXFsQixzQkFBQTtNQUNuRCxPQUFPLEVBQUFBLHNCQUFBLE9BQUksQ0FBQzNCLGVBQWUsY0FBQTJCLHNCQUFBLHVCQUFwQkEsc0JBQUEsQ0FBc0JxRSxlQUFlLEtBQUksSUFBSTtJQUN0RDtFQUFDO0lBQUEzcEIsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUF1RDtNQUFBLElBQUE2bkIsc0JBQUE7TUFDckQsT0FBTyxFQUFBQSxzQkFBQSxPQUFJLENBQUNuRSxlQUFlLGNBQUFtRSxzQkFBQSx1QkFBcEJBLHNCQUFBLENBQXNCOEIsa0JBQWtCLEtBQUksSUFBSTtJQUN6RDtFQUFDO0lBQUE1cEIsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUF3QztNQUFBLElBQUE0cEIsc0JBQUE7TUFDdEMsT0FBTyxTQUFBQSxzQkFBQSxHQUFPLElBQUksQ0FBQ2xHLGVBQWUsY0FBQWtHLHNCQUFBLHVCQUFwQkEsc0JBQUEsQ0FBc0JDLGdCQUFnQixNQUFLLFVBQVU7SUFDckU7RUFBQztJQUFBOXBCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBd0M7TUFBQSxJQUFBOHBCLHNCQUFBO01BQ3RDLE9BQU8sU0FBQUEsc0JBQUEsR0FBTyxJQUFJLENBQUNwRyxlQUFlLGNBQUFvRyxzQkFBQSx1QkFBcEJBLHNCQUFBLENBQXNCQyxnQkFBZ0IsTUFBSyxVQUFVO0lBQ3JFO0VBQUM7SUFBQWhxQixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXVDO01BQUEsSUFBQWdxQixzQkFBQTtNQUNyQyxPQUFPLENBQUNybEIsc0VBQWlCLENBQUNzbEIsdUJBQXVCLElBQUksU0FBQUQsc0JBQUEsR0FBTyxJQUFJLENBQUN0RyxlQUFlLGNBQUFzRyxzQkFBQSx1QkFBcEJBLHNCQUFBLENBQXNCRSxlQUFlLE1BQUssVUFBVTtJQUNsSDtFQUFDO0lBQUFucUIsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFzQztNQUFBLElBQUFtcUIsc0JBQUE7TUFDcEMsT0FBTyxDQUFDeGxCLHNFQUFpQixDQUFDeUgscUJBQXFCLElBQUksU0FBQStkLHNCQUFBLEdBQU8sSUFBSSxDQUFDekcsZUFBZSxjQUFBeUcsc0JBQUEsdUJBQXBCQSxzQkFBQSxDQUFzQmxJLGNBQWMsTUFBSyxVQUFVO0lBQy9HO0VBQUM7SUFBQWxpQixHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBbXFCLFlBQUEsR0FBQTVMLG1GQUFBLGNBQUFoQyxZQUFBLEdBQUFFLENBQUEsQ0FFRCxTQUFBK0IsUUFBa0JpRCxPQUF5QjtRQUFBLElBQUFsaEIsS0FBQTtRQUFBLE9BQUFnYyxZQUFBLEdBQUFDLENBQUEsV0FBQW1DLFFBQUE7VUFBQSxrQkFBQUEsUUFBQSxDQUFBOUQsQ0FBQTtZQUFBO2NBQUEsSUFDcEMsSUFBSSxDQUFDNEksZUFBZTtnQkFBQTlFLFFBQUEsQ0FBQTlELENBQUE7Z0JBQUE7Y0FBQTtjQUFBLE1BQ2pCLElBQUloVyxLQUFLLENBQUMsK0JBQStCLENBQUM7WUFBQTtjQUFBLEtBRzlDSCxzRUFBaUIsQ0FBQzBsQiw2QkFBNkI7Z0JBQUF6TCxRQUFBLENBQUE5RCxDQUFBO2dCQUFBO2NBQUE7Y0FBQSxPQUFBOEQsUUFBQSxDQUFBL0MsQ0FBQSxJQUsxQyxJQUFJd0MsT0FBTyxDQUFDLFVBQUMySCxPQUFPLEVBQUVzRSxNQUFNO2dCQUFBLE9BQUs5cEIsS0FBSSxDQUFDa2pCLGVBQWUsQ0FBQ3hCLFdBQVcsQ0FBQzhELE9BQU8sRUFBRXNFLE1BQU0sRUFBRTVJLE9BQU8sQ0FBQztjQUFBLEVBQUM7WUFBQTtjQUFBLE9BQUE5QyxRQUFBLENBQUEvQyxDQUFBLElBRzlGLElBQUksQ0FBQzZILGVBQWUsQ0FBQ3hCLFdBQVcsQ0FBQ1IsT0FBTyxDQUFDO1VBQUE7UUFBQSxHQUFBakQsT0FBQTtNQUFBLENBQ2pEO01BQUEsU0FkS3lELFdBQVdBLENBQUFqRCxFQUFBO1FBQUEsT0FBQW1MLFlBQUEsQ0FBQWxMLEtBQUEsT0FBQTNLLFNBQUE7TUFBQTtNQUFBLE9BQVgyTixXQUFXO0lBQUE7RUFBQTtJQUFBbmlCLEdBQUE7SUFBQUUsS0FBQTtNQUFBLElBQUFzcUIsYUFBQSxHQUFBL0wsbUZBQUEsY0FBQWhDLFlBQUEsR0FBQUUsQ0FBQSxDQWdCakIsU0FBQTBDLFNBQW1Cc0MsT0FBMEI7UUFBQSxJQUFBOUwsTUFBQTtRQUFBLE9BQUE0RyxZQUFBLEdBQUFDLENBQUEsV0FBQTRDLFNBQUE7VUFBQSxrQkFBQUEsU0FBQSxDQUFBdkUsQ0FBQTtZQUFBO2NBQUEsSUFDdEMsSUFBSSxDQUFDNEksZUFBZTtnQkFBQXJFLFNBQUEsQ0FBQXZFLENBQUE7Z0JBQUE7Y0FBQTtjQUFBLE1BQ2pCLElBQUloVyxLQUFLLENBQUMsK0JBQStCLENBQUM7WUFBQTtjQUFBLEtBRzlDSCxzRUFBaUIsQ0FBQzBsQiw2QkFBNkI7Z0JBQUFoTCxTQUFBLENBQUF2RSxDQUFBO2dCQUFBO2NBQUE7Y0FBQSxPQUFBdUUsU0FBQSxDQUFBeEQsQ0FBQSxJQUsxQyxJQUFJd0MsT0FBTyxDQUFDLFVBQUMySCxPQUFPLEVBQUVzRSxNQUFNO2dCQUFBLE9BQUsxVSxNQUFJLENBQUM4TixlQUFlLENBQUM4RyxZQUFZLENBQUN4RSxPQUFPLEVBQUVzRSxNQUFNLEVBQUU1SSxPQUFPLENBQUM7Y0FBQSxFQUFDO1lBQUE7Y0FBQSxPQUFBckMsU0FBQSxDQUFBeEQsQ0FBQSxJQUcvRixJQUFJLENBQUM2SCxlQUFlLENBQUM4RyxZQUFZLENBQUM5SSxPQUFPLENBQUM7VUFBQTtRQUFBLEdBQUF0QyxRQUFBO01BQUEsQ0FDbEQ7TUFBQSxTQWRLb0wsWUFBWUEsQ0FBQUMsR0FBQTtRQUFBLE9BQUFGLGFBQUEsQ0FBQXJMLEtBQUEsT0FBQTNLLFNBQUE7TUFBQTtNQUFBLE9BQVppVyxZQUFZO0lBQUE7RUFBQTtJQUFBenFCLEdBQUE7SUFBQUUsS0FBQTtNQUFBLElBQUF5cUIsb0JBQUEsR0FBQWxNLG1GQUFBLGNBQUFoQyxZQUFBLEdBQUFFLENBQUEsQ0FnQmxCLFNBQUFtRSxTQUEwQjhKLFdBQXNDO1FBQUEsT0FBQW5PLFlBQUEsR0FBQUMsQ0FBQSxXQUFBeUUsU0FBQTtVQUFBLGtCQUFBQSxTQUFBLENBQUFwRyxDQUFBO1lBQUE7Y0FBQSxJQUN6RCxJQUFJLENBQUM0SSxlQUFlO2dCQUFBeEMsU0FBQSxDQUFBcEcsQ0FBQTtnQkFBQTtjQUFBO2NBQUEsTUFDakIsSUFBSWhXLEtBQUssQ0FBQywrQkFBK0IsQ0FBQztZQUFBO2NBQUEsT0FBQW9jLFNBQUEsQ0FBQXJGLENBQUEsSUFHM0MsSUFBSSxDQUFDNkgsZUFBZSxDQUFDa0gsbUJBQW1CLENBQUNqbUIsc0VBQWlCLENBQUMwbEIsNkJBQTZCLEdBQzdGLElBQUl0YixxQkFBcUIsQ0FBQzRiLFdBQVcsQ0FBQyxHQUFHQSxXQUFXLENBQUM7VUFBQTtRQUFBLEdBQUE5SixRQUFBO01BQUEsQ0FDeEQ7TUFBQSxTQVBLK0osbUJBQW1CQSxDQUFBQyxHQUFBO1FBQUEsT0FBQUgsb0JBQUEsQ0FBQXhMLEtBQUEsT0FBQTNLLFNBQUE7TUFBQTtNQUFBLE9BQW5CcVcsbUJBQW1CO0lBQUE7RUFBQTtJQUFBN3FCLEdBQUE7SUFBQUUsS0FBQTtNQUFBLElBQUE2cUIscUJBQUEsR0FBQXRNLG1GQUFBLGNBQUFoQyxZQUFBLEdBQUFFLENBQUEsQ0FTekIsU0FBQXFPLFNBQTJCSixXQUFzQztRQUFBLElBQUFLLGdCQUFBO1FBQUEsSUFBQUMsU0FBQTtRQUFBLE9BQUF6TyxZQUFBLEdBQUFDLENBQUEsV0FBQXlPLFNBQUE7VUFBQSxrQkFBQUEsU0FBQSxDQUFBcFEsQ0FBQTtZQUFBO2NBQUEsSUFDMUQsSUFBSSxDQUFDNEksZUFBZTtnQkFBQXdILFNBQUEsQ0FBQXBRLENBQUE7Z0JBQUE7Y0FBQTtjQUFBLE1BQ2pCLElBQUloVyxLQUFLLENBQUMsK0JBQStCLENBQUM7WUFBQTtjQUc1Q21tQixTQUFTLElBQUFELGdCQUFBLEdBQUdMLFdBQVcsQ0FBQ3ZHLEdBQUcsY0FBQTRHLGdCQUFBLHVCQUFmQSxnQkFBQSxDQUFpQjNvQixLQUFLLENBQUMsWUFBWSxDQUFDO2NBRXRELElBQUk0b0IsU0FBUyxFQUFFO2dCQUNiLElBQUksQ0FBQ3ZoQixPQUFPLENBQUN1TCxJQUFJLENBQUMsK0JBQStCLENBQUM7Y0FDcEQ7Y0FBQyxPQUFBaVcsU0FBQSxDQUFBclAsQ0FBQSxJQUVNLElBQUksQ0FBQzZILGVBQWUsQ0FBQ3lILG9CQUFvQixDQUFDeG1CLHNFQUFpQixDQUFDMGxCLDZCQUE2QixHQUM5RixJQUFJdGIscUJBQXFCLENBQUM0YixXQUFXLENBQUMsR0FBR0EsV0FBVyxDQUFDO1VBQUE7UUFBQSxHQUFBSSxRQUFBO01BQUEsQ0FDeEQ7TUFBQSxTQWJLSSxvQkFBb0JBLENBQUFDLEdBQUE7UUFBQSxPQUFBTixxQkFBQSxDQUFBNUwsS0FBQSxPQUFBM0ssU0FBQTtNQUFBO01BQUEsT0FBcEI0VyxvQkFBb0I7SUFBQTtFQUFBO0lBQUFwckIsR0FBQTtJQUFBRSxLQUFBLEVBZTFCLFNBQUFvckIsVUFBVUEsQ0FBQSxFQUFtQjtNQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDM0gsZUFBZSxFQUFFO1FBQ3pCLE1BQU0sSUFBSTVlLEtBQUssQ0FBQywrQkFBK0IsQ0FBQztNQUNsRDtNQUVBLE9BQU8sSUFBSSxDQUFDNGUsZUFBZSxDQUFDMkgsVUFBVSxDQUFDLENBQUM7SUFDMUM7RUFBQztJQUFBdHJCLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQUFxckIsWUFBWUEsQ0FBQSxFQUFxQjtNQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDNUgsZUFBZSxFQUFFO1FBQ3pCLE1BQU0sSUFBSTVlLEtBQUssQ0FBQywrQkFBK0IsQ0FBQztNQUNsRDtNQUVBLE9BQU8sSUFBSSxDQUFDNGUsZUFBZSxDQUFDNEgsWUFBWSxDQUFDLENBQUM7SUFDNUM7RUFBQztJQUFBdnJCLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQUE4bEIsUUFBUUEsQ0FBQ3dGLFFBQWtDLEVBQTJCO01BQ3BFLElBQUksQ0FBQyxJQUFJLENBQUM3SCxlQUFlLEVBQUU7UUFDekIsTUFBTSxJQUFJNWUsS0FBSyxDQUFDLCtCQUErQixDQUFDO01BQ2xEO01BRUEsT0FBTyxJQUFJLENBQUM0ZSxlQUFlLENBQUNxQyxRQUFRLENBQUN3RixRQUFRLENBQUM7SUFDaEQ7RUFBQztJQUFBeHJCLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQUE2bkIsY0FBY0EsQ0FBQSxFQUFtQztNQUFBLElBQUFGLE1BQUE7TUFDL0MsSUFBSSxDQUFDLElBQUksQ0FBQ2xFLGVBQWUsRUFBRTtRQUN6QixNQUFNLElBQUk1ZSxLQUFLLENBQUMsK0JBQStCLENBQUM7TUFDbEQ7TUFFQSxPQUFPLElBQUl1WixPQUFPLENBQUMsVUFBQTJILE9BQU8sRUFBSTtRQUM1QjtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQSxJQUFNN0gsT0FBTyxHQUFHeUosTUFBSSxDQUFDbEUsZUFBZSxDQUFDcUMsUUFBUSxDQUFDQyxPQUFPLENBQUM7TUFDeEQsQ0FBQyxDQUFDO0lBQ0o7RUFBQztJQUFBam1CLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQUE4SCxnQkFBZ0JBLENBQTRDUCxJQUFPLEVBQUVNLFFBQW1GLEVBQUU0WixPQUEyQyxFQUFRO01BQzNNLElBQUksQ0FBQyxJQUFJLENBQUNnQyxlQUFlLEVBQUU7UUFDekIsTUFBTSxJQUFJNWUsS0FBSyxDQUFDLCtCQUErQixDQUFDO01BQ2xEO01BRUEsSUFBSSxDQUFDNGUsZUFBZSxDQUFDM2IsZ0JBQWdCLENBQUNQLElBQUksRUFBRU0sUUFBUSxFQUFFNFosT0FBTyxDQUFDO0lBQ2hFO0VBQUM7SUFBQTNoQixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBZ0ksbUJBQW1CQSxDQUE0Q1QsSUFBTyxFQUFFTSxRQUFtRixFQUFFNFosT0FBMkMsRUFBUTtNQUM5TSxJQUFJLENBQUMsSUFBSSxDQUFDZ0MsZUFBZSxFQUFFO1FBQ3pCLE1BQU0sSUFBSTVlLEtBQUssQ0FBQywrQkFBK0IsQ0FBQztNQUNsRDtNQUVBLElBQUksQ0FBQzRlLGVBQWUsQ0FBQ3piLG1CQUFtQixDQUFDVCxJQUFJLEVBQUVNLFFBQVEsRUFBRTRaLE9BQU8sQ0FBQztJQUNuRTtFQUFDO0lBQUEzaEIsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQWlxQixlQUFlQSxDQUFBLEVBQXdCO01BQ3JDLElBQUksQ0FBQyxJQUFJLENBQUN4RyxlQUFlLEVBQUU7UUFDekIsTUFBTSxJQUFJNWUsS0FBSyxDQUFDLCtCQUErQixDQUFDO01BQ2xEO01BRUEsT0FBTyxJQUFJLENBQUM0ZSxlQUFlLENBQUN3RyxlQUFlLENBQUMsQ0FBQztJQUMvQztFQUFDO0lBQUFucUIsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQWdpQixjQUFjQSxDQUFDaGUsSUFBWSxFQUFFeWQsT0FBOEIsRUFBcUI7TUFDOUUsSUFBSSxDQUFDLElBQUksQ0FBQ2dDLGVBQWUsRUFBRTtRQUN6QixNQUFNLElBQUk1ZSxLQUFLLENBQUMsK0JBQStCLENBQUM7TUFDbEQ7TUFFQSxPQUFPLElBQUksQ0FBQzRlLGVBQWUsQ0FBQ3pCLGNBQWMsQ0FBQ2hlLElBQUksRUFBRXlkLE9BQU8sQ0FBQztJQUMzRDtFQUFDO0lBQUEzaEIsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQXVyQixTQUFTQSxDQUFDakksV0FBd0IsRUFBUTtNQUFBLElBQUFrSSxNQUFBO01BQ3hDbEksV0FBVyxDQUFDTSxTQUFTLENBQUMsQ0FBQyxDQUFDL1MsT0FBTyxDQUFDLFVBQUFpVCxLQUFLLEVBQUk7UUFDdkMsSUFBSSxDQUFDMEgsTUFBSSxDQUFDL0gsZUFBZSxFQUFFO1VBQ3pCLE1BQU0sSUFBSTVlLEtBQUssQ0FBQywrQkFBK0IsQ0FBQztRQUNsRDtRQUVBMm1CLE1BQUksQ0FBQy9ILGVBQWUsQ0FBQ2dJLFFBQVEsQ0FBQzNILEtBQUssQ0FBQztNQUN0QyxDQUFDLENBQUM7SUFDSjtFQUFDO0lBQUFoa0IsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQTRwQixnQkFBZ0JBLENBQUEsRUFBcUI7TUFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQ25HLGVBQWUsRUFBRTtRQUN6QixNQUFNLElBQUk1ZSxLQUFLLENBQUMsK0JBQStCLENBQUM7TUFDbEQ7TUFFQSxPQUFPLElBQUksQ0FBQzRlLGVBQWUsQ0FBQ21HLGdCQUFnQixDQUFDLENBQUM7SUFDaEQ7RUFBQztJQUFBOXBCLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQUE4cEIsZ0JBQWdCQSxDQUFDL0ksYUFBK0IsRUFBUTtNQUN0RCxJQUFJLENBQUMsSUFBSSxDQUFDMEMsZUFBZSxFQUFFO1FBQ3pCLE1BQU0sSUFBSTVlLEtBQUssQ0FBQywrQkFBK0IsQ0FBQztNQUNsRDtNQUVBLElBQUksQ0FBQzRlLGVBQWUsQ0FBQ3FHLGdCQUFnQixDQUFDL0ksYUFBYSxDQUFDO0lBQ3REO0VBQUM7SUFBQWpoQixHQUFBO0lBQUFDLEdBQUEsRUFVRCxTQUFBQSxJQUFBLEVBQW1GO01BQ2pGLElBQUksQ0FBQyxJQUFJLENBQUMwakIsZUFBZSxFQUFFO1FBQ3pCLE1BQU0sSUFBSTVlLEtBQUssQ0FBQywrQkFBK0IsQ0FBQztNQUNsRDtNQUVBLE9BQU8sSUFBSSxDQUFDNGUsZUFBZSxDQUFDaUksT0FBTztJQUNyQyxDQUFDO0lBQUF6UyxHQUFBLEVBZEQsU0FBQUEsSUFBWTBTLE9BQTRFLEVBQUU7TUFDeEYsSUFBSSxDQUFDLElBQUksQ0FBQ2xJLGVBQWUsRUFBRTtRQUN6QixNQUFNLElBQUk1ZSxLQUFLLENBQUMsK0JBQStCLENBQUM7TUFDbEQ7TUFFQSxJQUFJLENBQUM0ZSxlQUFlLENBQUNpSSxPQUFPLEdBQUdDLE9BQU87SUFDeEM7RUFBQztJQUFBN3JCLEdBQUE7SUFBQUMsR0FBQSxFQWtCRCxTQUFBQSxJQUFBLEVBQXNHO01BQ3BHLElBQUksQ0FBQyxJQUFJLENBQUMwakIsZUFBZSxFQUFFO1FBQ3pCLE1BQU0sSUFBSTVlLEtBQUssQ0FBQywrQkFBK0IsQ0FBQztNQUNsRDtNQUVBLE9BQU8sSUFBSSxDQUFDNGUsZUFBZSxDQUFDbUksY0FBYztJQUM1QyxDQUFDO0lBQUEzUyxHQUFBLEVBZEQsU0FBQUEsSUFBbUIwUyxPQUF3RixFQUFFO01BQzNHLElBQUksQ0FBQyxJQUFJLENBQUNsSSxlQUFlLEVBQUU7UUFDekIsTUFBTSxJQUFJNWUsS0FBSyxDQUFDLCtCQUErQixDQUFDO01BQ2xEO01BRUEsSUFBSSxDQUFDNGUsZUFBZSxDQUFDbUksY0FBYyxHQUFHRCxPQUFPO0lBQy9DO0VBQUM7SUFBQTdyQixHQUFBO0lBQUFDLEdBQUEsRUFrQkQsU0FBQUEsSUFBQSxFQUEyRjtNQUN6RixJQUFJLENBQUMsSUFBSSxDQUFDMGpCLGVBQWUsRUFBRTtRQUN6QixNQUFNLElBQUk1ZSxLQUFLLENBQUMsK0JBQStCLENBQUM7TUFDbEQ7TUFFQSxPQUFPLElBQUksQ0FBQzRlLGVBQWUsQ0FBQ29JLHVCQUF1QjtJQUNyRCxDQUFDO0lBQUE1UyxHQUFBLEVBZEQsU0FBQUEsSUFBNEIwUyxPQUFvRSxFQUFFO01BQ2hHLElBQUksQ0FBQyxJQUFJLENBQUNsSSxlQUFlLEVBQUU7UUFDekIsTUFBTSxJQUFJNWUsS0FBSyxDQUFDLCtCQUErQixDQUFDO01BQ2xEO01BRUEsSUFBSSxDQUFDNGUsZUFBZSxDQUFDb0ksdUJBQXVCLEdBQUdGLE9BQU87SUFDeEQ7RUFBQztJQUFBN3JCLEdBQUE7SUFBQUMsR0FBQSxFQWtCRCxTQUFBQSxJQUFBLEVBQThGO01BQzVGLElBQUksQ0FBQyxJQUFJLENBQUMwakIsZUFBZSxFQUFFO1FBQ3pCLE1BQU0sSUFBSTVlLEtBQUssQ0FBQywrQkFBK0IsQ0FBQztNQUNsRDtNQUVBLE9BQU8sSUFBSSxDQUFDNGUsZUFBZSxDQUFDcUksMEJBQTBCO0lBQ3hELENBQUM7SUFBQTdTLEdBQUEsRUFkRCxTQUFBQSxJQUErQjBTLE9BQW9FLEVBQUU7TUFDbkcsSUFBSSxDQUFDLElBQUksQ0FBQ2xJLGVBQWUsRUFBRTtRQUN6QixNQUFNLElBQUk1ZSxLQUFLLENBQUMsK0JBQStCLENBQUM7TUFDbEQ7TUFFQSxJQUFJLENBQUM0ZSxlQUFlLENBQUNxSSwwQkFBMEIsR0FBR0gsT0FBTztJQUMzRDtFQUFDO0lBQUE3ckIsR0FBQTtJQUFBRSxLQUFBLEVBVUQsU0FBQStyQixLQUFLQSxDQUFBLEVBQVM7TUFBQSxJQUFBQyxzQkFBQTtNQUNaLENBQUFBLHNCQUFBLE9BQUksQ0FBQ3ZJLGVBQWUsY0FBQXVJLHNCQUFBLHVCQUFwQkEsc0JBQUEsQ0FBc0JELEtBQUssQ0FBQyxDQUFDO0lBQy9CO0VBQUM7SUFBQWpzQixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBSyxPQUFPQSxDQUFBLEVBQVM7TUFDZCxJQUFJLENBQUNvakIsZUFBZSxHQUFHLElBQUk7SUFDN0I7RUFBQztBQUFBO0FBR0gsK0RBQWU0RixxQkFBcUIsRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCQ3BTcEMsdUtBQUEzZSxDQUFBLEVBQUFnUSxDQUFBLEVBQUFDLENBQUEsd0JBQUFDLE1BQUEsR0FBQUEsTUFBQSxPQUFBQyxDQUFBLEdBQUFGLENBQUEsQ0FBQUcsUUFBQSxrQkFBQUMsQ0FBQSxHQUFBSixDQUFBLENBQUFLLFdBQUEsOEJBQUFDLEVBQUFOLENBQUEsRUFBQUUsQ0FBQSxFQUFBRSxDQUFBLEVBQUFFLENBQUEsUUFBQUMsQ0FBQSxHQUFBTCxDQUFBLElBQUFBLENBQUEsQ0FBQS9OLFNBQUEsWUFBQXFPLFNBQUEsR0FBQU4sQ0FBQSxHQUFBTSxTQUFBLEVBQUFDLENBQUEsR0FBQTNFLE1BQUEsQ0FBQTRFLE1BQUEsQ0FBQUgsQ0FBQSxDQUFBcE8sU0FBQSxVQUFBd08sbUJBQUEsQ0FBQUYsQ0FBQSx1QkFBQVQsQ0FBQSxFQUFBRSxDQUFBLEVBQUFFLENBQUEsUUFBQUUsQ0FBQSxFQUFBQyxDQUFBLEVBQUFFLENBQUEsRUFBQUcsQ0FBQSxNQUFBQyxDQUFBLEdBQUFULENBQUEsUUFBQVUsQ0FBQSxPQUFBQyxDQUFBLEtBQUFGLENBQUEsS0FBQVgsQ0FBQSxLQUFBYyxDQUFBLEVBQUFqUixDQUFBLEVBQUFrUixDQUFBLEVBQUFDLENBQUEsRUFBQU4sQ0FBQSxFQUFBTSxDQUFBLENBQUF4VyxJQUFBLENBQUFxRixDQUFBLE1BQUFtUixDQUFBLFdBQUFBLEVBQUFuQixDQUFBLEVBQUFDLENBQUEsV0FBQU0sQ0FBQSxHQUFBUCxDQUFBLEVBQUFRLENBQUEsTUFBQUUsQ0FBQSxHQUFBMVEsQ0FBQSxFQUFBZ1IsQ0FBQSxDQUFBYixDQUFBLEdBQUFGLENBQUEsRUFBQWlCLENBQUEsZ0JBQUFDLEVBQUFsQixDQUFBLEVBQUFFLENBQUEsU0FBQUssQ0FBQSxHQUFBUCxDQUFBLEVBQUFTLENBQUEsR0FBQVAsQ0FBQSxFQUFBSCxDQUFBLE9BQUFlLENBQUEsSUFBQUYsQ0FBQSxLQUFBUixDQUFBLElBQUFMLENBQUEsR0FBQWMsQ0FBQSxDQUFBbFIsTUFBQSxFQUFBb1EsQ0FBQSxVQUFBSyxDQUFBLEVBQUFFLENBQUEsR0FBQU8sQ0FBQSxDQUFBZCxDQUFBLEdBQUFtQixDQUFBLEdBQUFILENBQUEsQ0FBQUYsQ0FBQSxFQUFBTSxDQUFBLEdBQUFiLENBQUEsS0FBQU4sQ0FBQSxRQUFBSSxDQUFBLEdBQUFlLENBQUEsS0FBQWpCLENBQUEsTUFBQU8sQ0FBQSxHQUFBSCxDQUFBLEVBQUFDLENBQUEsR0FBQUQsQ0FBQSxZQUFBQyxDQUFBLFdBQUFELENBQUEsTUFBQUEsQ0FBQSxNQUFBdlEsQ0FBQSxJQUFBdVEsQ0FBQSxPQUFBWSxDQUFBLE1BQUFkLENBQUEsR0FBQUosQ0FBQSxRQUFBa0IsQ0FBQSxHQUFBWixDQUFBLFFBQUFDLENBQUEsTUFBQVEsQ0FBQSxDQUFBQyxDQUFBLEdBQUFkLENBQUEsRUFBQWEsQ0FBQSxDQUFBYixDQUFBLEdBQUFJLENBQUEsT0FBQVksQ0FBQSxHQUFBQyxDQUFBLEtBQUFmLENBQUEsR0FBQUosQ0FBQSxRQUFBTSxDQUFBLE1BQUFKLENBQUEsSUFBQUEsQ0FBQSxHQUFBaUIsQ0FBQSxNQUFBYixDQUFBLE1BQUFOLENBQUEsRUFBQU0sQ0FBQSxNQUFBSixDQUFBLEVBQUFhLENBQUEsQ0FBQWIsQ0FBQSxHQUFBaUIsQ0FBQSxFQUFBWixDQUFBLGNBQUFILENBQUEsSUFBQUosQ0FBQSxhQUFBaUIsQ0FBQSxRQUFBSCxDQUFBLE9BQUFaLENBQUEscUJBQUFFLENBQUEsRUFBQVMsQ0FBQSxFQUFBTSxDQUFBLFFBQUFQLENBQUEsWUFBQVEsU0FBQSx1Q0FBQU4sQ0FBQSxVQUFBRCxDQUFBLElBQUFLLENBQUEsQ0FBQUwsQ0FBQSxFQUFBTSxDQUFBLEdBQUFaLENBQUEsR0FBQU0sQ0FBQSxFQUFBSixDQUFBLEdBQUFVLENBQUEsR0FBQXBCLENBQUEsR0FBQVEsQ0FBQSxPQUFBeFEsQ0FBQSxHQUFBMFEsQ0FBQSxNQUFBSyxDQUFBLEtBQUFSLENBQUEsS0FBQUMsQ0FBQSxHQUFBQSxDQUFBLFFBQUFBLENBQUEsU0FBQVEsQ0FBQSxDQUFBYixDQUFBLFFBQUFnQixDQUFBLENBQUFYLENBQUEsRUFBQUUsQ0FBQSxLQUFBTSxDQUFBLENBQUFiLENBQUEsR0FBQU8sQ0FBQSxHQUFBTSxDQUFBLENBQUFDLENBQUEsR0FBQVAsQ0FBQSxhQUFBRyxDQUFBLE1BQUFOLENBQUEsUUFBQUMsQ0FBQSxLQUFBSCxDQUFBLFlBQUFMLENBQUEsR0FBQU8sQ0FBQSxDQUFBRixDQUFBLFdBQUFMLENBQUEsR0FBQUEsQ0FBQSxDQUFBL0osSUFBQSxDQUFBc0ssQ0FBQSxFQUFBRyxDQUFBLFVBQUFXLFNBQUEsMkNBQUFyQixDQUFBLENBQUFzQixJQUFBLFNBQUF0QixDQUFBLEVBQUFVLENBQUEsR0FBQVYsQ0FBQSxDQUFBMWEsS0FBQSxFQUFBa2IsQ0FBQSxTQUFBQSxDQUFBLG9CQUFBQSxDQUFBLEtBQUFSLENBQUEsR0FBQU8sQ0FBQSxlQUFBUCxDQUFBLENBQUEvSixJQUFBLENBQUFzSyxDQUFBLEdBQUFDLENBQUEsU0FBQUUsQ0FBQSxHQUFBVyxTQUFBLHVDQUFBaEIsQ0FBQSxnQkFBQUcsQ0FBQSxPQUFBRCxDQUFBLEdBQUF2USxDQUFBLGNBQUFnUSxDQUFBLElBQUFlLENBQUEsR0FBQUMsQ0FBQSxDQUFBYixDQUFBLFFBQUFPLENBQUEsR0FBQVQsQ0FBQSxDQUFBaEssSUFBQSxDQUFBa0ssQ0FBQSxFQUFBYSxDQUFBLE9BQUFFLENBQUEsa0JBQUFsQixDQUFBLElBQUFPLENBQUEsR0FBQXZRLENBQUEsRUFBQXdRLENBQUEsTUFBQUUsQ0FBQSxHQUFBVixDQUFBLGNBQUFhLENBQUEsbUJBQUF2YixLQUFBLEVBQUEwYSxDQUFBLEVBQUFzQixJQUFBLEVBQUFQLENBQUEsU0FBQWQsQ0FBQSxFQUFBSSxDQUFBLEVBQUFFLENBQUEsUUFBQUcsQ0FBQSxRQUFBUSxDQUFBLGdCQUFBVCxVQUFBLGNBQUFjLGtCQUFBLGNBQUFDLDJCQUFBLEtBQUF4QixDQUFBLEdBQUFqRSxNQUFBLENBQUEwRixjQUFBLE1BQUFqQixDQUFBLE1BQUFMLENBQUEsSUFBQUgsQ0FBQSxDQUFBQSxDQUFBLElBQUFHLENBQUEsU0FBQVMsbUJBQUEsQ0FBQVosQ0FBQSxPQUFBRyxDQUFBLGlDQUFBSCxDQUFBLEdBQUFVLENBQUEsR0FBQWMsMEJBQUEsQ0FBQXBQLFNBQUEsR0FBQXFPLFNBQUEsQ0FBQXJPLFNBQUEsR0FBQTJKLE1BQUEsQ0FBQTRFLE1BQUEsQ0FBQUgsQ0FBQSxZQUFBSyxFQUFBN1EsQ0FBQSxXQUFBK0wsTUFBQSxDQUFBMkYsY0FBQSxHQUFBM0YsTUFBQSxDQUFBMkYsY0FBQSxDQUFBMVIsQ0FBQSxFQUFBd1IsMEJBQUEsS0FBQXhSLENBQUEsQ0FBQTJSLFNBQUEsR0FBQUgsMEJBQUEsRUFBQVosbUJBQUEsQ0FBQTVRLENBQUEsRUFBQXFRLENBQUEseUJBQUFyUSxDQUFBLENBQUFvQyxTQUFBLEdBQUEySixNQUFBLENBQUE0RSxNQUFBLENBQUFELENBQUEsR0FBQTFRLENBQUEsV0FBQXVSLGlCQUFBLENBQUFuUCxTQUFBLEdBQUFvUCwwQkFBQSxFQUFBWixtQkFBQSxDQUFBRixDQUFBLGlCQUFBYywwQkFBQSxHQUFBWixtQkFBQSxDQUFBWSwwQkFBQSxpQkFBQUQsaUJBQUEsR0FBQUEsaUJBQUEsQ0FBQUssV0FBQSx3QkFBQWhCLG1CQUFBLENBQUFZLDBCQUFBLEVBQUFuQixDQUFBLHdCQUFBTyxtQkFBQSxDQUFBRixDQUFBLEdBQUFFLG1CQUFBLENBQUFGLENBQUEsRUFBQUwsQ0FBQSxnQkFBQU8sbUJBQUEsQ0FBQUYsQ0FBQSxFQUFBUCxDQUFBLGlDQUFBUyxtQkFBQSxDQUFBRixDQUFBLDhEQUFBbUIsWUFBQSxZQUFBQSxhQUFBLGFBQUFDLENBQUEsRUFBQXZCLENBQUEsRUFBQXdCLENBQUEsRUFBQWxCLENBQUE7QUFBQSxTQUFBRCxvQkFBQTVRLENBQUEsRUFBQWlRLENBQUEsRUFBQUUsQ0FBQSxFQUFBSCxDQUFBLFFBQUFPLENBQUEsR0FBQXhFLE1BQUEsQ0FBQWlHLGNBQUEsUUFBQXpCLENBQUEsdUJBQUF2USxDQUFBLElBQUF1USxDQUFBLFFBQUFLLG1CQUFBLFlBQUFxQixtQkFBQWpTLENBQUEsRUFBQWlRLENBQUEsRUFBQUUsQ0FBQSxFQUFBSCxDQUFBLGFBQUFLLEVBQUFKLENBQUEsRUFBQUUsQ0FBQSxJQUFBUyxtQkFBQSxDQUFBNVEsQ0FBQSxFQUFBaVEsQ0FBQSxZQUFBalEsQ0FBQSxnQkFBQWtTLE9BQUEsQ0FBQWpDLENBQUEsRUFBQUUsQ0FBQSxFQUFBblEsQ0FBQSxTQUFBaVEsQ0FBQSxHQUFBTSxDQUFBLEdBQUFBLENBQUEsQ0FBQXZRLENBQUEsRUFBQWlRLENBQUEsSUFBQTNhLEtBQUEsRUFBQTZhLENBQUEsRUFBQWdDLFVBQUEsR0FBQW5DLENBQUEsRUFBQW9DLFlBQUEsR0FBQXBDLENBQUEsRUFBQXFDLFFBQUEsR0FBQXJDLENBQUEsTUFBQWhRLENBQUEsQ0FBQWlRLENBQUEsSUFBQUUsQ0FBQSxJQUFBRSxDQUFBLGFBQUFBLENBQUEsY0FBQUEsQ0FBQSxtQkFBQU8sbUJBQUEsQ0FBQTVRLENBQUEsRUFBQWlRLENBQUEsRUFBQUUsQ0FBQSxFQUFBSCxDQUFBO0FBREE7QUFDQTtBQUNBOztBQUVxRDtBQUdPO0FBQUEsSUFFdkNvRiw0QkFBNEI7RUFBQSxTQUFBQSw2QkFBQTtJQUFBeGdCLGlGQUFBLE9BQUF3Z0IsNEJBQUE7RUFBQTtFQUFBLE9BQUFqZ0IsOEVBQUEsQ0FBQWlnQiw0QkFBQTtJQUFBaGdCLEdBQUE7SUFBQUUsS0FBQTtNQUFBLElBQUFpc0IscUJBQUEsR0FBQTFOLG1GQUFBLGNBQUFoQyxZQUFBLEdBQUFFLENBQUEsQ0FDL0MsU0FBQStCLFFBQTJCdUMsYUFBZ0M7UUFBQSxPQUFBeEUsWUFBQSxHQUFBQyxDQUFBLFdBQUFtQyxRQUFBO1VBQUEsa0JBQUFBLFFBQUEsQ0FBQTlELENBQUE7WUFBQTtjQUFBLE9BQUE4RCxRQUFBLENBQUEvQyxDQUFBLElBQ2xELElBQUl3QyxPQUFPLENBQWtCLFVBQUE4Tiw0QkFBNEIsRUFBSTtnQkFDbEUsSUFBTTVOLHVCQUF1QixHQUFHdmYsZ0VBQVcsQ0FBQ3FSLFNBQVMsQ0FBQyxVQUFBaEMsV0FBVyxFQUFJO2tCQUNuRSxJQUFJLENBQUNBLFdBQVcsRUFBRTtvQkFDaEI7a0JBQ0Y7a0JBRUE4ZCw0QkFBNEIsQ0FBQyxJQUFJN0MsOERBQXFCLENBQUN0SSxhQUFhLENBQUMsQ0FBQztrQkFDdEV6Qyx1QkFBdUIsQ0FBQ2plLE9BQU8sQ0FBQyxDQUFDO2dCQUNuQyxDQUFDLENBQUM7Y0FDSixDQUFDLENBQUM7VUFBQTtRQUFBLEdBQUFtZSxPQUFBO01BQUEsQ0FDSDtNQUFBLFNBWEs2QyxvQkFBb0JBLENBQUFyQyxFQUFBO1FBQUEsT0FBQWlOLHFCQUFBLENBQUFoTixLQUFBLE9BQUEzSyxTQUFBO01BQUE7TUFBQSxPQUFwQitNLG9CQUFvQjtJQUFBO0VBQUE7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNWNUI7QUFDQTtBQUNBO0FBRkEsSUFPcUJsaUIsZUFBZTtFQUdsQyxTQUFBQSxnQkFBWWd0QixPQUFtQixFQUFFO0lBQUE3c0IsaUZBQUEsT0FBQUgsZUFBQTtJQUFBSSxpRkFBQTtJQUMvQixJQUFJLENBQUM2c0IsUUFBUSxHQUFHRCxPQUFPO0VBQ3pCO0VBQUMsT0FBQXRzQiw4RUFBQSxDQUFBVixlQUFBO0lBQUFXLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBZTtNQUNiLE9BQU8sSUFBSSxDQUFDcXNCLFFBQVEsQ0FBQ3BzQixLQUFLO0lBQzVCO0VBQUM7SUFBQUYsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQW9RLFNBQVNBLENBQUN2SSxRQUE0QixFQUFlO01BQ25ELE9BQU8sSUFBSSxDQUFDdWtCLFFBQVEsQ0FBQ2hjLFNBQVMsQ0FBQ3ZJLFFBQVEsQ0FBQztJQUMxQztFQUFDO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNwQkg7QUFDQTtBQUNBOztBQUc0QztBQUFBLElBR3RDd2tCLGtCQUFrQiwwQkFBQUMsV0FBQTtFQUN0QixTQUFBRCxtQkFBWUUsU0FBYyxFQUFFMWtCLFFBQVcsRUFBRTtJQUFBdkksaUZBQUEsT0FBQStzQixrQkFBQTtJQUFBLE9BQUFHLFVBQUEsT0FBQUgsa0JBQUEsR0FDakMsWUFBTTtNQUNWLElBQU1JLEdBQUcsR0FBR0YsU0FBUyxDQUFDeHBCLE9BQU8sQ0FBQzhFLFFBQVEsQ0FBQztNQUV2QyxJQUFJNGtCLEdBQUcsSUFBSSxDQUFDLEVBQUU7UUFDWkYsU0FBUyxDQUFDeFcsTUFBTSxDQUFDMFcsR0FBRyxFQUFFLENBQUMsQ0FBQztNQUMxQjtJQUNGLENBQUM7RUFDSDtFQUFDQywyRUFBQSxDQUFBTCxrQkFBQSxFQUFBQyxXQUFBO0VBQUEsT0FBQXpzQiw4RUFBQSxDQUFBd3NCLGtCQUFBO0FBQUEsRUFUaUNydEIsd0RBQVU7QUFBQSxJQVl6QkUsT0FBTztFQUkxQixTQUFBQSxRQUFZYyxLQUFRLEVBQUU7SUFBQVYsaUZBQUEsT0FBQUosT0FBQTtJQUFBSyxpRkFBQTtJQUFBQSxpRkFBQTtJQUNwQixJQUFJLENBQUNvdEIsVUFBVSxHQUFHLEVBQUU7SUFDcEIsSUFBSSxDQUFDQyxNQUFNLEdBQUc1c0IsS0FBSztFQUNyQjtFQUFDLE9BQUFILDhFQUFBLENBQUFYLE9BQUE7SUFBQVksR0FBQTtJQUFBQyxHQUFBLEVBd0JELFNBQUFBLElBQUEsRUFBZTtNQUNiLE9BQU8sSUFBSSxDQUFDNnNCLE1BQU07SUFDcEIsQ0FBQztJQUFBM1QsR0FBQSxFQXhCRCxTQUFBQSxJQUFValosS0FBUSxFQUFFO01BQ2xCLElBQUk2c0IsT0FBTyxHQUFHLElBQUksQ0FBQ0QsTUFBTSxLQUFLNXNCLEtBQUs7TUFFbkMsSUFBSTZzQixPQUFPLElBQUk3c0IsS0FBSyxFQUFFO1FBQ3BCLElBQU04c0IsVUFBVSxHQUFHOXNCLEtBQWtDO1FBRXJELElBQUksT0FBTzhzQixVQUFVLENBQUNDLE1BQU0sS0FBSyxVQUFVLEVBQUU7VUFDM0NGLE9BQU8sR0FBRyxDQUFDQyxVQUFVLENBQUNDLE1BQU0sQ0FBQyxJQUFJLENBQUNILE1BQU0sQ0FBQztRQUMzQztNQUNGO01BRUEsSUFBSSxDQUFDQyxPQUFPLEVBQUU7UUFDWjtNQUNGO01BRUEsSUFBSSxDQUFDRCxNQUFNLEdBQUc1c0IsS0FBSztNQUVuQixTQUFBZ3RCLEVBQUEsTUFBQUMsSUFBQSxHQUFBdk4sb0ZBQUEsQ0FBMkIsSUFBSSxDQUFDaU4sVUFBVSxHQUFBSyxFQUFBLEdBQUFDLElBQUEsQ0FBQTNpQixNQUFBLEVBQUEwaUIsRUFBQSxJQUFHO1FBQXhDLElBQU1ubEIsUUFBUSxHQUFBb2xCLElBQUEsQ0FBQUQsRUFBQTtRQUNqQm5sQixRQUFRLENBQUM3SCxLQUFLLENBQUM7TUFDakI7SUFDRjtFQUFDO0lBQUFGLEdBQUE7SUFBQUUsS0FBQSxFQU1ELFNBQUFvUSxTQUFTQSxDQUFDdkksUUFBNEIsRUFBZTtNQUNuRCxJQUFJLENBQUM4a0IsVUFBVSxDQUFDcmpCLElBQUksQ0FBQ3pCLFFBQVEsQ0FBQztNQUU5QkEsUUFBUSxDQUFDLElBQUksQ0FBQytrQixNQUFNLENBQUM7TUFFckIsT0FBTyxJQUFJUCxrQkFBa0IsQ0FBcUIsSUFBSSxDQUFDTSxVQUFVLEVBQUU5a0IsUUFBUSxDQUFDO0lBQzlFO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzdESDtBQUNBO0FBQ0E7O0FBRXFEO0FBQUEsSUFFaEMrUixXQUFXO0VBQUEsU0FBQUEsWUFBQTtJQUFBdGEsaUZBQUEsT0FBQXNhLFdBQUE7RUFBQTtFQUFBLE9BQUEvWiw4RUFBQSxDQUFBK1osV0FBQTtJQUFBOVosR0FBQTtJQUFBRSxLQUFBLEVBQzlCLFNBQU9xYSxxQkFBcUJBLENBQUN4SyxHQUFXLEVBQVU7TUFDaEQsSUFBSTtRQUNGLElBQU1xZCxPQUFPLEdBQUcsSUFBSW51QixnRUFBVyxDQUFDaUIsS0FBSyxDQUFDMEYsR0FBRyxDQUFDbUssR0FBRyxDQUFDO1FBRTlDLE9BQU9xZCxPQUFPLENBQUNDLE1BQU07TUFDdkIsQ0FBQyxDQUFDLE9BQU96aUIsQ0FBQyxFQUFFO1FBQ1YsT0FBTyxFQUFFO01BQ1g7SUFDRjtFQUFDO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNmSDtBQUNBO0FBQ0E7O0FBR3VEO0FBQ0g7QUFDZDtBQUNGO0FBQ2dCO0FBQ0k7QUFFUTtBQUNSO0FBQ007QUFDaUI7QUFDMEI7QUFFbkM7QUFDTjtBQUNQO0FBQ0o7QUFDc0I7QUFFVjtBQUN2QjtBQUNGO0FBQ1k7QUFDRztBQUNJO0FBTTNELElBQU1wQyxZQUFZLEdBQUcsRUFBQStrQixxQkFBQSxHQUFBdHVCLGlFQUFXLENBQUNtUixXQUFXLENBQUMsQ0FBQyxDQUFDbFEsS0FBSyxjQUFBcXRCLHFCQUFBLHVCQUEvQkEscUJBQUEsQ0FBaUMva0IsWUFBWSxLQUFJOUksSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQztBQUFDLElBZTVEa0YsR0FBRztFQW1XdEIsU0FBQUEsSUFBQSxFQUFzQjtJQUFBckYsaUZBQUEsT0FBQXFGLEdBQUE7SUFDcEIsTUFBTSxJQUFJRSxLQUFLLENBQUMsb0RBQW9ELENBQUM7RUFDdkU7RUFBQyxPQUFBaEYsOEVBQUEsQ0FBQThFLEdBQUE7SUFBQTdFLEdBQUE7SUFBQUMsR0FBQSxFQTFVRCxTQUFBQSxJQUFBLEVBQWtDO01BQ2hDLE9BQU91SSxZQUFZO0lBQ3JCO0VBQUM7SUFBQXhJLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBbUQ7TUFDakQsT0FBTyxJQUFJLENBQUNxTCxvQkFBb0I7SUFDbEM7RUFBQztJQUFBdEwsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFzQztNQUNwQyxPQUFPLElBQUksQ0FBQ3VaLFFBQVE7SUFDdEI7RUFBQztJQUFBeFosR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFxQztNQUNuQyxPQUFPNEUsR0FBRyxDQUFDMm9CLGdCQUFnQjtJQUM3QjtFQUFDO0lBQUF4dEIsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFtQztNQUNqQyxPQUFPNEUsR0FBRyxDQUFDNG9CLGdCQUFnQjtJQUM3QjtFQUFDO0lBQUF6dEIsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFtRDtNQUNqRCxPQUFPNEUsR0FBRyxDQUFDNm9CLG9CQUFvQjtJQUNqQztFQUFDO0lBQUExdEIsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFtRDtNQUNqRCxPQUFPNEUsR0FBRyxDQUFDOG9CLHFCQUFxQjtJQUNsQztFQUFDO0lBQUEzdEIsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUE0RTtNQUMxRSxPQUFPNEUsR0FBRyxDQUFDK29CLDhCQUE4QjtJQUMzQztFQUFDO0lBQUE1dEIsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUE4QztNQUM1QyxPQUFPNEUsR0FBRyxDQUFDZ3BCLDRCQUE0QjtJQUN6QztFQUFDO0lBQUE3dEIsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUEyRDtNQUN6RCxPQUFPNEUsR0FBRyxDQUFDaXBCLHFDQUFxQztJQUNsRDtFQUFDO0lBQUE5dEIsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFtRDtNQUNqRCxPQUFPNEUsR0FBRyxDQUFDa3BCLDZCQUE2QjtJQUMxQztFQUFDO0lBQUEvdEIsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUEwRDtNQUN4RCxPQUFPNEUsR0FBRyxDQUFDbXBCLG9DQUFvQztJQUNqRDtFQUFDO0lBQUFodUIsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFzRDtNQUNwRCxPQUFPLElBQUksQ0FBQ2d1QixnQ0FBZ0M7SUFDOUM7RUFBQztJQUFBanVCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBMkQ7TUFDekQsT0FBTyxJQUFJLENBQUNpdUIscUNBQXFDO0lBQ25EO0VBQUM7SUFBQWx1QixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQStFO01BQzdFLE9BQU8sSUFBSSxDQUFDa3VCLGdCQUFnQjtJQUM5QjtFQUFDO0lBQUFudUIsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFtRjtNQUNqRixPQUFPLElBQUksQ0FBQ211QixrQkFBa0I7SUFDaEM7RUFBQztJQUFBcHVCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBMkU7TUFDekUsT0FBTyxJQUFJLENBQUNvdUIsWUFBWTtJQUMxQjtFQUFDO0lBQUFydUIsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUE0QztNQUMxQyxPQUFPNEUsR0FBRyxDQUFDeXBCLGVBQWU7SUFDNUI7RUFBQztJQUFBdHVCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBMkU7TUFDekUsT0FBTyxJQUFJLENBQUNzdUIsMkJBQTJCO0lBQ3pDO0VBQUM7SUFBQXZ1QixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQTJDO01BQ3pDLE9BQU8sSUFBSSxDQUFDdXVCLGFBQWE7SUFDM0I7RUFBQztJQUFBeHVCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBb0U7TUFDbEUsT0FBTyxJQUFJLENBQUN3dUIsK0NBQStDO0lBQzdELENBQUM7SUFBQXRWLEdBQUEsRUFFRCxTQUFBQSxJQUEwRHVWLGFBQXFCLEVBQUU7TUFDL0UsSUFBSSxDQUFDRCwrQ0FBK0MsR0FBR0MsYUFBYTtJQUN0RTtFQUFDO0lBQUExdUIsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUE0QztNQUMxQyxPQUFPNkQsb0VBQW1CLENBQUNVLHFDQUFxQyxDQUFDLElBQUksQ0FBQ21GLE9BQU8sQ0FBQzRKLFNBQVMsQ0FBQ3JULEtBQUssQ0FBQztJQUNoRztFQUFDO0lBQUFGLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBZ0Q7TUFDOUMsT0FBTzJELHdFQUFxQixDQUFDVSx5Q0FBeUMsQ0FBQ08sR0FBRyxDQUFDOHBCLGVBQWUsQ0FBQ3p1QixLQUFLLENBQUM7SUFDbkc7RUFBQztJQUFBRixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQThDO01BQzVDLE9BQU9rQiw2REFBZTtJQUN4QjtFQUFDO0lBQUFuQixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFPMHVCLDJCQUEyQkEsQ0FBQSxFQUFTO01BQUEsSUFBQW51QixLQUFBO01BQ3pDLElBQU1vdUIsc0JBQXNCLEdBQUd2bUIsNkRBQWEsQ0FBQ3VtQixzQkFBc0I7TUFFbkVBLHNCQUFzQixDQUFDbFYsU0FBUyxHQUFHOVUsR0FBRyxDQUFDd1YsZUFBZTtNQUN0RHdVLHNCQUFzQixDQUFDcm1CLFlBQVksR0FBRzNELEdBQUcsQ0FBQzJELFlBQVk7TUFFdEQsSUFBTXNtQixrQkFBa0IsR0FBR2pxQixHQUFHLENBQUN5VSxZQUFZLENBQUNoSixTQUFTLENBQUMsVUFBQWlKLFdBQVcsRUFBSTtRQUNuRXNWLHNCQUFzQixDQUFDdFYsV0FBVyxHQUFHQSxXQUFXO01BQ2xELENBQUMsQ0FBQztNQUNGLElBQU13VixtQkFBbUIsR0FBR2xxQixHQUFHLENBQUNtcUIsWUFBWSxDQUFDMWUsU0FBUyxDQUFDLFVBQUFwUSxLQUFLLEVBQUk7UUFDOUQsSUFBTSt1QixpQkFBaUIsR0FBR3h1QixLQUFJLENBQUNrSixPQUFPLENBQUN3SyxTQUFTLENBQUNqVSxLQUFLLENBQUM2b0IsSUFBSSxDQUFDLFVBQUE5VixRQUFRO1VBQUEsT0FBSUEsUUFBUSxZQUFZOEQsb0VBQWlCO1FBQUEsRUFBQztRQUU5RyxJQUFJa1ksaUJBQWlCLEVBQUU7VUFDckJKLHNCQUFzQixDQUFDOWUsR0FBRyxHQUFHN1AsS0FBSztVQUVsQ08sS0FBSSxDQUFDa0osT0FBTyxDQUFDd0ssU0FBUyxDQUFDakIsTUFBTSxDQUFDK2IsaUJBQWlCLENBQUM7VUFDaER4dUIsS0FBSSxDQUFDa0osT0FBTyxDQUFDd0ssU0FBUyxDQUFDblQsR0FBRyxDQUFDLElBQUkrVixvRUFBaUIsQ0FBQzhYLHNCQUFzQixDQUFDLENBQUM7VUFDekVwdUIsS0FBSSxDQUFDa0osT0FBTyxDQUFDQyxJQUFJLENBQUMsK0JBQStCLEVBQUVpbEIsc0JBQXNCLENBQUM5ZSxHQUFHLENBQUM7UUFDaEY7TUFDRixDQUFDLENBQUM7TUFDRixJQUFNbWYsY0FBYyxHQUFHcnFCLEdBQUcsQ0FBQzJVLFFBQVEsQ0FBQ2xKLFNBQVMsQ0FBQyxVQUFBbUosT0FBTyxFQUFJO1FBQ3ZELElBQU13VixpQkFBaUIsR0FBR3h1QixLQUFJLENBQUNrSixPQUFPLENBQUN3SyxTQUFTLENBQUNqVSxLQUFLLENBQUM2b0IsSUFBSSxDQUFDLFVBQUE5VixRQUFRO1VBQUEsT0FBSUEsUUFBUSxZQUFZOEQsb0VBQWlCO1FBQUEsRUFBQztRQUU5RyxJQUFJa1ksaUJBQWlCLElBQUl4VixPQUFPLEVBQUU7VUFDaENvVixzQkFBc0IsQ0FBQ3BWLE9BQU8sR0FBR0EsT0FBTztVQUV4Q2haLEtBQUksQ0FBQ2tKLE9BQU8sQ0FBQ3dLLFNBQVMsQ0FBQ2pCLE1BQU0sQ0FBQytiLGlCQUFpQixDQUFDO1VBQ2hEeHVCLEtBQUksQ0FBQ2tKLE9BQU8sQ0FBQ3dLLFNBQVMsQ0FBQ25ULEdBQUcsQ0FBQyxJQUFJK1Ysb0VBQWlCLENBQUM4WCxzQkFBc0IsQ0FBQyxDQUFDO1VBQ3pFcHVCLEtBQUksQ0FBQ2tKLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLG1DQUFtQyxFQUFFaWxCLHNCQUFzQixDQUFDcFYsT0FBTyxDQUFDO1FBQ3hGO01BQ0YsQ0FBQyxDQUFDO0lBQ0o7RUFBQztJQUFBelosR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBT2l2Qix5QkFBeUJBLENBQUEsRUFBUztNQUN2Q3RxQixHQUFHLENBQUN5cEIsZUFBZSxHQUFHdlUsZ0VBQWMsQ0FBQ0MsaUJBQWlCLENBQUNzVCxnRUFBWSxDQUFDbmlCLEdBQUcsQ0FBQ2pMLEtBQUssQ0FBQztNQUM5RTJFLEdBQUcsQ0FBQ3lZLHFCQUFxQixHQUFHelksR0FBRyxDQUFDeXBCLGVBQWUsQ0FBQ2xVLG9CQUFvQjtNQUVwRXZWLEdBQUcsQ0FBQ3lZLHFCQUFxQixDQUFDM0QsU0FBUyxHQUFHOVUsR0FBRyxDQUFDd1YsZUFBZTtNQUV6RCxJQUFNeVUsa0JBQWtCLEdBQUdqcUIsR0FBRyxDQUFDeVUsWUFBWSxDQUFDaEosU0FBUyxDQUFDLFVBQUFpSixXQUFXLEVBQUk7UUFDbkUxVSxHQUFHLENBQUN5WSxxQkFBcUIsQ0FBQy9ELFdBQVcsR0FBR0EsV0FBVztNQUNyRCxDQUFDLENBQUM7TUFDRixJQUFNd1YsbUJBQW1CLEdBQUdscUIsR0FBRyxDQUFDbXFCLFlBQVksQ0FBQzFlLFNBQVMsQ0FBQyxVQUFBcFEsS0FBSyxFQUFJO1FBQzlEMkUsR0FBRyxDQUFDeVkscUJBQXFCLENBQUN2TixHQUFHLEdBQUc3UCxLQUFLO01BQ3ZDLENBQUMsQ0FBQztNQUNGLElBQU1ndkIsY0FBYyxHQUFHcnFCLEdBQUcsQ0FBQzJVLFFBQVEsQ0FBQ2xKLFNBQVMsQ0FBQyxVQUFBbUosT0FBTyxFQUFJO1FBQ3ZENVUsR0FBRyxDQUFDeVkscUJBQXFCLENBQUM3RCxPQUFPLEdBQUdBLE9BQU87TUFDN0MsQ0FBQyxDQUFDO01BQ0YsSUFBTXZaLEtBQUssR0FBRytXLDBFQUE0QixDQUFDaFQsY0FBYyxDQUFDLHNCQUFzQixDQUF1QjtNQUV2RyxJQUFJL0QsS0FBSyxFQUFFO1FBQ1Q2WixnRUFBYyxDQUFDVyxpQkFBaUIsQ0FBQ3hDLDBFQUFjLENBQUNoWSxLQUFLLENBQUMsQ0FBQztNQUN6RDtNQUVBLElBQU1rdkIscUJBQXFCLEdBQUd2cUIsR0FBRyxDQUFDOHBCLGVBQWUsQ0FBQ3JlLFNBQVMsQ0FBQyxVQUFBbUssY0FBYyxFQUFJO1FBQzVFVixnRUFBYyxDQUFDVyxpQkFBaUIsQ0FBQ0QsY0FBYyxDQUFDO01BQ2xELENBQUMsQ0FBQztJQUNKO0VBQUM7SUFBQXphLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQU9tdkIsMERBQTBEQSxDQUFBLEVBQVM7TUFDeEUsSUFBSSxDQUFDeEIsNEJBQTRCLEdBQUc1VywwRUFBNEIsQ0FBQzdTLGVBQWUsQ0FBQyx1Q0FBdUMsQ0FBQztNQUN6SCxJQUFJLENBQUN1RixPQUFPLENBQUNDLElBQUksQ0FBQyxnREFBZ0QsRUFBRSxJQUFJLENBQUNpa0IsNEJBQTRCLENBQUM7TUFFdEc7SUFDRjtFQUFDO0lBQUE3dEIsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBT292QixtRUFBbUVBLENBQUEsRUFBUztNQUNqRixJQUFJLENBQUN4QixxQ0FBcUMsR0FBRzdXLDBFQUE0QixDQUFDN1MsZUFBZSxDQUFDLGdEQUFnRCxDQUFDO01BQzNJLElBQUksQ0FBQ3VGLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLHlEQUF5RCxFQUFFLElBQUksQ0FBQ2trQixxQ0FBcUMsQ0FBQztNQUV4SDtJQUNGO0VBQUM7SUFBQTl0QixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFPcXZCLDhEQUE4REEsQ0FBQSxFQUFTO01BQzVFLElBQUksQ0FBQ3RCLGdDQUFnQyxHQUFHaFgsMEVBQTRCLENBQUM3UyxlQUFlLENBQUMsNENBQTRDLENBQUM7TUFDbEksSUFBSSxDQUFDdUYsT0FBTyxDQUFDQyxJQUFJLENBQUMscURBQXFELEVBQUUsSUFBSSxDQUFDcWtCLGdDQUFnQyxDQUFDO01BRS9HO0lBQ0Y7RUFBQztJQUFBanVCLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQU9zdkIsbUVBQW1FQSxDQUFBLEVBQVM7TUFDakYsSUFBSSxDQUFDdEIscUNBQXFDLEdBQUdqWCwwRUFBNEIsQ0FBQzdTLGVBQWUsQ0FBQyxrREFBa0QsQ0FBQztNQUM3SSxJQUFJLENBQUN1RixPQUFPLENBQUNDLElBQUksQ0FBQyxzRUFBc0UsRUFBRSxJQUFJLENBQUNza0IscUNBQXFDLENBQUM7TUFFckk7SUFDRjtFQUFDO0lBQUFsdUIsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBT3V2QixrREFBa0RBLENBQUEsRUFBUztNQUNoRTVxQixHQUFHLENBQUM2cUIsWUFBWSxDQUFDcGYsU0FBUyxDQUFDLFVBQUFwUSxLQUFLLEVBQUk7UUFDbEMyRSxHQUFHLENBQUNtcUIsWUFBWSxDQUFDOXVCLEtBQUssR0FBRzJFLEdBQUcsQ0FBQ3lWLGVBQWUsQ0FBQ3BhLEtBQUssQ0FBQztRQUNuRDJFLEdBQUcsQ0FBQ3lVLFlBQVksQ0FBQ3BaLEtBQUssR0FBRzRaLHFEQUFXLENBQUNTLHFCQUFxQixDQUFDcmEsS0FBSyxDQUFDO01BQ25FLENBQUMsQ0FBQztNQUVGLElBQU15dkIsWUFBWSxHQUFHMVksMEVBQTRCLENBQUNoVCxjQUFjLENBQUMsc0JBQXNCLENBQUM7TUFFeEYsSUFBSTByQixZQUFZLEVBQUU7UUFDaEIsSUFBTWxsQixTQUFTLEdBQUdULGdFQUFjLENBQUNDLFVBQVUsQ0FBQzBsQixZQUFZLENBQUM7UUFFekQ5cUIsR0FBRyxDQUFDMlUsUUFBUSxDQUFDdFosS0FBSyxHQUFHdUssU0FBUyxDQUFDZ1AsT0FBTztRQUN0QzZULGdFQUFZLENBQUNuaUIsR0FBRyxDQUFDakwsS0FBSyxHQUFHLENBQUN1SyxTQUFTLENBQUNVLEdBQUcsSUFBSXRHLEdBQUcsQ0FBQzZxQixZQUFZLENBQUN4dkIsS0FBSyxFQUFFOFEsUUFBUSxDQUFDLENBQUM7UUFFN0UsSUFBSSxDQUFDckgsT0FBTyxDQUFDQyxJQUFJLENBQUMsd0RBQXdELEVBQUUvRSxHQUFHLENBQUM2cUIsWUFBWSxDQUFDeHZCLEtBQUssQ0FBQztRQUVuRztNQUNGO01BRUEsSUFBTTB2QixRQUFRLEdBQUczWSwwRUFBNEIsQ0FBQ2hULGNBQWMsQ0FBQyxZQUFZLENBQUM7TUFFMUUsSUFBSTJyQixRQUFRLEVBQUU7UUFDWnRDLGdFQUFZLENBQUNuaUIsR0FBRyxDQUFDakwsS0FBSyxHQUFHMHZCLFFBQVE7UUFDakMsSUFBSSxDQUFDam1CLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLHlFQUF5RSxFQUFFL0UsR0FBRyxDQUFDNnFCLFlBQVksQ0FBQ3h2QixLQUFLLENBQUM7UUFFcEg7TUFDRjtNQUVBLElBQU0ydkIsWUFBWSxHQUFHNVksMEVBQTRCLENBQUNoVCxjQUFjLENBQUMsaUJBQWlCLENBQUM7TUFFbkYsSUFBSTRyQixZQUFZLEVBQUU7UUFDaEIsSUFBTXZoQixXQUFXLEdBQUdyUCxpRUFBVyxDQUFDbVIsV0FBVyxDQUFDLENBQUMsQ0FBQ2xRLEtBQUs7UUFDbkQsSUFBTWlMLEdBQUcsR0FBRyxJQUFJbUQsV0FBVyxDQUFDMUksR0FBRyxDQUFDaXFCLFlBQVksQ0FBQztRQUU3QzFrQixHQUFHLENBQUNrTyxRQUFRLEdBQUcsa0JBQWtCO1FBQ2pDaVUsZ0VBQVksQ0FBQ25pQixHQUFHLENBQUNqTCxLQUFLLEdBQUdpTCxHQUFHLENBQUM2RixRQUFRLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUNySCxPQUFPLENBQUNDLElBQUksQ0FBQyw4RUFBOEUsRUFBRS9FLEdBQUcsQ0FBQzZxQixZQUFZLENBQUN4dkIsS0FBSyxDQUFDO1FBRXpIO01BQ0Y7SUFDRjtFQUFDO0lBQUFGLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQU80dkIsTUFBTUEsQ0FBQ3hoQixXQUFnQyxFQUFRO01BQ3BELElBQUksQ0FBQ0EsV0FBVyxFQUFFO1FBQ2hCO01BQ0Y7TUFFQSxJQUFJLElBQUksQ0FBQ3loQixZQUFZLENBQUM3dkIsS0FBSyxFQUFFO1FBQzNCLElBQUksQ0FBQ3lKLE9BQU8sQ0FBQ3VMLElBQUksQ0FBQyw2QkFBNkIsQ0FBQztRQUVoRDtNQUNGO01BRUE1RyxXQUFXLENBQUMwaEIsc0JBQXNCLENBQUMsUUFBUSxFQUFFLFlBQU07UUFDakRuckIsR0FBRyxDQUFDdEUsT0FBTyxDQUFDLENBQUM7TUFDZixDQUFDLENBQUM7TUFFRnNFLEdBQUcsQ0FBQzRxQixrREFBa0QsQ0FBQyxDQUFDO01BQ3hENXFCLEdBQUcsQ0FBQ3NxQix5QkFBeUIsQ0FBQyxDQUFDO01BQy9CdHFCLEdBQUcsQ0FBQytwQiwyQkFBMkIsQ0FBQyxDQUFDO01BRWpDLElBQUksQ0FBQ0wsMkJBQTJCLEdBQUcsSUFBSWh2Qix3RUFBMEIsQ0FBQyxDQUFDO01BRW5FLElBQUksQ0FBQ29LLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLGdEQUFnRCxFQUFFLElBQUksQ0FBQ2lrQiw0QkFBNEIsQ0FBQztNQUN0RyxJQUFJLENBQUNsa0IsT0FBTyxDQUFDQyxJQUFJLENBQUMseURBQXlELEVBQUUsSUFBSSxDQUFDa2tCLHFDQUFxQyxDQUFDO01BQ3hILElBQUksQ0FBQ25rQixPQUFPLENBQUNDLElBQUksQ0FBQyxxREFBcUQsRUFBRSxJQUFJLENBQUNxa0IsZ0NBQWdDLENBQUM7TUFDL0csSUFBSSxDQUFDdGtCLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLHNFQUFzRSxFQUFFLElBQUksQ0FBQ3NrQixxQ0FBcUMsQ0FBQztNQUVySSxJQUFJLENBQUM2QixZQUFZLENBQUM3dkIsS0FBSyxHQUFHLElBQUk7SUFDaEM7RUFBQztJQUFBRixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFPK3ZCLElBQUlBLENBQUN0TyxPQUFzQixFQUFRO01BQ3hDLElBQUksQ0FBQ0EsT0FBTyxFQUFFO1FBQ1o7TUFDRjtNQUVBLElBQU11Tyw4QkFBbUYsR0FBR3ZPLE9BQU87TUFFbkcsSUFBSXVPLDhCQUE4QixDQUFDNWhCLFdBQVcsRUFBRTtRQUM5Q3JQLGlFQUFXLENBQUNpUixXQUFXLENBQUNnZ0IsOEJBQThCLENBQUM1aEIsV0FBVyxDQUFDO01BQ3JFO01BRUEsSUFBSXFULE9BQU8sQ0FBQytOLFlBQVksRUFBRTtRQUN4QnBDLGdFQUFZLENBQUNuaUIsR0FBRyxDQUFDakwsS0FBSyxHQUFHeWhCLE9BQU8sQ0FBQytOLFlBQVk7TUFDL0M7TUFFQSxJQUFJL04sT0FBTyxDQUFDd08scUJBQXFCLEVBQUU7UUFDakNoUSxtRUFBcUIsQ0FBQ2dRLHFCQUFxQixDQUFDandCLEtBQUssR0FBR3loQixPQUFPLENBQUN3TyxxQkFBcUI7TUFDbkY7TUFFQSxJQUFJeE8sT0FBTyxDQUFDbEgsY0FBYyxJQUFJdkMsMEVBQWMsQ0FBQ3lKLE9BQU8sQ0FBQ2xILGNBQWMsQ0FBQyxFQUFFO1FBQ3BFNVYsR0FBRyxDQUFDOHBCLGVBQWUsQ0FBQ3p1QixLQUFLLEdBQUcwRCx3RUFBcUIsQ0FBQzRXLHlDQUF5QyxDQUFDbUgsT0FBTyxDQUFDbEgsY0FBYyxDQUFDO01BQ3JIO01BRUEsSUFBSWtILE9BQU8sQ0FBQzlKLFlBQVksSUFBSXhFLHdEQUFZLENBQUNzTyxPQUFPLENBQUM5SixZQUFZLENBQUMsRUFBRTtRQUM5RCxJQUFJLENBQUNsTyxPQUFPLENBQUM0SixTQUFTLENBQUNvRSxZQUFZLENBQUM3VCxvRUFBbUIsQ0FBQ2tVLHFDQUFxQyxDQUFDMkosT0FBTyxDQUFDOUosWUFBWSxDQUFDLENBQUM7TUFDdEg7TUFFQSxJQUFJOEosT0FBTyxDQUFDeU8sbUJBQW1CLElBQUkvYyx3REFBWSxDQUFDc08sT0FBTyxDQUFDeU8sbUJBQW1CLENBQUMsRUFBRTtRQUM1RSxJQUFNQyxlQUFlLEdBQUcsSUFBSSxDQUFDMW1CLE9BQU8sQ0FBQ3dLLFNBQVMsQ0FBQ2pVLEtBQUssQ0FBQzZvQixJQUFJLENBQUMsVUFBQTlWLFFBQVE7VUFBQSxPQUFJQSxRQUFRLFlBQVlLLGdFQUFlO1FBQUEsRUFBQztRQUUxRyxJQUFJK2MsZUFBZSxFQUFFO1VBQ25CLElBQUksQ0FBQzFtQixPQUFPLENBQUN3SyxTQUFTLENBQUNqQixNQUFNLENBQUNtZCxlQUFlLENBQUM7UUFDaEQ7UUFFQSxJQUFJMU8sT0FBTyxDQUFDeU8sbUJBQW1CLEtBQUssS0FBSyxFQUFFO1VBQ3pDLElBQUksQ0FBQ3ptQixPQUFPLENBQUN3SyxTQUFTLENBQUNuVCxHQUFHLENBQUMsSUFBSXNTLGdFQUFlLENBQUN4UCxvRUFBbUIsQ0FBQ2tVLHFDQUFxQyxDQUFDMkosT0FBTyxDQUFDeU8sbUJBQW1CLENBQUMsQ0FBQyxDQUFDO1FBQ3pJO01BQ0Y7TUFFQSxJQUFJLE9BQU96TyxPQUFPLENBQUMyTyw0QkFBNEIsS0FBSyxTQUFTLEVBQUU7UUFDN0QsSUFBSSxDQUFDdkMsNkJBQTZCLEdBQUdwTSxPQUFPLENBQUMyTyw0QkFBNEI7TUFDM0U7TUFFQSxJQUFJLE9BQU8zTyxPQUFPLENBQUM0TyxtQ0FBbUMsS0FBSyxTQUFTLEVBQUU7UUFDcEUsSUFBSSxDQUFDdkMsb0NBQW9DLEdBQUdyTSxPQUFPLENBQUM0TyxtQ0FBbUM7TUFDekY7TUFFQSxJQUFJNU8sT0FBTyxDQUFDNk8sZUFBZSxFQUFFO1FBQzNCLElBQUksQ0FBQ3JDLGdCQUFnQixHQUFHeE0sT0FBTyxDQUFDNk8sZUFBZTtNQUNqRDtNQUVBLElBQUk3TyxPQUFPLENBQUM4TyxpQkFBaUIsRUFBRTtRQUM3QixJQUFJLENBQUNyQyxrQkFBa0IsR0FBR3pNLE9BQU8sQ0FBQzhPLGlCQUFpQjtNQUNyRDtNQUVBLElBQUk5TyxPQUFPLENBQUMrTyxXQUFXLEVBQUU7UUFDdkIsSUFBSSxDQUFDckMsWUFBWSxHQUFHMU0sT0FBTyxDQUFDK08sV0FBVztNQUN6QztJQUNGO0VBQUM7SUFBQTF3QixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFPSyxPQUFPQSxDQUFBLEVBQVM7TUFBQSxJQUFBb3dCLHFCQUFBO01BQ3JCOXJCLEdBQUcsQ0FBQ2tyQixZQUFZLENBQUM3dkIsS0FBSyxHQUFHLEtBQUs7TUFDOUIsQ0FBQXl3QixxQkFBQSxPQUFJLENBQUNwQywyQkFBMkIsY0FBQW9DLHFCQUFBLHVCQUFoQ0EscUJBQUEsQ0FBa0Nwd0IsT0FBTyxDQUFDLENBQUM7TUFDM0MsSUFBSSxDQUFDZ3VCLDJCQUEyQixHQUFHLElBQUk7SUFDekM7RUFBQztJQUFBdnVCLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQU9vYSxlQUFlQSxDQUFDdkssR0FBVyxFQUFVO01BQzFDLE9BQU84SixzREFBWSxDQUFDUyxlQUFlLENBQUN2SyxHQUFHLENBQUM7SUFDMUM7RUFBQztBQUFBO0FBQUE2Z0IsSUFBQSxHQWpXa0IvckIsR0FBRztBQUFBcEYsaUZBQUEsQ0FBSG9GLEdBQUcsa0NBQ3dCb1MsMEVBQTRCLENBQUM3UyxlQUFlLENBQUMsdUNBQXVDLENBQUM7QUFBQTNFLGlGQUFBLENBRGhIb0YsR0FBRywyQ0FFaUNvUywwRUFBNEIsQ0FBQzdTLGVBQWUsQ0FBQyxnREFBZ0QsQ0FBQztBQUFBM0UsaUZBQUEsQ0FGbElvRixHQUFHLG1DQUd5QixJQUFJO0FBQUFwRixpRkFBQSxDQUhoQ29GLEdBQUcsMENBSWdDLElBQUk7QUFBQXBGLGlGQUFBLENBSnZDb0YsR0FBRyxzQ0FLNEJvUywwRUFBNEIsQ0FBQzdTLGVBQWUsQ0FBQyw0Q0FBNEMsQ0FBQztBQUFBM0UsaUZBQUEsQ0FMekhvRixHQUFHLDJDQU1pQ29TLDBFQUE0QixDQUFDN1MsZUFBZSxDQUFDLGtEQUFrRCxDQUFDO0FBQUEzRSxpRkFBQSxDQU5wSW9GLEdBQUc7QUFBQXBGLGlGQUFBLENBQUhvRixHQUFHO0FBQUFwRixpRkFBQSxDQUFIb0YsR0FBRztBQUFBcEYsaUZBQUEsQ0FBSG9GLEdBQUc7QUFBQXBGLGlGQUFBLENBQUhvRixHQUFHLGtCQVd5QixJQUFJekYsbURBQU8sQ0FBUyxFQUFFLENBQUM7QUFBQUssaUZBQUEsQ0FYbkRvRixHQUFHLG1CQVkwQixJQUFJekYsbURBQU8sQ0FBUywyQ0FBMkMsQ0FBQztBQUFBSyxpRkFBQSxDQVo3Rm9GLEdBQUcscURBYTJDLENBQUM7QUFBQXBGLGlGQUFBLENBYi9Db0YsR0FBRyxxQkFjb0MsSUFBSXpGLG1EQUFPLENBQWlCeUUsa0VBQWdCLENBQUNVLHFCQUFxQixDQUFDO0FBQUE5RSxpRkFBQSxDQWQxR29GLEdBQUc7QUFBQXBGLGlGQUFBLENBQUhvRixHQUFHO0FBQUFwRixpRkFBQSxDQUFIb0YsR0FBRywwQkFpQjJDLElBQUl6RixtREFBTyxDQUFDaU0sbUVBQWEsQ0FBQ1EsbUJBQW1CLENBQUM7QUFBQXBNLGlGQUFBLENBakI1Rm9GLEdBQUcsY0FrQjhCLElBQUl6RixtREFBTyxDQUFTLEVBQUUsQ0FBQztBQUFBSyxpRkFBQSxDQWxCeERvRixHQUFHLHNCQW1CNkJzTixxREFBTyxDQUFDQyxNQUFNLENBQUMsRUFBRSxDQUFDO0FBQUEzUyxpRkFBQSxDQW5CbERvRixHQUFHLHNCQW9CMkIsSUFBSW5GLElBQUksQ0FBQyxDQUFDO0FBQUFELGlGQUFBLENBcEJ4Q29GLEdBQUcsYUFxQnFCeUQsNkRBQWEsQ0FBQ0csU0FBUyxDQUFDLEtBQUssQ0FBQztBQUFBaEosaUZBQUEsQ0FyQnREb0YsR0FBRyxrQkFzQm1DLElBQUl6RixtREFBTyxDQUFVLEtBQUssQ0FBQztBQUFBSyxpRkFBQSxDQXRCakVvRixHQUFHLDBCQXVCbUQsSUFBSXhGLDJEQUFlLENBQVV3RixJQUFHLENBQUNrckIsWUFBWSxDQUFDO0FBQUF0d0IsaUZBQUEsQ0F2QnBHb0YsR0FBRywyQkF3Qm1ELElBQUl4RiwyREFBZSxDQUFTaXVCLGdFQUFZLENBQUNuaUIsR0FBRyxDQUFDO0FBQUExTCxpRkFBQSxDQXhCbkdvRixHQUFHLG9DQXlCNEUsSUFBSXhGLDJEQUFlLENBQXlCOGdCLG1FQUFxQixDQUFDZ1EscUJBQXFCLENBQUM7QUF6QnBLO0FBd1d4Qmx4QixpRUFBVyxDQUFDcVIsU0FBUyxDQUFDekwsR0FBRyxDQUFDaXJCLE1BQU0sQ0FBQ3ZxQixJQUFJLENBQUNWLEdBQUcsQ0FBQyxDQUFDLEM7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzFaM0M7QUFDQTtBQUNBOztBQUVxRDtBQUFBLElBRWhDZ1YsWUFBWTtFQUFBLFNBQUFBLGFBQUE7SUFBQXJhLGlGQUFBLE9BQUFxYSxZQUFBO0VBQUE7RUFBQSxPQUFBOVosOEVBQUEsQ0FBQThaLFlBQUE7SUFBQTdaLEdBQUE7SUFBQUUsS0FBQSxFQUMvQixTQUFPb2EsZUFBZUEsQ0FBQ3ZLLEdBQVcsRUFBVTtNQUMxQyxJQUFJO1FBQ0YsSUFBTXFkLE9BQU8sR0FBRyxJQUFJbnVCLGdFQUFXLENBQUNpQixLQUFLLENBQUMwRixHQUFHLENBQUNtSyxHQUFHLENBQUM7UUFDOUMsSUFBTThnQixRQUFRLEdBQUd6RCxPQUFPLENBQUMxZCxRQUFRLENBQUMvTSxLQUFLLENBQUMsR0FBRyxDQUFDO1FBRTVDLFFBQVF5cUIsT0FBTyxDQUFDMEQsUUFBUTtVQUN0QixLQUFLLEtBQUs7WUFDUjFELE9BQU8sQ0FBQzBELFFBQVEsR0FBRyxPQUFPO1lBRTFCO1VBQ0YsS0FBSyxNQUFNO1lBQ1QxRCxPQUFPLENBQUMwRCxRQUFRLEdBQUcsUUFBUTtZQUUzQjtVQUVGO1lBQ0U7UUFDSjtRQUVBLElBQUlELFFBQVEsQ0FBQ3JtQixNQUFNLEtBQUssQ0FBQyxJQUNwQnFtQixRQUFRLENBQUNybUIsTUFBTSxLQUFLLENBQUMsSUFBSXFtQixRQUFRLENBQUNBLFFBQVEsQ0FBQ3JtQixNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUNBLE1BQU0sSUFBSSxDQUFDLElBQUlxbUIsUUFBUSxDQUFDQSxRQUFRLENBQUNybUIsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDQSxNQUFNLElBQUksQ0FBRSxFQUNuSDtVQUNBcW1CLFFBQVEsQ0FBQ0UsT0FBTyxDQUFDLFdBQVcsQ0FBQztRQUMvQixDQUFDLE1BQU0sSUFBSUYsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDaG1CLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSWdtQixRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUNHLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSUgsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDbHRCLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSWt0QixRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxFQUFFO1VBQ25JQSxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsZUFBZTtRQUMvQixDQUFDLE1BQU0sSUFBSUEsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDaG1CLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSWdtQixRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUNHLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRTtVQUM1RTtRQUFBLENBQ0QsTUFBTTtVQUNMSCxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsV0FBVztRQUMzQjtRQUVBekQsT0FBTyxDQUFDMWQsUUFBUSxHQUFHbWhCLFFBQVEsQ0FBQ0ksSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUVyQyxVQUFBL3RCLE1BQUEsQ0FBVWtxQixPQUFPLENBQUNDLE1BQU07TUFDMUIsQ0FBQyxDQUFDLE9BQU96aUIsQ0FBQyxFQUFFO1FBQ1YsT0FBT21GLEdBQUc7TUFDWjtJQUNGO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7O0FDNUNIO0FBQ0E7QUFDQTs7QUFLTyxJQUFLbWhCLFlBQVksMEJBQVpBLFlBQVk7RUFBWkEsWUFBWSxDQUFaQSxZQUFZO0VBQVpBLFlBQVksQ0FBWkEsWUFBWTtFQUFBLE9BQVpBLFlBQVk7QUFBQTtBQUtqQixJQUFLQyxXQUFXLDBCQUFYQSxXQUFXO0VBQVhBLFdBQVcsQ0FBWEEsV0FBVztFQUFYQSxXQUFXLENBQVhBLFdBQVc7RUFBWEEsV0FBVyxDQUFYQSxXQUFXO0VBQUEsT0FBWEEsV0FBVztBQUFBLE07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCQ1h2Qix1S0FBQXZtQixDQUFBLEVBQUFnUSxDQUFBLEVBQUFDLENBQUEsd0JBQUFDLE1BQUEsR0FBQUEsTUFBQSxPQUFBQyxDQUFBLEdBQUFGLENBQUEsQ0FBQUcsUUFBQSxrQkFBQUMsQ0FBQSxHQUFBSixDQUFBLENBQUFLLFdBQUEsOEJBQUFDLEVBQUFOLENBQUEsRUFBQUUsQ0FBQSxFQUFBRSxDQUFBLEVBQUFFLENBQUEsUUFBQUMsQ0FBQSxHQUFBTCxDQUFBLElBQUFBLENBQUEsQ0FBQS9OLFNBQUEsWUFBQXFPLFNBQUEsR0FBQU4sQ0FBQSxHQUFBTSxTQUFBLEVBQUFDLENBQUEsR0FBQTNFLE1BQUEsQ0FBQTRFLE1BQUEsQ0FBQUgsQ0FBQSxDQUFBcE8sU0FBQSxVQUFBd08sbUJBQUEsQ0FBQUYsQ0FBQSx1QkFBQVQsQ0FBQSxFQUFBRSxDQUFBLEVBQUFFLENBQUEsUUFBQUUsQ0FBQSxFQUFBQyxDQUFBLEVBQUFFLENBQUEsRUFBQUcsQ0FBQSxNQUFBQyxDQUFBLEdBQUFULENBQUEsUUFBQVUsQ0FBQSxPQUFBQyxDQUFBLEtBQUFGLENBQUEsS0FBQVgsQ0FBQSxLQUFBYyxDQUFBLEVBQUFqUixDQUFBLEVBQUFrUixDQUFBLEVBQUFDLENBQUEsRUFBQU4sQ0FBQSxFQUFBTSxDQUFBLENBQUF4VyxJQUFBLENBQUFxRixDQUFBLE1BQUFtUixDQUFBLFdBQUFBLEVBQUFuQixDQUFBLEVBQUFDLENBQUEsV0FBQU0sQ0FBQSxHQUFBUCxDQUFBLEVBQUFRLENBQUEsTUFBQUUsQ0FBQSxHQUFBMVEsQ0FBQSxFQUFBZ1IsQ0FBQSxDQUFBYixDQUFBLEdBQUFGLENBQUEsRUFBQWlCLENBQUEsZ0JBQUFDLEVBQUFsQixDQUFBLEVBQUFFLENBQUEsU0FBQUssQ0FBQSxHQUFBUCxDQUFBLEVBQUFTLENBQUEsR0FBQVAsQ0FBQSxFQUFBSCxDQUFBLE9BQUFlLENBQUEsSUFBQUYsQ0FBQSxLQUFBUixDQUFBLElBQUFMLENBQUEsR0FBQWMsQ0FBQSxDQUFBbFIsTUFBQSxFQUFBb1EsQ0FBQSxVQUFBSyxDQUFBLEVBQUFFLENBQUEsR0FBQU8sQ0FBQSxDQUFBZCxDQUFBLEdBQUFtQixDQUFBLEdBQUFILENBQUEsQ0FBQUYsQ0FBQSxFQUFBTSxDQUFBLEdBQUFiLENBQUEsS0FBQU4sQ0FBQSxRQUFBSSxDQUFBLEdBQUFlLENBQUEsS0FBQWpCLENBQUEsTUFBQU8sQ0FBQSxHQUFBSCxDQUFBLEVBQUFDLENBQUEsR0FBQUQsQ0FBQSxZQUFBQyxDQUFBLFdBQUFELENBQUEsTUFBQUEsQ0FBQSxNQUFBdlEsQ0FBQSxJQUFBdVEsQ0FBQSxPQUFBWSxDQUFBLE1BQUFkLENBQUEsR0FBQUosQ0FBQSxRQUFBa0IsQ0FBQSxHQUFBWixDQUFBLFFBQUFDLENBQUEsTUFBQVEsQ0FBQSxDQUFBQyxDQUFBLEdBQUFkLENBQUEsRUFBQWEsQ0FBQSxDQUFBYixDQUFBLEdBQUFJLENBQUEsT0FBQVksQ0FBQSxHQUFBQyxDQUFBLEtBQUFmLENBQUEsR0FBQUosQ0FBQSxRQUFBTSxDQUFBLE1BQUFKLENBQUEsSUFBQUEsQ0FBQSxHQUFBaUIsQ0FBQSxNQUFBYixDQUFBLE1BQUFOLENBQUEsRUFBQU0sQ0FBQSxNQUFBSixDQUFBLEVBQUFhLENBQUEsQ0FBQWIsQ0FBQSxHQUFBaUIsQ0FBQSxFQUFBWixDQUFBLGNBQUFILENBQUEsSUFBQUosQ0FBQSxhQUFBaUIsQ0FBQSxRQUFBSCxDQUFBLE9BQUFaLENBQUEscUJBQUFFLENBQUEsRUFBQVMsQ0FBQSxFQUFBTSxDQUFBLFFBQUFQLENBQUEsWUFBQVEsU0FBQSx1Q0FBQU4sQ0FBQSxVQUFBRCxDQUFBLElBQUFLLENBQUEsQ0FBQUwsQ0FBQSxFQUFBTSxDQUFBLEdBQUFaLENBQUEsR0FBQU0sQ0FBQSxFQUFBSixDQUFBLEdBQUFVLENBQUEsR0FBQXBCLENBQUEsR0FBQVEsQ0FBQSxPQUFBeFEsQ0FBQSxHQUFBMFEsQ0FBQSxNQUFBSyxDQUFBLEtBQUFSLENBQUEsS0FBQUMsQ0FBQSxHQUFBQSxDQUFBLFFBQUFBLENBQUEsU0FBQVEsQ0FBQSxDQUFBYixDQUFBLFFBQUFnQixDQUFBLENBQUFYLENBQUEsRUFBQUUsQ0FBQSxLQUFBTSxDQUFBLENBQUFiLENBQUEsR0FBQU8sQ0FBQSxHQUFBTSxDQUFBLENBQUFDLENBQUEsR0FBQVAsQ0FBQSxhQUFBRyxDQUFBLE1BQUFOLENBQUEsUUFBQUMsQ0FBQSxLQUFBSCxDQUFBLFlBQUFMLENBQUEsR0FBQU8sQ0FBQSxDQUFBRixDQUFBLFdBQUFMLENBQUEsR0FBQUEsQ0FBQSxDQUFBL0osSUFBQSxDQUFBc0ssQ0FBQSxFQUFBRyxDQUFBLFVBQUFXLFNBQUEsMkNBQUFyQixDQUFBLENBQUFzQixJQUFBLFNBQUF0QixDQUFBLEVBQUFVLENBQUEsR0FBQVYsQ0FBQSxDQUFBMWEsS0FBQSxFQUFBa2IsQ0FBQSxTQUFBQSxDQUFBLG9CQUFBQSxDQUFBLEtBQUFSLENBQUEsR0FBQU8sQ0FBQSxlQUFBUCxDQUFBLENBQUEvSixJQUFBLENBQUFzSyxDQUFBLEdBQUFDLENBQUEsU0FBQUUsQ0FBQSxHQUFBVyxTQUFBLHVDQUFBaEIsQ0FBQSxnQkFBQUcsQ0FBQSxPQUFBRCxDQUFBLEdBQUF2USxDQUFBLGNBQUFnUSxDQUFBLElBQUFlLENBQUEsR0FBQUMsQ0FBQSxDQUFBYixDQUFBLFFBQUFPLENBQUEsR0FBQVQsQ0FBQSxDQUFBaEssSUFBQSxDQUFBa0ssQ0FBQSxFQUFBYSxDQUFBLE9BQUFFLENBQUEsa0JBQUFsQixDQUFBLElBQUFPLENBQUEsR0FBQXZRLENBQUEsRUFBQXdRLENBQUEsTUFBQUUsQ0FBQSxHQUFBVixDQUFBLGNBQUFhLENBQUEsbUJBQUF2YixLQUFBLEVBQUEwYSxDQUFBLEVBQUFzQixJQUFBLEVBQUFQLENBQUEsU0FBQWQsQ0FBQSxFQUFBSSxDQUFBLEVBQUFFLENBQUEsUUFBQUcsQ0FBQSxRQUFBUSxDQUFBLGdCQUFBVCxVQUFBLGNBQUFjLGtCQUFBLGNBQUFDLDJCQUFBLEtBQUF4QixDQUFBLEdBQUFqRSxNQUFBLENBQUEwRixjQUFBLE1BQUFqQixDQUFBLE1BQUFMLENBQUEsSUFBQUgsQ0FBQSxDQUFBQSxDQUFBLElBQUFHLENBQUEsU0FBQVMsbUJBQUEsQ0FBQVosQ0FBQSxPQUFBRyxDQUFBLGlDQUFBSCxDQUFBLEdBQUFVLENBQUEsR0FBQWMsMEJBQUEsQ0FBQXBQLFNBQUEsR0FBQXFPLFNBQUEsQ0FBQXJPLFNBQUEsR0FBQTJKLE1BQUEsQ0FBQTRFLE1BQUEsQ0FBQUgsQ0FBQSxZQUFBSyxFQUFBN1EsQ0FBQSxXQUFBK0wsTUFBQSxDQUFBMkYsY0FBQSxHQUFBM0YsTUFBQSxDQUFBMkYsY0FBQSxDQUFBMVIsQ0FBQSxFQUFBd1IsMEJBQUEsS0FBQXhSLENBQUEsQ0FBQTJSLFNBQUEsR0FBQUgsMEJBQUEsRUFBQVosbUJBQUEsQ0FBQTVRLENBQUEsRUFBQXFRLENBQUEseUJBQUFyUSxDQUFBLENBQUFvQyxTQUFBLEdBQUEySixNQUFBLENBQUE0RSxNQUFBLENBQUFELENBQUEsR0FBQTFRLENBQUEsV0FBQXVSLGlCQUFBLENBQUFuUCxTQUFBLEdBQUFvUCwwQkFBQSxFQUFBWixtQkFBQSxDQUFBRixDQUFBLGlCQUFBYywwQkFBQSxHQUFBWixtQkFBQSxDQUFBWSwwQkFBQSxpQkFBQUQsaUJBQUEsR0FBQUEsaUJBQUEsQ0FBQUssV0FBQSx3QkFBQWhCLG1CQUFBLENBQUFZLDBCQUFBLEVBQUFuQixDQUFBLHdCQUFBTyxtQkFBQSxDQUFBRixDQUFBLEdBQUFFLG1CQUFBLENBQUFGLENBQUEsRUFBQUwsQ0FBQSxnQkFBQU8sbUJBQUEsQ0FBQUYsQ0FBQSxFQUFBUCxDQUFBLGlDQUFBUyxtQkFBQSxDQUFBRixDQUFBLDhEQUFBbUIsWUFBQSxZQUFBQSxhQUFBLGFBQUFDLENBQUEsRUFBQXZCLENBQUEsRUFBQXdCLENBQUEsRUFBQWxCLENBQUE7QUFBQSxTQUFBRCxvQkFBQTVRLENBQUEsRUFBQWlRLENBQUEsRUFBQUUsQ0FBQSxFQUFBSCxDQUFBLFFBQUFPLENBQUEsR0FBQXhFLE1BQUEsQ0FBQWlHLGNBQUEsUUFBQXpCLENBQUEsdUJBQUF2USxDQUFBLElBQUF1USxDQUFBLFFBQUFLLG1CQUFBLFlBQUFxQixtQkFBQWpTLENBQUEsRUFBQWlRLENBQUEsRUFBQUUsQ0FBQSxFQUFBSCxDQUFBLGFBQUFLLEVBQUFKLENBQUEsRUFBQUUsQ0FBQSxJQUFBUyxtQkFBQSxDQUFBNVEsQ0FBQSxFQUFBaVEsQ0FBQSxZQUFBalEsQ0FBQSxnQkFBQWtTLE9BQUEsQ0FBQWpDLENBQUEsRUFBQUUsQ0FBQSxFQUFBblEsQ0FBQSxTQUFBaVEsQ0FBQSxHQUFBTSxDQUFBLEdBQUFBLENBQUEsQ0FBQXZRLENBQUEsRUFBQWlRLENBQUEsSUFBQTNhLEtBQUEsRUFBQTZhLENBQUEsRUFBQWdDLFVBQUEsR0FBQW5DLENBQUEsRUFBQW9DLFlBQUEsR0FBQXBDLENBQUEsRUFBQXFDLFFBQUEsR0FBQXJDLENBQUEsTUFBQWhRLENBQUEsQ0FBQWlRLENBQUEsSUFBQUUsQ0FBQSxJQUFBRSxDQUFBLGFBQUFBLENBQUEsY0FBQUEsQ0FBQSxtQkFBQU8sbUJBQUEsQ0FBQTVRLENBQUEsRUFBQWlRLENBQUEsRUFBQUUsQ0FBQSxFQUFBSCxDQUFBO0FBREE7QUFDQTtBQUNBOztBQUV3RDtBQUNEO0FBQ0E7QUFDVDtBQUNpQjtBQUl0QztBQUdpQjtBQUNtQjtBQUNkO0FBRVM7QUFDSTtBQUVnQjtBQUNqQjtBQUdSO0FBQzZCO0FBQ1U7QUFDUztBQUNLO0FBQ0g7QUFDbEQ7QUFDa0M7QUFHVjtBQUM1QjtBQUNNO0FBQ0s7QUFFVTtBQUVwRSxJQUFNc1gsOEJBQThCLEdBQUcsb0JBQW9CO0FBQzNELElBQU1DLHdDQUF3QyxHQUFHLHdDQUF3QztBQUN6RixJQUFNQyxnQ0FBZ0MsR0FBRywrQkFBK0I7QUFDeEUsSUFBTUMsMkNBQTJDLEdBQUcsNENBQTRDO0FBQ2hHLElBQU1DLHlDQUF5QyxHQUFHLElBQUk7QUFDdEQsSUFBTUMsb0NBQW9DLEdBQUcsS0FBSztBQUNsRCxJQUFNQyxnREFBZ0QsR0FBRyxJQUFJO0FBQzdELElBQU1DLHFDQUFxQyxHQUFHLEtBQUs7QUFBQyxJQVkvQkMsT0FBTztFQXdDMUIsU0FBQUEsUUFBWUMsWUFBOEIsRUFBRXpvQixLQUF1QixFQUFFeVgsT0FBd0IsRUFBRTtJQUFBLElBQUFsaEIsS0FBQTtJQUFBakIsaUZBQUEsT0FBQWt6QixPQUFBO0lBQUFqekIsaUZBQUEsa0JBdkMzRDZJLDZEQUFhLENBQUNHLFNBQVMsQ0FBQyxTQUFTLENBQUM7SUFBQWhKLGlGQUFBO0lBQUFBLGlGQUFBO0lBQUFBLGlGQUFBO0lBQUFBLGlGQUFBO0lBQUFBLGlGQUFBO0lBQUFBLGlGQUFBO0lBQUFBLGlGQUFBO0lBQUFBLGlGQUFBO0lBQUFBLGlGQUFBO0lBQUFBLGlGQUFBO0lBQUFBLGlGQUFBO0lBQUFBLGlGQUFBO0lBQUFBLGlGQUFBO0lBQUFBLGlGQUFBO0lBQUFBLGlGQUFBO0lBQUFBLGlGQUFBO0lBQUFBLGlGQUFBO0lBQUFBLGlGQUFBO0lBQUFBLGlGQUFBO0lBQUFBLGlGQUFBO0lBQUFBLGlGQUFBO0lBQUFBLGlGQUFBO0lBQUFBLGlGQUFBO0lBQUFBLGlGQUFBO0lBQUFBLGlGQUFBO0lBQUFBLGlGQUFBO0lBQUFBLGlGQUFBO0lBQUFBLGlGQUFBO0lBQUFBLGlGQUFBO0lBQUFBLGlGQUFBO0lBQUFBLGlGQUFBO0lBQUFBLGlGQUFBO0lBQUFBLGlGQUFBO0lBQUFBLGlGQUFBLDRCQW1DaEIsSUFBSTtJQUFBQSxpRkFBQTtJQUFBQSxpRkFBQTtJQUt4RCxJQUFNZ0wsU0FBUyxHQUFHVCxpRUFBYyxDQUFDQyxVQUFVLENBQUNDLEtBQUssQ0FBQztJQUNsRCxJQUFNMG9CLHFCQUE0QyxHQUFHO01BQ25EQyxTQUFTLEVBQUVsUixPQUFPLGFBQVBBLE9BQU8sdUJBQVBBLE9BQU8sQ0FBRWtSLFNBQVM7TUFDN0JDLGtDQUFrQyxFQUFFblIsT0FBTyxhQUFQQSxPQUFPLHVCQUFQQSxPQUFPLENBQUVtUixrQ0FBa0M7TUFDL0VDLG1DQUFtQyxFQUFFcFIsT0FBTyxhQUFQQSxPQUFPLHVCQUFQQSxPQUFPLENBQUVvUjtJQUNoRCxDQUFDO0lBQ0QsSUFBTUMsNEJBQTBELEdBQUc7TUFBQ0MsK0JBQStCLEVBQUVwdUIsNENBQUcsQ0FBQ291QjtJQUErQixDQUFDO0lBQ3pJLElBQU1DLDZCQUE0RCxHQUFHO01BQ25FQyxvQkFBb0IsRUFBRTFvQixTQUFTLENBQUNXLFlBQVksQ0FBQ3pILFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQztNQUMzRXl2QiwyQkFBMkIsRUFBRTNvQixTQUFTLENBQUNXLFlBQVksQ0FBQ3pILFFBQVEsQ0FBQyw0QkFBNEIsQ0FBQztNQUMxRjB2Qiw0QkFBNEIsRUFBRTFSLE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFMFIsNEJBQTRCO01BQ25FQyw0QkFBNEIsRUFBRTNSLE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFMlIsNEJBQTRCO01BQ25FQyxzQkFBc0IsRUFBRTVSLE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFNFIsc0JBQXNCO01BQ3ZEQyxzQkFBc0IsRUFBRTdSLE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFNlI7SUFDbkMsQ0FBQztJQUVELElBQUksQ0FBQ0MsYUFBYSxHQUFHLElBQUlqQyw4REFBWSxDQUFDdG5CLEtBQUssQ0FBQztJQUM1QyxJQUFJLENBQUN3cEIsZUFBZSxHQUFHLElBQUlqQyxnRUFBYyxDQUFDbUIscUJBQXFCLENBQUM7SUFDaEUsSUFBSSxDQUFDZSxzQkFBc0IsR0FBRyxJQUFJOUIsdUVBQXFCLENBQUNtQiw0QkFBNEIsQ0FBQztJQUNyRixJQUFJLENBQUNZLHVCQUF1QixHQUFHLElBQUloQyx3RUFBc0IsQ0FBQ3NCLDZCQUE2QixDQUFDO0lBQ3hGLElBQUksQ0FBQ1csYUFBYSxHQUFHLElBQUkvQiw4REFBWSxDQUFDLENBQUM7SUFDdkMsSUFBSSxDQUFDdlUsbUJBQW1CLEdBQUcsSUFBSUwsZ0VBQWtCLENBQUMsQ0FBQztJQUNuRCxJQUFJLENBQUM0VyxpQkFBaUIsR0FBR3AwQixJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLElBQUksQ0FBQ28wQix1QkFBdUIsR0FBRyxJQUFJMTBCLDJEQUFlLENBQXlCLElBQUksQ0FBQ3MwQixzQkFBc0IsQ0FBQ2hULGNBQWMsQ0FBQztJQUN0SCxJQUFJLENBQUNxVCxjQUFjLEdBQUcsSUFBSTMwQiwyREFBZSxDQUFlLElBQUksQ0FBQ3EwQixlQUFlLENBQUNPLEtBQUssQ0FBQztJQUNuRixJQUFJLENBQUNDLGVBQWUsR0FBRyxJQUFJNzBCLDJEQUFlLENBQWlCLElBQUksQ0FBQ3EwQixlQUFlLENBQUNTLE1BQU0sQ0FBQztJQUN2RixJQUFJLENBQUNDLGtCQUFrQixHQUFHLElBQUkvMEIsMkRBQWUsQ0FBVSxJQUFJLENBQUNxMEIsZUFBZSxDQUFDVyxTQUFTLENBQUM7SUFDdEYsSUFBSSxDQUFDQyxtQkFBbUIsR0FBRyxJQUFJajFCLDJEQUFlLENBQVUsSUFBSSxDQUFDcTBCLGVBQWUsQ0FBQ2EsVUFBVSxDQUFDO0lBQ3hGLElBQUksQ0FBQ0Msc0JBQXNCLEdBQUcsSUFBSW4xQiwyREFBZSxDQUFVLElBQUksQ0FBQ28wQixhQUFhLENBQUNnQixhQUFhLENBQUM7SUFDNUYsSUFBSSxDQUFDQyxtQkFBbUIsR0FBRyxJQUFJcjFCLDJEQUFlLENBQVUsSUFBSSxDQUFDcTBCLGVBQWUsQ0FBQ2lCLFVBQVUsQ0FBQztJQUN4RixJQUFJLENBQUNDLGVBQWUsR0FBRyxJQUFJdjFCLDJEQUFlLENBQVUsSUFBSSxDQUFDcTBCLGVBQWUsQ0FBQ21CLE1BQU0sQ0FBQztJQUNoRixJQUFJLENBQUNDLGdCQUFnQixHQUFHLElBQUl6MUIsMkRBQWUsQ0FBVSxJQUFJLENBQUNxMEIsZUFBZSxDQUFDcUIsT0FBTyxDQUFDO0lBQ2xGLElBQUksQ0FBQ0MsZ0JBQWdCLEdBQUcsSUFBSTMxQiwyREFBZSxDQUFVLElBQUksQ0FBQ3EwQixlQUFlLENBQUN1QixPQUFPLENBQUM7SUFDbEYsSUFBSSxDQUFDQyxnQkFBZ0IsR0FBRyxJQUFJNzFCLDJEQUFlLENBQVUsSUFBSSxDQUFDcTBCLGVBQWUsQ0FBQ3lCLE9BQU8sQ0FBQztJQUNsRixJQUFJLENBQUNDLGdCQUFnQixHQUFHLElBQUkvMUIsMkRBQWUsQ0FBVSxJQUFJLENBQUNxMEIsZUFBZSxDQUFDMkIsT0FBTyxDQUFDO0lBQ2xGLElBQUksQ0FBQ0Msa0JBQWtCLEdBQUcsSUFBSWoyQiwyREFBZSxDQUFTLElBQUksQ0FBQ3EwQixlQUFlLENBQUNiLFNBQVMsQ0FBQztJQUNyRixJQUFJLENBQUMwQyxZQUFZLEdBQUcsSUFBSWwyQiwyREFBZSxDQUFxQixJQUFJLENBQUNxMEIsZUFBZSxDQUFDOEIsR0FBRyxDQUFDO0lBQ3JGLElBQUksQ0FBQ0MscUJBQXFCLEdBQUcsSUFBSXAyQiwyREFBZSxDQUFnQixJQUFJLENBQUNxMEIsZUFBZSxDQUFDZ0MsWUFBWSxDQUFDO0lBQ2xHLElBQUksQ0FBQ0MsbUJBQW1CLEdBQUcsSUFBSXQyQiwyREFBZSxDQUFZLElBQUksQ0FBQ3EwQixlQUFlLENBQUNrQyxVQUFVLENBQUM7SUFDMUYsSUFBSSxDQUFDQyxxQkFBcUIsR0FBRyxJQUFJeDJCLDJEQUFlLENBQVMsSUFBSSxDQUFDcTBCLGVBQWUsQ0FBQ29DLFlBQVksQ0FBQztJQUMzRixJQUFJLENBQUNDLGlCQUFpQixHQUFHLElBQUkxMkIsMkRBQWUsQ0FBa0IsSUFBSSxDQUFDcTBCLGVBQWUsQ0FBQ3NDLFFBQVEsQ0FBQztJQUM1RixJQUFJLENBQUNDLGVBQWUsR0FBRyxJQUFJNTJCLDJEQUFlLENBQWlCLElBQUksQ0FBQ3EwQixlQUFlLENBQUN3QyxNQUFNLENBQUM7SUFDdkYsSUFBSSxDQUFDQyxzQkFBc0IsR0FBRyxJQUFJOTJCLDJEQUFlLENBQThCLElBQUksQ0FBQ3EwQixlQUFlLENBQUNoTyxhQUFhLENBQUM7SUFDbEgsSUFBSSxDQUFDMFEsb0JBQW9CLEdBQUcsSUFBSS8yQiwyREFBZSxDQUFxQixJQUFJLENBQUNzMEIsc0JBQXNCLENBQUNuUSxXQUFXLENBQUM7SUFFNUcsSUFBTWtNLFlBQVksR0FBRyxDQUFDamxCLFNBQVMsQ0FBQ1UsR0FBRyxJQUFJdEcsNENBQUcsQ0FBQzZxQixZQUFZLENBQUN4dkIsS0FBSyxFQUFFOFEsUUFBUSxDQUFDLENBQUM7SUFFekVuTSw0Q0FBRyxDQUFDNFUsT0FBTyxDQUFDdlosS0FBSyxHQUFHdUssU0FBUyxDQUFDZ1AsT0FBTyxJQUFJNVUsNENBQUcsQ0FBQzRVLE9BQU8sQ0FBQ3ZaLEtBQUs7SUFDMURvdEIsZ0VBQVksQ0FBQ25pQixHQUFHLENBQUNqTCxLQUFLLEdBQUd3dkIsWUFBWTtJQUNyQyxJQUFJLENBQUNwQixlQUFlLEdBQUd2VSxnRUFBYyxDQUFDQyxpQkFBaUIsQ0FBQzBWLFlBQVksQ0FBQztJQUNyRSxJQUFJLENBQUMyRyxpQkFBaUIsR0FBRyxJQUFJOUUsZ0VBQWdCLENBQUMxc0IsNENBQUcsQ0FBQzJELFlBQVksRUFBRSxJQUFJLENBQUM4bEIsZUFBZSxDQUFDO0lBQ3JGLElBQUksQ0FBQ29GLGVBQWUsQ0FBQzRDLGtCQUFrQixDQUFDdDFCLEdBQUcsQ0FBQyxJQUFJLENBQUNxMUIsaUJBQWlCLENBQUM7SUFDbkUsSUFBSSxDQUFDRSw0QkFBNEIsR0FBRyxJQUFJLENBQUNDLDBCQUEwQixDQUFDanhCLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDOUUsSUFBSSxDQUFDb3RCLFlBQVksR0FBR0EsWUFBWTtJQUVoQyxJQUFJLENBQUM4RCw4QkFBOEIsR0FBRyxJQUFJMUUsK0VBQTZCLENBQUMsQ0FBQztJQUN6RSxJQUFJLENBQUMyRSwrQkFBK0IsQ0FBQ2pzQixTQUFTLENBQUNXLFlBQVksQ0FBQztJQUM1RCxJQUFJLENBQUN1ckIsd0NBQXdDLEdBQUcsSUFBSXQzQiwyREFBZSxDQUFVLElBQUksQ0FBQ28zQiw4QkFBOEIsQ0FBQ0csU0FBUyxDQUFDO0lBQzNILElBQUksQ0FBQ0Msc0NBQXNDLEdBQUcsSUFBSXgzQiwyREFBZSxDQUF1QyxJQUFJLENBQUNvM0IsOEJBQThCLENBQUNLLDZCQUE2QixDQUFDO0lBQzFLLElBQUksQ0FBQ0MsdUNBQXVDLEdBQUcsSUFBSTEzQiwyREFBZSxDQUF3QyxJQUFJLENBQUNvM0IsOEJBQThCLENBQUNPLDhCQUE4QixDQUFDO0lBRTdLLElBQUksQ0FBQ3RELGVBQWUsQ0FBQzRDLGtCQUFrQixDQUFDdDFCLEdBQUcsQ0FDekMsSUFBSSxDQUFDMHlCLGVBQWUsQ0FBQ2YsWUFBWSxDQUFDcmlCLFNBQVMsQ0FBQyxVQUFBcWlCLFlBQVksRUFBSTtNQUMxRGx5QixLQUFJLENBQUNpekIsZUFBZSxDQUFDdUQsbUJBQW1CLENBQUMxMkIsT0FBTyxDQUFDLENBQUM7TUFFbEQsSUFBSSxDQUFDb3lCLFlBQVksRUFBRTtRQUNqQjtNQUNGO01BRUFseUIsS0FBSSxDQUFDaXpCLGVBQWUsQ0FBQ3VELG1CQUFtQixDQUFDajJCLEdBQUcsQ0FBQ1AsS0FBSSxDQUFDaXpCLGVBQWUsQ0FBQ3dDLE1BQU0sQ0FBQzVsQixTQUFTLENBQUMsVUFBQTRsQixNQUFNLEVBQUk7UUFDM0YsSUFBSXoxQixLQUFJLENBQUNpekIsZUFBZSxDQUFDd0QsY0FBYyxFQUFFO1VBQ3ZDejJCLEtBQUksQ0FBQ2l6QixlQUFlLENBQUN3RCxjQUFjLENBQUMzMkIsT0FBTyxDQUFDLENBQUM7UUFDL0M7UUFFQSxJQUFJLENBQUMyMUIsTUFBTSxFQUFFO1VBQ1g7UUFDRjtRQUVBLElBQUksQ0FBQ3oxQixLQUFJLENBQUNreUIsWUFBWSxFQUFFO1VBQ3RCO1FBQ0Y7UUFFQSxJQUFJbHlCLEtBQUksQ0FBQ2t5QixZQUFZLENBQUN3RSxPQUFPLEVBQUU7VUFDN0IxMkIsS0FBSSxDQUFDa3lCLFlBQVksQ0FBQ3dFLE9BQU8sQ0FBQ3hkLFNBQVMsR0FBRzlVLDRDQUFHLENBQUN3VixlQUFlO1VBQ3pENVosS0FBSSxDQUFDa3lCLFlBQVksQ0FBQ3dFLE9BQU8sQ0FBQ3J1QixRQUFRLEdBQUdySSxLQUFJLENBQUNxSSxRQUFRO1FBQ3BEO1FBRUFySSxLQUFJLENBQUNpekIsZUFBZSxDQUFDd0QsY0FBYyxHQUFHLElBQUk1Riw4REFBYyxDQUFDN3dCLEtBQUksQ0FBQ3FJLFFBQVEsRUFBRWpFLDRDQUFHLENBQUMyRCxZQUFZLEVBQUUvSCxLQUFJLENBQUNxekIsaUJBQWlCLEVBQUVyekIsS0FBSSxDQUFDNnRCLGVBQWUsQ0FBQztRQUN2STd0QixLQUFJLENBQUNpekIsZUFBZSxDQUFDd0QsY0FBYyxDQUFDRSwrQkFBK0IsQ0FBQzMyQixLQUFJLENBQUNreUIsWUFBWSxDQUFDO1FBQ3RGbHlCLEtBQUksQ0FBQ2l6QixlQUFlLENBQUN3RCxjQUFjLENBQUNHLDJCQUEyQixDQUFDNTJCLEtBQUksQ0FBQ2t5QixZQUFZLENBQUM7UUFFbEYsSUFBSWx5QixLQUFJLENBQUNpekIsZUFBZSxDQUFDTyxLQUFLLENBQUMvekIsS0FBSyxLQUFLbXhCLHNEQUFZLENBQUNpRyxPQUFPLEVBQUU7VUFDN0QsSUFBTWxaLE9BQU8sR0FBRzNkLEtBQUksQ0FBQzgyQixnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3pDO01BQ0YsQ0FBQyxDQUFDLENBQUM7TUFFSDkyQixLQUFJLENBQUNpekIsZUFBZSxDQUFDNEMsa0JBQWtCLENBQUN0MUIsR0FBRyxDQUFDUCxLQUFJLENBQUNpekIsZUFBZSxDQUFDdUQsbUJBQW1CLENBQUM7SUFDdkYsQ0FBQyxDQUFDLENBQUM7SUFDTCxJQUFJLENBQUN2RCxlQUFlLENBQUM0QyxrQkFBa0IsQ0FBQ3QxQixHQUFHLENBQ3pDLElBQUksQ0FBQzB5QixlQUFlLENBQUNPLEtBQUssQ0FBQzNqQixTQUFTLENBQUMsVUFBQTJqQixLQUFLLEVBQUk7TUFDNUMsSUFBSXh6QixLQUFJLENBQUNpekIsZUFBZSxDQUFDOEQsd0JBQXdCLEVBQUU7UUFDakR2NEIsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ2tQLFlBQVksQ0FBQzNPLEtBQUksQ0FBQ2l6QixlQUFlLENBQUM4RCx3QkFBd0IsQ0FBQztNQUMvRTtNQUVBLElBQUksQ0FBQy8yQixLQUFJLENBQUNpekIsZUFBZSxDQUFDb0MsWUFBWSxDQUFDNTFCLEtBQUssRUFBRTtRQUM1QztNQUNGO01BRUEsSUFBSSt6QixLQUFLLEtBQUs1QyxzREFBWSxDQUFDb0csT0FBTyxFQUFFO1FBQ2xDO01BQ0Y7TUFFQWgzQixLQUFJLENBQUNpekIsZUFBZSxDQUFDOEQsd0JBQXdCLEdBQUd2NEIsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ3NGLFVBQVUsQ0FBQyxZQUFNO1FBQ2pGL0UsS0FBSSxDQUFDaXpCLGVBQWUsQ0FBQ29DLFlBQVksQ0FBQzUxQixLQUFLLEdBQUcsQ0FBQztNQUM3QyxDQUFDLEVBQUVveUIseUNBQXlDLENBQUM7SUFDL0MsQ0FBQyxDQUFDLENBQUM7SUFDTCxJQUFJLENBQUNvQixlQUFlLENBQUM0QyxrQkFBa0IsQ0FBQ3QxQixHQUFHLENBQ3pDLElBQUksQ0FBQzB5QixlQUFlLENBQUNrQyxVQUFVLENBQUN0bEIsU0FBUyxDQUFDLFVBQUFzbEIsVUFBVSxFQUFJO01BQ3RELElBQUluMUIsS0FBSSxDQUFDaXpCLGVBQWUsQ0FBQ3dELGNBQWMsRUFBRTtRQUN2Q3oyQixLQUFJLENBQUNpekIsZUFBZSxDQUFDd0QsY0FBYyxDQUFDUSx3QkFBd0IsQ0FBQzlCLFVBQVUsQ0FBQzVrQixRQUFRLENBQUMsQ0FBQyxDQUFDO01BQ3JGO0lBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDTCxJQUFJLENBQUMwaUIsZUFBZSxDQUFDNEMsa0JBQWtCLENBQUN0MUIsR0FBRyxDQUN6QyxJQUFJLENBQUMweUIsZUFBZSxDQUFDZ0MsWUFBWSxDQUFDcGxCLFNBQVMsQ0FBQyxVQUFBb2xCLFlBQVksRUFBSTtNQUMxRCxJQUFJQSxZQUFZLElBQUlqMUIsS0FBSSxDQUFDaXpCLGVBQWUsQ0FBQ3NDLFFBQVEsQ0FBQzkxQixLQUFLLElBQUlPLEtBQUksQ0FBQ2l6QixlQUFlLENBQUN3QyxNQUFNLENBQUNoMkIsS0FBSyxFQUFFO1FBQzVGLElBQU15M0IscUJBQXFCLEdBQUdqNEIsSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQyxHQUFHYyxLQUFJLENBQUNpekIsZUFBZSxDQUFDa0UscUJBQXFCLENBQUNDLE9BQU8sQ0FBQyxDQUFDO1FBQy9GLElBQU16WixPQUFPLEdBQUczZCxLQUFJLENBQUNpekIsZUFBZSxDQUFDc0MsUUFBUSxDQUFDOTFCLEtBQUssQ0FBQzQzQixZQUFZLENBQzlEcjNCLEtBQUksQ0FBQ2l6QixlQUFlLENBQUN3QyxNQUFNLENBQUNoMkIsS0FBSyxFQUNqQ3kzQixxQkFBcUIsRUFDckJqQyxZQUFZLEVBQ1p4RSwwRUFBWSxDQUFDNkcsSUFBSSxFQUNqQjVHLHlFQUFXLENBQUM2RyxNQUNkLENBQUMsU0FDTyxDQUFDLFVBQUFwdEIsQ0FBQyxFQUFJO1VBQ1ZuSyxLQUFJLENBQUNrSixPQUFPLENBQUNTLEtBQUssQ0FBQyxtQ0FBbUMsRUFBRVEsQ0FBQyxDQUFDO1FBQzVELENBQUMsQ0FBQztNQUNOO0lBQ0YsQ0FBQyxDQUNILENBQUM7SUFFRCxJQUFNcXRCLHNCQUFzQixHQUFHLFNBQXpCQSxzQkFBc0JBLENBQUEsRUFBUztNQUNuQyxJQUFJeDNCLEtBQUksQ0FBQ2l6QixlQUFlLENBQUN3QyxNQUFNLENBQUNoMkIsS0FBSyxJQUFJTyxLQUFJLENBQUNpekIsZUFBZSxDQUFDc0MsUUFBUSxDQUFDOTFCLEtBQUssRUFBRTtRQUM1RSxJQUFNa2UsT0FBTyxHQUFHM2QsS0FBSSxDQUFDaXpCLGVBQWUsQ0FBQ3NDLFFBQVEsQ0FBQzkxQixLQUFLLENBQUMrM0Isc0JBQXNCLENBQUN4M0IsS0FBSSxDQUFDaXpCLGVBQWUsQ0FBQ3dDLE1BQU0sQ0FBQ2gyQixLQUFLLEVBQUUscUNBQXFDLENBQUM7TUFDdEo7SUFDRixDQUFDO0lBRURqQixnRUFBVyxDQUFDaUIsS0FBSyxDQUFDOHZCLHNCQUFzQixDQUFDLGNBQWMsRUFBRWlJLHNCQUFzQixDQUFDO0lBRWhGLElBQUksQ0FBQ3ZFLGVBQWUsQ0FBQzRDLGtCQUFrQixDQUFDdDFCLEdBQUcsQ0FBQyxJQUFJOUIseURBQVUsQ0FBQyxZQUFNO01BQy9ERCxnRUFBVyxDQUFDaUIsS0FBSyxDQUFDZzRCLHlCQUF5QixDQUFDLGNBQWMsRUFBRUQsc0JBQXNCLENBQUM7SUFDckYsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUNFLEtBQUssQ0FBQyxDQUFDO0lBRVosSUFBSXR6Qiw0Q0FBRyxDQUFDdXpCLHVCQUF1QixFQUFFO01BQy9CLElBQU1DLFVBQVUsR0FBRyxTQUFiQSxVQUFVQSxDQUFJQyxNQUFjLEVBQUs7UUFDckMsSUFBSTczQixLQUFJLENBQUNvekIsYUFBYSxDQUFDMEUsVUFBVSxDQUFDcjRCLEtBQUssRUFBRTtVQUN2Q08sS0FBSSxDQUFDa0osT0FBTyxDQUFDZ0wsS0FBSyxDQUFDLDJGQUEyRixFQUFFbFUsS0FBSSxDQUFDaXpCLGVBQWUsQ0FBQzVxQixRQUFRLEVBQUV3dkIsTUFBTSxDQUFDO1VBRXRKO1FBQ0Y7O1FBRUE7UUFDQTtRQUNBLElBQUk3M0IsS0FBSSxDQUFDKzNCLGVBQWUsQ0FBQyxDQUFDLEVBQUU7VUFDMUIvM0IsS0FBSSxDQUFDa0osT0FBTyxDQUFDZ0wsS0FBSyxDQUFDLDZGQUE2RixFQUFFbFUsS0FBSSxDQUFDaXpCLGVBQWUsQ0FBQzVxQixRQUFRLEVBQUV1b0Isc0RBQVksQ0FBQzV3QixLQUFJLENBQUNpekIsZUFBZSxDQUFDTyxLQUFLLENBQUMvekIsS0FBSyxDQUFDLEVBQUVvNEIsTUFBTSxDQUFDO1VBRXhNO1FBQ0Y7UUFFQTczQixLQUFJLENBQUNpekIsZUFBZSxDQUFDb0MsWUFBWSxDQUFDNTFCLEtBQUssR0FBRyxDQUFDO1FBRTNDTyxLQUFJLENBQUNrSixPQUFPLENBQUNnTCxLQUFLLENBQUMsaUVBQWlFLEVBQUVsVSxLQUFJLENBQUNpekIsZUFBZSxDQUFDNXFCLFFBQVEsRUFBRXd2QixNQUFNLENBQUM7UUFFNUgsSUFBTWxhLE9BQU8sR0FBRzNkLEtBQUksQ0FBQzAzQixLQUFLLENBQUMsQ0FBQztNQUM5QixDQUFDOztNQUVEO01BQ0EsSUFBSSxDQUFDekUsZUFBZSxDQUFDNEMsa0JBQWtCLENBQUN0MUIsR0FBRyxDQUN6QzZELDRDQUFHLENBQUM0ekIsMEJBQTBCLENBQUUvVSxZQUFZLENBQUNwVCxTQUFTLENBQUMsVUFBQW9ULFlBQVksRUFBSTtRQUNyRSxJQUFJLENBQUNBLFlBQVksRUFBRTtVQUNqQjtRQUNGO1FBRUEsSUFBTWdWLHNCQUFzQixHQUFHN3pCLDRDQUFHLENBQUM0ekIsMEJBQTBCLENBQUVwNEIseUJBQXlCLENBQUMsQ0FBQztRQUMxRixJQUFNczRCLGtCQUFrQixHQUFHL3pCLHVFQUFpQixDQUFDNUMsUUFBUSxJQUNoRDAyQixzQkFBc0IsS0FBSyxJQUFJLElBQy9CQSxzQkFBc0IsR0FBR2xHLGdEQUFnRDtRQUM5RTtRQUNBO1FBQ0E7UUFDQSxJQUFNb0cseUJBQXlCLEdBQUduNEIsS0FBSSxDQUFDaXpCLGVBQWUsQ0FBQ08sS0FBSyxDQUFDL3pCLEtBQUssS0FBS214QixzREFBWSxDQUFDd0gsWUFBWSxJQUMzRkgsc0JBQXNCLEtBQUssSUFBSSxJQUMvQkEsc0JBQXNCLEdBQUdqRyxxQ0FBcUM7UUFFbkUsSUFBSWtHLGtCQUFrQixJQUFJQyx5QkFBeUIsRUFBRTtVQUNuRG40QixLQUFJLENBQUNrSixPQUFPLENBQUNDLElBQUksQ0FBQywrREFBK0QsRUFBRW5KLEtBQUksQ0FBQ2l6QixlQUFlLENBQUM1cUIsUUFBUSxFQUFFNHZCLHNCQUFzQixDQUFDO1VBQ3pJTCxVQUFVLENBQUNsRyx3Q0FBd0MsQ0FBQztVQUVwRDtRQUNGO1FBRUEsSUFBSTF4QixLQUFJLENBQUNxNEIsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFO1VBQzNCVCxVQUFVLENBQUNqRyxnQ0FBZ0MsQ0FBQztVQUU1QztRQUNGOztRQUVBO1FBQ0E7UUFDQSxJQUFJLENBQUMzeEIsS0FBSSxDQUFDczRCLGlCQUFpQixFQUFFO1VBQzNCO1FBQ0Y7UUFFQSxJQUFNM2EsT0FBTyxHQUFHM2QsS0FBSSxDQUFDdTRCLG1CQUFtQixDQUFDLENBQUMsQ0FDdkN2YixJQUFJLENBQUMsVUFBQXdiLFNBQVMsRUFBSTtVQUNqQixJQUFJQSxTQUFTLEVBQUU7WUFDYjtVQUNGOztVQUVBO1VBQ0E7VUFDQSxJQUFJeDRCLEtBQUksQ0FBQ2l6QixlQUFlLENBQUNPLEtBQUssQ0FBQy96QixLQUFLLEtBQUtteEIsc0RBQVksQ0FBQ29HLE9BQU8sRUFBRTtZQUM3RDtVQUNGO1VBRUFZLFVBQVUsQ0FBQ2hHLDJDQUEyQyxDQUFDO1FBQ3pELENBQUMsQ0FBQyxTQUNJLENBQUMsVUFBQXpuQixDQUFDLEVBQUk7VUFDVm5LLEtBQUksQ0FBQ2tKLE9BQU8sQ0FBQ1MsS0FBSyxDQUFDLG9GQUFvRixFQUFFM0osS0FBSSxDQUFDaXpCLGVBQWUsQ0FBQzVxQixRQUFRLEVBQUU4QixDQUFDLENBQUM7UUFDNUksQ0FBQyxDQUFDO01BQ04sQ0FBQyxDQUFDLENBQUM7SUFDUDtFQUNGO0VBQUMsT0FBQTdLLDhFQUFBLENBQUEyeUIsT0FBQTtJQUFBMXlCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBNEM7TUFDMUMsT0FBTyxJQUFJLENBQUN5ekIsZUFBZSxDQUFDZixZQUFZLENBQUN6eUIsS0FBSztJQUNoRCxDQUFDO0lBQUFpWixHQUFBLEVBRUQsU0FBQUEsSUFBaUJ3WixZQUE4QixFQUFFO01BQy9DLElBQUksSUFBSSxDQUFDZSxlQUFlLENBQUNmLFlBQVksQ0FBQ3p5QixLQUFLLEVBQUU7UUFDM0MsSUFBSSxDQUFDd3pCLGVBQWUsQ0FBQ2YsWUFBWSxDQUFDenlCLEtBQUssQ0FBQ2dJLG1CQUFtQixDQUFDLFlBQVksRUFBRSxJQUFJLENBQUNxdUIsNEJBQTRCLENBQUM7UUFDNUcsSUFBSSxDQUFDN0MsZUFBZSxDQUFDZixZQUFZLENBQUN6eUIsS0FBSyxDQUFDZ0ksbUJBQW1CLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDcXVCLDRCQUE0QixDQUFDO1FBQ2hILElBQUksQ0FBQzdDLGVBQWUsQ0FBQ2YsWUFBWSxDQUFDenlCLEtBQUssQ0FBQ2dJLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUNxdUIsNEJBQTRCLENBQUM7UUFFeEcsSUFBSSxJQUFJLENBQUM3QyxlQUFlLENBQUNmLFlBQVksQ0FBQ3p5QixLQUFLLENBQUNpM0IsT0FBTyxFQUFFO1VBQ25ELElBQUksQ0FBQ3pELGVBQWUsQ0FBQ2YsWUFBWSxDQUFDenlCLEtBQUssQ0FBQ2kzQixPQUFPLENBQUN4ZCxTQUFTLEdBQUcsRUFBRTtVQUM5RCxJQUFJLENBQUMrWixlQUFlLENBQUNmLFlBQVksQ0FBQ3p5QixLQUFLLENBQUNpM0IsT0FBTyxDQUFDcnVCLFFBQVEsR0FBRyxFQUFFO1FBQy9EO1FBRUEsSUFBSSxDQUFDNHFCLGVBQWUsQ0FBQ3VELG1CQUFtQixDQUFDMTJCLE9BQU8sQ0FBQyxDQUFDO1FBRWxELElBQUksQ0FBQ216QixlQUFlLENBQUNmLFlBQVksQ0FBQ3p5QixLQUFLLENBQUNnNUIsS0FBSyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDeEYsZUFBZSxDQUFDZixZQUFZLENBQUN6eUIsS0FBSyxDQUFDaTVCLFNBQVMsR0FBRyxJQUFJO01BQzFEO01BRUEsSUFBSSxDQUFDekYsZUFBZSxDQUFDVyxTQUFTLENBQUNuMEIsS0FBSyxHQUFHLEtBQUs7TUFDNUMsSUFBSSxDQUFDd3pCLGVBQWUsQ0FBQ2EsVUFBVSxDQUFDcjBCLEtBQUssR0FBRyxLQUFLO01BQzdDLElBQUksQ0FBQ3d6QixlQUFlLENBQUNxQixPQUFPLENBQUM3MEIsS0FBSyxHQUFHLEtBQUs7TUFDMUMsSUFBSSxDQUFDd3pCLGVBQWUsQ0FBQ3VCLE9BQU8sQ0FBQy8wQixLQUFLLEdBQUcsS0FBSztNQUUxQyxJQUFJLElBQUksQ0FBQ3d6QixlQUFlLENBQUNPLEtBQUssQ0FBQy96QixLQUFLLEtBQUtteEIsc0RBQVksQ0FBQytILFlBQVksRUFBRTtRQUNsRSxJQUFJLENBQUMxRixlQUFlLENBQUNPLEtBQUssQ0FBQy96QixLQUFLLEdBQUdteEIsc0RBQVksQ0FBQ2lHLE9BQU87TUFDekQ7TUFFQSxJQUFJLENBQUM1RCxlQUFlLENBQUNmLFlBQVksQ0FBQ3p5QixLQUFLLEdBQUd5eUIsWUFBWTtNQUV0RCxJQUFJLElBQUksQ0FBQ2UsZUFBZSxDQUFDZixZQUFZLENBQUN6eUIsS0FBSyxFQUFFO1FBQzNDLElBQUksQ0FBQ3d6QixlQUFlLENBQUNmLFlBQVksQ0FBQ3p5QixLQUFLLENBQUM4SCxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDdXVCLDRCQUE0QixDQUFDO1FBQ3pHLElBQUksQ0FBQzdDLGVBQWUsQ0FBQ2YsWUFBWSxDQUFDenlCLEtBQUssQ0FBQzhILGdCQUFnQixDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQ3V1Qiw0QkFBNEIsQ0FBQztRQUM3RyxJQUFJLENBQUM3QyxlQUFlLENBQUNmLFlBQVksQ0FBQ3p5QixLQUFLLENBQUM4SCxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDdXVCLDRCQUE0QixDQUFDO01BQ3ZHO0lBQ0Y7RUFBQztJQUFBdjJCLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQVFzMkIsMEJBQTBCQSxDQUFBLEVBQVM7TUFDekMsSUFBTTdELFlBQVksR0FBRyxJQUFJLENBQUNlLGVBQWUsQ0FBQ2YsWUFBWSxDQUFDenlCLEtBQUs7TUFFNUQsSUFBSXl5QixZQUFZLEVBQUU7UUFDaEIsSUFBSSxJQUFJLENBQUNpRCxVQUFVLENBQUMxMUIsS0FBSyxDQUFDbTVCLEtBQUssS0FBSzFHLFlBQVksQ0FBQzJHLFVBQVUsSUFBSSxJQUFJLENBQUMxRCxVQUFVLENBQUMxMUIsS0FBSyxDQUFDcTVCLE1BQU0sS0FBSzVHLFlBQVksQ0FBQzZHLFdBQVcsRUFBRTtVQUN4SCxJQUFJLENBQUM5RixlQUFlLENBQUNrQyxVQUFVLENBQUMxMUIsS0FBSyxHQUFHLElBQUlreEIsd0RBQVMsQ0FBQ3VCLFlBQVksQ0FBQzJHLFVBQVUsRUFBRTNHLFlBQVksQ0FBQzZHLFdBQVcsQ0FBQztRQUMxRztNQUNGLENBQUMsTUFBTTtRQUNMLElBQUksQ0FBQzlGLGVBQWUsQ0FBQ2tDLFVBQVUsQ0FBQzExQixLQUFLLEdBQUdreEIsd0RBQVMsQ0FBQ3FJLEtBQUs7TUFDekQ7SUFDRjtFQUFDO0lBQUF6NUIsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUE4QjtNQUM1QixPQUFPLElBQUksQ0FBQ3d6QixhQUFhLENBQUN2cEIsS0FBSyxDQUFDaEssS0FBSztJQUN2QyxDQUFDO0lBQUFpWixHQUFBLEVBRUQsU0FBQUEsSUFBVWpQLEtBQXVCLEVBQUU7TUFDakMsSUFBSSxDQUFDd3BCLGVBQWUsQ0FBQ2dHLFdBQVcsQ0FBQ241QixPQUFPLENBQUMsQ0FBQztNQUUxQyxJQUFJLENBQUNrekIsYUFBYSxDQUFDdnBCLEtBQUssQ0FBQ2hLLEtBQUssR0FBR2dLLEtBQUs7TUFDdEMsSUFBSSxDQUFDdXBCLGFBQWEsQ0FBQ2dCLGFBQWEsQ0FBQ3YwQixLQUFLLEdBQUcsS0FBSztNQUU5QyxJQUFNdUssU0FBUyxHQUFHVCxpRUFBYyxDQUFDQyxVQUFVLENBQUMsSUFBSSxDQUFDd3BCLGFBQWEsQ0FBQ3ZwQixLQUFLLENBQUNoSyxLQUFLLENBQUM7TUFDM0UsSUFBTXd2QixZQUFZLEdBQUcsQ0FBQ2psQixTQUFTLENBQUNVLEdBQUcsSUFBSXRHLDRDQUFHLENBQUM2cUIsWUFBWSxDQUFDeHZCLEtBQUssRUFBRThRLFFBQVEsQ0FBQyxDQUFDO01BRXpFbk0sNENBQUcsQ0FBQzRVLE9BQU8sQ0FBQ3ZaLEtBQUssR0FBR3VLLFNBQVMsQ0FBQ2dQLE9BQU8sSUFBSTVVLDRDQUFHLENBQUM0VSxPQUFPLENBQUN2WixLQUFLO01BQzFEb3RCLGdFQUFZLENBQUNuaUIsR0FBRyxDQUFDakwsS0FBSyxHQUFHd3ZCLFlBQVk7TUFFckMsSUFBSSxDQUFDcEIsZUFBZSxHQUFHdlUsZ0VBQWMsQ0FBQ0MsaUJBQWlCLENBQUMwVixZQUFZLENBQUM7TUFFckUsSUFBSSxDQUFDa0UsdUJBQXVCLENBQUNULG9CQUFvQixDQUFDanpCLEtBQUssR0FBR3VLLFNBQVMsQ0FBQ1csWUFBWSxDQUFDekgsUUFBUSxDQUFDLG9CQUFvQixDQUFDO01BQy9HLElBQUksQ0FBQ2l3Qix1QkFBdUIsQ0FBQ1IsMkJBQTJCLENBQUNsekIsS0FBSyxHQUFHdUssU0FBUyxDQUFDVyxZQUFZLENBQUN6SCxRQUFRLENBQUMsNEJBQTRCLENBQUM7TUFFOUgsSUFBSSxDQUFDK3lCLCtCQUErQixDQUFDanNCLFNBQVMsQ0FBQ1csWUFBWSxDQUFDO01BRTVELElBQUksQ0FBQytzQixLQUFLLENBQUMsQ0FBQztJQUNkO0VBQUM7SUFBQW40QixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQThEO01BQzVELE9BQU8sSUFBSSxDQUFDOHpCLHVCQUF1QjtJQUNyQztFQUFDO0lBQUEvekIsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUEyQztNQUN6QyxPQUFPLElBQUksQ0FBQyt6QixjQUFjO0lBQzVCO0VBQUM7SUFBQWgwQixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQThDO01BQzVDLE9BQU8sSUFBSSxDQUFDaTBCLGVBQWU7SUFDN0I7RUFBQztJQUFBbDBCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBMEM7TUFDeEMsT0FBTyxJQUFJLENBQUNtMEIsa0JBQWtCO0lBQ2hDO0VBQUM7SUFBQXAwQixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQTJDO01BQ3pDLE9BQU8sSUFBSSxDQUFDcTBCLG1CQUFtQjtJQUNqQztFQUFDO0lBQUF0MEIsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUE4QztNQUM1QyxPQUFPLElBQUksQ0FBQ3UwQixzQkFBc0I7SUFDcEM7RUFBQztJQUFBeDBCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBMkM7TUFDekMsT0FBTyxJQUFJLENBQUN5MEIsbUJBQW1CO0lBQ2pDO0VBQUM7SUFBQTEwQixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXVDO01BQ3JDLE9BQU8sSUFBSSxDQUFDMjBCLGVBQWU7SUFDN0I7RUFBQztJQUFBNTBCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBd0M7TUFDdEMsT0FBTyxJQUFJLENBQUM2MEIsZ0JBQWdCO0lBQzlCO0VBQUM7SUFBQTkwQixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXdDO01BQ3RDLE9BQU8sSUFBSSxDQUFDKzBCLGdCQUFnQjtJQUM5QjtFQUFDO0lBQUFoMUIsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUF3QztNQUN0QyxPQUFPLElBQUksQ0FBQ2kxQixnQkFBZ0I7SUFDOUI7RUFBQztJQUFBbDFCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBd0M7TUFDdEMsT0FBTyxJQUFJLENBQUNtMUIsZ0JBQWdCO0lBQzlCO0VBQUM7SUFBQXAxQixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQThDO01BQzVDLE9BQU8sSUFBSSxDQUFDcTFCLGtCQUFrQjtJQUNoQztFQUFDO0lBQUF0MUIsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFvRDtNQUNsRCxPQUFPLElBQUksQ0FBQ3MxQixZQUFZO0lBQzFCO0VBQUM7SUFBQXYxQixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQWtDO01BQ2hDLE9BQU8sSUFBSSxDQUFDdzFCLHFCQUFxQixDQUFDdjFCLEtBQUs7SUFDekM7RUFBQztJQUFBRixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQTZDO01BQzNDLE9BQU8sSUFBSSxDQUFDMDFCLG1CQUFtQjtJQUNqQztFQUFDO0lBQUEzMUIsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUE0QztNQUMxQyxPQUFPLElBQUksQ0FBQzQxQixxQkFBcUI7SUFDbkM7RUFBQztJQUFBNzFCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBaUQ7TUFDL0MsT0FBTyxJQUFJLENBQUM4MUIsaUJBQWlCO0lBQy9CO0VBQUM7SUFBQS8xQixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQThDO01BQzVDLE9BQU8sSUFBSSxDQUFDZzJCLGVBQWU7SUFDN0I7RUFBQztJQUFBajJCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBdUI7TUFDckIsT0FBTyxJQUFJLENBQUN5ekIsZUFBZSxDQUFDNXFCLFFBQVE7SUFDdEM7RUFBQztJQUFBOUksR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFrRTtNQUNoRSxPQUFPLElBQUksQ0FBQ2syQixzQkFBc0I7SUFDcEM7RUFBQztJQUFBbjJCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBdUQ7TUFDckQsT0FBTyxJQUFJLENBQUNtMkIsb0JBQW9CO0lBQ2xDO0VBQUM7SUFBQXAyQixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQWdFO01BQzlELE9BQU8sSUFBSSxDQUFDMDJCLHdDQUF3QztJQUN0RDtFQUFDO0lBQUEzMkIsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUEyRjtNQUN6RixPQUFPLElBQUksQ0FBQzQyQixzQ0FBc0M7SUFDcEQ7RUFBQztJQUFBNzJCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBNkY7TUFDM0YsT0FBTyxJQUFJLENBQUM4MkIsdUNBQXVDO0lBQ3JEO0VBQUM7SUFBQS8yQixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBeTVCLGVBQWVBLENBQUNqRSxZQUEyQixFQUFRO01BQ2pELElBQUksQ0FBQ2hDLGVBQWUsQ0FBQ2dDLFlBQVksQ0FBQ3gxQixLQUFLLEdBQUd3MUIsWUFBWTtJQUN4RDtFQUFDO0lBQUExMUIsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQTA1QixpQkFBaUJBLENBQUEsRUFBUztNQUFBLElBQUEvakIsTUFBQTtNQUN4QixJQUFJLElBQUksQ0FBQzZkLGVBQWUsQ0FBQ2dDLFlBQVksQ0FBQ3gxQixLQUFLLElBQUksSUFBSSxDQUFDd3pCLGVBQWUsQ0FBQ3NDLFFBQVEsQ0FBQzkxQixLQUFLLElBQUksSUFBSSxDQUFDd3pCLGVBQWUsQ0FBQ3dDLE1BQU0sQ0FBQ2gyQixLQUFLLEVBQUU7UUFDdkgsSUFBTXkzQixxQkFBcUIsR0FBR2o0QixJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDK3pCLGVBQWUsQ0FBQ2tFLHFCQUFxQixDQUFDQyxPQUFPLENBQUMsQ0FBQztRQUMvRixJQUFNZ0Msc0JBQXNCLEdBQUcsQ0FBQztRQUNoQyxJQUFNemIsT0FBTyxHQUFHLElBQUksQ0FBQ3NWLGVBQWUsQ0FBQ3NDLFFBQVEsQ0FBQzkxQixLQUFLLENBQUM0M0IsWUFBWSxDQUM5RCxJQUFJLENBQUNwRSxlQUFlLENBQUN3QyxNQUFNLENBQUNoMkIsS0FBSyxFQUNqQ3kzQixxQkFBcUIsRUFDckJrQyxzQkFBc0IsRUFDdEIzSSwwRUFBWSxDQUFDNkcsSUFBSSxFQUNqQjVHLHlFQUFXLENBQUMySSxLQUNkLENBQUMsQ0FDRXJjLElBQUksQ0FBQyxVQUFBNVcsSUFBQSxFQUFjO1VBQUEsSUFBWmlaLE1BQU0sR0FBQWpaLElBQUEsQ0FBTmlaLE1BQU07VUFDWixJQUFJQSxNQUFNLEtBQUssSUFBSSxFQUFFO1lBQ25CakssTUFBSSxDQUFDNmQsZUFBZSxDQUFDZ0MsWUFBWSxDQUFDeDFCLEtBQUssR0FBRyxDQUFDO1VBQzdDO1FBQ0YsQ0FBQyxDQUFDLFNBQ0ksQ0FBQyxVQUFBMEssQ0FBQyxFQUFJO1VBQ1ZpTCxNQUFJLENBQUNsTSxPQUFPLENBQUNTLEtBQUssQ0FBQyxtQ0FBbUMsRUFBRVEsQ0FBQyxDQUFDO1FBQzVELENBQUMsQ0FBQztNQUNOO0lBQ0Y7RUFBQztJQUFBNUssR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQTY1QixlQUFlQSxDQUFDdkUsR0FBZ0IsRUFBUTtNQUN0QyxJQUFJLENBQUM5QixlQUFlLENBQUNiLFNBQVMsQ0FBQzN5QixLQUFLLEdBQUdzMUIsR0FBRztJQUM1QztFQUFDO0lBQUF4MUIsR0FBQTtJQUFBRSxLQUFBO01BQUEsSUFBQTg1QixLQUFBLEdBQUF2YixtRkFBQSxjQUFBaEMsWUFBQSxHQUFBRSxDQUFBLENBRUQsU0FBQStCLFFBQVc0WixNQUFjO1FBQUEsSUFBQXpRLE1BQUE7UUFBQSxPQUFBcEwsWUFBQSxHQUFBQyxDQUFBLFdBQUFtQyxRQUFBO1VBQUEsa0JBQUFBLFFBQUEsQ0FBQTlELENBQUE7WUFBQTtjQUFBLE9BQUE4RCxRQUFBLENBQUEvQyxDQUFBLElBQ2hCLElBQUl3QyxPQUFPLENBQUMsVUFBQTJILE9BQU8sRUFBSTtnQkFDNUIsSUFBSSxDQUFDNEIsTUFBSSxDQUFDZ00sYUFBYSxDQUFDMEUsVUFBVSxDQUFDcjRCLEtBQUssRUFBRTtrQkFDeEMybkIsTUFBSSxDQUFDb1MsV0FBVyxDQUFDM0IsTUFBTSxDQUFDO2tCQUV4QnJTLE9BQU8sQ0FBQyxDQUFDO2tCQUVUO2dCQUNGO2dCQUVBNEIsTUFBSSxDQUFDNkwsZUFBZSxDQUFDdUQsbUJBQW1CLENBQUNqMkIsR0FBRyxDQUFDNm1CLE1BQUksQ0FBQ2dNLGFBQWEsQ0FBQzBFLFVBQVUsQ0FBQ2pvQixTQUFTLENBQUMsVUFBQWlvQixVQUFVLEVBQUk7a0JBQ2pHLElBQUksQ0FBQ0EsVUFBVSxFQUFFO29CQUNmMVEsTUFBSSxDQUFDb1MsV0FBVyxDQUFDM0IsTUFBTSxDQUFDO29CQUN4QnJTLE9BQU8sQ0FBQyxDQUFDO2tCQUNYO2dCQUNGLENBQUMsQ0FBQyxDQUFDO2NBQ0wsQ0FBQyxDQUFDO1VBQUE7UUFBQSxHQUFBdkgsT0FBQTtNQUFBLENBQ0g7TUFBQSxTQWpCS3diLElBQUlBLENBQUFoYixFQUFBO1FBQUEsT0FBQThhLEtBQUEsQ0FBQTdhLEtBQUEsT0FBQTNLLFNBQUE7TUFBQTtNQUFBLE9BQUowbEIsSUFBSTtJQUFBO0VBQUE7SUFBQWw2QixHQUFBO0lBQUFFLEtBQUEsRUFtQlYsU0FBUSs1QixXQUFXQSxDQUFDM0IsTUFBYyxFQUFRO01BQ3hDLElBQUksSUFBSSxDQUFDNUUsZUFBZSxDQUFDZixZQUFZLENBQUN6eUIsS0FBSyxFQUFFO1FBQzNDLElBQUksQ0FBQ3d6QixlQUFlLENBQUNmLFlBQVksQ0FBQ3p5QixLQUFLLENBQUNnNUIsS0FBSyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDeEYsZUFBZSxDQUFDZixZQUFZLENBQUN6eUIsS0FBSyxDQUFDaTVCLFNBQVMsR0FBRyxJQUFJO01BQzFEO01BRUEsSUFBSSxDQUFDekYsZUFBZSxDQUFDdUQsbUJBQW1CLENBQUMxMkIsT0FBTyxDQUFDLENBQUM7TUFFbEQsSUFBSSxDQUFDNDVCLGdCQUFnQixDQUFDN0IsTUFBTSxDQUFDO01BRTdCLElBQUksQ0FBQzVFLGVBQWUsQ0FBQ08sS0FBSyxDQUFDL3pCLEtBQUssR0FBR214QixzREFBWSxDQUFDaUcsT0FBTztJQUN6RDtFQUFDO0lBQUF0M0IsR0FBQTtJQUFBRSxLQUFBO01BQUEsSUFBQWs2QixPQUFBLEdBQUEzYixtRkFBQSxjQUFBaEMsWUFBQSxHQUFBRSxDQUFBLENBRUQsU0FBQTBDLFNBQUE7UUFBQSxPQUFBNUMsWUFBQSxHQUFBQyxDQUFBLFdBQUE0QyxTQUFBO1VBQUEsa0JBQUFBLFNBQUEsQ0FBQXZFLENBQUE7WUFBQTtjQUFBLEtBQ00sSUFBSSxDQUFDNFksc0JBQXNCLENBQUNuUSxXQUFXLENBQUN0akIsS0FBSztnQkFBQW9mLFNBQUEsQ0FBQXZFLENBQUE7Z0JBQUE7Y0FBQTtjQUMvQyxJQUFJLENBQUMyWSxlQUFlLENBQUNhLFVBQVUsQ0FBQ3IwQixLQUFLLEdBQUcsS0FBSztjQUFDLE9BQUFvZixTQUFBLENBQUF4RCxDQUFBLElBRXZDLElBQUksQ0FBQ3VlLDZCQUE2QixDQUFDLElBQUksQ0FBQzFHLHNCQUFzQixDQUFDblEsV0FBVyxDQUFDdGpCLEtBQUssQ0FBQztZQUFBO2NBQUEsT0FBQW9mLFNBQUEsQ0FBQXhELENBQUE7VUFBQTtRQUFBLEdBQUF1RCxRQUFBO01BQUEsQ0FFM0Y7TUFBQSxTQU5LaWIsTUFBTUEsQ0FBQTtRQUFBLE9BQUFGLE9BQUEsQ0FBQWpiLEtBQUEsT0FBQTNLLFNBQUE7TUFBQTtNQUFBLE9BQU44bEIsTUFBTTtJQUFBO0VBQUE7SUFBQXQ2QixHQUFBO0lBQUFFLEtBQUEsRUFRWixTQUFBcTZCLElBQUlBLENBQUEsRUFBUztNQUNYLElBQU01SCxZQUFZLEdBQUcsSUFBSSxDQUFDZSxlQUFlLENBQUNmLFlBQVksQ0FBQ3p5QixLQUFLO01BRTVELElBQUl5eUIsWUFBWSxFQUFFO1FBQ2hCQSxZQUFZLENBQUM2SCxLQUFLLEdBQUcsSUFBSTtNQUMzQjtJQUNGO0VBQUM7SUFBQXg2QixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBdTZCLE1BQU1BLENBQUEsRUFBUztNQUNiLElBQU05SCxZQUFZLEdBQUcsSUFBSSxDQUFDZSxlQUFlLENBQUNmLFlBQVksQ0FBQ3p5QixLQUFLO01BRTVELElBQUl5eUIsWUFBWSxFQUFFO1FBQ2hCQSxZQUFZLENBQUM2SCxLQUFLLEdBQUcsS0FBSztRQUMxQixJQUFJLENBQUM5RyxlQUFlLENBQUNXLFNBQVMsQ0FBQ24wQixLQUFLLEdBQUcsS0FBSztNQUM5QztJQUNGO0VBQUM7SUFBQUYsR0FBQTtJQUFBRSxLQUFBO01BQUEsSUFBQXc2QixRQUFBLEdBQUFqYyxtRkFBQSxjQUFBaEMsWUFBQSxHQUFBRSxDQUFBLENBRUQsU0FBQW1FLFNBQUE7UUFBQSxJQUFBNEssTUFBQTtRQUFBLE9BQUFqUCxZQUFBLEdBQUFDLENBQUEsV0FBQXlFLFNBQUE7VUFBQSxrQkFBQUEsU0FBQSxDQUFBcEcsQ0FBQTtZQUFBO2NBQUEsT0FBQW9HLFNBQUEsQ0FBQXJGLENBQUEsSUFDUyxJQUFJLENBQUNvZSxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQ3pjLElBQUksQ0FBQyxZQUFNO2dCQUNwRGlPLE1BQUksQ0FBQ2dJLGVBQWUsQ0FBQzRDLGtCQUFrQixDQUFDLzFCLE9BQU8sQ0FBQyxDQUFDO2dCQUNqRG1yQixNQUFJLENBQUNtSSxhQUFhLENBQUM4RyxVQUFVLEdBQUcsSUFBSTtjQUN0QyxDQUFDLENBQUM7VUFBQTtRQUFBLEdBQUE3WixRQUFBO01BQUEsQ0FDSDtNQUFBLFNBTEt2Z0IsT0FBT0EsQ0FBQTtRQUFBLE9BQUFtNkIsUUFBQSxDQUFBdmIsS0FBQSxPQUFBM0ssU0FBQTtNQUFBO01BQUEsT0FBUGpVLE9BQU87SUFBQTtFQUFBO0lBQUFQLEdBQUE7SUFBQUUsS0FBQSxFQU9iLFNBQUEwNkIsTUFBTUEsQ0FBQzF3QixLQUF1QixFQUFPO01BQ25DLElBQU02RixHQUFHLEdBQUcvRixpRUFBYyxDQUFDQyxVQUFVLENBQUNDLEtBQUssQ0FBQyxDQUFDaUIsR0FBRztNQUVoRCxJQUFJNEUsR0FBRyxFQUFFO1FBQ1AsT0FBT0EsR0FBRztNQUNaO01BRUEsSUFBSSxDQUFDcEcsT0FBTyxDQUFDQyxJQUFJLENBQUMsNENBQTRDLEVBQUUvRSw0Q0FBRyxDQUFDNnFCLFlBQVksQ0FBQ3h2QixLQUFLLENBQUM7TUFFdkYsT0FBTyxJQUFJakIsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQzBGLEdBQUcsQ0FBQ2YsNENBQUcsQ0FBQzZxQixZQUFZLENBQUN4dkIsS0FBSyxDQUFDO0lBQzFEO0VBQUM7SUFBQUYsR0FBQTtJQUFBRSxLQUFBO01BQUEsSUFBQTI2QixNQUFBLEdBQUFwYyxtRkFBQSxjQUFBaEMsWUFBQSxHQUFBRSxDQUFBLENBRUQsU0FBQXFPLFNBQUE7UUFBQSxPQUFBdk8sWUFBQSxHQUFBQyxDQUFBLFdBQUF5TyxTQUFBO1VBQUEsa0JBQUFBLFNBQUEsQ0FBQXBRLENBQUE7WUFBQTtjQUFBLEtBQ00sSUFBSSxDQUFDOFksYUFBYSxDQUFDOEcsVUFBVTtnQkFBQXhQLFNBQUEsQ0FBQXBRLENBQUE7Z0JBQUE7Y0FBQTtjQUFBLE1BQ3pCLElBQUloVyxLQUFLLENBQUMsOEJBQThCLENBQUM7WUFBQTtjQUFBLEtBRzdDLElBQUksQ0FBQzh1QixhQUFhLENBQUMwRSxVQUFVLENBQUNyNEIsS0FBSztnQkFBQWlyQixTQUFBLENBQUFwUSxDQUFBO2dCQUFBO2NBQUE7Y0FDckMsSUFBSSxDQUFDcFIsT0FBTyxDQUFDQyxJQUFJLENBQUMsNkNBQTZDLENBQUM7Y0FBQyxPQUFBdWhCLFNBQUEsQ0FBQXJQLENBQUE7WUFBQTtjQUtuRSxJQUFJLENBQUMrWCxhQUFhLENBQUMwRSxVQUFVLENBQUNyNEIsS0FBSyxHQUFHLElBQUk7Y0FBQyxPQUFBaXJCLFNBQUEsQ0FBQXJQLENBQUEsSUFFcEMsSUFBSSxDQUFDZ2YsWUFBWSxDQUFDLENBQUM7VUFBQTtRQUFBLEdBQUE5UCxRQUFBO01BQUEsQ0FDM0I7TUFBQSxTQWRLbU4sS0FBS0EsQ0FBQTtRQUFBLE9BQUEwQyxNQUFBLENBQUExYixLQUFBLE9BQUEzSyxTQUFBO01BQUE7TUFBQSxPQUFMMmpCLEtBQUs7SUFBQTtFQUFBO0lBQUFuNEIsR0FBQTtJQUFBRSxLQUFBLEVBZ0JYLFNBQVFzNEIsZUFBZUEsQ0FBQSxFQUFZO01BQ2pDLFFBQVEsSUFBSSxDQUFDOUUsZUFBZSxDQUFDTyxLQUFLLENBQUMvekIsS0FBSztRQUN0QyxLQUFLbXhCLHNEQUFZLENBQUNpRyxPQUFPO1FBQ3pCLEtBQUtqRyxzREFBWSxDQUFDMEosWUFBWTtRQUM5QixLQUFLMUosc0RBQVksQ0FBQzJKLGFBQWE7UUFDL0IsS0FBSzNKLHNEQUFZLENBQUM0SixVQUFVO1FBQzVCLEtBQUs1SixzREFBWSxDQUFDNkosa0JBQWtCO1FBQ3BDLEtBQUs3SixzREFBWSxDQUFDOEosa0JBQWtCO1VBQ2xDLE9BQU8sSUFBSTtRQUNiLEtBQUs5SixzREFBWSxDQUFDK0gsWUFBWTtRQUM5QixLQUFLL0gsc0RBQVksQ0FBQytKLE9BQU87UUFDekIsS0FBSy9KLHNEQUFZLENBQUNnSyxRQUFRO1FBQzFCLEtBQUtoSyxzREFBWSxDQUFDaUssTUFBTTtRQUN4QixLQUFLakssc0RBQVksQ0FBQ29HLE9BQU87UUFDekIsS0FBS3BHLHNEQUFZLENBQUNrSyxVQUFVO1FBQzVCLEtBQUtsSyxzREFBWSxDQUFDd0gsWUFBWTtRQUM5QixLQUFLeEgsc0RBQVksQ0FBQ21LLE9BQU87UUFDekIsS0FBS25LLHNEQUFZLENBQUNvSywyQkFBMkI7UUFDN0MsS0FBS3BLLHNEQUFZLENBQUNxSyxlQUFlO1FBQ2pDLEtBQUtySyxzREFBWSxDQUFDc0ssZ0JBQWdCO1FBQ2xDLEtBQUt0SyxzREFBWSxDQUFDdHNCLEtBQUs7VUFDckIsT0FBTyxLQUFLO1FBQ2Q7VUFDRThOLG9FQUFpQixDQUFDLElBQUksQ0FBQzZnQixlQUFlLENBQUNPLEtBQUssQ0FBQy96QixLQUFLLENBQUM7TUFDdkQ7SUFDRjtFQUFDO0lBQUFGLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQVE0NEIsZ0JBQWdCQSxDQUFBLEVBQVk7TUFDbEMsUUFBUSxJQUFJLENBQUNwRixlQUFlLENBQUNPLEtBQUssQ0FBQy96QixLQUFLO1FBQ3RDLEtBQUtteEIsc0RBQVksQ0FBQ3RzQixLQUFLO1FBQ3ZCLEtBQUtzc0Isc0RBQVksQ0FBQ3dILFlBQVk7UUFDOUIsS0FBS3hILHNEQUFZLENBQUNtSyxPQUFPO1FBQ3pCLEtBQUtuSyxzREFBWSxDQUFDK0osT0FBTztRQUN6QixLQUFLL0osc0RBQVksQ0FBQ2tLLFVBQVU7UUFDNUIsS0FBS2xLLHNEQUFZLENBQUNvSywyQkFBMkI7UUFDN0MsS0FBS3BLLHNEQUFZLENBQUNxSyxlQUFlO1FBQ2pDLEtBQUtySyxzREFBWSxDQUFDc0ssZ0JBQWdCO1VBQ2hDLE9BQU8sSUFBSTtRQUNiLEtBQUt0SyxzREFBWSxDQUFDMEosWUFBWTtRQUM5QixLQUFLMUosc0RBQVksQ0FBQzJKLGFBQWE7UUFDL0IsS0FBSzNKLHNEQUFZLENBQUM0SixVQUFVO1FBQzVCLEtBQUs1SixzREFBWSxDQUFDaUcsT0FBTztRQUN6QixLQUFLakcsc0RBQVksQ0FBQ2lLLE1BQU07UUFDeEIsS0FBS2pLLHNEQUFZLENBQUMrSCxZQUFZO1FBQzlCLEtBQUsvSCxzREFBWSxDQUFDZ0ssUUFBUTtRQUMxQixLQUFLaEssc0RBQVksQ0FBQ29HLE9BQU87UUFDekIsS0FBS3BHLHNEQUFZLENBQUM2SixrQkFBa0I7UUFDcEMsS0FBSzdKLHNEQUFZLENBQUM4SixrQkFBa0I7VUFDbEMsT0FBTyxLQUFLO1FBQ2Q7VUFDRXRvQixvRUFBaUIsQ0FBQyxJQUFJLENBQUM2Z0IsZUFBZSxDQUFDTyxLQUFLLENBQUMvekIsS0FBSyxDQUFDO01BQ3ZEO0lBQ0Y7RUFBQztJQUFBRixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFRODRCLG1CQUFtQkEsQ0FBQSxFQUFxQjtNQUM5QyxJQUFJLENBQUMsSUFBSSxDQUFDRCxpQkFBaUIsRUFBRTtRQUMzQixPQUFPemEsT0FBTyxDQUFDMkgsT0FBTyxDQUFDLEtBQUssQ0FBQztNQUMvQjtNQUVBLE9BQU8sSUFBSSxDQUFDOFMsaUJBQWlCLENBQUM2QyxlQUFlLENBQUMsQ0FBQztJQUNqRDtFQUFDO0lBQUE1N0IsR0FBQTtJQUFBRSxLQUFBO01BQUEsSUFBQTI3QixhQUFBLEdBQUFwZCxtRkFBQSxjQUFBaEMsWUFBQSxHQUFBRSxDQUFBLENBRUQsU0FBQW1mLFNBQUE7UUFBQSxJQUFBQyxNQUFBO1FBQUEsSUFBQUMsVUFBQSxFQUFBOXhCLEtBQUEsRUFBQSt4QixtQkFBQSxFQUFBQyxxQkFBQSxFQUFBQyxLQUFBLEVBQUFDLGdCQUFBLEVBQUFDLHNCQUFBLEVBQUFDLE1BQUEsRUFBQUMsaUJBQUEsRUFBQUMscUJBQUEsRUFBQUMsT0FBQSxFQUFBQyxrQkFBQSxFQUFBQyxzQkFBQSxFQUFBQyxPQUFBLEVBQUFDLGtCQUFBLEVBQUFDLDBCQUFBLEVBQUFDLG9CQUFBLEVBQUE1eEIsR0FBQSxFQUFBNnhCLDJCQUFBO1FBQUEsT0FBQXZnQixZQUFBLEdBQUFDLENBQUEsV0FBQXVnQixTQUFBO1VBQUEsa0JBQUFBLFNBQUEsQ0FBQWxpQixDQUFBO1lBQUE7Y0FDUWloQixVQUFVLEdBQUcsSUFBSSxDQUFDdEksZUFBZSxDQUFDTyxLQUFLLENBQUMvekIsS0FBSyxLQUFLbXhCLHNEQUFZLENBQUMrSCxZQUFZO2NBRWpGLElBQUksQ0FBQzFGLGVBQWUsQ0FBQ08sS0FBSyxDQUFDL3pCLEtBQUssR0FBRzg3QixVQUFVLEdBQUczSyxzREFBWSxDQUFDa0ssVUFBVSxHQUFHbEssc0RBQVksQ0FBQ2dLLFFBQVE7Y0FDL0YsSUFBSSxDQUFDbEIsZ0JBQWdCLENBQUM2QixVQUFVLEdBQUcsZ0JBQWdCLEdBQUcsY0FBYyxDQUFDO2NBRS9EOXhCLEtBQXVCLEdBQUcsSUFBSSxDQUFDdXBCLGFBQWEsQ0FBQ3ZwQixLQUFLLENBQUNoSyxLQUFLO2NBQ3hEKzdCLG1CQUFtQixHQUFHLElBQUksQ0FBQzVGLGlCQUFpQixDQUFDNEYsbUJBQW1CLENBQUMsQ0FBQztjQUFBLElBRW5FanlCLGlFQUFjLENBQUNHLHVCQUF1QixDQUFDRCxLQUFLLENBQUM7Z0JBQUEreUIsU0FBQSxDQUFBbGlCLENBQUE7Z0JBQUE7Y0FBQTtjQUNoRCxJQUFJLENBQUNwUixPQUFPLENBQUNTLEtBQUssQ0FBQyw0QkFBNEIsRUFBRUYsS0FBSyxDQUFDO2NBQ3ZELElBQUksQ0FBQ3dwQixlQUFlLENBQUNPLEtBQUssQ0FBQy96QixLQUFLLEdBQUdteEIsc0RBQVksQ0FBQzBKLFlBQVk7Y0FDNUQsSUFBSSxDQUFDckgsZUFBZSxDQUFDaUIsVUFBVSxDQUFDejBCLEtBQUssR0FBRyxLQUFLO2NBQzdDLElBQUksQ0FBQzJ6QixhQUFhLENBQUMwRSxVQUFVLENBQUNyNEIsS0FBSyxHQUFHLEtBQUs7Y0FBQyxPQUFBKzhCLFNBQUEsQ0FBQW5oQixDQUFBO1lBQUE7Y0FBQSxLQUsxQyxJQUFJLENBQUM4WCx1QkFBdUIsQ0FBQ1AsNEJBQTRCO2dCQUFBNEosU0FBQSxDQUFBbGlCLENBQUE7Z0JBQUE7Y0FBQTtjQUFBbWhCLHFCQUFBLEdBQ3pCdkssNkVBQW9CLENBQUN1TCxpQ0FBaUMsQ0FBYSxPQUFPLEVBQUUsSUFBSSxDQUFDdEosdUJBQXVCLENBQUNQLDRCQUE0QixDQUFDLEVBQWpLOEksS0FBSyxHQUFBRCxxQkFBQSxDQUFMQyxLQUFLLEVBQUVDLGdCQUFnQixHQUFBRixxQkFBQSxDQUFoQkUsZ0JBQWdCO2NBQUEsSUFFekJELEtBQUs7Z0JBQUFjLFNBQUEsQ0FBQWxpQixDQUFBO2dCQUFBO2NBQUE7Y0FDUixJQUFJLENBQUNwUixPQUFPLENBQUNTLEtBQUssQ0FBQ2d5QixnQkFBZ0IsQ0FBQztjQUNwQyxJQUFJLENBQUMxSSxlQUFlLENBQUNPLEtBQUssQ0FBQy96QixLQUFLLEdBQUdteEIsc0RBQVksQ0FBQzhKLGtCQUFrQjtjQUNsRSxJQUFJLENBQUN6SCxlQUFlLENBQUNpQixVQUFVLENBQUN6MEIsS0FBSyxHQUFHLEtBQUs7Y0FDN0MsSUFBSSxDQUFDMnpCLGFBQWEsQ0FBQzBFLFVBQVUsQ0FBQ3I0QixLQUFLLEdBQUcsS0FBSztjQUFDLE9BQUErOEIsU0FBQSxDQUFBbmhCLENBQUE7WUFBQTtjQUFBLEtBTTVDLElBQUksQ0FBQzhYLHVCQUF1QixDQUFDTiw0QkFBNEI7Z0JBQUEySixTQUFBLENBQUFsaUIsQ0FBQTtnQkFBQTtjQUFBO2NBQUFzaEIsc0JBQUEsR0FDekIxSyw2RUFBb0IsQ0FBQ3VMLGlDQUFpQyxDQUFZLE9BQU8sRUFBRSxJQUFJLENBQUN0Six1QkFBdUIsQ0FBQ04sNEJBQTRCLENBQUMsRUFBaEs2SSxNQUFLLEdBQUFFLHNCQUFBLENBQUxGLEtBQUssRUFBRUMsaUJBQWdCLEdBQUFDLHNCQUFBLENBQWhCRCxnQkFBZ0I7Y0FBQSxJQUV6QkQsTUFBSztnQkFBQWMsU0FBQSxDQUFBbGlCLENBQUE7Z0JBQUE7Y0FBQTtjQUNSLElBQUksQ0FBQ3BSLE9BQU8sQ0FBQ1MsS0FBSyxDQUFDZ3lCLGlCQUFnQixDQUFDO2NBQ3BDLElBQUksQ0FBQzFJLGVBQWUsQ0FBQ08sS0FBSyxDQUFDL3pCLEtBQUssR0FBR214QixzREFBWSxDQUFDOEosa0JBQWtCO2NBQ2xFLElBQUksQ0FBQ3pILGVBQWUsQ0FBQ2lCLFVBQVUsQ0FBQ3owQixLQUFLLEdBQUcsS0FBSztjQUM3QyxJQUFJLENBQUMyekIsYUFBYSxDQUFDMEUsVUFBVSxDQUFDcjRCLEtBQUssR0FBRyxLQUFLO2NBQUMsT0FBQSs4QixTQUFBLENBQUFuaEIsQ0FBQTtZQUFBO2NBQUEsS0FNNUMsSUFBSSxDQUFDOFgsdUJBQXVCLENBQUNMLHNCQUFzQjtnQkFBQTBKLFNBQUEsQ0FBQWxpQixDQUFBO2dCQUFBO2NBQUE7Y0FBQXloQixxQkFBQSxHQUNuQjlLLDBFQUFpQixDQUFDeUwseUJBQXlCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQ3ZKLHVCQUF1QixDQUFDTCxzQkFBc0IsQ0FBQyxFQUFwSTRJLE9BQUssR0FBQUsscUJBQUEsQ0FBTEwsS0FBSyxFQUFFQyxrQkFBZ0IsR0FBQUkscUJBQUEsQ0FBaEJKLGdCQUFnQjtjQUFBLElBRXpCRCxPQUFLO2dCQUFBYyxTQUFBLENBQUFsaUIsQ0FBQTtnQkFBQTtjQUFBO2NBQ1IsSUFBSSxDQUFDcFIsT0FBTyxDQUFDUyxLQUFLLENBQUNneUIsa0JBQWdCLENBQUM7Y0FDcEMsSUFBSSxDQUFDMUksZUFBZSxDQUFDTyxLQUFLLENBQUMvekIsS0FBSyxHQUFHbXhCLHNEQUFZLENBQUM4SixrQkFBa0I7Y0FDbEUsSUFBSSxDQUFDekgsZUFBZSxDQUFDaUIsVUFBVSxDQUFDejBCLEtBQUssR0FBRyxLQUFLO2NBQzdDLElBQUksQ0FBQzJ6QixhQUFhLENBQUMwRSxVQUFVLENBQUNyNEIsS0FBSyxHQUFHLEtBQUs7Y0FBQyxPQUFBKzhCLFNBQUEsQ0FBQW5oQixDQUFBO1lBQUE7Y0FBQSxLQU01QyxJQUFJLENBQUM4WCx1QkFBdUIsQ0FBQ0osc0JBQXNCO2dCQUFBeUosU0FBQSxDQUFBbGlCLENBQUE7Z0JBQUE7Y0FBQTtjQUFBNGhCLHNCQUFBLEdBQ25CakwsMEVBQWlCLENBQUN5TCx5QkFBeUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDdkosdUJBQXVCLENBQUNKLHNCQUFzQixDQUFDLEVBQXBJMkksT0FBSyxHQUFBUSxzQkFBQSxDQUFMUixLQUFLLEVBQUVDLGtCQUFnQixHQUFBTyxzQkFBQSxDQUFoQlAsZ0JBQWdCO2NBQUEsSUFFekJELE9BQUs7Z0JBQUFjLFNBQUEsQ0FBQWxpQixDQUFBO2dCQUFBO2NBQUE7Y0FDUixJQUFJLENBQUNwUixPQUFPLENBQUNTLEtBQUssQ0FBQ2d5QixrQkFBZ0IsQ0FBQztjQUNwQyxJQUFJLENBQUMxSSxlQUFlLENBQUNPLEtBQUssQ0FBQy96QixLQUFLLEdBQUdteEIsc0RBQVksQ0FBQzhKLGtCQUFrQjtjQUNsRSxJQUFJLENBQUN6SCxlQUFlLENBQUNpQixVQUFVLENBQUN6MEIsS0FBSyxHQUFHLEtBQUs7Y0FDN0MsSUFBSSxDQUFDMnpCLGFBQWEsQ0FBQzBFLFVBQVUsQ0FBQ3I0QixLQUFLLEdBQUcsS0FBSztjQUFDLE9BQUErOEIsU0FBQSxDQUFBbmhCLENBQUE7WUFBQTtjQUFBLE1BTTVDLElBQUksQ0FBQzhYLHVCQUF1QixDQUFDVCxvQkFBb0IsQ0FBQ2p6QixLQUFLLElBQUksSUFBSSxDQUFDMHpCLHVCQUF1QixDQUFDUiwyQkFBMkIsQ0FBQ2x6QixLQUFLO2dCQUFBKzhCLFNBQUEsQ0FBQWxpQixDQUFBO2dCQUFBO2NBQUE7Y0FDM0gsSUFBSSxDQUFDcFIsT0FBTyxDQUFDUyxLQUFLLENBQUMsK0ZBQStGLENBQUM7Y0FDbkgsSUFBSSxDQUFDc3BCLGVBQWUsQ0FBQ08sS0FBSyxDQUFDL3pCLEtBQUssR0FBR214QixzREFBWSxDQUFDOEosa0JBQWtCO2NBQ2xFLElBQUksQ0FBQ3pILGVBQWUsQ0FBQ2lCLFVBQVUsQ0FBQ3owQixLQUFLLEdBQUcsS0FBSztjQUM3QyxJQUFJLENBQUMyekIsYUFBYSxDQUFDMEUsVUFBVSxDQUFDcjRCLEtBQUssR0FBRyxLQUFLO2NBQUMsT0FBQSs4QixTQUFBLENBQUFuaEIsQ0FBQTtZQUFBO2NBS3hDZ2hCLDBCQUEwQixHQUFHLE9BQU8sSUFBSSxDQUFDbEosdUJBQXVCLENBQUNQLDRCQUE0QixLQUFLLFVBQVUsSUFBSSxPQUFPLElBQUksQ0FBQ08sdUJBQXVCLENBQUNOLDRCQUE0QixLQUFLLFVBQVU7Y0FDL0x5SixvQkFBb0IsR0FBRyxPQUFPLElBQUksQ0FBQ25KLHVCQUF1QixDQUFDTCxzQkFBc0IsS0FBSyxVQUFVLElBQUksT0FBTyxJQUFJLENBQUNLLHVCQUF1QixDQUFDSixzQkFBc0IsS0FBSyxVQUFVO2NBQUEsTUFFL0tzSiwwQkFBMEIsSUFBSUMsb0JBQW9CO2dCQUFBRSxTQUFBLENBQUFsaUIsQ0FBQTtnQkFBQTtjQUFBO2NBQ3BELElBQUksQ0FBQ3BSLE9BQU8sQ0FBQ1MsS0FBSyxDQUFDLDZIQUE2SCxDQUFDO2NBQ2pKLElBQUksQ0FBQ3NwQixlQUFlLENBQUNPLEtBQUssQ0FBQy96QixLQUFLLEdBQUdteEIsc0RBQVksQ0FBQzhKLGtCQUFrQjtjQUNsRSxJQUFJLENBQUN6SCxlQUFlLENBQUNpQixVQUFVLENBQUN6MEIsS0FBSyxHQUFHLEtBQUs7Y0FDN0MsSUFBSSxDQUFDMnpCLGFBQWEsQ0FBQzBFLFVBQVUsQ0FBQ3I0QixLQUFLLEdBQUcsS0FBSztjQUFDLE9BQUErOEIsU0FBQSxDQUFBbmhCLENBQUE7WUFBQTtjQUFBLEtBSzFDLElBQUksQ0FBQzhYLHVCQUF1QixDQUFDVCxvQkFBb0IsQ0FBQ2p6QixLQUFLO2dCQUFBKzhCLFNBQUEsQ0FBQWxpQixDQUFBO2dCQUFBO2NBQUE7Y0FBQSxJQUNwRG5XLHVFQUFpQixDQUFDdzRCLDRCQUE0QjtnQkFBQUgsU0FBQSxDQUFBbGlCLENBQUE7Z0JBQUE7Y0FBQTtjQUNqRCxJQUFJLENBQUNwUixPQUFPLENBQUNTLEtBQUssQ0FBQyxpREFBaUQsQ0FBQztjQUNyRSxJQUFJLENBQUNzcEIsZUFBZSxDQUFDTyxLQUFLLENBQUMvekIsS0FBSyxHQUFHbXhCLHNEQUFZLENBQUM2SixrQkFBa0I7Y0FDbEUsSUFBSSxDQUFDeEgsZUFBZSxDQUFDaUIsVUFBVSxDQUFDejBCLEtBQUssR0FBRyxLQUFLO2NBQzdDLElBQUksQ0FBQzJ6QixhQUFhLENBQUMwRSxVQUFVLENBQUNyNEIsS0FBSyxHQUFHLEtBQUs7Y0FBQyxPQUFBKzhCLFNBQUEsQ0FBQW5oQixDQUFBO1lBQUE7Y0FBQSxJQUt6Q2doQiwwQkFBMEI7Z0JBQUFHLFNBQUEsQ0FBQWxpQixDQUFBO2dCQUFBO2NBQUE7Y0FDN0IsSUFBSSxDQUFDcFIsT0FBTyxDQUFDUyxLQUFLLENBQUMscUdBQXFHLENBQUM7Y0FDekgsSUFBSSxDQUFDc3BCLGVBQWUsQ0FBQ08sS0FBSyxDQUFDL3pCLEtBQUssR0FBR214QixzREFBWSxDQUFDOEosa0JBQWtCO2NBQ2xFLElBQUksQ0FBQ3pILGVBQWUsQ0FBQ2lCLFVBQVUsQ0FBQ3owQixLQUFLLEdBQUcsS0FBSztjQUM3QyxJQUFJLENBQUMyekIsYUFBYSxDQUFDMEUsVUFBVSxDQUFDcjRCLEtBQUssR0FBRyxLQUFLO2NBQUMsT0FBQSs4QixTQUFBLENBQUFuaEIsQ0FBQTtZQUFBO2NBQUFtaEIsU0FBQSxDQUFBbGlCLENBQUE7Y0FBQTtZQUFBO2NBQUEsS0FLMUMraEIsMEJBQTBCO2dCQUFBRyxTQUFBLENBQUFsaUIsQ0FBQTtnQkFBQTtjQUFBO2NBQzVCLElBQUksQ0FBQ3BSLE9BQU8sQ0FBQ1MsS0FBSyxxR0FBcUcsQ0FBQztjQUN4SCxJQUFJLENBQUNzcEIsZUFBZSxDQUFDTyxLQUFLLENBQUMvekIsS0FBSyxHQUFHbXhCLHNEQUFZLENBQUM4SixrQkFBa0I7Y0FDbEUsSUFBSSxDQUFDekgsZUFBZSxDQUFDaUIsVUFBVSxDQUFDejBCLEtBQUssR0FBRyxLQUFLO2NBQzdDLElBQUksQ0FBQzJ6QixhQUFhLENBQUMwRSxVQUFVLENBQUNyNEIsS0FBSyxHQUFHLEtBQUs7Y0FBQyxPQUFBKzhCLFNBQUEsQ0FBQW5oQixDQUFBO1lBQUE7Y0FBQSxLQU01QyxJQUFJLENBQUM4WCx1QkFBdUIsQ0FBQ1IsMkJBQTJCLENBQUNsekIsS0FBSztnQkFBQSs4QixTQUFBLENBQUFsaUIsQ0FBQTtnQkFBQTtjQUFBO2NBQUEsSUFDMURuVyx1RUFBaUIsQ0FBQzZJLG1DQUFtQyxJQUFJN0ksdUVBQWlCLENBQUM4SSxnQ0FBZ0M7Z0JBQUF1dkIsU0FBQSxDQUFBbGlCLENBQUE7Z0JBQUE7Y0FBQTtjQUMvRyxJQUFJLENBQUNwUixPQUFPLENBQUNTLEtBQUssQ0FBQyx1REFBdUQsQ0FBQztjQUMzRSxJQUFJLENBQUNzcEIsZUFBZSxDQUFDTyxLQUFLLENBQUMvekIsS0FBSyxHQUFHbXhCLHNEQUFZLENBQUM2SixrQkFBa0I7Y0FDbEUsSUFBSSxDQUFDeEgsZUFBZSxDQUFDaUIsVUFBVSxDQUFDejBCLEtBQUssR0FBRyxLQUFLO2NBQzdDLElBQUksQ0FBQzJ6QixhQUFhLENBQUMwRSxVQUFVLENBQUNyNEIsS0FBSyxHQUFHLEtBQUs7Y0FBQyxPQUFBKzhCLFNBQUEsQ0FBQW5oQixDQUFBO1lBQUE7Y0FBQSxJQUt6Q2loQixvQkFBb0I7Z0JBQUFFLFNBQUEsQ0FBQWxpQixDQUFBO2dCQUFBO2NBQUE7Y0FDdkIsSUFBSSxDQUFDcFIsT0FBTyxDQUFDUyxLQUFLLENBQUMseUdBQXlHLENBQUM7Y0FDN0gsSUFBSSxDQUFDc3BCLGVBQWUsQ0FBQ08sS0FBSyxDQUFDL3pCLEtBQUssR0FBR214QixzREFBWSxDQUFDOEosa0JBQWtCO2NBQ2xFLElBQUksQ0FBQ3pILGVBQWUsQ0FBQ2lCLFVBQVUsQ0FBQ3owQixLQUFLLEdBQUcsS0FBSztjQUM3QyxJQUFJLENBQUMyekIsYUFBYSxDQUFDMEUsVUFBVSxDQUFDcjRCLEtBQUssR0FBRyxLQUFLO2NBQUMsT0FBQSs4QixTQUFBLENBQUFuaEIsQ0FBQTtZQUFBO2NBQUFtaEIsU0FBQSxDQUFBbGlCLENBQUE7Y0FBQTtZQUFBO2NBQUEsS0FLMUNnaUIsb0JBQW9CO2dCQUFBRSxTQUFBLENBQUFsaUIsQ0FBQTtnQkFBQTtjQUFBO2NBQ3RCLElBQUksQ0FBQ3BSLE9BQU8sQ0FBQ1MsS0FBSyx5R0FBeUcsQ0FBQztjQUM1SCxJQUFJLENBQUNzcEIsZUFBZSxDQUFDTyxLQUFLLENBQUMvekIsS0FBSyxHQUFHbXhCLHNEQUFZLENBQUM4SixrQkFBa0I7Y0FDbEUsSUFBSSxDQUFDekgsZUFBZSxDQUFDaUIsVUFBVSxDQUFDejBCLEtBQUssR0FBRyxLQUFLO2NBQzdDLElBQUksQ0FBQzJ6QixhQUFhLENBQUMwRSxVQUFVLENBQUNyNEIsS0FBSyxHQUFHLEtBQUs7Y0FBQyxPQUFBKzhCLFNBQUEsQ0FBQW5oQixDQUFBO1lBQUE7Y0FNaEQsSUFBSSxDQUFDNFgsZUFBZSxDQUFDcUIsT0FBTyxDQUFDNzBCLEtBQUssR0FBRyxJQUFJO2NBRW5DaUwsR0FBRyxHQUFHLElBQUksQ0FBQ3l2QixNQUFNLENBQUMxd0IsS0FBSyxDQUFDO2NBRTlCLElBQUksQ0FBQ3dwQixlQUFlLENBQUNnRyxXQUFXLENBQUMxNEIsR0FBRyxDQUNsQyxJQUFJLENBQUMweUIsZUFBZSxDQUFDTyxLQUFLLENBQUMzakIsU0FBUyxDQUFDLFVBQUEyakIsS0FBSyxFQUFJO2dCQUM1QyxJQUFJQSxLQUFLLEtBQUs1QyxzREFBWSxDQUFDdHNCLEtBQUssSUFBSWt2QixLQUFLLEtBQUs1QyxzREFBWSxDQUFDa0ssVUFBVSxFQUFFO2tCQUNyRXRKLDZEQUFTLENBQUNvTCwwQkFBMEIsQ0FBQ2x5QixHQUFHLENBQUM7Z0JBQzNDO2NBQ0YsQ0FBQyxDQUNILENBQUM7Y0FFSzZ4QiwyQkFBZ0QsR0FBRyxTQUFuREEsMkJBQWdEQSxDQUFBO2dCQUFBLE9BQVMsSUFBSTFlLE9BQU8sQ0FBQyxVQUFDMkgsT0FBTyxFQUFXO2tCQUM1RixJQUFJLENBQUM4VixNQUFJLENBQUNqRCxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUU7b0JBQzVCaUQsTUFBSSxDQUFDcHlCLE9BQU8sQ0FBQ2dMLEtBQUssQ0FBQyxzRUFBc0UsRUFBRW9uQixNQUFJLENBQUNySSxlQUFlLENBQUM1cUIsUUFBUSxFQUFFdW9CLHNEQUFZLENBQUMwSyxNQUFJLENBQUNySSxlQUFlLENBQUNPLEtBQUssQ0FBQy96QixLQUFLLENBQUMsQ0FBQztvQkFFekssT0FBTytsQixPQUFPLENBQUMsQ0FBQztrQkFDbEI7a0JBRUE4VixNQUFJLENBQUNsSSxhQUFhLENBQUMwRSxVQUFVLENBQUNyNEIsS0FBSyxHQUFHLEtBQUs7a0JBQzNDNjdCLE1BQUksQ0FBQ3JJLGVBQWUsQ0FBQ08sS0FBSyxDQUFDL3pCLEtBQUssR0FBR214QixzREFBWSxDQUFDcUssZUFBZTtrQkFFL0QsSUFBSUssTUFBSSxDQUFDckksZUFBZSxDQUFDZixZQUFZLENBQUN6eUIsS0FBSyxFQUFFO29CQUMzQzY3QixNQUFJLENBQUNySSxlQUFlLENBQUNmLFlBQVksQ0FBQ3p5QixLQUFLLENBQUNnNUIsS0FBSyxDQUFDLENBQUM7b0JBQy9DNkMsTUFBSSxDQUFDckksZUFBZSxDQUFDZixZQUFZLENBQUN6eUIsS0FBSyxDQUFDaTVCLFNBQVMsR0FBRyxJQUFJO2tCQUMxRDtrQkFFQTRDLE1BQUksQ0FBQ3JJLGVBQWUsQ0FBQ3VCLE9BQU8sQ0FBQy8wQixLQUFLLEdBQUcsS0FBSztrQkFDMUM2N0IsTUFBSSxDQUFDckksZUFBZSxDQUFDcUIsT0FBTyxDQUFDNzBCLEtBQUssR0FBRyxJQUFJO2tCQUV6QyxJQUFJLENBQUMyRSw0Q0FBRyxDQUFDNHpCLDBCQUEwQixDQUFFL1UsWUFBWSxDQUFDeGpCLEtBQUssRUFBRTtvQkFDdkQ2N0IsTUFBSSxDQUFDcHlCLE9BQU8sQ0FBQ2dMLEtBQUssQ0FBQywrREFBK0QsRUFBRW9uQixNQUFJLENBQUNySSxlQUFlLENBQUM1cUIsUUFBUSxDQUFDO29CQUVsSCxJQUFNdzBCLFNBQVMsR0FBR3IrQixnRUFBVyxDQUFDaUIsS0FBSyxDQUFDc0YsVUFBVSxDQUFDLFlBQU07c0JBQ25ELElBQU00WSxPQUFPLEdBQUcyZCxNQUFJLENBQUN3QixtQkFBbUIsQ0FBQyxDQUFDLFNBQ2xDLENBQUMsVUFBQTN5QixDQUFDLEVBQUk7d0JBQ1ZteEIsTUFBSSxDQUFDcHlCLE9BQU8sQ0FBQ1MsS0FBSyxDQUFDLGdDQUFnQyxFQUFFUSxDQUFDLENBQUM7c0JBQ3pELENBQUMsQ0FBQztvQkFDTixDQUFDLEVBQUU0bkIsZ0RBQWdELENBQUM7b0JBRXBEdUosTUFBSSxDQUFDckksZUFBZSxDQUFDZ0csV0FBVyxDQUFDMTRCLEdBQUcsQ0FBQyxJQUFJOUIseURBQVUsQ0FBQyxZQUFNO3NCQUN4REQsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ2tQLFlBQVksQ0FBQ2t1QixTQUFTLENBQUM7b0JBQzNDLENBQUMsQ0FBQyxDQUFDO29CQUVILE9BQU9yWCxPQUFPLENBQUMsQ0FBQztrQkFDbEI7a0JBRUEsT0FBT0EsT0FBTyxDQUFDOFYsTUFBSSxDQUFDd0IsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO2dCQUM1QyxDQUFDLENBQUM7Y0FBQTtjQUVGLElBQUksQ0FBQ3hFLGlCQUFpQixHQUFHL0csMkVBQXVCLENBQUN6VyxNQUFNLENBQUNyUixLQUFLLEVBQUUsSUFBSSxDQUFDd3BCLGVBQWUsRUFBRSxJQUFJLENBQUNDLHNCQUFzQixFQUFFLElBQUksQ0FBQ0MsdUJBQXVCLEVBQUUsSUFBSSxDQUFDNkMsOEJBQThCLEVBQUV1RywyQkFBMkIsQ0FBQztjQUFDLElBRTdNLElBQUksQ0FBQ2pFLGlCQUFpQjtnQkFBQWtFLFNBQUEsQ0FBQWxpQixDQUFBO2dCQUFBO2NBQUE7Y0FDekIsSUFBSSxDQUFDOFksYUFBYSxDQUFDMEUsVUFBVSxDQUFDcjRCLEtBQUssR0FBRyxLQUFLO2NBQUMsT0FBQSs4QixTQUFBLENBQUFuaEIsQ0FBQTtZQUFBO2NBSzlDLElBQUksQ0FBQzRYLGVBQWUsQ0FBQ2dHLFdBQVcsQ0FBQzE0QixHQUFHLENBQUMsSUFBSSxDQUFDKzNCLGlCQUFpQixDQUFDO2NBQUMsT0FBQWtFLFNBQUEsQ0FBQW5oQixDQUFBLElBRXRELElBQUksQ0FBQ2lkLGlCQUFpQixDQUFDWixLQUFLLENBQ2pDaHRCLEdBQUcsRUFDSGpCLEtBQUssRUFDTCt4QixtQkFBbUIsRUFDbkIsSUFBSSxDQUFDNUIsNkJBQTZCLENBQUM5MEIsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQzdDa1ksSUFBSSxDQUFDLFlBQU07Z0JBQ1ZzZSxNQUFJLENBQUNySSxlQUFlLENBQUNxQixPQUFPLENBQUM3MEIsS0FBSyxHQUFHLEtBQUs7Y0FDNUMsQ0FBQyxDQUFDLFNBQ0ksQ0FBQyxVQUFBMEssQ0FBQyxFQUFJO2dCQUNWcXhCLG1CQUFtQixDQUFDaHpCLElBQUksQ0FBQyxDQUFDO2dCQUUxQjh5QixNQUFJLENBQUNySSxlQUFlLENBQUNvQyxZQUFZLENBQUM1MUIsS0FBSyxFQUFFO2dCQUV6QzY3QixNQUFJLENBQUNySSxlQUFlLENBQUNtQixNQUFNLENBQUMzMEIsS0FBSyxHQUFHLEtBQUs7Z0JBRXpDNjdCLE1BQUksQ0FBQzVCLGdCQUFnQixDQUFDLG1DQUFtQyxDQUFDO2dCQUUxRDRCLE1BQUksQ0FBQ3JJLGVBQWUsQ0FBQ08sS0FBSyxDQUFDL3pCLEtBQUssR0FBR214QixzREFBWSxDQUFDc0ssZ0JBQWdCO2dCQUVoRUksTUFBSSxDQUFDcHlCLE9BQU8sQ0FBQ1MsS0FBSyxDQUFDLHlCQUF5QixFQUFFUSxDQUFDLENBQUM7Y0FDbEQsQ0FBQyxDQUFDLFdBQ00sQ0FBQyxZQUFNO2dCQUNibXhCLE1BQUksQ0FBQ2xJLGFBQWEsQ0FBQzBFLFVBQVUsQ0FBQ3I0QixLQUFLLEdBQUcsS0FBSztnQkFFM0MsSUFBSTY3QixNQUFJLENBQUNySSxlQUFlLENBQUNPLEtBQUssQ0FBQy96QixLQUFLLEtBQUtteEIsc0RBQVksQ0FBQ29HLE9BQU8sSUFBSXNFLE1BQUksQ0FBQ3JJLGVBQWUsQ0FBQ08sS0FBSyxDQUFDL3pCLEtBQUssS0FBS214QixzREFBWSxDQUFDaUssTUFBTSxJQUFJUyxNQUFJLENBQUNySSxlQUFlLENBQUNPLEtBQUssQ0FBQy96QixLQUFLLEtBQUtteEIsc0RBQVksQ0FBQ2lHLE9BQU8sSUFBSSxDQUFDenlCLDRDQUFHLENBQUN1ekIsdUJBQXVCLEVBQUU7a0JBQ3ROO2dCQUNGO2dCQUVBLElBQU1rRixTQUFTLEdBQUdyK0IsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ3NGLFVBQVUsQ0FBQyxZQUFNO2tCQUNuRCxJQUFNNFksT0FBTyxHQUFHMmQsTUFBSSxDQUFDd0IsbUJBQW1CLENBQUMsQ0FBQyxTQUNsQyxDQUFDLFVBQUEzeUIsQ0FBQyxFQUFJO29CQUNWbXhCLE1BQUksQ0FBQ3B5QixPQUFPLENBQUNTLEtBQUssQ0FBQyxnQ0FBZ0MsRUFBRVEsQ0FBQyxDQUFDO2tCQUN6RCxDQUFDLENBQUM7Z0JBQ04sQ0FBQyxFQUFFbXhCLE1BQUksQ0FBQ3lCLGdCQUFnQixDQUFDLENBQUMsQ0FBQztnQkFFM0J6QixNQUFJLENBQUNySSxlQUFlLENBQUNnRyxXQUFXLENBQUMxNEIsR0FBRyxDQUFDLElBQUk5Qix5REFBVSxDQUFDLFlBQU07a0JBQ3hERCxnRUFBVyxDQUFDaUIsS0FBSyxDQUFDa1AsWUFBWSxDQUFDa3VCLFNBQVMsQ0FBQztnQkFDM0MsQ0FBQyxDQUFDLENBQUM7Y0FDTCxDQUFDLENBQUM7VUFBQTtRQUFBLEdBQUF4QixRQUFBO01BQUEsQ0FDTDtNQUFBLFNBeFBhaEIsWUFBWUEsQ0FBQTtRQUFBLE9BQUFlLGFBQUEsQ0FBQTFjLEtBQUEsT0FBQTNLLFNBQUE7TUFBQTtNQUFBLE9BQVpzbUIsWUFBWTtJQUFBO0VBQUE7SUFBQTk2QixHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBdTlCLGlCQUFBLEdBQUFoZixtRkFBQSxjQUFBaEMsWUFBQSxHQUFBRSxDQUFBLENBMFAxQixTQUFBK2dCLFNBQUE7UUFBQSxJQUFBdGYsT0FBQTtRQUFBLE9BQUEzQixZQUFBLEdBQUFDLENBQUEsV0FBQWloQixTQUFBO1VBQUEsa0JBQUFBLFNBQUEsQ0FBQTVpQixDQUFBO1lBQUE7Y0FBQSxLQUNNLElBQUksQ0FBQzhZLGFBQWEsQ0FBQzhHLFVBQVU7Z0JBQUFnRCxTQUFBLENBQUE1aUIsQ0FBQTtnQkFBQTtjQUFBO2NBQUEsTUFDekIsSUFBSWhXLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQztZQUFBO2NBQUEsS0FHN0MsSUFBSSxDQUFDNHVCLHNCQUFzQixDQUFDblEsV0FBVyxDQUFDdGpCLEtBQUs7Z0JBQUF5OUIsU0FBQSxDQUFBNWlCLENBQUE7Z0JBQUE7Y0FBQTtjQUFBLE9BQUE0aUIsU0FBQSxDQUFBN2hCLENBQUEsSUFDeEMsSUFBSSxDQUFDdWUsNkJBQTZCLENBQUMsSUFBSSxDQUFDMUcsc0JBQXNCLENBQUNuUSxXQUFXLENBQUN0akIsS0FBSyxDQUFDO1lBQUE7Y0FHMUYsSUFBSSxJQUFJLENBQUN1ekIsYUFBYSxDQUFDdnBCLEtBQUssQ0FBQ2hLLEtBQUssRUFBRTtnQkFDNUJrZSxPQUFPLEdBQUcsSUFBSSxDQUFDK1osS0FBSyxDQUFDLENBQUM7Y0FDOUI7WUFBQztjQUFBLE9BQUF3RixTQUFBLENBQUE3aEIsQ0FBQTtVQUFBO1FBQUEsR0FBQTRoQixRQUFBO01BQUEsQ0FDRjtNQUFBLFNBWmFuRyxnQkFBZ0JBLENBQUE7UUFBQSxPQUFBa0csaUJBQUEsQ0FBQXRlLEtBQUEsT0FBQTNLLFNBQUE7TUFBQTtNQUFBLE9BQWhCK2lCLGdCQUFnQjtJQUFBO0VBQUE7SUFBQXYzQixHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBMDlCLEtBQUEsR0FBQW5mLG1GQUFBLGNBQUFoQyxZQUFBLEdBQUFFLENBQUEsQ0FjOUIsU0FBQWtoQixTQUFBO1FBQUEsSUFBQXJhLFdBQUE7UUFBQSxPQUFBL0csWUFBQSxHQUFBQyxDQUFBLFdBQUFvaEIsU0FBQTtVQUFBLGtCQUFBQSxTQUFBLENBQUEvaUIsQ0FBQTtZQUFBO2NBQ1F5SSxXQUFXLEdBQUcsSUFBSSxDQUFDbVEsc0JBQXNCLENBQUNuUSxXQUFXLENBQUN0akIsS0FBSztjQUFBLElBRTVEc2pCLFdBQVc7Z0JBQUFzYSxTQUFBLENBQUEvaUIsQ0FBQTtnQkFBQTtjQUFBO2NBQUEsT0FBQStpQixTQUFBLENBQUFoaUIsQ0FBQSxJQUNQLElBQUksQ0FBQ3FjLEtBQUssQ0FBQyxDQUFDO1lBQUE7Y0FBQSxPQUFBMkYsU0FBQSxDQUFBaGlCLENBQUEsSUFHZCxJQUFJLENBQUN1ZSw2QkFBNkIsQ0FBQzdXLFdBQVcsQ0FBQztVQUFBO1FBQUEsR0FBQXFhLFFBQUE7TUFBQSxDQUN2RDtNQUFBLFNBUllFLElBQUlBLENBQUE7UUFBQSxPQUFBSCxLQUFBLENBQUF6ZSxLQUFBLE9BQUEzSyxTQUFBO01BQUE7TUFBQSxPQUFKdXBCLElBQUk7SUFBQTtFQUFBO0lBQUEvOUIsR0FBQTtJQUFBRSxLQUFBLEVBVWpCLFNBQVFzOUIsZ0JBQWdCQSxDQUFBLEVBQVc7TUFDakMsUUFBUSxJQUFJLENBQUM5SixlQUFlLENBQUNPLEtBQUssQ0FBQy96QixLQUFLO1FBQ3RDLEtBQUtteEIsc0RBQVksQ0FBQytILFlBQVk7UUFDOUIsS0FBSy9ILHNEQUFZLENBQUNtSyxPQUFPO1FBQ3pCLEtBQUtuSyxzREFBWSxDQUFDK0osT0FBTztVQUN2QixPQUFPN0ksb0NBQW9DO1FBQzdDLEtBQUtsQixzREFBWSxDQUFDdHNCLEtBQUs7UUFDdkIsS0FBS3NzQixzREFBWSxDQUFDa0ssVUFBVTtRQUM1QixLQUFLbEssc0RBQVksQ0FBQzBKLFlBQVk7UUFDOUIsS0FBSzFKLHNEQUFZLENBQUMySixhQUFhO1FBQy9CLEtBQUszSixzREFBWSxDQUFDNEosVUFBVTtRQUM1QixLQUFLNUosc0RBQVksQ0FBQ2lHLE9BQU87UUFDekIsS0FBS2pHLHNEQUFZLENBQUNnSyxRQUFRO1FBQzFCLEtBQUtoSyxzREFBWSxDQUFDb0csT0FBTztRQUN6QixLQUFLcEcsc0RBQVksQ0FBQ2lLLE1BQU07UUFDeEIsS0FBS2pLLHNEQUFZLENBQUN3SCxZQUFZO1FBQzlCLEtBQUt4SCxzREFBWSxDQUFDNkosa0JBQWtCO1FBQ3BDLEtBQUs3SixzREFBWSxDQUFDOEosa0JBQWtCO1FBQ3BDLEtBQUs5SixzREFBWSxDQUFDb0ssMkJBQTJCO1FBQzdDLEtBQUtwSyxzREFBWSxDQUFDcUssZUFBZTtRQUNqQyxLQUFLckssc0RBQVksQ0FBQ3NLLGdCQUFnQjtVQUNoQztVQUNBLE9BQU8sSUFBSSxDQUFDcGUsbUJBQW1CLENBQUNzQywyQ0FBMkMsQ0FBQyxJQUFJLENBQUM2VCxlQUFlLENBQUNvQyxZQUFZLENBQUM1MUIsS0FBSyxDQUFDO1FBQ3RIO1VBQ0UyUyxvRUFBaUIsQ0FBQyxJQUFJLENBQUM2Z0IsZUFBZSxDQUFDTyxLQUFLLENBQUMvekIsS0FBSyxDQUFDO01BQ3ZEO0lBQ0Y7RUFBQztJQUFBRixHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBODlCLG9CQUFBLEdBQUF2ZixtRkFBQSxjQUFBaEMsWUFBQSxHQUFBRSxDQUFBLENBRUQsU0FBQXNoQixTQUFBO1FBQUEsSUFBQXJjLEVBQUE7UUFBQSxPQUFBbkYsWUFBQSxHQUFBQyxDQUFBLFdBQUF3aEIsU0FBQTtVQUFBLGtCQUFBQSxTQUFBLENBQUFuakIsQ0FBQTtZQUFBO2NBQUE2RyxFQUFBLEdBQ1UsSUFBSSxDQUFDOFIsZUFBZSxDQUFDTyxLQUFLLENBQUMvekIsS0FBSztjQUFBZytCLFNBQUEsQ0FBQW5qQixDQUFBLEdBQUE2RyxFQUFBLEtBQ2pDeVAsc0RBQVksQ0FBQ3RzQixLQUFLLE9BQUE2YyxFQUFBLEtBQ2xCeVAsc0RBQVksQ0FBQ3dILFlBQVksT0FBQWpYLEVBQUEsS0FDekJ5UCxzREFBWSxDQUFDbUssT0FBTyxPQUFBNVosRUFBQSxLQUNwQnlQLHNEQUFZLENBQUMrSixPQUFPLE9BQUF4WixFQUFBLEtBQ3BCeVAsc0RBQVksQ0FBQ2tLLFVBQVUsT0FBQTNaLEVBQUEsS0FDdkJ5UCxzREFBWSxDQUFDb0ssMkJBQTJCLE9BQUE3WixFQUFBLEtBQ3hDeVAsc0RBQVksQ0FBQ3FLLGVBQWUsT0FBQTlaLEVBQUEsS0FDNUJ5UCxzREFBWSxDQUFDc0ssZ0JBQWdCLE9BQUEvWixFQUFBLEtBSTdCeVAsc0RBQVksQ0FBQzBKLFlBQVksT0FBQW5aLEVBQUEsS0FJekJ5UCxzREFBWSxDQUFDMkosYUFBYSxPQUFBcFosRUFBQSxLQUkxQnlQLHNEQUFZLENBQUM0SixVQUFVLE9BQUFyWixFQUFBLEtBSXZCeVAsc0RBQVksQ0FBQ2lHLE9BQU8sT0FBQTFWLEVBQUEsS0FJcEJ5UCxzREFBWSxDQUFDK0gsWUFBWSxPQUFBeFgsRUFBQSxLQUl6QnlQLHNEQUFZLENBQUNvRyxPQUFPLE9BQUE3VixFQUFBLEtBSXBCeVAsc0RBQVksQ0FBQ2lLLE1BQU0sT0FBQTFaLEVBQUEsS0FJbkJ5UCxzREFBWSxDQUFDZ0ssUUFBUSxPQUFBelosRUFBQSxLQUlyQnlQLHNEQUFZLENBQUM2SixrQkFBa0IsUUFBQXRaLEVBQUEsS0FJL0J5UCxzREFBWSxDQUFDOEosa0JBQWtCO2NBQUE7WUFBQTtjQXZDbEMsSUFBSSxDQUFDeHhCLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLDBDQUEwQyxFQUFFLElBQUksQ0FBQzhwQixlQUFlLENBQUNPLEtBQUssQ0FBQy96QixLQUFLLEVBQUVteEIsc0RBQVksQ0FBQyxJQUFJLENBQUNxQyxlQUFlLENBQUNPLEtBQUssQ0FBQy96QixLQUFLLENBQUMsQ0FBQztjQUFDLE9BQUFnK0IsU0FBQSxDQUFBcGlCLENBQUE7WUFBQTtjQUloSixJQUFJLENBQUNuUyxPQUFPLENBQUNDLElBQUksQ0FBQyxpR0FBaUcsQ0FBQztjQUFDLE9BQUFzMEIsU0FBQSxDQUFBcGlCLENBQUE7WUFBQTtjQUlySCxJQUFJLENBQUNuUyxPQUFPLENBQUNDLElBQUksQ0FBQyxtR0FBbUcsQ0FBQztjQUFDLE9BQUFzMEIsU0FBQSxDQUFBcGlCLENBQUE7WUFBQTtjQUl2SCxJQUFJLENBQUNuUyxPQUFPLENBQUNDLElBQUksQ0FBQyxnR0FBZ0csQ0FBQztjQUFDLE9BQUFzMEIsU0FBQSxDQUFBcGlCLENBQUE7WUFBQTtjQUlwSCxJQUFJLENBQUNuUyxPQUFPLENBQUNDLElBQUksQ0FBQyw4Q0FBOEMsQ0FBQztjQUFDLE9BQUFzMEIsU0FBQSxDQUFBcGlCLENBQUE7WUFBQTtjQUlsRSxJQUFJLENBQUNuUyxPQUFPLENBQUNDLElBQUksQ0FBQywwREFBMEQsQ0FBQztjQUFDLE9BQUFzMEIsU0FBQSxDQUFBcGlCLENBQUE7WUFBQTtjQUk5RSxJQUFJLENBQUNuUyxPQUFPLENBQUNDLElBQUksQ0FBQyw2Q0FBNkMsQ0FBQztjQUFDLE9BQUFzMEIsU0FBQSxDQUFBcGlCLENBQUE7WUFBQTtjQUlqRSxJQUFJLENBQUNuUyxPQUFPLENBQUNDLElBQUksQ0FBQyxrRUFBa0UsQ0FBQztjQUFDLE9BQUFzMEIsU0FBQSxDQUFBcGlCLENBQUE7WUFBQTtjQUl0RixJQUFJLENBQUNuUyxPQUFPLENBQUNDLElBQUksQ0FBQyxzREFBc0QsQ0FBQztjQUFDLE9BQUFzMEIsU0FBQSxDQUFBcGlCLENBQUE7WUFBQTtjQUkxRSxJQUFJLENBQUNuUyxPQUFPLENBQUNDLElBQUksQ0FBQyx5RUFBeUUsQ0FBQztjQUFDLE9BQUFzMEIsU0FBQSxDQUFBcGlCLENBQUE7WUFBQTtjQUk3RixJQUFJLENBQUNuUyxPQUFPLENBQUNDLElBQUksQ0FBQyx5RUFBeUUsQ0FBQztjQUFDLE9BQUFzMEIsU0FBQSxDQUFBcGlCLENBQUE7WUFBQTtjQUk3RmpKLG9FQUFpQixDQUFDLElBQUksQ0FBQzZnQixlQUFlLENBQUNPLEtBQUssQ0FBQy96QixLQUFLLENBQUM7WUFBQztjQUFBLE9BQUFnK0IsU0FBQSxDQUFBcGlCLENBQUEsSUFHakQsSUFBSSxDQUFDcWMsS0FBSyxDQUFDLENBQUM7VUFBQTtRQUFBLEdBQUE4RixRQUFBO01BQUEsQ0FDcEI7TUFBQSxTQTFEYVYsbUJBQW1CQSxDQUFBO1FBQUEsT0FBQVMsb0JBQUEsQ0FBQTdlLEtBQUEsT0FBQTNLLFNBQUE7TUFBQTtNQUFBLE9BQW5CK29CLG1CQUFtQjtJQUFBO0VBQUE7SUFBQXY5QixHQUFBO0lBQUFFLEtBQUEsRUE0RGpDLFNBQVFpNkIsZ0JBQWdCQSxDQUFBLEVBQXdEO01BQUEsSUFBQWdFLE1BQUE7TUFBQSxJQUF2RDdGLE1BQWMsR0FBQTlqQixTQUFBLENBQUFoSyxNQUFBLFFBQUFnSyxTQUFBLFFBQUFwTyxTQUFBLEdBQUFvTyxTQUFBLE1BQUcwZCw4QkFBOEI7TUFDdEUsSUFBSSxDQUFDNkcsaUJBQWlCLEdBQUcsSUFBSTtNQUM3QixJQUFJLENBQUNyRixlQUFlLENBQUNnRyxXQUFXLENBQUNuNUIsT0FBTyxDQUFDLENBQUM7TUFDMUMsSUFBSSxDQUFDb3pCLHNCQUFzQixDQUFDeUsscUJBQXFCLENBQUMsQ0FBQztNQUNuRCxJQUFJLENBQUN6SyxzQkFBc0IsQ0FBQzBLLGtCQUFrQixDQUFDLENBQUM7TUFFaEQsSUFBSSxDQUFDM0ssZUFBZSxDQUFDYSxVQUFVLENBQUNyMEIsS0FBSyxHQUFHLEtBQUs7TUFDN0MsSUFBSSxDQUFDd3pCLGVBQWUsQ0FBQ1csU0FBUyxDQUFDbjBCLEtBQUssR0FBRyxLQUFLO01BQzVDLElBQUksQ0FBQ3d6QixlQUFlLENBQUN1QixPQUFPLENBQUMvMEIsS0FBSyxHQUFHLEtBQUs7TUFDMUMsSUFBSSxDQUFDd3pCLGVBQWUsQ0FBQzJCLE9BQU8sQ0FBQ24xQixLQUFLLEdBQUcsSUFBSTtNQUN6QyxJQUFJLENBQUN3ekIsZUFBZSxDQUFDeUIsT0FBTyxDQUFDajFCLEtBQUssR0FBRyxLQUFLO01BRTFDLElBQUksSUFBSSxDQUFDd3pCLGVBQWUsQ0FBQ3dDLE1BQU0sQ0FBQ2gyQixLQUFLLElBQUksSUFBSSxDQUFDd3pCLGVBQWUsQ0FBQ3NDLFFBQVEsQ0FBQzkxQixLQUFLLEVBQUU7UUFDNUUsSUFBTWtlLE9BQU8sR0FBRyxJQUFJLENBQUNzVixlQUFlLENBQUNzQyxRQUFRLENBQUM5MUIsS0FBSyxDQUFDbytCLGFBQWEsQ0FBQyxJQUFJLENBQUM1SyxlQUFlLENBQUN3QyxNQUFNLENBQUNoMkIsS0FBSyxFQUFFbzRCLE1BQU0sQ0FBQyxDQUN6RzdhLElBQUksQ0FBQyxVQUFBclcsS0FBQSxFQUFjO1VBQUEsSUFBWjBZLE1BQU0sR0FBQTFZLEtBQUEsQ0FBTjBZLE1BQU07VUFDWixJQUFJQSxNQUFNLEtBQUssSUFBSSxFQUFFO1lBQ25CcWUsTUFBSSxDQUFDeDBCLE9BQU8sQ0FBQ3VMLElBQUksQ0FBQyxnREFBZ0QsRUFBRWlwQixNQUFJLENBQUNyMUIsUUFBUSxFQUFFZ1gsTUFBTSxDQUFDO1lBRTFGO1VBQ0Y7VUFFQXFlLE1BQUksQ0FBQ3gwQixPQUFPLENBQUNDLElBQUksQ0FBQyx3Q0FBd0MsRUFBRXUwQixNQUFJLENBQUNyMUIsUUFBUSxFQUFFZ1gsTUFBTSxDQUFDO1FBQ3BGLENBQUMsQ0FBQyxTQUNJLENBQUMsVUFBQWxWLENBQUMsRUFBSTtVQUNWdXpCLE1BQUksQ0FBQ3gwQixPQUFPLENBQUNTLEtBQUssQ0FBQywrQkFBK0IsRUFBRSt6QixNQUFJLENBQUNyMUIsUUFBUSxFQUFFOEIsQ0FBQyxDQUFDO1FBQ3ZFLENBQUMsQ0FBQztNQUNOO01BRUEsSUFBSSxJQUFJLENBQUMrbkIsWUFBWSxJQUFJLElBQUksQ0FBQ0EsWUFBWSxDQUFDd0UsT0FBTyxFQUFFO1FBQ2xELElBQUksQ0FBQ3hFLFlBQVksQ0FBQ3dFLE9BQU8sQ0FBQ3hkLFNBQVMsR0FBRyxFQUFFO1FBQ3hDLElBQUksQ0FBQ2daLFlBQVksQ0FBQ3dFLE9BQU8sQ0FBQ3J1QixRQUFRLEdBQUcsRUFBRTtNQUN6QztNQUVBLElBQUksQ0FBQzRxQixlQUFlLENBQUN3QyxNQUFNLENBQUNoMkIsS0FBSyxHQUFHLElBQUk7TUFDeEMsSUFBSSxDQUFDd3pCLGVBQWUsQ0FBQ3NDLFFBQVEsQ0FBQzkxQixLQUFLLEdBQUcsSUFBSTtNQUMxQyxJQUFJLENBQUN5ekIsc0JBQXNCLENBQUM0SywrQkFBK0IsR0FBRyxDQUFDO0lBQ2pFO0VBQUM7SUFBQXYrQixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFRdzJCLCtCQUErQkEsQ0FBQ3RyQixZQUFzQixFQUFRO01BQUEsSUFBQW96QixNQUFBO01BQ3BFLElBQU1DLGdDQUFnQyxHQUFHcnpCLFlBQVksQ0FBQzJkLElBQUksQ0FBQyxVQUFBMlYsVUFBVTtRQUFBLE9BQUlBLFVBQVUsQ0FBQzd6QixVQUFVLENBQUMsMkJBQTJCLENBQUM7TUFBQSxFQUFDO01BRTVILElBQUksQ0FBQzRyQiw4QkFBOEIsQ0FBQ2tJLHFCQUFxQixDQUFDeitCLEtBQUssR0FBRyxLQUFLO01BQ3ZFLElBQUksQ0FBQ3UyQiw4QkFBOEIsQ0FBQ21JLHVCQUF1QixDQUFDMStCLEtBQUssR0FBRyxLQUFLO01BQ3pFLElBQUksQ0FBQ3UyQiw4QkFBOEIsQ0FBQ0csU0FBUyxDQUFDMTJCLEtBQUssR0FBRyxLQUFLO01BRTNELElBQUksQ0FBQ3UrQixnQ0FBZ0MsRUFBRTtRQUNyQyxJQUFJLENBQUM5MEIsT0FBTyxDQUFDQyxJQUFJLENBQUMsK0RBQStELENBQUM7UUFFbEY7TUFDRjtNQUVBLElBQUksQ0FBQ2hGLHVFQUFpQixDQUFDaTZCLHdDQUF3QyxFQUFFO1FBQy9ELElBQUksQ0FBQ2wxQixPQUFPLENBQUNDLElBQUksQ0FBQyxnRkFBZ0YsRUFBRTYwQixnQ0FBZ0MsQ0FBQztRQUVySTtNQUNGO01BRUFBLGdDQUFnQyxDQUFDOTdCLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDM0NBLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FDVm9oQixHQUFHLENBQUMsVUFBQSthLE1BQU07UUFBQSxPQUFJQSxNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDO01BQUEsRUFBQyxDQUM1Qmh1QixPQUFPLENBQUMsVUFBQSt0QixNQUFNLEVBQUk7UUFDakIsUUFBUUEsTUFBTTtVQUNaLEtBQUssVUFBVTtZQUNiTixNQUFJLENBQUMvSCw4QkFBOEIsQ0FBQ2tJLHFCQUFxQixDQUFDeitCLEtBQUssR0FBRyxJQUFJO1lBRXRFO1VBQ0YsS0FBSyxZQUFZO1lBQ2ZzK0IsTUFBSSxDQUFDL0gsOEJBQThCLENBQUNtSSx1QkFBdUIsQ0FBQzErQixLQUFLLEdBQUcsSUFBSTtZQUV4RTtVQUNGO1lBQ0VzK0IsTUFBSSxDQUFDNzBCLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLHVEQUF1RCxFQUFFazFCLE1BQU0sQ0FBQztZQUVsRjtRQUNKO01BQ0YsQ0FBQyxDQUFDO01BRUosSUFBSSxDQUFDbjFCLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLDJFQUEyRSxFQUFFLElBQUksQ0FBQzZzQiw4QkFBOEIsQ0FBQ2tJLHFCQUFxQixDQUFDeitCLEtBQUssRUFBRSxJQUFJLENBQUN1MkIsOEJBQThCLENBQUNtSSx1QkFBdUIsQ0FBQzErQixLQUFLLENBQUM7SUFDcE87RUFBQztJQUFBRixHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBOCtCLDhCQUFBLEdBQUF2Z0IsbUZBQUEsY0FBQWhDLFlBQUEsR0FBQUUsQ0FBQSxDQUVELFNBQUFzaUIsU0FBNEN6YixXQUF3QjtRQUFBLElBQUEwYixNQUFBO1FBQUEsSUFBQXZNLFlBQUEsRUFBQXdNLFdBQUE7UUFBQSxPQUFBMWlCLFlBQUEsR0FBQUMsQ0FBQSxXQUFBMGlCLFNBQUE7VUFBQSxrQkFBQUEsU0FBQSxDQUFBcmtCLENBQUE7WUFBQTtjQUM1RDRYLFlBQVksR0FBRyxJQUFJLENBQUNlLGVBQWUsQ0FBQ2YsWUFBWSxDQUFDenlCLEtBQUs7Y0FBQSxJQUV2RHl5QixZQUFZO2dCQUFBeU0sU0FBQSxDQUFBcmtCLENBQUE7Z0JBQUE7Y0FBQTtjQUNmLElBQUksQ0FBQzJZLGVBQWUsQ0FBQ1csU0FBUyxDQUFDbjBCLEtBQUssR0FBRyxLQUFLO2NBQzVDLElBQUksQ0FBQ3d6QixlQUFlLENBQUNhLFVBQVUsQ0FBQ3IwQixLQUFLLEdBQUcsS0FBSztjQUM3QyxJQUFJLENBQUN3ekIsZUFBZSxDQUFDcUIsT0FBTyxDQUFDNzBCLEtBQUssR0FBRyxLQUFLO2NBQzFDLElBQUksQ0FBQ3d6QixlQUFlLENBQUN1QixPQUFPLENBQUMvMEIsS0FBSyxHQUFHLEtBQUs7Y0FDMUMsSUFBSSxDQUFDd3pCLGVBQWUsQ0FBQ08sS0FBSyxDQUFDL3pCLEtBQUssR0FBR214QixzREFBWSxDQUFDaUcsT0FBTztjQUFDLE9BQUE4SCxTQUFBLENBQUF0akIsQ0FBQTtZQUFBO2NBSzFELElBQUksQ0FBQyxJQUFJLENBQUM4WCx1QkFBdUIsQ0FBQ1IsMkJBQTJCLENBQUNsekIsS0FBSyxFQUFFO2dCQUNuRXl5QixZQUFZLENBQUN3RyxTQUFTLEdBQUczVixXQUFXO2NBQ3RDO2NBRU0yYixXQUFXLEdBQUd4TSxZQUFZLENBQUNvTCxJQUFJLENBQUMsQ0FBQztjQUFBLE1BRW5Db0IsV0FBVyxLQUFLLzRCLFNBQVM7Z0JBQUFnNUIsU0FBQSxDQUFBcmtCLENBQUE7Z0JBQUE7Y0FBQTtjQUMzQixJQUFJLENBQUMyWSxlQUFlLENBQUNXLFNBQVMsQ0FBQ24wQixLQUFLLEdBQUcsS0FBSztjQUM1QyxJQUFJLENBQUN3ekIsZUFBZSxDQUFDYSxVQUFVLENBQUNyMEIsS0FBSyxHQUFHLEtBQUs7Y0FDN0MsSUFBSSxDQUFDd3pCLGVBQWUsQ0FBQ3FCLE9BQU8sQ0FBQzcwQixLQUFLLEdBQUcsS0FBSztjQUMxQyxJQUFJLENBQUN3ekIsZUFBZSxDQUFDdUIsT0FBTyxDQUFDLzBCLEtBQUssR0FBRyxJQUFJO2NBQ3pDLElBQUksQ0FBQ3d6QixlQUFlLENBQUNPLEtBQUssQ0FBQy96QixLQUFLLEdBQUdteEIsc0RBQVksQ0FBQ29HLE9BQU87Y0FBQyxPQUFBMkgsU0FBQSxDQUFBdGpCLENBQUE7WUFBQTtjQUFBLE9BQUFzakIsU0FBQSxDQUFBdGpCLENBQUEsSUFLbkRxakIsV0FBVyxDQUFDMWhCLElBQUksQ0FBQyxZQUFNO2dCQUM1QnloQixNQUFJLENBQUN4TCxlQUFlLENBQUNXLFNBQVMsQ0FBQ24wQixLQUFLLEdBQUcsS0FBSztnQkFDNUNnL0IsTUFBSSxDQUFDeEwsZUFBZSxDQUFDYSxVQUFVLENBQUNyMEIsS0FBSyxHQUFHLEtBQUs7Z0JBQzdDZy9CLE1BQUksQ0FBQ3hMLGVBQWUsQ0FBQ3FCLE9BQU8sQ0FBQzcwQixLQUFLLEdBQUcsS0FBSztnQkFDMUNnL0IsTUFBSSxDQUFDeEwsZUFBZSxDQUFDdUIsT0FBTyxDQUFDLzBCLEtBQUssR0FBRyxJQUFJO2dCQUN6Q2cvQixNQUFJLENBQUN4TCxlQUFlLENBQUNPLEtBQUssQ0FBQy96QixLQUFLLEdBQUdteEIsc0RBQVksQ0FBQ29HLE9BQU87Y0FDekQsQ0FBQyxDQUFDLFNBQU0sQ0FBQyxVQUFBN3NCLENBQUMsRUFBSTtnQkFDWixJQUFNeTBCLGFBQWEsR0FBRyxDQUFDLENBQUM3YixXQUFXLENBQUNNLFNBQVMsQ0FBQyxDQUFDLENBQUN3YixNQUFNLENBQUMsVUFBQXRiLEtBQUssRUFBSTtrQkFDOUQsT0FBT0EsS0FBSyxDQUFDakcsSUFBSSxLQUFLLE9BQU87Z0JBQy9CLENBQUMsQ0FBQyxDQUFDdlQsTUFBTTtnQkFDVCxJQUFNKzBCLHNDQUFzQyxHQUFHLENBQUMxNkIsNENBQUcsQ0FBQzByQixtQ0FBbUM7Z0JBRXZGLElBQUlnUCxzQ0FBc0MsSUFBSTVNLFlBQVksQ0FBQzZILEtBQUssSUFBSSxDQUFDNkUsYUFBYSxFQUFFO2tCQUNsRjFNLFlBQVksQ0FBQ3dHLFNBQVMsR0FBRyxJQUFJO2tCQUM3QitGLE1BQUksQ0FBQ3hMLGVBQWUsQ0FBQ1csU0FBUyxDQUFDbjBCLEtBQUssR0FBRyxLQUFLO2tCQUM1Q2cvQixNQUFJLENBQUN4TCxlQUFlLENBQUNhLFVBQVUsQ0FBQ3IwQixLQUFLLEdBQUcsSUFBSTtrQkFDNUNnL0IsTUFBSSxDQUFDeEwsZUFBZSxDQUFDcUIsT0FBTyxDQUFDNzBCLEtBQUssR0FBRyxLQUFLO2tCQUMxQ2cvQixNQUFJLENBQUN4TCxlQUFlLENBQUN1QixPQUFPLENBQUMvMEIsS0FBSyxHQUFHLEtBQUs7a0JBQzFDZy9CLE1BQUksQ0FBQ3hMLGVBQWUsQ0FBQ08sS0FBSyxDQUFDL3pCLEtBQUssR0FBR214QixzREFBWSxDQUFDaUssTUFBTTtrQkFFdEQsSUFBSWlFLHNDQUFzQyxFQUFFO29CQUMxQ0wsTUFBSSxDQUFDdjFCLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLG1FQUFtRSxFQUFFczFCLE1BQUksQ0FBQ3AyQixRQUFRLEVBQUU4QixDQUFDLENBQUM7b0JBRXhHO2tCQUNGO2tCQUVBLElBQUl5MEIsYUFBYSxFQUFFO29CQUNqQkgsTUFBSSxDQUFDdjFCLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLHlEQUF5RCxFQUFFczFCLE1BQUksQ0FBQ3AyQixRQUFRLEVBQUU4QixDQUFDLENBQUM7b0JBRTlGO2tCQUNGO2tCQUVBczBCLE1BQUksQ0FBQ3YxQixPQUFPLENBQUNDLElBQUksQ0FBQywrREFBK0QsRUFBRXMxQixNQUFJLENBQUNwMkIsUUFBUSxFQUFFOEIsQ0FBQyxDQUFDO2tCQUVwRztnQkFDRjtnQkFFQStuQixZQUFZLENBQUM2SCxLQUFLLEdBQUcsSUFBSTtnQkFFekIsT0FBTzdILFlBQVksQ0FBQ29MLElBQUksQ0FBQyxDQUFDLENBQ3ZCdGdCLElBQUksQ0FBQyxZQUFNO2tCQUNWeWhCLE1BQUksQ0FBQ3YxQixPQUFPLENBQUNDLElBQUksQ0FBQyw2RUFBNkUsRUFBRXMxQixNQUFJLENBQUNwMkIsUUFBUSxDQUFDO2tCQUUvR28yQixNQUFJLENBQUN4TCxlQUFlLENBQUNXLFNBQVMsQ0FBQ24wQixLQUFLLEdBQUcsSUFBSTtrQkFDM0NnL0IsTUFBSSxDQUFDeEwsZUFBZSxDQUFDYSxVQUFVLENBQUNyMEIsS0FBSyxHQUFHLEtBQUs7a0JBQzdDZy9CLE1BQUksQ0FBQ3hMLGVBQWUsQ0FBQ3FCLE9BQU8sQ0FBQzcwQixLQUFLLEdBQUcsS0FBSztrQkFDMUNnL0IsTUFBSSxDQUFDeEwsZUFBZSxDQUFDdUIsT0FBTyxDQUFDLzBCLEtBQUssR0FBRyxJQUFJO2tCQUN6Q2cvQixNQUFJLENBQUN4TCxlQUFlLENBQUNPLEtBQUssQ0FBQy96QixLQUFLLEdBQUdteEIsc0RBQVksQ0FBQ29HLE9BQU87Z0JBQ3pELENBQUMsQ0FBQyxTQUFNLENBQUMsVUFBQTdzQixDQUFDLEVBQUk7a0JBQ1orbkIsWUFBWSxDQUFDNkgsS0FBSyxHQUFHLEtBQUs7a0JBRTFCMEUsTUFBSSxDQUFDdjFCLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLHlEQUF5RCxFQUFFczFCLE1BQUksQ0FBQ3AyQixRQUFRLEVBQUU4QixDQUFDLENBQUM7a0JBRTlGK25CLFlBQVksQ0FBQ3dHLFNBQVMsR0FBRyxJQUFJO2tCQUM3QitGLE1BQUksQ0FBQ3hMLGVBQWUsQ0FBQ1csU0FBUyxDQUFDbjBCLEtBQUssR0FBRyxLQUFLO2tCQUM1Q2cvQixNQUFJLENBQUN4TCxlQUFlLENBQUNhLFVBQVUsQ0FBQ3IwQixLQUFLLEdBQUcsSUFBSTtrQkFDNUNnL0IsTUFBSSxDQUFDeEwsZUFBZSxDQUFDcUIsT0FBTyxDQUFDNzBCLEtBQUssR0FBRyxLQUFLO2tCQUMxQ2cvQixNQUFJLENBQUN4TCxlQUFlLENBQUN1QixPQUFPLENBQUMvMEIsS0FBSyxHQUFHLEtBQUs7a0JBQzFDZy9CLE1BQUksQ0FBQ3hMLGVBQWUsQ0FBQ08sS0FBSyxDQUFDL3pCLEtBQUssR0FBR214QixzREFBWSxDQUFDaUssTUFBTTtnQkFDeEQsQ0FBQyxDQUFDO2NBQ04sQ0FBQyxDQUFDO1VBQUE7UUFBQSxHQUFBMkQsUUFBQTtNQUFBLENBQ0g7TUFBQSxTQTFGYTVFLDZCQUE2QkEsQ0FBQTNQLEdBQUE7UUFBQSxPQUFBc1UsOEJBQUEsQ0FBQTdmLEtBQUEsT0FBQTNLLFNBQUE7TUFBQTtNQUFBLE9BQTdCNmxCLDZCQUE2QjtJQUFBO0VBQUE7QUFBQTs7Ozs7Ozs7Ozs7QUNybkM3QztBQUNBO0FBQ0E7QUFGQSxJQUlLaEosWUFBWSwwQkFBWkEsWUFBWTtFQUFaQSxZQUFZLENBQVpBLFlBQVk7RUFBWkEsWUFBWSxDQUFaQSxZQUFZO0VBQVpBLFlBQVksQ0FBWkEsWUFBWTtFQUFaQSxZQUFZLENBQVpBLFlBQVk7RUFBWkEsWUFBWSxDQUFaQSxZQUFZO0VBQVpBLFlBQVksQ0FBWkEsWUFBWTtFQUFaQSxZQUFZLENBQVpBLFlBQVk7RUFBWkEsWUFBWSxDQUFaQSxZQUFZO0VBQVpBLFlBQVksQ0FBWkEsWUFBWTtFQUFaQSxZQUFZLENBQVpBLFlBQVk7RUFBWkEsWUFBWSxDQUFaQSxZQUFZO0VBQVpBLFlBQVksQ0FBWkEsWUFBWTtFQUFaQSxZQUFZLENBQVpBLFlBQVk7RUFBWkEsWUFBWSxDQUFaQSxZQUFZO0VBQVpBLFlBQVksQ0FBWkEsWUFBWTtFQUFaQSxZQUFZLENBQVpBLFlBQVk7RUFBWkEsWUFBWSxDQUFaQSxZQUFZO0VBQVpBLFlBQVksQ0FBWkEsWUFBWTtFQUFBLE9BQVpBLFlBQVk7QUFBQSxFQUFaQSxZQUFZO0FBcUJqQiwrREFBZUEsWUFBWSxFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3pCM0I7QUFDQTtBQUNBOztBQUlvRTtBQUMzQztBQUd5QjtBQUFBLElBYzdCbU8sUUFBUTtFQWlDM0IsU0FBQUEsU0FBQSxFQUFzQjtJQUFBaGdDLGlGQUFBLE9BQUFnZ0MsUUFBQTtJQUNwQixNQUFNLElBQUl6NkIsS0FBSyxDQUFDLHlEQUF5RCxDQUFDO0VBQzVFO0VBQUMsT0FBQWhGLDhFQUFBLENBQUF5L0IsUUFBQTtJQUFBeC9CLEdBQUE7SUFBQUUsS0FBQSxFQWxDRCxTQUFPdS9CLGFBQWFBLENBQUM5ZCxPQUE2QixFQUFXO01BQzNELElBQUksQ0FBQzljLDRDQUFHLENBQUM2NkIsV0FBVyxDQUFDeC9CLEtBQUssRUFBRTtRQUMxQixNQUFNLElBQUk2RSxLQUFLLENBQUMsb0JBQW9CLENBQUM7TUFDdkM7TUFFQSxJQUFNNDZCLGNBQThCLEdBQUc7UUFDckM5TSxTQUFTLEVBQUVsUixPQUFPLENBQUNrUixTQUFTO1FBQzVCUSw0QkFBNEIsRUFBRTFSLE9BQU8sQ0FBQzBSLDRCQUE0QjtRQUNsRUMsNEJBQTRCLEVBQUUzUixPQUFPLENBQUMyUiw0QkFBNEI7UUFDbEVDLHNCQUFzQixFQUFFNVIsT0FBTyxDQUFDNFIsc0JBQXNCO1FBQ3REQyxzQkFBc0IsRUFBRTdSLE9BQU8sQ0FBQzZSO01BQ2xDLENBQUM7TUFDRCxJQUFNb00scUNBR0wsR0FBR2plLE9BQU87TUFFWCxJQUFJaWUscUNBQXFDLENBQUM5TSxrQ0FBa0MsRUFBRTtRQUM1RTZNLGNBQWMsQ0FBQzdNLGtDQUFrQyxHQUFHOE0scUNBQXFDLENBQUM5TSxrQ0FBa0M7TUFDOUg7TUFFQSxJQUFJOE0scUNBQXFDLENBQUM3TSxtQ0FBbUMsRUFBRTtRQUM3RTRNLGNBQWMsQ0FBQzVNLG1DQUFtQyxHQUFHNk0scUNBQXFDLENBQUM3TSxtQ0FBbUM7TUFDaEk7TUFFQSxPQUFPLElBQUlMLGdEQUFPLENBQUMvUSxPQUFPLENBQUNnUixZQUFZLEVBQUVoUixPQUFPLENBQUN6WCxLQUFLLEVBQUV5MUIsY0FBYyxDQUFDO0lBQ3pFO0VBQUM7SUFBQTMvQixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQStEO01BQzdELE9BQU8yRSxzRUFBaUIsQ0FBQ2k2Qix3Q0FBd0M7SUFDbkU7RUFBQztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3ZESDtBQUNBO0FBQ0E7O0FBRXVDO0FBQ2E7QUFDTjtBQU1yQjtBQUNvQztBQUNOO0FBR3ZELElBQU1nQixnQkFBZ0IsR0FBRyxDQUFDO0FBQUMsSUFRTnBPLGNBQWM7RUErQmpDLFNBQUFBLGVBQVk5UCxPQUErQixFQUFFO0lBQUEsSUFBQW1lLGtCQUFBLEVBQUFDLHFCQUFBLEVBQUFDLHNCQUFBO0lBQUF4Z0MsaUZBQUEsT0FBQWl5QixjQUFBO0lBQUFoeUIsaUZBQUE7SUFBQUEsaUZBQUE7SUFBQUEsaUZBQUE7SUFBQUEsaUZBQUE7SUFBQUEsaUZBQUE7SUFBQUEsaUZBQUE7SUFBQUEsaUZBQUE7SUFBQUEsaUZBQUE7SUFBQUEsaUZBQUE7SUFBQUEsaUZBQUE7SUFBQUEsaUZBQUE7SUFBQUEsaUZBQUE7SUFBQUEsaUZBQUE7SUFBQUEsaUZBQUE7SUFBQUEsaUZBQUE7SUFBQUEsaUZBQUE7SUFBQUEsaUZBQUE7SUFBQUEsaUZBQUE7SUFBQUEsaUZBQUE7SUFBQUEsaUZBQUE7SUFBQUEsaUZBQUE7SUFBQUEsaUZBQUE7SUFBQUEsaUZBQUE7SUFBQUEsaUZBQUE7SUFBQUEsaUZBQUE7SUFBQUEsaUZBQUE7SUFBQUEsaUZBQUE7SUFBQUEsaUZBQUE7SUFBQUEsaUZBQUE7SUFDM0MsSUFBSSxDQUFDaTZCLFdBQVcsR0FBRyxJQUFJdjZCLDREQUFjLENBQUMsQ0FBQztJQUN2QyxJQUFJLENBQUNtM0Isa0JBQWtCLEdBQUcsSUFBSW4zQiw0REFBYyxDQUFDLENBQUM7SUFDOUMsSUFBSSxDQUFDODNCLG1CQUFtQixHQUFHLElBQUk5M0IsNERBQWMsQ0FBQyxDQUFDO0lBQy9DLElBQUksQ0FBQ3k0QixxQkFBcUIsR0FBRyxJQUFJbDRCLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLElBQUksQ0FBQ2l6QixZQUFZLEdBQUcsSUFBSXZ6QixtREFBTyxDQUEwQixJQUFJLENBQUM7SUFDOUQsSUFBSSxDQUFDNjBCLEtBQUssR0FBRyxJQUFJNzBCLG1EQUFPLENBQWVpeUIsOERBQVksQ0FBQytILFlBQVksQ0FBQztJQUNqRSxJQUFJLENBQUNqRixNQUFNLEdBQUcsSUFBSS8wQixtREFBTyxDQUFpQixJQUFJLENBQUM7SUFDL0MsSUFBSSxDQUFDaTFCLFNBQVMsR0FBRyxJQUFJajFCLG1EQUFPLENBQVUsS0FBSyxDQUFDO0lBQzVDLElBQUksQ0FBQ20xQixVQUFVLEdBQUcsSUFBSW4xQixtREFBTyxDQUFVLEtBQUssQ0FBQztJQUM3QyxJQUFJLENBQUN1MUIsVUFBVSxHQUFHLElBQUl2MUIsbURBQU8sQ0FBVSxJQUFJLENBQUM7SUFDNUMsSUFBSSxDQUFDeTFCLE1BQU0sR0FBRyxJQUFJejFCLG1EQUFPLENBQVUsSUFBSSxDQUFDO0lBQ3hDLElBQUksQ0FBQzIxQixPQUFPLEdBQUcsSUFBSTMxQixtREFBTyxDQUFVLEtBQUssQ0FBQztJQUMxQyxJQUFJLENBQUM2MUIsT0FBTyxHQUFHLElBQUk3MUIsbURBQU8sQ0FBVSxLQUFLLENBQUM7SUFDMUMsSUFBSSxDQUFDKzFCLE9BQU8sR0FBRyxJQUFJLzFCLG1EQUFPLENBQVUsS0FBSyxDQUFDO0lBQzFDLElBQUksQ0FBQ2kyQixPQUFPLEdBQUcsSUFBSWoyQixtREFBTyxDQUFVLEtBQUssQ0FBQztJQUMxQyxJQUFJLENBQUN5ekIsU0FBUyxHQUFHLElBQUl6ekIsbURBQU8sRUFBQTBnQyxrQkFBQSxHQUFjbmUsT0FBTyxhQUFQQSxPQUFPLHVCQUFQQSxPQUFPLENBQUVrUixTQUFTLGNBQUFpTixrQkFBQSxjQUFBQSxrQkFBQSxHQUFJRCxnQkFBZ0IsQ0FBQztJQUNqRixJQUFJLENBQUNySyxHQUFHLEdBQUcsSUFBSXAyQixtREFBTyxDQUEwQmdILFNBQVMsQ0FBQztJQUMxRCxJQUFJLENBQUNzdkIsWUFBWSxHQUFHLElBQUl0MkIsbURBQU8sQ0FBZ0IsQ0FBQyxDQUFDO0lBQ2pELElBQUksQ0FBQ3cyQixVQUFVLEdBQUcsSUFBSXgyQixtREFBTyxDQUFZZ3lCLHdEQUFTLENBQUNxSSxLQUFLLENBQUM7SUFDekQsSUFBSSxDQUFDM0QsWUFBWSxHQUFHLElBQUkxMkIsbURBQU8sQ0FBUyxDQUFDLENBQUM7SUFDMUMsSUFBSSxDQUFDNDJCLFFBQVEsR0FBRyxJQUFJNTJCLG1EQUFPLENBQWtCLElBQUksQ0FBQztJQUNsRCxJQUFJLENBQUMwekIsa0NBQWtDLElBQUFpTixxQkFBQSxHQUFHcGUsT0FBTyxhQUFQQSxPQUFPLHVCQUFQQSxPQUFPLENBQUVtUixrQ0FBa0MsY0FBQWlOLHFCQUFBLGNBQUFBLHFCQUFBLEdBQUksSUFBSTtJQUM3RixJQUFJLENBQUNoTixtQ0FBbUMsSUFBQWlOLHNCQUFBLEdBQUdyZSxPQUFPLGFBQVBBLE9BQU8sdUJBQVBBLE9BQU8sQ0FBRW9SLG1DQUFtQyxjQUFBaU4sc0JBQUEsY0FBQUEsc0JBQUEsR0FBSSxJQUFJO0lBQy9GLElBQUksQ0FBQzlKLE1BQU0sR0FBRyxJQUFJOTJCLG1EQUFPLENBQWlCLElBQUksQ0FBQztJQUMvQyxJQUFJLENBQUNzbUIsYUFBYSxHQUFHLElBQUl0bUIsbURBQU8sQ0FBOEIsSUFBSSxDQUFDO0lBQ25FLElBQUksQ0FBQzgzQixjQUFjLEdBQUcsSUFBSTtJQUMxQixJQUFJLENBQUMrSSxpQkFBaUIsR0FBRyxJQUFJO0lBQzdCLElBQUksQ0FBQ0MsaUJBQWlCLEdBQUcsSUFBSTtJQUM3QixJQUFJLENBQUMxSSx3QkFBd0IsR0FBRyxDQUFDO0VBQ25DO0VBQUMsT0FBQXozQiw4RUFBQSxDQUFBMHhCLGNBQUE7SUFBQXp4QixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXVCO01BQ3JCLElBQU1pMkIsTUFBTSxHQUFHLElBQUksQ0FBQ0EsTUFBTSxDQUFDaDJCLEtBQUs7TUFFaEMsSUFBSSxDQUFDZzJCLE1BQU0sRUFBRTtRQUNYLE9BQU8sR0FBRztNQUNaO01BRUEsT0FBT0EsTUFBTSxDQUFDcHRCLFFBQVE7SUFDeEI7RUFBQztJQUFBOUksR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQWlnQyxXQUFXQSxDQUFDcmdCLE1BQXVCLEVBQVE7TUFDekMsUUFBUUEsTUFBTTtRQUNaLEtBQUssSUFBSTtVQUNQO1FBQ0YsS0FBSyxjQUFjO1FBQ25CLEtBQUssZ0JBQWdCO1FBQ3JCLEtBQUssYUFBYTtVQUNoQixJQUFJLENBQUM2VSxVQUFVLENBQUN6MEIsS0FBSyxHQUFHLEtBQUs7VUFDN0IsSUFBSSxDQUFDNDFCLFlBQVksQ0FBQzUxQixLQUFLLEdBQUcsQ0FBQztVQUMzQixJQUFJLENBQUMrMEIsT0FBTyxDQUFDLzBCLEtBQUssR0FBRyxLQUFLO1VBQzFCLElBQUksQ0FBQ2kxQixPQUFPLENBQUNqMUIsS0FBSyxHQUFHLElBQUk7VUFDekIsSUFBSSxDQUFDbTFCLE9BQU8sQ0FBQ24xQixLQUFLLEdBQUcsS0FBSztVQUMxQixJQUFJLENBQUNnMkIsTUFBTSxDQUFDaDJCLEtBQUssR0FBRyxJQUFJO1VBRXhCO1FBQ0YsS0FBSyxXQUFXO1FBQ2hCLEtBQUssV0FBVztVQUNkLElBQUksQ0FBQzQxQixZQUFZLENBQUM1MUIsS0FBSyxHQUFHLENBQUM7VUFDM0IsSUFBSSxDQUFDKzBCLE9BQU8sQ0FBQy8wQixLQUFLLEdBQUcsS0FBSztVQUMxQixJQUFJLENBQUNpMUIsT0FBTyxDQUFDajFCLEtBQUssR0FBRyxJQUFJO1VBQ3pCLElBQUksQ0FBQ20xQixPQUFPLENBQUNuMUIsS0FBSyxHQUFHLEtBQUs7VUFDMUIsSUFBSSxDQUFDZzJCLE1BQU0sQ0FBQ2gyQixLQUFLLEdBQUcsSUFBSTtVQUV4QjtRQUNGO1VBQ0UsSUFBSSxDQUFDNDFCLFlBQVksQ0FBQzUxQixLQUFLLEVBQUU7VUFDekIsSUFBSSxDQUFDKzBCLE9BQU8sQ0FBQy8wQixLQUFLLEdBQUcsS0FBSztVQUMxQixJQUFJLENBQUNpMUIsT0FBTyxDQUFDajFCLEtBQUssR0FBRyxJQUFJO1VBQ3pCLElBQUksQ0FBQ20xQixPQUFPLENBQUNuMUIsS0FBSyxHQUFHLEtBQUs7VUFDMUIsSUFBSSxDQUFDZzJCLE1BQU0sQ0FBQ2gyQixLQUFLLEdBQUcsSUFBSTtVQUV4QjtNQUNKO0lBQ0Y7RUFBQztJQUFBRixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBa2dDLDZDQUE2Q0EsQ0FBQSxFQUFTO01BQ3BELElBQUksSUFBSSxDQUFDek4sWUFBWSxDQUFDenlCLEtBQUssSUFBSSxJQUFJLENBQUN5eUIsWUFBWSxDQUFDenlCLEtBQUssQ0FBQ2kzQixPQUFPLEVBQUU7UUFDOUQsSUFBSSxDQUFDeEUsWUFBWSxDQUFDenlCLEtBQUssQ0FBQ2kzQixPQUFPLENBQUN4ZCxTQUFTLEdBQUc5VSw0Q0FBRyxDQUFDd1YsZUFBZTtRQUMvRCxJQUFJLENBQUNzWSxZQUFZLENBQUN6eUIsS0FBSyxDQUFDaTNCLE9BQU8sQ0FBQ3J1QixRQUFRLEdBQUcsSUFBSSxDQUFDQSxRQUFRO01BQzFEO0lBQ0Y7RUFBQztJQUFBOUksR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQW1nQyxpQ0FBaUNBLENBQUN2Z0IsTUFBdUIsRUFBZ0I7TUFDdkUsUUFBUUEsTUFBTTtRQUNaLEtBQUssSUFBSTtVQUNQLE9BQU91Uiw4REFBWSxDQUFDZ0ssUUFBUTtRQUM5QixLQUFLLFdBQVc7UUFDaEIsS0FBSyxXQUFXO1VBQ2QsT0FBT2hLLDhEQUFZLENBQUNtSyxPQUFPO1FBQzdCLEtBQUssZ0JBQWdCO1VBQ25CLE9BQU9uSyw4REFBWSxDQUFDMkosYUFBYTtRQUNuQyxLQUFLLGFBQWE7VUFDaEIsT0FBTzNKLDhEQUFZLENBQUM0SixVQUFVO1FBQ2hDLEtBQUssY0FBYztVQUNqQixPQUFPNUosOERBQVksQ0FBQzBKLFlBQVk7UUFDbEMsS0FBSyxVQUFVO1FBQ2YsS0FBSyxjQUFjO1FBQ25CLEtBQUssU0FBUztVQUNaLE9BQU8xSiw4REFBWSxDQUFDa0ssVUFBVTtRQUNoQyxLQUFLLGVBQWU7VUFDbEIsT0FBT2xLLDhEQUFZLENBQUM4SixrQkFBa0I7UUFDeEMsS0FBSyx5QkFBeUI7VUFDNUIsT0FBTzlKLDhEQUFZLENBQUNvSywyQkFBMkI7UUFDakQsS0FBSyxRQUFRO1VBQ1gsT0FBT3BLLDhEQUFZLENBQUN0c0IsS0FBSztRQUMzQjtVQUNFOE4sbUVBQWlCLENBQUNpTixNQUFNLENBQUM7TUFDN0I7SUFDRjtFQUFDO0lBQUE5ZixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBb2dDLDBCQUEwQkEsQ0FBQ3hnQixNQUF1QixFQUFrQjtNQUNsRSxRQUFRQSxNQUFNO1FBQ1osS0FBSyxJQUFJO1FBQ1QsS0FBSyxXQUFXO1FBQ2hCLEtBQUssZ0JBQWdCO1FBQ3JCLEtBQUssYUFBYTtRQUNsQixLQUFLLGVBQWU7UUFDcEIsS0FBSyx5QkFBeUI7VUFDNUIsT0FBTyxJQUFJO1FBQ2IsS0FBSyxXQUFXO1VBQ2QsT0FBTyxLQUFLO1FBQ2QsS0FBSyxjQUFjO1FBQ25CLEtBQUssU0FBUztRQUNkLEtBQUssY0FBYztRQUNuQixLQUFLLFVBQVU7UUFDZixLQUFLLFFBQVE7VUFDWCxPQUFPLElBQUksQ0FBQ3FVLE1BQU0sQ0FBQ2owQixLQUFLO1FBQzFCO1VBQ0UyUyxtRUFBaUIsQ0FBQ2lOLE1BQU0sQ0FBQztNQUM3QjtJQUNGO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDNUxIO0FBQ0E7QUFDQTs7QUFFdUM7QUFBQSxJQUdsQmlTLDZCQUE2QixnQkFBQWh5Qiw4RUFBQSxDQU9oRCxTQUFBZ3lCLDhCQUFBLEVBQWM7RUFBQXZ5QixpRkFBQSxPQUFBdXlCLDZCQUFBO0VBQUF0eUIsaUZBQUE7RUFBQUEsaUZBQUE7RUFBQUEsaUZBQUE7RUFBQUEsaUZBQUE7RUFBQUEsaUZBQUE7RUFDWixJQUFJLENBQUNrL0IscUJBQXFCLEdBQUcsSUFBSXYvQixtREFBTyxDQUFVLEtBQUssQ0FBQztFQUN4RCxJQUFJLENBQUN3L0IsdUJBQXVCLEdBQUcsSUFBSXgvQixtREFBTyxDQUFVLEtBQUssQ0FBQztFQUMxRCxJQUFJLENBQUN3M0IsU0FBUyxHQUFHLElBQUl4M0IsbURBQU8sQ0FBVSxLQUFLLENBQUM7RUFDNUMsSUFBSSxDQUFDMDNCLDZCQUE2QixHQUFHLElBQUkxM0IsbURBQU8sQ0FBdUMsSUFBSSxDQUFDO0VBQzVGLElBQUksQ0FBQzQzQiw4QkFBOEIsR0FBRyxJQUFJNTNCLG1EQUFPLENBQXdDLElBQUksQ0FBQztBQUNoRyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDcEJIO0FBQ0E7QUFDQTs7QUFFdUM7QUFFaUM7QUFBQSxJQU1uRHl5QixxQkFBcUI7RUFNeEMsU0FBQUEsc0JBQVlsUSxPQUFxQyxFQUFFO0lBQUFuaUIsaUZBQUEsT0FBQXF5QixxQkFBQTtJQUFBcHlCLGlGQUFBO0lBQUFBLGlGQUFBO0lBQUFBLGlGQUFBO0lBQUFBLGlGQUFBO0lBQ2pELElBQUksQ0FBQ3d1QixnQ0FBZ0MsR0FBR3RNLE9BQU8sQ0FBQ3NSLCtCQUErQjtJQUMvRSxJQUFJLENBQUN6UCxXQUFXLEdBQUcsSUFBSXBrQixtREFBTyxDQUFxQixJQUFJLENBQUM7SUFDeEQsSUFBSSxDQUFDdWhCLGNBQWMsR0FBRyxJQUFJdmhCLG1EQUFPLENBQXlCLElBQUksQ0FBQztJQUMvRCxJQUFJLENBQUNtL0IsK0JBQStCLEdBQUcsQ0FBQztFQUMxQztFQUFDLE9BQUF4K0IsOEVBQUEsQ0FBQTh4QixxQkFBQTtJQUFBN3hCLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQU9rK0IscUJBQXFCQSxDQUFBLEVBQVM7TUFDbkMsSUFBTXpkLGNBQWMsR0FBRyxJQUFJLENBQUNBLGNBQWMsQ0FBQ3pnQixLQUFLO01BRWhELElBQUksQ0FBQ3lnQixjQUFjLEVBQUU7UUFDbkI7TUFDRjtNQUVBLElBQUksQ0FBQ0EsY0FBYyxDQUFDemdCLEtBQUssR0FBRyxJQUFJO01BQ2hDeWdCLGNBQWMsQ0FBQ3NMLEtBQUssQ0FBQyxDQUFDO01BQ3RCdEwsY0FBYyxDQUFDcGdCLE9BQU8sQ0FBQyxDQUFDO01BRXhCLElBQUksSUFBSSxDQUFDMHRCLGdDQUFnQyxFQUFFO1FBQ3pDbnBCLG9FQUF1QixDQUFDRSxzQkFBc0IsQ0FBQyxDQUFDO01BQ2xEO0lBQ0Y7RUFBQztJQUFBaEYsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBT20rQixrQkFBa0JBLENBQUEsRUFBUztNQUFBLElBQUFrQyxxQkFBQTtNQUNoQyxDQUFBQSxxQkFBQSxPQUFJLENBQUMvYyxXQUFXLENBQUN0akIsS0FBSyxjQUFBcWdDLHFCQUFBLHVCQUF0QkEscUJBQUEsQ0FBd0J6YyxTQUFTLENBQUMsQ0FBQyxDQUFDL1MsT0FBTyxDQUFDLFVBQUFpVCxLQUFLO1FBQUEsT0FBSUEsS0FBSyxDQUFDa1csSUFBSSxDQUFDLENBQUM7TUFBQSxFQUFDO01BQ2xFLElBQUksQ0FBQzFXLFdBQVcsQ0FBQ3RqQixLQUFLLEdBQUcsSUFBSTtJQUMvQjtFQUFDO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzVDSDtBQUNBO0FBQ0E7O0FBRXVDO0FBQUEsSUFFbEI0eEIsWUFBWSxnQkFBQS94Qiw4RUFBQSxDQUkvQixTQUFBK3hCLGFBQUEsRUFBYztFQUFBdHlCLGlGQUFBLE9BQUFzeUIsWUFBQTtFQUFBcnlCLGlGQUFBO0VBQUFBLGlGQUFBO0VBQ1osSUFBSSxDQUFDODRCLFVBQVUsR0FBRyxJQUFJbjVCLG1EQUFPLENBQVUsS0FBSyxDQUFDO0VBQzdDLElBQUksQ0FBQ3U3QixVQUFVLEdBQUcsS0FBSztBQUN6QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNiSDtBQUNBO0FBQ0E7O0FBRXVDO0FBQUEsSUEwQmxCL0ksc0JBQXNCLGdCQUFBN3hCLDhFQUFBLENBVXpDLFNBQUE2eEIsdUJBQVlqUSxPQUFzQyxFQUFFO0VBQUFuaUIsaUZBQUEsT0FBQW95QixzQkFBQTtFQUFBbnlCLGlGQUFBO0VBQUFBLGlGQUFBO0VBQUFBLGlGQUFBO0VBQUFBLGlGQUFBO0VBQUFBLGlGQUFBO0VBQUFBLGlGQUFBO0VBQUFBLGlGQUFBO0VBQUFBLGlGQUFBO0VBQ2xELElBQUksQ0FBQzB6QixvQkFBb0IsR0FBRyxJQUFJL3pCLG1EQUFPLENBQVV1aUIsT0FBTyxDQUFDd1Isb0JBQW9CLENBQUM7RUFDOUUsSUFBSSxDQUFDQywyQkFBMkIsR0FBRyxJQUFJaDBCLG1EQUFPLENBQVV1aUIsT0FBTyxDQUFDeVIsMkJBQTJCLENBQUM7RUFDNUYsSUFBSSxDQUFDQyw0QkFBNEIsR0FBRzFSLE9BQU8sQ0FBQzBSLDRCQUE0QjtFQUN4RSxJQUFJLENBQUNDLDRCQUE0QixHQUFHM1IsT0FBTyxDQUFDMlIsNEJBQTRCO0VBQ3hFLElBQUksQ0FBQ0Msc0JBQXNCLEdBQUc1UixPQUFPLENBQUM0UixzQkFBc0I7RUFDNUQsSUFBSSxDQUFDQyxzQkFBc0IsR0FBRzdSLE9BQU8sQ0FBQzZSLHNCQUFzQjtFQUM1RCxJQUFJLENBQUNnTixVQUFVLEdBQUc7SUFDaEJDLGdCQUFnQixFQUFFLElBQUk7SUFDdEJDLFFBQVEsRUFBRSxJQUFJO0lBQ2RDLEdBQUcsRUFBRSxJQUFJO0lBQ1RyYSxLQUFLLEVBQUUsSUFBSTtJQUNYc2EsdUJBQXVCLEVBQUUsSUFBSTtJQUM3QkMsc0JBQXNCLEVBQUUsSUFBSTtJQUM1QkMsc0JBQXNCLEVBQUU7RUFDMUIsQ0FBQztFQUNELElBQUksQ0FBQ0MsVUFBVSxHQUFHO0lBQ2hCTixnQkFBZ0IsRUFBRSxJQUFJO0lBQ3RCQyxRQUFRLEVBQUUsSUFBSTtJQUNkQyxHQUFHLEVBQUUsSUFBSTtJQUNUcmEsS0FBSyxFQUFFLElBQUk7SUFDWHNhLHVCQUF1QixFQUFFLElBQUk7SUFDN0JDLHNCQUFzQixFQUFFLElBQUk7SUFDNUJDLHNCQUFzQixFQUFFO0VBQzFCLENBQUM7QUFDSCxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNqRUg7QUFDQTtBQUNBOztBQUV1QztBQUFBLElBR2xCdFAsWUFBWSxnQkFBQXp4Qiw4RUFBQSxDQUkvQixTQUFBeXhCLGFBQVl0bkIsS0FBdUIsRUFBRTtFQUFBMUssaUZBQUEsT0FBQWd5QixZQUFBO0VBQUEveEIsaUZBQUE7RUFBQUEsaUZBQUE7RUFDbkMsSUFBSSxDQUFDeUssS0FBSyxHQUFHLElBQUk5SyxtREFBTyxDQUFtQjhLLEtBQUssQ0FBQztFQUNqRCxJQUFJLENBQUN1cUIsYUFBYSxHQUFHLElBQUlyMUIsbURBQU8sQ0FBVSxLQUFLLENBQUM7QUFDbEQsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUNkSDtBQUNBO0FBQ0E7O0FBRU8sSUFBSzRoQyxVQUFVLDBCQUFWQSxVQUFVO0VBQVZBLFVBQVUsQ0FBVkEsVUFBVTtFQUFWQSxVQUFVLENBQVZBLFVBQVU7RUFBQSxPQUFWQSxVQUFVO0FBQUEsTTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0p0QjtBQUNBO0FBQ0E7O0FBRXdEO0FBQ1c7QUFBQSxJQUU5Q0MsaUJBQWlCO0VBQUEsU0FBQUEsa0JBQUE7SUFBQXpoQyxpRkFBQSxPQUFBeWhDLGlCQUFBO0VBQUE7RUFBQSxPQUFBbGhDLDhFQUFBLENBQUFraEMsaUJBQUE7SUFBQWpoQyxHQUFBO0lBQUFFLEtBQUEsRUFDcEMsU0FBY2doQyxpQ0FBaUNBLENBQUMxYyxVQUFzQixFQUFrQjtNQUN0RixRQUFRQSxVQUFVO1FBQ2hCLEtBQUt3YyxtREFBVSxDQUFDRyxJQUFJO1VBQ2xCLE9BQU8sTUFBTTtRQUNmLEtBQUtILG1EQUFVLENBQUNJLEdBQUc7VUFDakIsT0FBTyxLQUFLO1FBQ2Q7VUFDRXZ1QixtRUFBaUIsQ0FBQzJSLFVBQVUsQ0FBQztNQUNqQztJQUNGO0VBQUM7SUFBQXhrQixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFjbWhDLGlDQUFpQ0EsQ0FBQ0MsY0FBOEIsRUFBYztNQUMxRixJQUFNQyxnQkFBZ0IsR0FBR0QsY0FBYyxDQUFDRSxXQUFXLENBQUMsQ0FBNEI7TUFFaEYsUUFBUUQsZ0JBQWdCO1FBQ3RCLEtBQUssTUFBTTtVQUNULE9BQU9QLG1EQUFVLENBQUNHLElBQUk7UUFDeEIsS0FBSyxLQUFLO1VBQ1IsT0FBT0gsbURBQVUsQ0FBQ0ksR0FBRztRQUN2QjtVQUNFdnVCLG1FQUFpQixDQUFDMHVCLGdCQUFnQixDQUFDO01BQ3ZDO0lBQ0Y7RUFBQztBQUFBOzs7Ozs7Ozs7Ozs7OztBQzlCSDtBQUNBO0FBQ0E7O0FBRU8sSUFBS0UsVUFBVSwwQkFBVkEsVUFBVTtFQUFWQSxVQUFVLENBQVZBLFVBQVU7RUFBVkEsVUFBVSxDQUFWQSxVQUFVO0VBQVZBLFVBQVUsQ0FBVkEsVUFBVTtFQUFBLE9BQVZBLFVBQVU7QUFBQSxNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDSnRCO0FBQ0E7QUFDQTs7QUFFbUU7QUFDWDtBQUFBLElBRW5DQyxpQkFBaUI7RUFBQSxTQUFBQSxrQkFBQTtJQUFBbGlDLGlGQUFBLE9BQUFraUMsaUJBQUE7RUFBQTtFQUFBLE9BQUEzaEMsOEVBQUEsQ0FBQTJoQyxpQkFBQTtJQUFBMWhDLEdBQUE7SUFBQUUsS0FBQSxFQUNwQyxTQUFjeWhDLGlDQUFpQ0EsQ0FBQ2pkLFVBQXNCLEVBQWtCO01BQ3RGLFFBQVFBLFVBQVU7UUFDaEIsS0FBSytjLG1EQUFVLENBQUNHLElBQUk7VUFDbEIsT0FBTyxNQUFNO1FBQ2YsS0FBS0gsbURBQVUsQ0FBQ0ksR0FBRztVQUNqQixPQUFPLEtBQUs7UUFDZCxLQUFLSixtREFBVSxDQUFDSyxHQUFHO1VBQ2pCLE9BQU8sS0FBSztRQUNkO1VBQ0VqdkIsbUVBQWlCLENBQUM2UixVQUFVLENBQUM7TUFDakM7SUFDRjtFQUFDO0lBQUExa0IsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBYzZoQyxpQ0FBaUNBLENBQUNDLGNBQThCLEVBQWM7TUFDMUYsSUFBTUMsZ0JBQWdCLEdBQUdELGNBQWMsQ0FBQ1IsV0FBVyxDQUFDLENBQTRCO01BRWhGLFFBQVFTLGdCQUFnQjtRQUN0QixLQUFLLE1BQU07VUFDVCxPQUFPUixtREFBVSxDQUFDRyxJQUFJO1FBQ3hCLEtBQUssS0FBSztVQUNSLE9BQU9ILG1EQUFVLENBQUNJLEdBQUc7UUFDdkIsS0FBSyxLQUFLO1VBQ1IsT0FBT0osbURBQVUsQ0FBQ0ssR0FBRztRQUN2QjtVQUNFanZCLG1FQUFpQixDQUFDb3ZCLGdCQUFnQixDQUFDO01BQ3ZDO0lBQ0Y7RUFBQztBQUFBOzs7Ozs7Ozs7OztBQ2xDSDtBQUNBO0FBQ0E7O0FBRUEsK0RBQWUsSUFBSUMsVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsRTs7Ozs7Ozs7Ozs7OztBQ0p2RDtBQUNBO0FBQ0E7O0FBRUEsSUFBTUMsbUJBQW1CLEdBQUcsNkNBQTZDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0p6RTtBQUNBO0FBQ0E7O0FBRStFO0FBQ2xCO0FBQUEsSUFFeENDLGtCQUFrQjtFQUFBLFNBQUFBLG1CQUFBO0lBQUE1aUMsaUZBQUEsT0FBQTRpQyxrQkFBQTtFQUFBO0VBQUEsT0FBQXJpQyw4RUFBQSxDQUFBcWlDLGtCQUFBO0lBQUFwaUMsR0FBQTtJQUFBRSxLQUFBLEVBQ3JDLFNBQU9taUMsbUNBQW1DQSxDQUFDQyxXQUF3QixFQUFtQjtNQUNwRixRQUFRQSxXQUFXO1FBQ2pCLEtBQUtuUix3RUFBVyxDQUFDNkcsTUFBTTtVQUNyQixPQUFPLFFBQVE7UUFDakIsS0FBSzdHLHdFQUFXLENBQUNvUixLQUFLO1VBQ3BCLE9BQU8sT0FBTztRQUNoQixLQUFLcFIsd0VBQVcsQ0FBQzJJLEtBQUs7VUFDcEIsT0FBTyxPQUFPO1FBQ2hCO1VBQ0VqbkIsbUVBQWlCLENBQUN5dkIsV0FBVyxDQUFDO01BQ2xDO0lBQ0Y7RUFBQztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ25CSDtBQUNBO0FBQ0E7O0FBRWlGO0FBQ3BCO0FBQUEsSUFFeENFLG1CQUFtQjtFQUFBLFNBQUFBLG9CQUFBO0lBQUFoakMsaUZBQUEsT0FBQWdqQyxtQkFBQTtFQUFBO0VBQUEsT0FBQXppQyw4RUFBQSxDQUFBeWlDLG1CQUFBO0lBQUF4aUMsR0FBQTtJQUFBRSxLQUFBLEVBQ3RDLFNBQU91aUMscUNBQXFDQSxDQUFDQyxZQUEwQixFQUFvQjtNQUN6RixRQUFRQSxZQUFZO1FBQ2xCLEtBQUt4Uix5RUFBWSxDQUFDNkcsSUFBSTtVQUNwQixPQUFPLE1BQU07UUFDZixLQUFLN0cseUVBQVksQ0FBQzRJLEtBQUs7VUFDckIsT0FBTyxPQUFPO1FBQ2hCO1VBQ0VqbkIsbUVBQWlCLENBQUM2dkIsWUFBWSxDQUFDO01BQ25DO0lBQ0Y7RUFBQztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCQ2hCSCx1S0FBQTkzQixDQUFBLEVBQUFnUSxDQUFBLEVBQUFDLENBQUEsd0JBQUFDLE1BQUEsR0FBQUEsTUFBQSxPQUFBQyxDQUFBLEdBQUFGLENBQUEsQ0FBQUcsUUFBQSxrQkFBQUMsQ0FBQSxHQUFBSixDQUFBLENBQUFLLFdBQUEsOEJBQUFDLEVBQUFOLENBQUEsRUFBQUUsQ0FBQSxFQUFBRSxDQUFBLEVBQUFFLENBQUEsUUFBQUMsQ0FBQSxHQUFBTCxDQUFBLElBQUFBLENBQUEsQ0FBQS9OLFNBQUEsWUFBQXFPLFNBQUEsR0FBQU4sQ0FBQSxHQUFBTSxTQUFBLEVBQUFDLENBQUEsR0FBQTNFLE1BQUEsQ0FBQTRFLE1BQUEsQ0FBQUgsQ0FBQSxDQUFBcE8sU0FBQSxVQUFBd08sbUJBQUEsQ0FBQUYsQ0FBQSx1QkFBQVQsQ0FBQSxFQUFBRSxDQUFBLEVBQUFFLENBQUEsUUFBQUUsQ0FBQSxFQUFBQyxDQUFBLEVBQUFFLENBQUEsRUFBQUcsQ0FBQSxNQUFBQyxDQUFBLEdBQUFULENBQUEsUUFBQVUsQ0FBQSxPQUFBQyxDQUFBLEtBQUFGLENBQUEsS0FBQVgsQ0FBQSxLQUFBYyxDQUFBLEVBQUFqUixDQUFBLEVBQUFrUixDQUFBLEVBQUFDLENBQUEsRUFBQU4sQ0FBQSxFQUFBTSxDQUFBLENBQUF4VyxJQUFBLENBQUFxRixDQUFBLE1BQUFtUixDQUFBLFdBQUFBLEVBQUFuQixDQUFBLEVBQUFDLENBQUEsV0FBQU0sQ0FBQSxHQUFBUCxDQUFBLEVBQUFRLENBQUEsTUFBQUUsQ0FBQSxHQUFBMVEsQ0FBQSxFQUFBZ1IsQ0FBQSxDQUFBYixDQUFBLEdBQUFGLENBQUEsRUFBQWlCLENBQUEsZ0JBQUFDLEVBQUFsQixDQUFBLEVBQUFFLENBQUEsU0FBQUssQ0FBQSxHQUFBUCxDQUFBLEVBQUFTLENBQUEsR0FBQVAsQ0FBQSxFQUFBSCxDQUFBLE9BQUFlLENBQUEsSUFBQUYsQ0FBQSxLQUFBUixDQUFBLElBQUFMLENBQUEsR0FBQWMsQ0FBQSxDQUFBbFIsTUFBQSxFQUFBb1EsQ0FBQSxVQUFBSyxDQUFBLEVBQUFFLENBQUEsR0FBQU8sQ0FBQSxDQUFBZCxDQUFBLEdBQUFtQixDQUFBLEdBQUFILENBQUEsQ0FBQUYsQ0FBQSxFQUFBTSxDQUFBLEdBQUFiLENBQUEsS0FBQU4sQ0FBQSxRQUFBSSxDQUFBLEdBQUFlLENBQUEsS0FBQWpCLENBQUEsTUFBQU8sQ0FBQSxHQUFBSCxDQUFBLEVBQUFDLENBQUEsR0FBQUQsQ0FBQSxZQUFBQyxDQUFBLFdBQUFELENBQUEsTUFBQUEsQ0FBQSxNQUFBdlEsQ0FBQSxJQUFBdVEsQ0FBQSxPQUFBWSxDQUFBLE1BQUFkLENBQUEsR0FBQUosQ0FBQSxRQUFBa0IsQ0FBQSxHQUFBWixDQUFBLFFBQUFDLENBQUEsTUFBQVEsQ0FBQSxDQUFBQyxDQUFBLEdBQUFkLENBQUEsRUFBQWEsQ0FBQSxDQUFBYixDQUFBLEdBQUFJLENBQUEsT0FBQVksQ0FBQSxHQUFBQyxDQUFBLEtBQUFmLENBQUEsR0FBQUosQ0FBQSxRQUFBTSxDQUFBLE1BQUFKLENBQUEsSUFBQUEsQ0FBQSxHQUFBaUIsQ0FBQSxNQUFBYixDQUFBLE1BQUFOLENBQUEsRUFBQU0sQ0FBQSxNQUFBSixDQUFBLEVBQUFhLENBQUEsQ0FBQWIsQ0FBQSxHQUFBaUIsQ0FBQSxFQUFBWixDQUFBLGNBQUFILENBQUEsSUFBQUosQ0FBQSxhQUFBaUIsQ0FBQSxRQUFBSCxDQUFBLE9BQUFaLENBQUEscUJBQUFFLENBQUEsRUFBQVMsQ0FBQSxFQUFBTSxDQUFBLFFBQUFQLENBQUEsWUFBQVEsU0FBQSx1Q0FBQU4sQ0FBQSxVQUFBRCxDQUFBLElBQUFLLENBQUEsQ0FBQUwsQ0FBQSxFQUFBTSxDQUFBLEdBQUFaLENBQUEsR0FBQU0sQ0FBQSxFQUFBSixDQUFBLEdBQUFVLENBQUEsR0FBQXBCLENBQUEsR0FBQVEsQ0FBQSxPQUFBeFEsQ0FBQSxHQUFBMFEsQ0FBQSxNQUFBSyxDQUFBLEtBQUFSLENBQUEsS0FBQUMsQ0FBQSxHQUFBQSxDQUFBLFFBQUFBLENBQUEsU0FBQVEsQ0FBQSxDQUFBYixDQUFBLFFBQUFnQixDQUFBLENBQUFYLENBQUEsRUFBQUUsQ0FBQSxLQUFBTSxDQUFBLENBQUFiLENBQUEsR0FBQU8sQ0FBQSxHQUFBTSxDQUFBLENBQUFDLENBQUEsR0FBQVAsQ0FBQSxhQUFBRyxDQUFBLE1BQUFOLENBQUEsUUFBQUMsQ0FBQSxLQUFBSCxDQUFBLFlBQUFMLENBQUEsR0FBQU8sQ0FBQSxDQUFBRixDQUFBLFdBQUFMLENBQUEsR0FBQUEsQ0FBQSxDQUFBL0osSUFBQSxDQUFBc0ssQ0FBQSxFQUFBRyxDQUFBLFVBQUFXLFNBQUEsMkNBQUFyQixDQUFBLENBQUFzQixJQUFBLFNBQUF0QixDQUFBLEVBQUFVLENBQUEsR0FBQVYsQ0FBQSxDQUFBMWEsS0FBQSxFQUFBa2IsQ0FBQSxTQUFBQSxDQUFBLG9CQUFBQSxDQUFBLEtBQUFSLENBQUEsR0FBQU8sQ0FBQSxlQUFBUCxDQUFBLENBQUEvSixJQUFBLENBQUFzSyxDQUFBLEdBQUFDLENBQUEsU0FBQUUsQ0FBQSxHQUFBVyxTQUFBLHVDQUFBaEIsQ0FBQSxnQkFBQUcsQ0FBQSxPQUFBRCxDQUFBLEdBQUF2USxDQUFBLGNBQUFnUSxDQUFBLElBQUFlLENBQUEsR0FBQUMsQ0FBQSxDQUFBYixDQUFBLFFBQUFPLENBQUEsR0FBQVQsQ0FBQSxDQUFBaEssSUFBQSxDQUFBa0ssQ0FBQSxFQUFBYSxDQUFBLE9BQUFFLENBQUEsa0JBQUFsQixDQUFBLElBQUFPLENBQUEsR0FBQXZRLENBQUEsRUFBQXdRLENBQUEsTUFBQUUsQ0FBQSxHQUFBVixDQUFBLGNBQUFhLENBQUEsbUJBQUF2YixLQUFBLEVBQUEwYSxDQUFBLEVBQUFzQixJQUFBLEVBQUFQLENBQUEsU0FBQWQsQ0FBQSxFQUFBSSxDQUFBLEVBQUFFLENBQUEsUUFBQUcsQ0FBQSxRQUFBUSxDQUFBLGdCQUFBVCxVQUFBLGNBQUFjLGtCQUFBLGNBQUFDLDJCQUFBLEtBQUF4QixDQUFBLEdBQUFqRSxNQUFBLENBQUEwRixjQUFBLE1BQUFqQixDQUFBLE1BQUFMLENBQUEsSUFBQUgsQ0FBQSxDQUFBQSxDQUFBLElBQUFHLENBQUEsU0FBQVMsbUJBQUEsQ0FBQVosQ0FBQSxPQUFBRyxDQUFBLGlDQUFBSCxDQUFBLEdBQUFVLENBQUEsR0FBQWMsMEJBQUEsQ0FBQXBQLFNBQUEsR0FBQXFPLFNBQUEsQ0FBQXJPLFNBQUEsR0FBQTJKLE1BQUEsQ0FBQTRFLE1BQUEsQ0FBQUgsQ0FBQSxZQUFBSyxFQUFBN1EsQ0FBQSxXQUFBK0wsTUFBQSxDQUFBMkYsY0FBQSxHQUFBM0YsTUFBQSxDQUFBMkYsY0FBQSxDQUFBMVIsQ0FBQSxFQUFBd1IsMEJBQUEsS0FBQXhSLENBQUEsQ0FBQTJSLFNBQUEsR0FBQUgsMEJBQUEsRUFBQVosbUJBQUEsQ0FBQTVRLENBQUEsRUFBQXFRLENBQUEseUJBQUFyUSxDQUFBLENBQUFvQyxTQUFBLEdBQUEySixNQUFBLENBQUE0RSxNQUFBLENBQUFELENBQUEsR0FBQTFRLENBQUEsV0FBQXVSLGlCQUFBLENBQUFuUCxTQUFBLEdBQUFvUCwwQkFBQSxFQUFBWixtQkFBQSxDQUFBRixDQUFBLGlCQUFBYywwQkFBQSxHQUFBWixtQkFBQSxDQUFBWSwwQkFBQSxpQkFBQUQsaUJBQUEsR0FBQUEsaUJBQUEsQ0FBQUssV0FBQSx3QkFBQWhCLG1CQUFBLENBQUFZLDBCQUFBLEVBQUFuQixDQUFBLHdCQUFBTyxtQkFBQSxDQUFBRixDQUFBLEdBQUFFLG1CQUFBLENBQUFGLENBQUEsRUFBQUwsQ0FBQSxnQkFBQU8sbUJBQUEsQ0FBQUYsQ0FBQSxFQUFBUCxDQUFBLGlDQUFBUyxtQkFBQSxDQUFBRixDQUFBLDhEQUFBbUIsWUFBQSxZQUFBQSxhQUFBLGFBQUFDLENBQUEsRUFBQXZCLENBQUEsRUFBQXdCLENBQUEsRUFBQWxCLENBQUE7QUFBQSxTQUFBRCxvQkFBQTVRLENBQUEsRUFBQWlRLENBQUEsRUFBQUUsQ0FBQSxFQUFBSCxDQUFBLFFBQUFPLENBQUEsR0FBQXhFLE1BQUEsQ0FBQWlHLGNBQUEsUUFBQXpCLENBQUEsdUJBQUF2USxDQUFBLElBQUF1USxDQUFBLFFBQUFLLG1CQUFBLFlBQUFxQixtQkFBQWpTLENBQUEsRUFBQWlRLENBQUEsRUFBQUUsQ0FBQSxFQUFBSCxDQUFBLGFBQUFLLEVBQUFKLENBQUEsRUFBQUUsQ0FBQSxJQUFBUyxtQkFBQSxDQUFBNVEsQ0FBQSxFQUFBaVEsQ0FBQSxZQUFBalEsQ0FBQSxnQkFBQWtTLE9BQUEsQ0FBQWpDLENBQUEsRUFBQUUsQ0FBQSxFQUFBblEsQ0FBQSxTQUFBaVEsQ0FBQSxHQUFBTSxDQUFBLEdBQUFBLENBQUEsQ0FBQXZRLENBQUEsRUFBQWlRLENBQUEsSUFBQTNhLEtBQUEsRUFBQTZhLENBQUEsRUFBQWdDLFVBQUEsR0FBQW5DLENBQUEsRUFBQW9DLFlBQUEsR0FBQXBDLENBQUEsRUFBQXFDLFFBQUEsR0FBQXJDLENBQUEsTUFBQWhRLENBQUEsQ0FBQWlRLENBQUEsSUFBQUUsQ0FBQSxJQUFBRSxDQUFBLGFBQUFBLENBQUEsY0FBQUEsQ0FBQSxtQkFBQU8sbUJBQUEsQ0FBQTVRLENBQUEsRUFBQWlRLENBQUEsRUFBQUUsQ0FBQSxFQUFBSCxDQUFBO0FBREE7QUFDQTtBQUNBOztBQUV3RDtBQUNOO0FBRXpCO0FBRXpCLElBQU1nb0Isc0JBQXNCLEdBQUcsS0FBSztBQUFDLElBSWhCM1EsU0FBUztFQWlENUIsU0FBQUEsVUFBQSxFQUFzQjtJQUFBenlCLGlGQUFBLE9BQUF5eUIsU0FBQTtJQUNwQixNQUFNLElBQUlsdEIsS0FBSyxDQUFDLDBEQUEwRCxDQUFDO0VBQzdFO0VBQUMsT0FBQWhGLDhFQUFBLENBQUFreUIsU0FBQTtJQUFBanlCLEdBQUE7SUFBQUUsS0FBQTtNQUFBLElBQUEyaUMsaUNBQUEsR0FBQXBrQixtRkFBQSxjQUFBaEMsWUFBQSxHQUFBRSxDQUFBLENBaERELFNBQUErQixRQUFBO1FBQUEsT0FBQWpDLFlBQUEsR0FBQUMsQ0FBQSxXQUFBbUMsUUFBQTtVQUFBLGtCQUFBQSxRQUFBLENBQUE5RCxDQUFBO1lBQUE7Y0FBQSxPQUFBOEQsUUFBQSxDQUFBL0MsQ0FBQSxJQUNTLElBQUl3QyxPQUFPLENBQVcsVUFBQXdrQixzQkFBc0IsRUFBSTtnQkFDckQsSUFBTXRrQix1QkFBdUIsR0FBR3ZmLGdFQUFXLENBQUNxUixTQUFTLENBQUMsVUFBQWhDLFdBQVcsRUFBSTtrQkFDbkUsSUFBSSxDQUFDQSxXQUFXLEVBQUU7b0JBQ2hCO2tCQUNGO2tCQUVBLElBQU1uRCxHQUFHLEdBQUcsSUFBSW1ELFdBQVcsQ0FBQzFJLEdBQUcsQ0FBQ2YsNENBQUcsQ0FBQzZxQixZQUFZLENBQUN4dkIsS0FBSyxDQUFDO2tCQUV2RCxPQUFPK3hCLFNBQVMsQ0FBQzhRLGtDQUFrQyxDQUFDNTNCLEdBQUcsQ0FBQyxDQUNyRHNTLElBQUksQ0FBQ3FsQixzQkFBc0IsQ0FBQyxDQUM1QnJsQixJQUFJLENBQUM7b0JBQUEsT0FBTWUsdUJBQXVCLENBQUNqZSxPQUFPLENBQUMsQ0FBQztrQkFBQSxFQUFDO2dCQUNsRCxDQUFDLENBQUM7Y0FDSixDQUFDLENBQUM7VUFBQTtRQUFBLEdBQUFtZSxPQUFBO01BQUEsQ0FDSDtNQUFBLFNBZFlza0IsZ0NBQWdDQSxDQUFBO1FBQUEsT0FBQUgsaUNBQUEsQ0FBQTFqQixLQUFBLE9BQUEzSyxTQUFBO01BQUE7TUFBQSxPQUFoQ3d1QixnQ0FBZ0M7SUFBQTtFQUFBO0lBQUFoakMsR0FBQTtJQUFBRSxLQUFBO01BQUEsSUFBQStpQyxtQ0FBQSxHQUFBeGtCLG1GQUFBLGNBQUFoQyxZQUFBLEdBQUFFLENBQUEsQ0FnQjdDLFNBQUEwQyxTQUFnRGxVLEdBQVE7UUFBQSxJQUFBNEUsR0FBQSxFQUFBbXpCLGdCQUFBLEVBQUFDLFdBQUEsRUFBQS9rQixPQUFBO1FBQUEsT0FBQTNCLFlBQUEsR0FBQUMsQ0FBQSxXQUFBNEMsU0FBQTtVQUFBLGtCQUFBQSxTQUFBLENBQUF2RSxDQUFBO1lBQUE7Y0FDaERoTCxHQUFHLEdBQUc1RSxHQUFHLENBQUM2RixRQUFRLENBQUMsQ0FBQztjQUFBLE1BRXRCakIsR0FBRyxJQUFJa2lCLFNBQVMsQ0FBQ21SLE1BQU07Z0JBQUE5akIsU0FBQSxDQUFBdkUsQ0FBQTtnQkFBQTtjQUFBO2NBQUEsT0FBQXVFLFNBQUEsQ0FBQXhELENBQUEsSUFDbEJtVyxTQUFTLENBQUNtUixNQUFNLENBQUNyekIsR0FBRyxDQUFDO1lBQUE7Y0FHeEJtekIsZ0JBQWdCLEdBQUcsSUFBSVAseURBQWdCLENBQUN4M0IsR0FBRyxDQUFDO2NBQzVDZzRCLFdBQVcsR0FBR2xSLFNBQVMsQ0FBQ21SLE1BQU0sQ0FBQ3J6QixHQUFHLENBQUMsR0FBR216QixnQkFBZ0IsQ0FBQ0csdUJBQXVCLENBQUMsQ0FBQztjQUNoRmpsQixPQUFPLEdBQUc2VCxTQUFTLENBQUNtUixNQUFNLENBQUNyekIsR0FBRyxDQUFDLENBQUMwTixJQUFJLENBQUMsWUFBTTtnQkFDL0MsSUFBTVcsT0FBTyxHQUFHbmYsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ3NGLFVBQVUsQ0FBQyxZQUFNO2tCQUNqRCxJQUFJeXNCLFNBQVMsQ0FBQ21SLE1BQU0sQ0FBQ3J6QixHQUFHLENBQUMsS0FBS296QixXQUFXLEVBQUU7b0JBQ3pDLE9BQU9sUixTQUFTLENBQUNtUixNQUFNLENBQUNyekIsR0FBRyxDQUFDO2tCQUM5QjtnQkFDRixDQUFDLEVBQUU2eUIsc0JBQXNCLENBQUM7Y0FDNUIsQ0FBQyxDQUFDLFNBQU0sQ0FBQyxZQUFNO2dCQUNiLE9BQU8zUSxTQUFTLENBQUNtUixNQUFNLENBQUNyekIsR0FBRyxDQUFDO2NBQzlCLENBQUMsQ0FBQztjQUFBLE9BQUF1UCxTQUFBLENBQUF4RCxDQUFBLElBRUtxbkIsV0FBVztVQUFBO1FBQUEsR0FBQTlqQixRQUFBO01BQUEsQ0FDbkI7TUFBQSxTQXBCWTBqQixrQ0FBa0NBLENBQUE3akIsRUFBQTtRQUFBLE9BQUErakIsbUNBQUEsQ0FBQTlqQixLQUFBLE9BQUEzSyxTQUFBO01BQUE7TUFBQSxPQUFsQ3V1QixrQ0FBa0M7SUFBQTtFQUFBO0lBQUEvaUMsR0FBQTtJQUFBRSxLQUFBLEVBc0IvQyxTQUFPbTlCLDBCQUEwQkEsQ0FBQ2x5QixHQUFRLEVBQVE7TUFDaEQsSUFBTTRFLEdBQUcsR0FBRzVFLEdBQUcsQ0FBQzZGLFFBQVEsQ0FBQyxDQUFDO01BRTFCLElBQUlqQixHQUFHLElBQUlraUIsU0FBUyxDQUFDbVIsTUFBTSxFQUFFO1FBQzNCLE9BQU9uUixTQUFTLENBQUNtUixNQUFNLENBQUNyekIsR0FBRyxDQUFDO01BQzlCO0lBQ0Y7RUFBQztBQUFBO0FBQUF0USxpRkFBQSxDQS9Da0J3eUIsU0FBUyxZQUNhLENBQUMsQ0FBQztBQURmO0FBc0Q5QixJQUFNN1QsT0FBTyxHQUFHNlQsU0FBUyxDQUFDK1EsZ0NBQWdDLENBQUMsQ0FBQyxDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCQ2xFNUQsdUtBQUFwNEIsQ0FBQSxFQUFBZ1EsQ0FBQSxFQUFBQyxDQUFBLHdCQUFBQyxNQUFBLEdBQUFBLE1BQUEsT0FBQUMsQ0FBQSxHQUFBRixDQUFBLENBQUFHLFFBQUEsa0JBQUFDLENBQUEsR0FBQUosQ0FBQSxDQUFBSyxXQUFBLDhCQUFBQyxFQUFBTixDQUFBLEVBQUFFLENBQUEsRUFBQUUsQ0FBQSxFQUFBRSxDQUFBLFFBQUFDLENBQUEsR0FBQUwsQ0FBQSxJQUFBQSxDQUFBLENBQUEvTixTQUFBLFlBQUFxTyxTQUFBLEdBQUFOLENBQUEsR0FBQU0sU0FBQSxFQUFBQyxDQUFBLEdBQUEzRSxNQUFBLENBQUE0RSxNQUFBLENBQUFILENBQUEsQ0FBQXBPLFNBQUEsVUFBQXdPLG1CQUFBLENBQUFGLENBQUEsdUJBQUFULENBQUEsRUFBQUUsQ0FBQSxFQUFBRSxDQUFBLFFBQUFFLENBQUEsRUFBQUMsQ0FBQSxFQUFBRSxDQUFBLEVBQUFHLENBQUEsTUFBQUMsQ0FBQSxHQUFBVCxDQUFBLFFBQUFVLENBQUEsT0FBQUMsQ0FBQSxLQUFBRixDQUFBLEtBQUFYLENBQUEsS0FBQWMsQ0FBQSxFQUFBalIsQ0FBQSxFQUFBa1IsQ0FBQSxFQUFBQyxDQUFBLEVBQUFOLENBQUEsRUFBQU0sQ0FBQSxDQUFBeFcsSUFBQSxDQUFBcUYsQ0FBQSxNQUFBbVIsQ0FBQSxXQUFBQSxFQUFBbkIsQ0FBQSxFQUFBQyxDQUFBLFdBQUFNLENBQUEsR0FBQVAsQ0FBQSxFQUFBUSxDQUFBLE1BQUFFLENBQUEsR0FBQTFRLENBQUEsRUFBQWdSLENBQUEsQ0FBQWIsQ0FBQSxHQUFBRixDQUFBLEVBQUFpQixDQUFBLGdCQUFBQyxFQUFBbEIsQ0FBQSxFQUFBRSxDQUFBLFNBQUFLLENBQUEsR0FBQVAsQ0FBQSxFQUFBUyxDQUFBLEdBQUFQLENBQUEsRUFBQUgsQ0FBQSxPQUFBZSxDQUFBLElBQUFGLENBQUEsS0FBQVIsQ0FBQSxJQUFBTCxDQUFBLEdBQUFjLENBQUEsQ0FBQWxSLE1BQUEsRUFBQW9RLENBQUEsVUFBQUssQ0FBQSxFQUFBRSxDQUFBLEdBQUFPLENBQUEsQ0FBQWQsQ0FBQSxHQUFBbUIsQ0FBQSxHQUFBSCxDQUFBLENBQUFGLENBQUEsRUFBQU0sQ0FBQSxHQUFBYixDQUFBLEtBQUFOLENBQUEsUUFBQUksQ0FBQSxHQUFBZSxDQUFBLEtBQUFqQixDQUFBLE1BQUFPLENBQUEsR0FBQUgsQ0FBQSxFQUFBQyxDQUFBLEdBQUFELENBQUEsWUFBQUMsQ0FBQSxXQUFBRCxDQUFBLE1BQUFBLENBQUEsTUFBQXZRLENBQUEsSUFBQXVRLENBQUEsT0FBQVksQ0FBQSxNQUFBZCxDQUFBLEdBQUFKLENBQUEsUUFBQWtCLENBQUEsR0FBQVosQ0FBQSxRQUFBQyxDQUFBLE1BQUFRLENBQUEsQ0FBQUMsQ0FBQSxHQUFBZCxDQUFBLEVBQUFhLENBQUEsQ0FBQWIsQ0FBQSxHQUFBSSxDQUFBLE9BQUFZLENBQUEsR0FBQUMsQ0FBQSxLQUFBZixDQUFBLEdBQUFKLENBQUEsUUFBQU0sQ0FBQSxNQUFBSixDQUFBLElBQUFBLENBQUEsR0FBQWlCLENBQUEsTUFBQWIsQ0FBQSxNQUFBTixDQUFBLEVBQUFNLENBQUEsTUFBQUosQ0FBQSxFQUFBYSxDQUFBLENBQUFiLENBQUEsR0FBQWlCLENBQUEsRUFBQVosQ0FBQSxjQUFBSCxDQUFBLElBQUFKLENBQUEsYUFBQWlCLENBQUEsUUFBQUgsQ0FBQSxPQUFBWixDQUFBLHFCQUFBRSxDQUFBLEVBQUFTLENBQUEsRUFBQU0sQ0FBQSxRQUFBUCxDQUFBLFlBQUFRLFNBQUEsdUNBQUFOLENBQUEsVUFBQUQsQ0FBQSxJQUFBSyxDQUFBLENBQUFMLENBQUEsRUFBQU0sQ0FBQSxHQUFBWixDQUFBLEdBQUFNLENBQUEsRUFBQUosQ0FBQSxHQUFBVSxDQUFBLEdBQUFwQixDQUFBLEdBQUFRLENBQUEsT0FBQXhRLENBQUEsR0FBQTBRLENBQUEsTUFBQUssQ0FBQSxLQUFBUixDQUFBLEtBQUFDLENBQUEsR0FBQUEsQ0FBQSxRQUFBQSxDQUFBLFNBQUFRLENBQUEsQ0FBQWIsQ0FBQSxRQUFBZ0IsQ0FBQSxDQUFBWCxDQUFBLEVBQUFFLENBQUEsS0FBQU0sQ0FBQSxDQUFBYixDQUFBLEdBQUFPLENBQUEsR0FBQU0sQ0FBQSxDQUFBQyxDQUFBLEdBQUFQLENBQUEsYUFBQUcsQ0FBQSxNQUFBTixDQUFBLFFBQUFDLENBQUEsS0FBQUgsQ0FBQSxZQUFBTCxDQUFBLEdBQUFPLENBQUEsQ0FBQUYsQ0FBQSxXQUFBTCxDQUFBLEdBQUFBLENBQUEsQ0FBQS9KLElBQUEsQ0FBQXNLLENBQUEsRUFBQUcsQ0FBQSxVQUFBVyxTQUFBLDJDQUFBckIsQ0FBQSxDQUFBc0IsSUFBQSxTQUFBdEIsQ0FBQSxFQUFBVSxDQUFBLEdBQUFWLENBQUEsQ0FBQTFhLEtBQUEsRUFBQWtiLENBQUEsU0FBQUEsQ0FBQSxvQkFBQUEsQ0FBQSxLQUFBUixDQUFBLEdBQUFPLENBQUEsZUFBQVAsQ0FBQSxDQUFBL0osSUFBQSxDQUFBc0ssQ0FBQSxHQUFBQyxDQUFBLFNBQUFFLENBQUEsR0FBQVcsU0FBQSx1Q0FBQWhCLENBQUEsZ0JBQUFHLENBQUEsT0FBQUQsQ0FBQSxHQUFBdlEsQ0FBQSxjQUFBZ1EsQ0FBQSxJQUFBZSxDQUFBLEdBQUFDLENBQUEsQ0FBQWIsQ0FBQSxRQUFBTyxDQUFBLEdBQUFULENBQUEsQ0FBQWhLLElBQUEsQ0FBQWtLLENBQUEsRUFBQWEsQ0FBQSxPQUFBRSxDQUFBLGtCQUFBbEIsQ0FBQSxJQUFBTyxDQUFBLEdBQUF2USxDQUFBLEVBQUF3USxDQUFBLE1BQUFFLENBQUEsR0FBQVYsQ0FBQSxjQUFBYSxDQUFBLG1CQUFBdmIsS0FBQSxFQUFBMGEsQ0FBQSxFQUFBc0IsSUFBQSxFQUFBUCxDQUFBLFNBQUFkLENBQUEsRUFBQUksQ0FBQSxFQUFBRSxDQUFBLFFBQUFHLENBQUEsUUFBQVEsQ0FBQSxnQkFBQVQsVUFBQSxjQUFBYyxrQkFBQSxjQUFBQywyQkFBQSxLQUFBeEIsQ0FBQSxHQUFBakUsTUFBQSxDQUFBMEYsY0FBQSxNQUFBakIsQ0FBQSxNQUFBTCxDQUFBLElBQUFILENBQUEsQ0FBQUEsQ0FBQSxJQUFBRyxDQUFBLFNBQUFTLG1CQUFBLENBQUFaLENBQUEsT0FBQUcsQ0FBQSxpQ0FBQUgsQ0FBQSxHQUFBVSxDQUFBLEdBQUFjLDBCQUFBLENBQUFwUCxTQUFBLEdBQUFxTyxTQUFBLENBQUFyTyxTQUFBLEdBQUEySixNQUFBLENBQUE0RSxNQUFBLENBQUFILENBQUEsWUFBQUssRUFBQTdRLENBQUEsV0FBQStMLE1BQUEsQ0FBQTJGLGNBQUEsR0FBQTNGLE1BQUEsQ0FBQTJGLGNBQUEsQ0FBQTFSLENBQUEsRUFBQXdSLDBCQUFBLEtBQUF4UixDQUFBLENBQUEyUixTQUFBLEdBQUFILDBCQUFBLEVBQUFaLG1CQUFBLENBQUE1USxDQUFBLEVBQUFxUSxDQUFBLHlCQUFBclEsQ0FBQSxDQUFBb0MsU0FBQSxHQUFBMkosTUFBQSxDQUFBNEUsTUFBQSxDQUFBRCxDQUFBLEdBQUExUSxDQUFBLFdBQUF1UixpQkFBQSxDQUFBblAsU0FBQSxHQUFBb1AsMEJBQUEsRUFBQVosbUJBQUEsQ0FBQUYsQ0FBQSxpQkFBQWMsMEJBQUEsR0FBQVosbUJBQUEsQ0FBQVksMEJBQUEsaUJBQUFELGlCQUFBLEdBQUFBLGlCQUFBLENBQUFLLFdBQUEsd0JBQUFoQixtQkFBQSxDQUFBWSwwQkFBQSxFQUFBbkIsQ0FBQSx3QkFBQU8sbUJBQUEsQ0FBQUYsQ0FBQSxHQUFBRSxtQkFBQSxDQUFBRixDQUFBLEVBQUFMLENBQUEsZ0JBQUFPLG1CQUFBLENBQUFGLENBQUEsRUFBQVAsQ0FBQSxpQ0FBQVMsbUJBQUEsQ0FBQUYsQ0FBQSw4REFBQW1CLFlBQUEsWUFBQUEsYUFBQSxhQUFBQyxDQUFBLEVBQUF2QixDQUFBLEVBQUF3QixDQUFBLEVBQUFsQixDQUFBO0FBQUEsU0FBQUQsb0JBQUE1USxDQUFBLEVBQUFpUSxDQUFBLEVBQUFFLENBQUEsRUFBQUgsQ0FBQSxRQUFBTyxDQUFBLEdBQUF4RSxNQUFBLENBQUFpRyxjQUFBLFFBQUF6QixDQUFBLHVCQUFBdlEsQ0FBQSxJQUFBdVEsQ0FBQSxRQUFBSyxtQkFBQSxZQUFBcUIsbUJBQUFqUyxDQUFBLEVBQUFpUSxDQUFBLEVBQUFFLENBQUEsRUFBQUgsQ0FBQSxhQUFBSyxFQUFBSixDQUFBLEVBQUFFLENBQUEsSUFBQVMsbUJBQUEsQ0FBQTVRLENBQUEsRUFBQWlRLENBQUEsWUFBQWpRLENBQUEsZ0JBQUFrUyxPQUFBLENBQUFqQyxDQUFBLEVBQUFFLENBQUEsRUFBQW5RLENBQUEsU0FBQWlRLENBQUEsR0FBQU0sQ0FBQSxHQUFBQSxDQUFBLENBQUF2USxDQUFBLEVBQUFpUSxDQUFBLElBQUEzYSxLQUFBLEVBQUE2YSxDQUFBLEVBQUFnQyxVQUFBLEdBQUFuQyxDQUFBLEVBQUFvQyxZQUFBLEdBQUFwQyxDQUFBLEVBQUFxQyxRQUFBLEdBQUFyQyxDQUFBLE1BQUFoUSxDQUFBLENBQUFpUSxDQUFBLElBQUFFLENBQUEsSUFBQUUsQ0FBQSxhQUFBQSxDQUFBLGNBQUFBLENBQUEsbUJBQUFPLG1CQUFBLENBQUE1USxDQUFBLEVBQUFpUSxDQUFBLEVBQUFFLENBQUEsRUFBQUgsQ0FBQTtBQURBO0FBQ0E7QUFDQTs7QUFFd0Q7QUFFRDtBQUVHO0FBQ047QUFDVjtBQUNSO0FBQ1Q7QUFFekIsSUFBTTJvQixjQUFjLEdBQUcsS0FBSztBQUFDLElBRVJaLGdCQUFnQjtFQUtuQyxTQUFBQSxpQkFBWXgzQixHQUFRLEVBQUU7SUFBQTNMLGlGQUFBLE9BQUFtakMsZ0JBQUE7SUFBQWxqQyxpRkFBQSxrQkFKSzZJLDZEQUFhLENBQUNHLFNBQVMsQ0FBQyxXQUFXLENBQUM7SUFBQWhKLGlGQUFBO0lBQUFBLGlGQUFBO0lBSzdELElBQUksQ0FBQzBMLEdBQUcsRUFBRTtNQUNSLE1BQU0sSUFBSXBHLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQztJQUMzQztJQUVBLElBQUksQ0FBQ3VwQixlQUFlLEdBQUd2VSwrREFBYyxDQUFDQyxpQkFBaUIsQ0FBQzdPLEdBQUcsQ0FBQzZGLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDdkUsSUFBSSxDQUFDd3lCLElBQUksR0FBR3I0QixHQUFHO0VBQ2pCO0VBQUMsT0FBQXBMLDhFQUFBLENBQUE0aUMsZ0JBQUE7SUFBQTNpQyxHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBdWpDLHdCQUFBLEdBQUFobEIsbUZBQUEsY0FBQWhDLFlBQUEsR0FBQUUsQ0FBQSxDQUVELFNBQUErQixRQUE4QnZULEdBQVEsRUFBRXU0QixPQUFlO1FBQUEsSUFBQTN6QixHQUFBLEVBQUEwUCxRQUFBLEVBQUFra0IsUUFBQSxFQUFBQyxTQUFBO1FBQUEsT0FBQW5uQixZQUFBLEdBQUFDLENBQUEsV0FBQW1DLFFBQUE7VUFBQSxrQkFBQUEsUUFBQSxDQUFBOUQsQ0FBQTtZQUFBO2NBQUEsSUFDaEQyb0IsT0FBTztnQkFBQTdrQixRQUFBLENBQUE5RCxDQUFBO2dCQUFBO2NBQUE7Y0FBQSxNQUNKLElBQUloVyxLQUFLLENBQUMsNEJBQTRCLENBQUM7WUFBQTtjQUd6Q2dMLEdBQUcsR0FBRzVFLEdBQUcsQ0FBQzZGLFFBQVEsQ0FBQyxDQUFDO2NBQUE2TixRQUFBLENBQUE5RCxDQUFBO2NBQUEsT0FDSHVELE9BQU8sQ0FBQzRILElBQUksQ0FBQyxDQUNsQ2puQixnRUFBVyxDQUFDaUIsS0FBSyxDQUFDdVAsS0FBSyxDQUFDTSxHQUFHLEVBQUU7Z0JBQzNCaVAsTUFBTSxFQUFFLEtBQUs7Z0JBQ2J2SSxLQUFLLEVBQUU7Y0FDVCxDQUFDLENBQUMsRUFDRixJQUFJNkgsT0FBTyxDQUFXLFVBQUM1SCxDQUFDLEVBQUU2VCxNQUFNO2dCQUFBLE9BQUt0ckIsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ3NGLFVBQVUsQ0FBQztrQkFBQSxPQUFNK2tCLE1BQU0sQ0FBQyxJQUFJeGxCLEtBQUsseUJBQUE3QixNQUFBLENBQXlCNk0sR0FBRyxNQUFHLENBQUMsQ0FBQztnQkFBQSxHQUFFMnpCLE9BQU8sQ0FBQztjQUFBLEVBQUMsQ0FDckksQ0FBQztZQUFBO2NBTklqa0IsUUFBUSxHQUFBWixRQUFBLENBQUFoRCxDQUFBO2NBQUEsSUFRVDRELFFBQVEsQ0FBQ29rQixFQUFFO2dCQUFBaGxCLFFBQUEsQ0FBQTlELENBQUE7Z0JBQUE7Y0FBQTtjQUFBLE1BQ1IsSUFBSWhXLEtBQUssc0JBQUE3QixNQUFBLENBQXNCNk0sR0FBRyxTQUFBN00sTUFBQSxDQUFNdWMsUUFBUSxDQUFDSyxNQUFNLE1BQUcsQ0FBQztZQUFBO2NBQUEsTUFHL0RMLFFBQVEsQ0FBQ1IsSUFBSSxLQUFLLElBQUk7Z0JBQUFKLFFBQUEsQ0FBQTlELENBQUE7Z0JBQUE7Y0FBQTtjQUFBLE1BQ2xCLElBQUloVyxLQUFLLG1DQUFBN0IsTUFBQSxDQUFtQzZNLEdBQUcsTUFBRyxDQUFDO1lBQUE7Y0FBQThPLFFBQUEsQ0FBQTlELENBQUE7Y0FBQSxPQUdwQzBFLFFBQVEsQ0FBQ3FrQixJQUFJLENBQUMsQ0FBQztZQUFBO2NBQWhDSCxRQUFRLEdBQUE5a0IsUUFBQSxDQUFBaEQsQ0FBQTtjQUNSK25CLFNBQVMsR0FBR0QsUUFBUSxDQUFDaGhDLEtBQUssQ0FBQyxHQUFHLENBQUM7Y0FBQSxPQUFBa2MsUUFBQSxDQUFBL0MsQ0FBQSxJQUU5QjhuQixTQUFTLENBQUM3ZixHQUFHLENBQUMsVUFBQWlTLFFBQVE7Z0JBQUEsT0FBSSxJQUFJc04saURBQVEsQ0FBQ3ROLFFBQVEsRUFBRTBOLE9BQU8sQ0FBQztjQUFBLEVBQUM7VUFBQTtRQUFBLEdBQUFobEIsT0FBQTtNQUFBLENBQ2xFO01BQUEsU0ExQktxbEIsdUJBQXVCQSxDQUFBN2tCLEVBQUEsRUFBQXdMLEdBQUE7UUFBQSxPQUFBK1ksd0JBQUEsQ0FBQXRrQixLQUFBLE9BQUEzSyxTQUFBO01BQUE7TUFBQSxPQUF2QnV2Qix1QkFBdUI7SUFBQTtFQUFBO0lBQUEvakMsR0FBQTtJQUFBRSxLQUFBO01BQUEsSUFBQThqQyx3QkFBQSxHQUFBdmxCLG1GQUFBLGNBQUFoQyxZQUFBLEdBQUFFLENBQUEsQ0E0QjdCLFNBQUEwQyxTQUFBO1FBQUEsSUFBQTVlLEtBQUE7UUFBQSxJQUFBaWpDLE9BQUE7VUFBQTN6QixHQUFBO1VBQUE2ekIsU0FBQTtVQUFBSyxjQUFBO1VBQUFDLG1DQUFBO1VBQUFsTyxRQUFBO1VBQUFtTyxNQUFBLEdBQUEzdkIsU0FBQTtRQUFBLE9BQUFpSSxZQUFBLEdBQUFDLENBQUEsV0FBQTRDLFNBQUE7VUFBQSxrQkFBQUEsU0FBQSxDQUFBdkUsQ0FBQTtZQUFBO2NBQThCMm9CLE9BQWUsR0FBQVMsTUFBQSxDQUFBMzVCLE1BQUEsUUFBQTI1QixNQUFBLFFBQUEvOUIsU0FBQSxHQUFBKzlCLE1BQUEsTUFBR1osY0FBYztjQUN0RHh6QixHQUFHLEdBQUd1ZCxxREFBWSxDQUFDOFcsaUJBQWlCLENBQUMsSUFBSSxDQUFDWixJQUFJLENBQUM7Y0FBQWxrQixTQUFBLENBQUF2RSxDQUFBO2NBQUEsT0FDN0IsSUFBSSxDQUFDZ3BCLHVCQUF1QixDQUFDLElBQUk5a0MsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQzBGLEdBQUcsQ0FBQ21LLEdBQUcsQ0FBQyxFQUFFMnpCLE9BQU8sQ0FBQztZQUFBO2NBQXZGRSxTQUFTLEdBQUF0a0IsU0FBQSxDQUFBekQsQ0FBQTtjQUNYb29CLGNBQWMsR0FBRyxDQUFDO2NBQ2hCQyxtQ0FBbUMsR0FBRyxTQUF0Q0EsbUNBQW1DQSxDQUFBO2dCQUFBLE9BQXdCLElBQUk1bEIsT0FBTyxDQUFDLFVBQUM1SCxDQUFDLEVBQUU2VCxNQUFNLEVBQUs7a0JBQzFGLElBQUkwWixjQUFjLElBQUlMLFNBQVMsQ0FBQ3A1QixNQUFNLEVBQUU7b0JBQ3RDK2YsTUFBTSxrQkFBQXJuQixNQUFBLENBQWtCMGdDLFNBQVMsQ0FBQ3A1QixNQUFNLHdCQUFBdEgsTUFBQSxDQUFxQjZNLEdBQUcsNENBQXlDLENBQUM7a0JBQzVHO2dCQUNGLENBQUMsQ0FBQztjQUFBO2NBQUF1UCxTQUFBLENBQUF2RSxDQUFBO2NBQUEsT0FDcUJ1RCxPQUFPLENBQUM0SCxJQUFJLENBQUMwZCxTQUFTLENBQUM3ZixHQUFHLENBQUMsVUFBQWlTLFFBQVE7Z0JBQUEsT0FBSUEsUUFBUSxDQUNuRXFPLElBQUksQ0FBQyxDQUFDLFNBQ0QsQ0FBQyxVQUFBejVCLENBQUMsRUFBSTtrQkFDVm5LLEtBQUksQ0FBQ2tKLE9BQU8sQ0FBQ3VMLElBQUksQ0FBQywrQkFBK0IsRUFBRThnQixRQUFRLEVBQUVwckIsQ0FBQyxDQUFDO2tCQUUvRHE1QixjQUFjLEVBQUU7a0JBRWhCLE9BQU9DLG1DQUFtQyxDQUFDLENBQUM7Z0JBQzlDLENBQUMsQ0FBQyxDQUNEem1CLElBQUksQ0FBQyxVQUFBNm1CLElBQUksRUFBSTtrQkFDWixJQUFNM2tDLEdBQUcsR0FBR0QsSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQztrQkFFdEJjLEtBQUksQ0FBQ2tKLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLDBDQUEwQyxFQUFFb3NCLFFBQVEsQ0FBQ2hsQixRQUFRLENBQUMsQ0FBQyxFQUFFc3pCLElBQUksQ0FBQztrQkFDeEY3akMsS0FBSSxDQUFDNnRCLGVBQWUsQ0FBQzlrQixJQUFJLENBQUM7b0JBQ3hCTCxVQUFVLEVBQUVoQiw0REFBVyxDQUFDd1EsYUFBYTtvQkFDckNsUCxPQUFPLEVBQUUsQ0FBQzlKLEdBQUcsR0FBR2tGLDZDQUFHLENBQUMyRCxZQUFZLElBQUksSUFBSTtvQkFDeEN0SSxLQUFLLEVBQUU7c0JBQUN3SixNQUFNLEVBQUU0NkIsSUFBSSxJQUFJO29CQUFDLENBQUM7b0JBQzFCeG1CLFFBQVEsRUFBRWtZLFFBQVEsQ0FBQ2hsQixRQUFRLENBQUMsQ0FBQztvQkFDN0IrTSxJQUFJLEVBQUU7a0JBQ1IsQ0FBQyxDQUFDO2tCQUVGLE9BQU9pWSxRQUFRO2dCQUNqQixDQUFDLENBQUM7Y0FBQSxFQUFDLENBQUM7WUFBQTtjQXRCQUEsUUFBUSxHQUFBMVcsU0FBQSxDQUFBekQsQ0FBQTtjQUFBLE9BQUF5RCxTQUFBLENBQUF4RCxDQUFBLElBd0JQa2EsUUFBUTtVQUFBO1FBQUEsR0FBQTNXLFFBQUE7TUFBQSxDQUNoQjtNQUFBLFNBbENLZ2tCLHVCQUF1QkEsQ0FBQTtRQUFBLE9BQUFXLHdCQUFBLENBQUE3a0IsS0FBQSxPQUFBM0ssU0FBQTtNQUFBO01BQUEsT0FBdkI2dUIsdUJBQXVCO0lBQUE7RUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDMUQvQjtBQUNBO0FBQ0E7O0FBRXdEO0FBQ2pCO0FBQ2dCO0FBQ0Q7QUFDTjtBQUFBLElBRTNCL1YsWUFBWTtFQXVCL0IsU0FBQUEsYUFBQSxFQUFzQjtJQUFBOXRCLGlGQUFBLE9BQUE4dEIsWUFBQTtJQUNwQixNQUFNLElBQUl2b0IsS0FBSyxDQUFDLDZEQUE2RCxDQUFDO0VBQ2hGO0VBQUMsT0FBQWhGLDhFQUFBLENBQUF1dEIsWUFBQTtJQUFBdHRCLEdBQUE7SUFBQUMsR0FBQSxFQXRCRCxTQUFBQSxJQUFBLEVBQWtDO01BQ2hDLE9BQU9xdEIsWUFBWSxDQUFDaVgsYUFBYTtJQUNuQztFQUFDO0lBQUF2a0MsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBT2trQyxpQkFBaUJBLENBQUNqNUIsR0FBUSxFQUFVO01BQ3pDLElBQU00RSxHQUFHLEdBQUcsSUFBSTlRLGdFQUFXLENBQUNpQixLQUFLLENBQUMwRixHQUFHLENBQUN1RixHQUFHLENBQUM2RixRQUFRLENBQUMsQ0FBQyxDQUFDO01BQ3JELElBQU1tTixVQUFVLEdBQUdoQiwrREFBYyxDQUFDZ0IsVUFBVTtNQUM1QyxJQUFNbFEsVUFBVSxHQUFHTiwrREFBVSxDQUFDNjJCLG1CQUFtQixDQUFDdjJCLFVBQVU7TUFFNUQ4QixHQUFHLENBQUMwMEIsWUFBWSxDQUFDdHJCLEdBQUcsQ0FBQyxTQUFTLEVBQUVnRixVQUFVLENBQUM7TUFDM0NwTyxHQUFHLENBQUMwMEIsWUFBWSxDQUFDdHJCLEdBQUcsQ0FBQyxZQUFZLEVBQUVsTCxVQUFVLENBQUM7TUFDOUM4QixHQUFHLENBQUMwMEIsWUFBWSxDQUFDdHJCLEdBQUcsQ0FBQyxHQUFHLEtBQUFqVyxNQUFBLENBQUt4RCxJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDLENBQUUsQ0FBQztNQUUxQyxJQUFJb1EsR0FBRyxDQUFDc0osUUFBUSxLQUFLLEdBQUcsRUFBRTtRQUN4QnRKLEdBQUcsQ0FBQ3NKLFFBQVEsR0FBRyxrQkFBa0I7TUFDbkM7TUFFQSxPQUFPdEosR0FBRyxDQUFDaUIsUUFBUSxDQUFDLENBQUM7SUFDdkI7RUFBQztBQUFBO0FBQUF2UixpRkFBQSxDQXJCa0I2dEIsWUFBWSxtQkFDMEIsSUFBSWx1QixtREFBTyxDQUFTK2lDLDBEQUFtQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCQ1ZuRyx1S0FBQXYzQixDQUFBLEVBQUFnUSxDQUFBLEVBQUFDLENBQUEsd0JBQUFDLE1BQUEsR0FBQUEsTUFBQSxPQUFBQyxDQUFBLEdBQUFGLENBQUEsQ0FBQUcsUUFBQSxrQkFBQUMsQ0FBQSxHQUFBSixDQUFBLENBQUFLLFdBQUEsOEJBQUFDLEVBQUFOLENBQUEsRUFBQUUsQ0FBQSxFQUFBRSxDQUFBLEVBQUFFLENBQUEsUUFBQUMsQ0FBQSxHQUFBTCxDQUFBLElBQUFBLENBQUEsQ0FBQS9OLFNBQUEsWUFBQXFPLFNBQUEsR0FBQU4sQ0FBQSxHQUFBTSxTQUFBLEVBQUFDLENBQUEsR0FBQTNFLE1BQUEsQ0FBQTRFLE1BQUEsQ0FBQUgsQ0FBQSxDQUFBcE8sU0FBQSxVQUFBd08sbUJBQUEsQ0FBQUYsQ0FBQSx1QkFBQVQsQ0FBQSxFQUFBRSxDQUFBLEVBQUFFLENBQUEsUUFBQUUsQ0FBQSxFQUFBQyxDQUFBLEVBQUFFLENBQUEsRUFBQUcsQ0FBQSxNQUFBQyxDQUFBLEdBQUFULENBQUEsUUFBQVUsQ0FBQSxPQUFBQyxDQUFBLEtBQUFGLENBQUEsS0FBQVgsQ0FBQSxLQUFBYyxDQUFBLEVBQUFqUixDQUFBLEVBQUFrUixDQUFBLEVBQUFDLENBQUEsRUFBQU4sQ0FBQSxFQUFBTSxDQUFBLENBQUF4VyxJQUFBLENBQUFxRixDQUFBLE1BQUFtUixDQUFBLFdBQUFBLEVBQUFuQixDQUFBLEVBQUFDLENBQUEsV0FBQU0sQ0FBQSxHQUFBUCxDQUFBLEVBQUFRLENBQUEsTUFBQUUsQ0FBQSxHQUFBMVEsQ0FBQSxFQUFBZ1IsQ0FBQSxDQUFBYixDQUFBLEdBQUFGLENBQUEsRUFBQWlCLENBQUEsZ0JBQUFDLEVBQUFsQixDQUFBLEVBQUFFLENBQUEsU0FBQUssQ0FBQSxHQUFBUCxDQUFBLEVBQUFTLENBQUEsR0FBQVAsQ0FBQSxFQUFBSCxDQUFBLE9BQUFlLENBQUEsSUFBQUYsQ0FBQSxLQUFBUixDQUFBLElBQUFMLENBQUEsR0FBQWMsQ0FBQSxDQUFBbFIsTUFBQSxFQUFBb1EsQ0FBQSxVQUFBSyxDQUFBLEVBQUFFLENBQUEsR0FBQU8sQ0FBQSxDQUFBZCxDQUFBLEdBQUFtQixDQUFBLEdBQUFILENBQUEsQ0FBQUYsQ0FBQSxFQUFBTSxDQUFBLEdBQUFiLENBQUEsS0FBQU4sQ0FBQSxRQUFBSSxDQUFBLEdBQUFlLENBQUEsS0FBQWpCLENBQUEsTUFBQU8sQ0FBQSxHQUFBSCxDQUFBLEVBQUFDLENBQUEsR0FBQUQsQ0FBQSxZQUFBQyxDQUFBLFdBQUFELENBQUEsTUFBQUEsQ0FBQSxNQUFBdlEsQ0FBQSxJQUFBdVEsQ0FBQSxPQUFBWSxDQUFBLE1BQUFkLENBQUEsR0FBQUosQ0FBQSxRQUFBa0IsQ0FBQSxHQUFBWixDQUFBLFFBQUFDLENBQUEsTUFBQVEsQ0FBQSxDQUFBQyxDQUFBLEdBQUFkLENBQUEsRUFBQWEsQ0FBQSxDQUFBYixDQUFBLEdBQUFJLENBQUEsT0FBQVksQ0FBQSxHQUFBQyxDQUFBLEtBQUFmLENBQUEsR0FBQUosQ0FBQSxRQUFBTSxDQUFBLE1BQUFKLENBQUEsSUFBQUEsQ0FBQSxHQUFBaUIsQ0FBQSxNQUFBYixDQUFBLE1BQUFOLENBQUEsRUFBQU0sQ0FBQSxNQUFBSixDQUFBLEVBQUFhLENBQUEsQ0FBQWIsQ0FBQSxHQUFBaUIsQ0FBQSxFQUFBWixDQUFBLGNBQUFILENBQUEsSUFBQUosQ0FBQSxhQUFBaUIsQ0FBQSxRQUFBSCxDQUFBLE9BQUFaLENBQUEscUJBQUFFLENBQUEsRUFBQVMsQ0FBQSxFQUFBTSxDQUFBLFFBQUFQLENBQUEsWUFBQVEsU0FBQSx1Q0FBQU4sQ0FBQSxVQUFBRCxDQUFBLElBQUFLLENBQUEsQ0FBQUwsQ0FBQSxFQUFBTSxDQUFBLEdBQUFaLENBQUEsR0FBQU0sQ0FBQSxFQUFBSixDQUFBLEdBQUFVLENBQUEsR0FBQXBCLENBQUEsR0FBQVEsQ0FBQSxPQUFBeFEsQ0FBQSxHQUFBMFEsQ0FBQSxNQUFBSyxDQUFBLEtBQUFSLENBQUEsS0FBQUMsQ0FBQSxHQUFBQSxDQUFBLFFBQUFBLENBQUEsU0FBQVEsQ0FBQSxDQUFBYixDQUFBLFFBQUFnQixDQUFBLENBQUFYLENBQUEsRUFBQUUsQ0FBQSxLQUFBTSxDQUFBLENBQUFiLENBQUEsR0FBQU8sQ0FBQSxHQUFBTSxDQUFBLENBQUFDLENBQUEsR0FBQVAsQ0FBQSxhQUFBRyxDQUFBLE1BQUFOLENBQUEsUUFBQUMsQ0FBQSxLQUFBSCxDQUFBLFlBQUFMLENBQUEsR0FBQU8sQ0FBQSxDQUFBRixDQUFBLFdBQUFMLENBQUEsR0FBQUEsQ0FBQSxDQUFBL0osSUFBQSxDQUFBc0ssQ0FBQSxFQUFBRyxDQUFBLFVBQUFXLFNBQUEsMkNBQUFyQixDQUFBLENBQUFzQixJQUFBLFNBQUF0QixDQUFBLEVBQUFVLENBQUEsR0FBQVYsQ0FBQSxDQUFBMWEsS0FBQSxFQUFBa2IsQ0FBQSxTQUFBQSxDQUFBLG9CQUFBQSxDQUFBLEtBQUFSLENBQUEsR0FBQU8sQ0FBQSxlQUFBUCxDQUFBLENBQUEvSixJQUFBLENBQUFzSyxDQUFBLEdBQUFDLENBQUEsU0FBQUUsQ0FBQSxHQUFBVyxTQUFBLHVDQUFBaEIsQ0FBQSxnQkFBQUcsQ0FBQSxPQUFBRCxDQUFBLEdBQUF2USxDQUFBLGNBQUFnUSxDQUFBLElBQUFlLENBQUEsR0FBQUMsQ0FBQSxDQUFBYixDQUFBLFFBQUFPLENBQUEsR0FBQVQsQ0FBQSxDQUFBaEssSUFBQSxDQUFBa0ssQ0FBQSxFQUFBYSxDQUFBLE9BQUFFLENBQUEsa0JBQUFsQixDQUFBLElBQUFPLENBQUEsR0FBQXZRLENBQUEsRUFBQXdRLENBQUEsTUFBQUUsQ0FBQSxHQUFBVixDQUFBLGNBQUFhLENBQUEsbUJBQUF2YixLQUFBLEVBQUEwYSxDQUFBLEVBQUFzQixJQUFBLEVBQUFQLENBQUEsU0FBQWQsQ0FBQSxFQUFBSSxDQUFBLEVBQUFFLENBQUEsUUFBQUcsQ0FBQSxRQUFBUSxDQUFBLGdCQUFBVCxVQUFBLGNBQUFjLGtCQUFBLGNBQUFDLDJCQUFBLEtBQUF4QixDQUFBLEdBQUFqRSxNQUFBLENBQUEwRixjQUFBLE1BQUFqQixDQUFBLE1BQUFMLENBQUEsSUFBQUgsQ0FBQSxDQUFBQSxDQUFBLElBQUFHLENBQUEsU0FBQVMsbUJBQUEsQ0FBQVosQ0FBQSxPQUFBRyxDQUFBLGlDQUFBSCxDQUFBLEdBQUFVLENBQUEsR0FBQWMsMEJBQUEsQ0FBQXBQLFNBQUEsR0FBQXFPLFNBQUEsQ0FBQXJPLFNBQUEsR0FBQTJKLE1BQUEsQ0FBQTRFLE1BQUEsQ0FBQUgsQ0FBQSxZQUFBSyxFQUFBN1EsQ0FBQSxXQUFBK0wsTUFBQSxDQUFBMkYsY0FBQSxHQUFBM0YsTUFBQSxDQUFBMkYsY0FBQSxDQUFBMVIsQ0FBQSxFQUFBd1IsMEJBQUEsS0FBQXhSLENBQUEsQ0FBQTJSLFNBQUEsR0FBQUgsMEJBQUEsRUFBQVosbUJBQUEsQ0FBQTVRLENBQUEsRUFBQXFRLENBQUEseUJBQUFyUSxDQUFBLENBQUFvQyxTQUFBLEdBQUEySixNQUFBLENBQUE0RSxNQUFBLENBQUFELENBQUEsR0FBQTFRLENBQUEsV0FBQXVSLGlCQUFBLENBQUFuUCxTQUFBLEdBQUFvUCwwQkFBQSxFQUFBWixtQkFBQSxDQUFBRixDQUFBLGlCQUFBYywwQkFBQSxHQUFBWixtQkFBQSxDQUFBWSwwQkFBQSxpQkFBQUQsaUJBQUEsR0FBQUEsaUJBQUEsQ0FBQUssV0FBQSx3QkFBQWhCLG1CQUFBLENBQUFZLDBCQUFBLEVBQUFuQixDQUFBLHdCQUFBTyxtQkFBQSxDQUFBRixDQUFBLEdBQUFFLG1CQUFBLENBQUFGLENBQUEsRUFBQUwsQ0FBQSxnQkFBQU8sbUJBQUEsQ0FBQUYsQ0FBQSxFQUFBUCxDQUFBLGlDQUFBUyxtQkFBQSxDQUFBRixDQUFBLDhEQUFBbUIsWUFBQSxZQUFBQSxhQUFBLGFBQUFDLENBQUEsRUFBQXZCLENBQUEsRUFBQXdCLENBQUEsRUFBQWxCLENBQUE7QUFBQSxTQUFBRCxvQkFBQTVRLENBQUEsRUFBQWlRLENBQUEsRUFBQUUsQ0FBQSxFQUFBSCxDQUFBLFFBQUFPLENBQUEsR0FBQXhFLE1BQUEsQ0FBQWlHLGNBQUEsUUFBQXpCLENBQUEsdUJBQUF2USxDQUFBLElBQUF1USxDQUFBLFFBQUFLLG1CQUFBLFlBQUFxQixtQkFBQWpTLENBQUEsRUFBQWlRLENBQUEsRUFBQUUsQ0FBQSxFQUFBSCxDQUFBLGFBQUFLLEVBQUFKLENBQUEsRUFBQUUsQ0FBQSxJQUFBUyxtQkFBQSxDQUFBNVEsQ0FBQSxFQUFBaVEsQ0FBQSxZQUFBalEsQ0FBQSxnQkFBQWtTLE9BQUEsQ0FBQWpDLENBQUEsRUFBQUUsQ0FBQSxFQUFBblEsQ0FBQSxTQUFBaVEsQ0FBQSxHQUFBTSxDQUFBLEdBQUFBLENBQUEsQ0FBQXZRLENBQUEsRUFBQWlRLENBQUEsSUFBQTNhLEtBQUEsRUFBQTZhLENBQUEsRUFBQWdDLFVBQUEsR0FBQW5DLENBQUEsRUFBQW9DLFlBQUEsR0FBQXBDLENBQUEsRUFBQXFDLFFBQUEsR0FBQXJDLENBQUEsTUFBQWhRLENBQUEsQ0FBQWlRLENBQUEsSUFBQUUsQ0FBQSxJQUFBRSxDQUFBLGFBQUFBLENBQUEsY0FBQUEsQ0FBQSxtQkFBQU8sbUJBQUEsQ0FBQTVRLENBQUEsRUFBQWlRLENBQUEsRUFBQUUsQ0FBQSxFQUFBSCxDQUFBO0FBREE7QUFDQTtBQUNBOztBQUV3RDtBQUVEO0FBQ0k7QUFXSjtBQUNEO0FBRUE7QUFDRTtBQVN4RCxJQUFNOHBCLFVBQVUsR0FBRyxDQUFDO0FBQUMsSUFzRkFwQixRQUFRO0VBTTNCLFNBQUFBLFNBQVluNEIsR0FBVyxFQUFFdTRCLE9BQWUsRUFBRTtJQUFBbGtDLGlGQUFBLE9BQUE4akMsUUFBQTtJQUFBN2pDLGlGQUFBLGtCQUxONkksNkRBQWEsQ0FBQ0csU0FBUyxDQUFDLFVBQVUsQ0FBQztJQUFBaEosaUZBQUE7SUFBQUEsaUZBQUE7SUFBQUEsaUZBQUEseUJBR3RDLENBQUM7SUFHaEMsSUFBSSxDQUFDK2pDLElBQUksR0FBR3I0QixHQUFHO0lBQ2YsSUFBSSxDQUFDdzVCLFFBQVEsR0FBR2pCLE9BQU87SUFFdkIsSUFBSSxDQUFDQSxPQUFPLEVBQUU7TUFDWixNQUFNLElBQUkzK0IsS0FBSywrQkFBK0IsQ0FBQztJQUNqRDtFQUNGO0VBQUMsT0FBQWhGLDhFQUFBLENBQUF1akMsUUFBQTtJQUFBdGpDLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBNEI7TUFDMUIsT0FBTyxJQUFJLENBQUMya0MsY0FBYztJQUM1QjtFQUFDO0lBQUE1a0MsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQThRLFFBQVFBLENBQUEsRUFBVztNQUNqQix1QkFBQTlOLE1BQUEsQ0FBdUIsSUFBSSxDQUFDc2dDLElBQUk7SUFDbEM7RUFBQztJQUFBeGpDLEdBQUE7SUFBQUUsS0FBQTtNQUFBLElBQUEya0MsS0FBQSxHQUFBcG1CLG1GQUFBLGNBQUFoQyxZQUFBLEdBQUFFLENBQUEsQ0FFRCxTQUFBK0IsUUFBQTtRQUFBLElBQUFqZSxLQUFBO1FBQUEsSUFBQXNQLEdBQUEsRUFBQW9vQixLQUFBLEVBQUExWSxRQUFBLEVBQUFxbEIsUUFBQTtRQUFBLE9BQUFyb0IsWUFBQSxHQUFBQyxDQUFBLFdBQUFtQyxRQUFBO1VBQUEsa0JBQUFBLFFBQUEsQ0FBQTlELENBQUE7WUFBQTtjQUNRaEwsR0FBRyxHQUFHLElBQUksQ0FBQ2cxQixZQUFZLENBQUMsQ0FBQztjQUN6QjVNLEtBQUssR0FBR3o0QixJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDO2NBQUFrZixRQUFBLENBQUE5RCxDQUFBO2NBQUEsT0FDRHVELE9BQU8sQ0FBQzRILElBQUksQ0FBQyxDQUNsQ2puQixnRUFBVyxDQUFDaUIsS0FBSyxDQUFDdVAsS0FBSyxDQUFDTSxHQUFHLEVBQUU7Z0JBQzNCaVAsTUFBTSxFQUFFLEtBQUs7Z0JBQ2J2SSxLQUFLLEVBQUU7Y0FDVCxDQUFDLENBQUMsRUFDRixJQUFJNkgsT0FBTyxDQUFXLFVBQUM1SCxDQUFDLEVBQUU2VCxNQUFNO2dCQUFBLE9BQzlCdHJCLGdFQUFXLENBQUNpQixLQUFLLENBQUNzRixVQUFVLENBQUM7a0JBQUEsT0FBTStrQixNQUFNLENBQUMsSUFBSXhsQixLQUFLLG9CQUFBN0IsTUFBQSxDQUFvQjZNLEdBQUcsTUFBRyxDQUFDLENBQUM7Z0JBQUEsR0FBRXRQLEtBQUksQ0FBQ2trQyxRQUFRLENBQUM7Y0FBQSxFQUFDLENBQ25HLENBQUM7WUFBQTtjQVBJbGxCLFFBQVEsR0FBQVosUUFBQSxDQUFBaEQsQ0FBQTtjQVFSaXBCLFFBQVEsR0FBR3BsQyxJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDO2NBQUEsSUFFdEI4ZixRQUFRLENBQUNva0IsRUFBRTtnQkFBQWhsQixRQUFBLENBQUE5RCxDQUFBO2dCQUFBO2NBQUE7Y0FBQSxNQUNSLElBQUloVyxLQUFLLGlCQUFBN0IsTUFBQSxDQUFpQjZNLEdBQUcsU0FBQTdNLE1BQUEsQ0FBTXVjLFFBQVEsQ0FBQ0ssTUFBTSxNQUFHLENBQUM7WUFBQTtjQUc5RCxJQUFJLENBQUM4a0IsY0FBYyxHQUFHRSxRQUFRLEdBQUczTSxLQUFLO2NBQUMsT0FBQXRaLFFBQUEsQ0FBQS9DLENBQUEsSUFFaEMsSUFBSSxDQUFDOG9CLGNBQWM7VUFBQTtRQUFBLEdBQUFsbUIsT0FBQTtNQUFBLENBQzNCO01BQUEsU0FwQksybEIsSUFBSUEsQ0FBQTtRQUFBLE9BQUFRLEtBQUEsQ0FBQTFsQixLQUFBLE9BQUEzSyxTQUFBO01BQUE7TUFBQSxPQUFKNnZCLElBQUk7SUFBQTtFQUFBO0lBQUFya0MsR0FBQTtJQUFBRSxLQUFBO01BQUEsSUFBQThrQyxVQUFBLEdBQUF2bUIsbUZBQUEsY0FBQWhDLFlBQUEsR0FBQUUsQ0FBQSxDQXNCVixTQUFBMEMsU0FBZ0JuVixLQUF1QixFQUFFKzZCLHVCQUF5RCxFQUFFblAsWUFBb0I7UUFBQSxJQUFBb1AscUJBQUE7VUFBQXJ2QixNQUFBO1VBQUFzdkIsc0JBQUE7UUFBQSxJQUFBeGpCLE9BQUE7VUFBQWxJLE9BQUE7VUFBQTFKLEdBQUE7VUFBQTZPLFFBQUE7VUFBQXdtQixhQUFBO1VBQUFDLFdBQUE7VUFBQWxOLEtBQUE7VUFBQW1OLFlBQUE7VUFBQTVCLE9BQUE7VUFBQTZCLGdCQUFBO1VBQUF6bEIsTUFBQTtVQUFBMGxCLHNCQUFBO1VBQUFDLFNBQUE7VUFBQUMsc0JBQUE7VUFBQUMsVUFBQTtVQUFBYixRQUFBO1VBQUFjLGlCQUFBO1VBQUF6QixNQUFBLEdBQUEzdkIsU0FBQTtVQUFBb04sRUFBQTtRQUFBLE9BQUFuRixZQUFBLEdBQUFDLENBQUEsV0FBQTRDLFNBQUE7VUFBQSxrQkFBQUEsU0FBQSxDQUFBNUQsQ0FBQSxHQUFBNEQsU0FBQSxDQUFBdkUsQ0FBQTtZQUFBO2NBQUU0RyxPQUF5QixHQUFBd2lCLE1BQUEsQ0FBQTM1QixNQUFBLFFBQUEyNUIsTUFBQSxRQUFBLzlCLFNBQUEsR0FBQSs5QixNQUFBLE1BQUcsQ0FBQyxDQUFDO2NBQ2hKMXFCLE9BQU8sR0FBR3pQLGdFQUFjLENBQUNDLFVBQVUsQ0FBQ0MsS0FBSyxDQUFDLENBQUN1UCxPQUFPO2NBQUEsSUFFbkRBLE9BQU87Z0JBQUE2RixTQUFBLENBQUF2RSxDQUFBO2dCQUFBO2NBQUE7Y0FDVixJQUFJLENBQUNwUixPQUFPLENBQUNTLEtBQUssQ0FBQyw0QkFBNEIsRUFBRUYsS0FBSyxDQUFDO2NBQUMsT0FBQW9WLFNBQUEsQ0FBQXhELENBQUEsSUFFakQ7Z0JBQUNnRSxNQUFNLEVBQUU7Y0FBYyxDQUFDO1lBQUE7Y0FHM0IvUCxHQUFHLEdBQUcsSUFBSSxDQUFDODFCLFFBQVEsQ0FBQyxDQUFDcHNCLE9BQU8sRUFBRSxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQ3pJLFFBQVEsQ0FBQyxDQUFDO2NBQ2hFNE4sUUFBUSxHQUFHLElBQUkzZixnRUFBVyxDQUFDaUIsS0FBSyxDQUFDeU8sUUFBUSxDQUFDLENBQUM7Y0FDM0N5MkIsYUFBYSxHQUFHam9CLCtEQUFjLENBQUNnQixVQUFVO2NBRy9DLElBQUkyWCxZQUFZLEtBQUssQ0FBQyxJQUFJbVAsdUJBQXVCLEVBQUU7Z0JBQ2pESSxXQUFXLEdBQUc7a0JBQ1pYLFVBQVUsRUFBVkEsVUFBVTtrQkFDVlUsYUFBYSxFQUFiQSxhQUFhO2tCQUNiVSxXQUFXLEVBQUU1N0IsS0FBSztrQkFDbEI0ckIsWUFBWSxFQUFaQSxZQUFZO2tCQUNaaVEsaUJBQWlCLEVBQUUsSUFBSSxDQUFDbkIsY0FBYztrQkFDdEN4WixvQkFBb0IsRUFBRTtvQkFDcEJzWixVQUFVLEVBQVZBLFVBQVU7b0JBQ1ZzQixrQkFBa0IsRUFBRTtzQkFDbEJ2K0IsSUFBSSxFQUFFdzlCLHVCQUF1QixDQUFDeDlCLElBQUk7c0JBQ2xDNGMsR0FBRyxFQUFFNGdCLHVCQUF1QixDQUFDNWdCO29CQUMvQjtrQkFDRixDQUFDO2tCQUNENGhCLHVCQUF1QixFQUFFO29CQUFDdkIsVUFBVSxFQUFWQTtrQkFBVTtnQkFDdEMsQ0FBQztjQUNILENBQUMsTUFBTTtnQkFDTFcsV0FBVyxHQUFHO2tCQUNaWCxVQUFVLEVBQVZBLFVBQVU7a0JBQ1ZVLGFBQWEsRUFBYkEsYUFBYTtrQkFDYlUsV0FBVyxFQUFFNTdCLEtBQUs7a0JBQ2xCNHJCLFlBQVksRUFBWkEsWUFBWTtrQkFDWmlRLGlCQUFpQixFQUFFLElBQUksQ0FBQ25CLGNBQWM7a0JBQ3RDc0Isc0JBQXNCLEVBQUU7b0JBQUN4QixVQUFVLEVBQVZBO2tCQUFVO2dCQUNyQyxDQUFDO2NBQ0g7Y0FBQ3BsQixTQUFBLENBQUF2RSxDQUFBO2NBQUEsUUFBQW1xQixxQkFBQSxHQUVLdmpCLE9BQU8sQ0FBQ3drQiwwQkFBMEIsY0FBQWpCLHFCQUFBLHVCQUFsQ0EscUJBQUEsQ0FBQXIwQixJQUFBLENBQUE4USxPQUFPLEVBQThCMGpCLFdBQVcsQ0FBQztZQUFBO2NBRXZEem1CLFFBQVEsQ0FBQ0UsTUFBTSxDQUFDLFVBQVUsRUFBRXBVLElBQUksQ0FBQ3dMLFNBQVMsQ0FBQ212QixXQUFXLENBQUMsQ0FBQztjQUVsRGxOLEtBQUssR0FBR3o0QixJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDO2NBQUEyZixTQUFBLENBQUE1RCxDQUFBO2NBSWxCZ29CLE9BQXNCLEdBQUcsSUFBSTtjQUFBcGtCLFNBQUEsQ0FBQXZFLENBQUE7Y0FBQSxPQUVadUQsT0FBTyxDQUFDNEgsSUFBSSxDQUFDLENBQ2hDam5CLGdFQUFXLENBQUNpQixLQUFLLENBQUN1UCxLQUFLLENBQUNNLEdBQUcsRUFBRTtnQkFDM0JpUCxNQUFNLEVBQUUsTUFBTTtnQkFDZEMsSUFBSSxFQUFFTDtjQUNSLENBQUMsQ0FBQyxFQUNGLElBQUlOLE9BQU8sQ0FBVyxVQUFBMkgsT0FBTztnQkFBQSxPQUMzQnlkLE9BQU8sR0FBR3prQyxnRUFBVyxDQUFDaUIsS0FBSyxDQUFDc0YsVUFBVSxDQUFDLFlBQU07a0JBQzNDcVEsTUFBSSxDQUFDbE0sT0FBTyxDQUFDUyxLQUFLLENBQUMscUJBQXFCLEVBQUUsSUFBSXJGLEtBQUsseUJBQUE3QixNQUFBLENBQXlCNk0sR0FBRyxNQUFHLENBQUMsQ0FBQztrQkFDcEZrVyxPQUFPLENBQUM7b0JBQUNuRyxNQUFNLEVBQUU7a0JBQUcsQ0FBYSxDQUFDO2dCQUNwQyxDQUFDLEVBQUVqSyxNQUFJLENBQUM4dUIsUUFBUSxDQUFDO2NBQUEsRUFBQyxDQUNyQixDQUFDLFdBQ1EsQ0FBQyxZQUFNO2dCQUNiLElBQUlqQixPQUFPLEVBQUU7a0JBQ1h6a0MsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ2tQLFlBQVksQ0FBQ3MwQixPQUFPLENBQUM7Z0JBQ3pDO2NBQ0YsQ0FBQyxDQUFDO1lBQUE7Y0FmSjRCLFlBQVksR0FBQWhtQixTQUFBLENBQUF6RCxDQUFBO2NBQUF5RCxTQUFBLENBQUF2RSxDQUFBO2NBQUE7WUFBQTtjQUFBdUUsU0FBQSxDQUFBNUQsQ0FBQTtjQUFBa0csRUFBQSxHQUFBdEMsU0FBQSxDQUFBekQsQ0FBQTtjQWlCWixJQUFJLENBQUNsUyxPQUFPLENBQUNTLEtBQUssQ0FBQyxxQkFBcUIsRUFBQXdYLEVBQUcsQ0FBQztjQUFDLE9BQUF0QyxTQUFBLENBQUF4RCxDQUFBLElBRXRDO2dCQUFDZ0UsTUFBTSxFQUFFO2NBQVEsQ0FBQztZQUFBO2NBQUFSLFNBQUEsQ0FBQXZFLENBQUE7Y0FBQSxPQUdJLElBQUksQ0FBQ3FyQixhQUFhLENBQTRCZCxZQUFZLENBQUM7WUFBQTtjQUFwRkMsZ0JBQWdCLEdBQUFqbUIsU0FBQSxDQUFBekQsQ0FBQTtjQUV0QixJQUFJLENBQUN3cUIsMkJBQTJCLENBQUNkLGdCQUFnQixhQUFoQkEsZ0JBQWdCLHVCQUFoQkEsZ0JBQWdCLENBQUVlLHFCQUFxQixDQUFDO2NBRW5FeG1CLE1BQXVCLEdBQUcsSUFBSSxDQUFDeW1CLDhCQUE4QixDQUFDakIsWUFBWSxDQUFDO2NBQUEsTUFFN0V4bEIsTUFBTSxLQUFLLElBQUk7Z0JBQUFSLFNBQUEsQ0FBQXZFLENBQUE7Z0JBQUE7Y0FBQTtjQUNYMEUsU0FBdUMsR0FBRztnQkFBQ0ssTUFBTSxFQUFOQTtjQUFNLENBQUM7Y0FBQVIsU0FBQSxDQUFBdkUsQ0FBQTtjQUFBLFFBQUF5cUIsc0JBQUEsR0FFbEQ3akIsT0FBTyxDQUFDNmtCLDJCQUEyQixjQUFBaEIsc0JBQUEsdUJBQW5DQSxzQkFBQSxDQUFBMzBCLElBQUEsQ0FBQThRLE9BQU8sRUFBK0JsQyxTQUFRLENBQUM7WUFBQTtjQUFBLE9BQUFILFNBQUEsQ0FBQXhELENBQUEsSUFFOUMyRCxTQUFRO1lBQUE7Y0FBQSxJQUdaOGxCLGdCQUFnQjtnQkFBQWptQixTQUFBLENBQUF2RSxDQUFBO2dCQUFBO2NBQUE7Y0FDYjBFLFVBQXVDLEdBQUc7Z0JBQUNLLE1BQU0sRUFBRTtjQUFRLENBQUM7Y0FBQVIsU0FBQSxDQUFBdkUsQ0FBQTtjQUFBLFFBQUEycUIsc0JBQUEsR0FFNUQvakIsT0FBTyxDQUFDNmtCLDJCQUEyQixjQUFBZCxzQkFBQSx1QkFBbkNBLHNCQUFBLENBQUE3MEIsSUFBQSxDQUFBOFEsT0FBTyxFQUErQmxDLFVBQVEsQ0FBQztZQUFBO2NBQUEsT0FBQUgsU0FBQSxDQUFBeEQsQ0FBQSxJQUU5QzJELFVBQVE7WUFBQTtjQUdYcWxCLFFBQVEsR0FBR3BsQyxJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDO2NBQ3JCaW1DLGlCQUFpQixHQUFHLElBQUksQ0FBQ2EsMEJBQTBCLENBQUNodEIsT0FBTyxFQUFFOHJCLGdCQUFnQixDQUFDO2NBRXBGLElBQUksQ0FBQzU3QixPQUFPLENBQUNnTCxLQUFLLENBQUMsd0NBQXdDLEVBQUVpeEIsaUJBQWlCLEVBQUVkLFFBQVEsR0FBRzNNLEtBQUssQ0FBQztjQUFDN1ksU0FBQSxDQUFBdkUsQ0FBQTtjQUFBLFFBQUFvcUIsc0JBQUEsR0FFNUZ4akIsT0FBTyxDQUFDNmtCLDJCQUEyQixjQUFBckIsc0JBQUEsdUJBQW5DQSxzQkFBQSxDQUFBdDBCLElBQUEsQ0FBQThRLE9BQU8sRUFBK0Jpa0IsaUJBQWlCLENBQUM7WUFBQTtjQUFBLE9BQUF0bUIsU0FBQSxDQUFBeEQsQ0FBQSxJQUV2RDhwQixpQkFBaUI7VUFBQTtRQUFBLEdBQUF2bUIsUUFBQTtNQUFBLENBQ3pCO01BQUEsU0F2R0svTyxTQUFTQSxDQUFBNE8sRUFBQSxFQUFBd0wsR0FBQSxFQUFBSSxHQUFBO1FBQUEsT0FBQWthLFVBQUEsQ0FBQTdsQixLQUFBLE9BQUEzSyxTQUFBO01BQUE7TUFBQSxPQUFUbEUsU0FBUztJQUFBO0VBQUE7SUFBQXRRLEdBQUE7SUFBQUUsS0FBQTtNQUFBLElBQUF3bUMsUUFBQSxHQUFBam9CLG1GQUFBLGNBQUFoQyxZQUFBLEdBQUFFLENBQUEsQ0F5R2YsU0FBQW1FLFNBQWM1YyxJQUFZLEVBQUVnRyxLQUF1QixFQUFFKzZCLHVCQUF5RCxFQUFFblAsWUFBb0I7UUFBQSxJQUFBak8sTUFBQTtRQUFBLElBQUFwTyxPQUFBLEVBQUExSixHQUFBLEVBQUE2TyxRQUFBLEVBQUF3bUIsYUFBQSxFQUFBdUIsYUFBQSxFQUFBQyxnQkFBQSxFQUFBek8sS0FBQSxFQUFBbU4sWUFBQSxFQUFBNUIsT0FBQSxFQUFBNkIsZ0JBQUEsRUFBQXpsQixNQUFBLEVBQUFnbEIsUUFBQSxFQUFBK0IsZUFBQSxFQUFBaGxCLEdBQUE7UUFBQSxPQUFBcEYsWUFBQSxHQUFBQyxDQUFBLFdBQUF5RSxTQUFBO1VBQUEsa0JBQUFBLFNBQUEsQ0FBQXpGLENBQUEsR0FBQXlGLFNBQUEsQ0FBQXBHLENBQUE7WUFBQTtjQUM1SHRCLE9BQU8sR0FBR3pQLGdFQUFjLENBQUNDLFVBQVUsQ0FBQ0MsS0FBSyxDQUFDLENBQUN1UCxPQUFPO2NBQUEsSUFFbkRBLE9BQU87Z0JBQUEwSCxTQUFBLENBQUFwRyxDQUFBO2dCQUFBO2NBQUE7Y0FDVixJQUFJLENBQUNwUixPQUFPLENBQUNTLEtBQUssQ0FBQyw0QkFBNEIsRUFBRUYsS0FBSyxDQUFDO2NBQUMsT0FBQWlYLFNBQUEsQ0FBQXJGLENBQUEsSUFFakQ7Z0JBQUNnRSxNQUFNLEVBQUU7Y0FBYyxDQUFDO1lBQUE7Y0FHM0IvUCxHQUFHLEdBQUcsSUFBSSxDQUFDODFCLFFBQVEsQ0FBQyxDQUFDcHNCLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQ3pJLFFBQVEsQ0FBQyxDQUFDO2NBQzlENE4sUUFBUSxHQUFHLElBQUkzZixnRUFBVyxDQUFDaUIsS0FBSyxDQUFDeU8sUUFBUSxDQUFDLENBQUM7Y0FDM0N5MkIsYUFBYSxHQUFHam9CLCtEQUFjLENBQUNnQixVQUFVO2NBRS9DLElBQUkyWCxZQUFZLEtBQUssQ0FBQyxJQUFJbVAsdUJBQXVCLEVBQUU7Z0JBQzNDMEIsYUFBdUMsR0FBRztrQkFDOUNqQyxVQUFVLEVBQVZBLFVBQVU7a0JBQ1ZVLGFBQWEsRUFBYkEsYUFBYTtrQkFDYlUsV0FBVyxFQUFFNTdCLEtBQUs7a0JBQ2xCNHJCLFlBQVksRUFBWkEsWUFBWTtrQkFDWmlRLGlCQUFpQixFQUFFLElBQUksQ0FBQ25CLGNBQWM7a0JBQ3RDMWdDLElBQUksRUFBSkEsSUFBSTtrQkFDSmtuQixvQkFBb0IsRUFBRTtvQkFDcEJzWixVQUFVLEVBQVZBLFVBQVU7b0JBQ1ZzQixrQkFBa0IsRUFBRTtzQkFDbEJ2K0IsSUFBSSxFQUFFdzlCLHVCQUF1QixDQUFDeDlCLElBQUk7c0JBQ2xDNGMsR0FBRyxFQUFFNGdCLHVCQUF1QixDQUFDNWdCO29CQUMvQjtrQkFDRixDQUFDO2tCQUNENGhCLHVCQUF1QixFQUFFO29CQUN2Qm45QixRQUFRLEVBQUUsRUFBRTtvQkFDWjQ3QixVQUFVLEVBQVZBO2tCQUNGO2dCQUNGLENBQUM7Z0JBRUQ5bEIsUUFBUSxDQUFDRSxNQUFNLENBQUMsVUFBVSxFQUFFcFUsSUFBSSxDQUFDd0wsU0FBUyxDQUFDeXdCLGFBQWEsQ0FBQyxDQUFDO2NBQzVELENBQUMsTUFBTTtnQkFDQ0MsZ0JBQTZDLEdBQUc7a0JBQ3BEbEMsVUFBVSxFQUFWQSxVQUFVO2tCQUNWVSxhQUFhLEVBQWJBLGFBQWE7a0JBQ2JVLFdBQVcsRUFBRTU3QixLQUFLO2tCQUNsQjRyQixZQUFZLEVBQVpBLFlBQVk7a0JBQ1ppUSxpQkFBaUIsRUFBRSxJQUFJLENBQUNuQixjQUFjO2tCQUN0QzFnQyxJQUFJLEVBQUpBLElBQUk7a0JBQ0pnaUMsc0JBQXNCLEVBQUU7b0JBQ3RCcDlCLFFBQVEsRUFBRSxFQUFFO29CQUNaNDdCLFVBQVUsRUFBVkE7a0JBQ0Y7Z0JBQ0YsQ0FBQztnQkFFRDlsQixRQUFRLENBQUNFLE1BQU0sQ0FBQyxVQUFVLEVBQUVwVSxJQUFJLENBQUN3TCxTQUFTLENBQUMwd0IsZ0JBQWdCLENBQUMsQ0FBQztjQUMvRDtjQUVNek8sS0FBSyxHQUFHejRCLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUM7Y0FBQXdoQixTQUFBLENBQUF6RixDQUFBO2NBSWxCZ29CLE9BQXNCLEdBQUcsSUFBSTtjQUFBdmlCLFNBQUEsQ0FBQXBHLENBQUE7Y0FBQSxPQUVadUQsT0FBTyxDQUFDNEgsSUFBSSxDQUFDLENBQ2hDam5CLGdFQUFXLENBQUNpQixLQUFLLENBQUN1UCxLQUFLLENBQUNNLEdBQUcsRUFBRTtnQkFDM0JpUCxNQUFNLEVBQUUsTUFBTTtnQkFDZEMsSUFBSSxFQUFFTDtjQUNSLENBQUMsQ0FBQyxFQUNGLElBQUlOLE9BQU8sQ0FBVyxVQUFBMkgsT0FBTztnQkFBQSxPQUMzQnlkLE9BQU8sR0FBR3prQyxnRUFBVyxDQUFDaUIsS0FBSyxDQUFDc0YsVUFBVSxDQUFDLFlBQU07a0JBQzNDcWlCLE1BQUksQ0FBQ2xlLE9BQU8sQ0FBQ1MsS0FBSyxDQUFDLG1CQUFtQixFQUFFLElBQUlyRixLQUFLLHVCQUFBN0IsTUFBQSxDQUF1QjZNLEdBQUcsTUFBRyxDQUFDLENBQUM7a0JBQ2hGa1csT0FBTyxDQUFDO29CQUFDbkcsTUFBTSxFQUFFO2tCQUFHLENBQWEsQ0FBQztnQkFDcEMsQ0FBQyxFQUFFK0gsTUFBSSxDQUFDOGMsUUFBUSxDQUFDO2NBQUEsRUFBQyxDQUNyQixDQUFDLFdBQ1EsQ0FBQyxZQUFNO2dCQUNiLElBQUlqQixPQUFPLEVBQUU7a0JBQ1h6a0MsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ2tQLFlBQVksQ0FBQ3MwQixPQUFPLENBQUM7Z0JBQ3pDO2NBQ0YsQ0FBQyxDQUFDO1lBQUE7Y0FmSjRCLFlBQVksR0FBQW5rQixTQUFBLENBQUF0RixDQUFBO2NBQUFzRixTQUFBLENBQUFwRyxDQUFBO2NBQUE7WUFBQTtjQUFBb0csU0FBQSxDQUFBekYsQ0FBQTtjQUFBbUcsR0FBQSxHQUFBVixTQUFBLENBQUF0RixDQUFBO2NBaUJaLElBQUksQ0FBQ2xTLE9BQU8sQ0FBQ1MsS0FBSyxDQUFDLG1CQUFtQixFQUFBeVgsR0FBRyxDQUFDO2NBQUMsT0FBQVYsU0FBQSxDQUFBckYsQ0FBQSxJQUVwQztnQkFBQ2dFLE1BQU0sRUFBRTtjQUFRLENBQUM7WUFBQTtjQUFBcUIsU0FBQSxDQUFBcEcsQ0FBQTtjQUFBLE9BR0ksSUFBSSxDQUFDcXJCLGFBQWEsQ0FBMEJkLFlBQVksQ0FBQztZQUFBO2NBQWxGQyxnQkFBZ0IsR0FBQXBrQixTQUFBLENBQUF0RixDQUFBO2NBRXRCLElBQUksQ0FBQ3dxQiwyQkFBMkIsQ0FBQ2QsZ0JBQWdCLGFBQWhCQSxnQkFBZ0IsdUJBQWhCQSxnQkFBZ0IsQ0FBRWUscUJBQXFCLENBQUM7Y0FFbkV4bUIsTUFBcUIsR0FBRyxJQUFJLENBQUNnbkIsNEJBQTRCLENBQUN4QixZQUFZLENBQUM7Y0FBQSxNQUV6RXhsQixNQUFNLEtBQUssSUFBSTtnQkFBQXFCLFNBQUEsQ0FBQXBHLENBQUE7Z0JBQUE7Y0FBQTtjQUFBLE9BQUFvRyxTQUFBLENBQUFyRixDQUFBLElBQ1Y7Z0JBQUNnRSxNQUFNLEVBQU5BO2NBQU0sQ0FBQztZQUFBO2NBQUEsSUFHWnlsQixnQkFBZ0I7Z0JBQUFwa0IsU0FBQSxDQUFBcEcsQ0FBQTtnQkFBQTtjQUFBO2NBQUEsT0FBQW9HLFNBQUEsQ0FBQXJGLENBQUEsSUFDWjtnQkFBQ2dFLE1BQU0sRUFBRTtjQUFRLENBQUM7WUFBQTtjQUdyQmdsQixRQUFRLEdBQUdwbEMsSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQztjQUNyQmtuQyxlQUFlLEdBQUcsSUFBSSxDQUFDRSx3QkFBd0IsQ0FBQ3R0QixPQUFPLEVBQUU4ckIsZ0JBQWdCLENBQUM7Y0FFaEYsSUFBSSxDQUFDNTdCLE9BQU8sQ0FBQ2dMLEtBQUssQ0FBQyxzQ0FBc0MsRUFBRWt5QixlQUFlLEVBQUUvQixRQUFRLEdBQUczTSxLQUFLLENBQUM7Y0FBQyxPQUFBaFgsU0FBQSxDQUFBckYsQ0FBQSxJQUV2RitxQixlQUFlO1VBQUE7UUFBQSxHQUFBL2xCLFFBQUE7TUFBQSxDQUN2QjtNQUFBLFNBcEdLa21CLE9BQU9BLENBQUEzYixHQUFBLEVBQUE0YixHQUFBLEVBQUFDLEdBQUEsRUFBQUMsR0FBQTtRQUFBLE9BQUFULFFBQUEsQ0FBQXZuQixLQUFBLE9BQUEzSyxTQUFBO01BQUE7TUFBQSxPQUFQd3lCLE9BQU87SUFBQTtFQUFBO0lBQUFobkMsR0FBQTtJQUFBRSxLQUFBO01BQUEsSUFBQTZxQixxQkFBQSxHQUFBdE0sbUZBQUEsY0FBQWhDLFlBQUEsR0FBQUUsQ0FBQSxDQXNHYixTQUFBcU8sU0FBMkJrTCxNQUFlLEVBQUU4UCxrQkFBNkM7UUFBQSxJQUFBdGEsTUFBQTtRQUFBLElBQUEzYixHQUFBLEVBQUE2TyxRQUFBLEVBQUFLLElBQUEsRUFBQWtaLEtBQUEsRUFBQW1OLFlBQUEsRUFBQTVCLE9BQUEsRUFBQTVqQixNQUFBLEVBQUFnbEIsUUFBQSxFQUFBc0MsNEJBQUEsRUFBQXRsQixHQUFBO1FBQUEsT0FBQXJGLFlBQUEsR0FBQUMsQ0FBQSxXQUFBeU8sU0FBQTtVQUFBLGtCQUFBQSxTQUFBLENBQUF6UCxDQUFBLEdBQUF5UCxTQUFBLENBQUFwUSxDQUFBO1lBQUE7Y0FDakZoTCxHQUFHLEdBQUcsSUFBSSxDQUFDODFCLFFBQVEsQ0FBQyxDQUFDM1AsTUFBTSxDQUFDemMsT0FBTyxFQUFFLFFBQVEsRUFBRXljLE1BQU0sQ0FBQ3B0QixRQUFRLEVBQUUsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUNrSSxRQUFRLENBQUMsQ0FBQztjQUNwRzROLFFBQVEsR0FBRyxJQUFJM2YsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ3lPLFFBQVEsQ0FBQyxDQUFDO2NBQzNDc1EsSUFBa0MsR0FBRztnQkFDekN5bEIsVUFBVSxFQUFWQSxVQUFVO2dCQUNWMkMsWUFBWSxFQUFFblIsTUFBTSxhQUFOQSxNQUFNLHVCQUFOQSxNQUFNLENBQUVtUixZQUFZO2dCQUNsQ3JCLGtCQUFrQixFQUFFO2tCQUNsQnYrQixJQUFJLEVBQUV1K0Isa0JBQWtCLENBQUN2K0IsSUFBSTtrQkFDN0I0YyxHQUFHLEVBQUUyaEIsa0JBQWtCLENBQUMzaEI7Z0JBQzFCO2NBQ0YsQ0FBQztjQUVEekYsUUFBUSxDQUFDRSxNQUFNLENBQUMsVUFBVSxFQUFFcFUsSUFBSSxDQUFDd0wsU0FBUyxDQUFDK0ksSUFBSSxDQUFDLENBQUM7Y0FFM0NrWixLQUFLLEdBQUd6NEIsSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQztjQUFBd3JCLFNBQUEsQ0FBQXpQLENBQUE7Y0FJbEJnb0IsT0FBc0IsR0FBRyxJQUFJO2NBQUF2WSxTQUFBLENBQUFwUSxDQUFBO2NBQUEsT0FFWnVELE9BQU8sQ0FBQzRILElBQUksQ0FBQyxDQUNoQ2puQixnRUFBVyxDQUFDaUIsS0FBSyxDQUFDdVAsS0FBSyxDQUFDTSxHQUFHLEVBQUU7Z0JBQzNCaVAsTUFBTSxFQUFFLE1BQU07Z0JBQ2RDLElBQUksRUFBRUw7Y0FDUixDQUFDLENBQUMsRUFDRixJQUFJTixPQUFPLENBQVcsVUFBQTJILE9BQU87Z0JBQUEsT0FDM0J5ZCxPQUFPLEdBQUd6a0MsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ3NGLFVBQVUsQ0FBQyxZQUFNO2tCQUMzQ2ttQixNQUFJLENBQUMvaEIsT0FBTyxDQUFDUyxLQUFLLENBQUMsa0NBQWtDLEVBQUUsSUFBSXJGLEtBQUssc0NBQUE3QixNQUFBLENBQXNDNk0sR0FBRyxNQUFHLENBQUMsQ0FBQztrQkFDOUdrVyxPQUFPLENBQUM7b0JBQUNuRyxNQUFNLEVBQUU7a0JBQUcsQ0FBYSxDQUFDO2dCQUNwQyxDQUFDLEVBQUU0TCxNQUFJLENBQUNpWixRQUFRLENBQUM7Y0FBQSxFQUFDLENBQ3JCLENBQUMsV0FDUSxDQUFDLFlBQU07Z0JBQ2IsSUFBSWpCLE9BQU8sRUFBRTtrQkFDWHprQyxnRUFBVyxDQUFDaUIsS0FBSyxDQUFDa1AsWUFBWSxDQUFDczBCLE9BQU8sQ0FBQztnQkFDekM7Y0FDRixDQUFDLENBQUM7WUFBQTtjQWZKNEIsWUFBWSxHQUFBbmEsU0FBQSxDQUFBdFAsQ0FBQTtjQUFBc1AsU0FBQSxDQUFBcFEsQ0FBQTtjQUFBO1lBQUE7Y0FBQW9RLFNBQUEsQ0FBQXpQLENBQUE7Y0FBQW9HLEdBQUEsR0FBQXFKLFNBQUEsQ0FBQXRQLENBQUE7Y0FpQlosSUFBSSxDQUFDbFMsT0FBTyxDQUFDUyxLQUFLLENBQUMsa0NBQWtDLEVBQUEwWCxHQUFHLENBQUM7Y0FBQyxPQUFBcUosU0FBQSxDQUFBclAsQ0FBQSxJQUVuRDtnQkFBQ2dFLE1BQU0sRUFBRTtjQUFRLENBQUM7WUFBQTtjQUdyQkEsTUFBa0MsR0FBRyxJQUFJLENBQUN3bkIseUNBQXlDLENBQUNoQyxZQUFZLENBQUM7Y0FBQSxNQUVuR3hsQixNQUFNLEtBQUssSUFBSTtnQkFBQXFMLFNBQUEsQ0FBQXBRLENBQUE7Z0JBQUE7Y0FBQTtjQUFBLE9BQUFvUSxTQUFBLENBQUFyUCxDQUFBLElBQ1Y7Z0JBQUNnRSxNQUFNLEVBQU5BO2NBQU0sQ0FBQztZQUFBO2NBR1hnbEIsUUFBUSxHQUFHcGxDLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUM7Y0FBQXdyQixTQUFBLENBQUFwUSxDQUFBO2NBQUEsT0FDZ0IsSUFBSSxDQUFDd3NCLHlDQUF5QyxDQUFDakMsWUFBWSxDQUFDO1lBQUE7Y0FBakc4Qiw0QkFBNEIsR0FBQWpjLFNBQUEsQ0FBQXRQLENBQUE7Y0FFbEMsSUFBSSxDQUFDbFMsT0FBTyxDQUFDZ0wsS0FBSyxDQUFDLHFEQUFxRCxFQUFFeXlCLDRCQUE0QixFQUFFdEMsUUFBUSxHQUFHM00sS0FBSyxDQUFDO2NBQUMsT0FBQWhOLFNBQUEsQ0FBQXJQLENBQUEsSUFFbkhzckIsNEJBQTRCO1VBQUE7UUFBQSxHQUFBcGMsUUFBQTtNQUFBLENBQ3BDO01BQUEsU0F0REtJLG9CQUFvQkEsQ0FBQW9jLEdBQUEsRUFBQUMsR0FBQTtRQUFBLE9BQUExYyxxQkFBQSxDQUFBNUwsS0FBQSxPQUFBM0ssU0FBQTtNQUFBO01BQUEsT0FBcEI0VyxvQkFBb0I7SUFBQTtFQUFBO0lBQUFwckIsR0FBQTtJQUFBRSxLQUFBO01BQUEsSUFBQXduQyxhQUFBLEdBQUFqcEIsbUZBQUEsY0FBQWhDLFlBQUEsR0FBQUUsQ0FBQSxDQXdEMUIsU0FBQW1mLFNBQ0U1RixNQUFlLEVBQ2Z5QixxQkFBNkIsRUFDN0JrQyxzQkFBcUMsRUFDckM2SSxZQUEwQixFQUMxQkosV0FBd0I7UUFBQSxJQUFBdkcsTUFBQTtRQUFBLElBQUFoc0IsR0FBQSxFQUFBNk8sUUFBQSxFQUFBSyxJQUFBLEVBQUFrWixLQUFBLEVBQUFtTixZQUFBLEVBQUE1QixPQUFBLEVBQUE1akIsTUFBQSxFQUFBZ2xCLFFBQUEsRUFBQS9pQixHQUFBO1FBQUEsT0FBQXRGLFlBQUEsR0FBQUMsQ0FBQSxXQUFBdWdCLFNBQUE7VUFBQSxrQkFBQUEsU0FBQSxDQUFBdmhCLENBQUEsR0FBQXVoQixTQUFBLENBQUFsaUIsQ0FBQTtZQUFBO2NBRWxCaEwsR0FBRyxHQUFHLElBQUksQ0FBQzgxQixRQUFRLENBQUMsQ0FBQzNQLE1BQU0sQ0FBQ3pjLE9BQU8sRUFBRSxRQUFRLEVBQUV5YyxNQUFNLENBQUNwdEIsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUNrSSxRQUFRLENBQUMsQ0FBQztjQUN0RjROLFFBQVEsR0FBRyxJQUFJM2YsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ3lPLFFBQVEsQ0FBQyxDQUFDO2NBQzNDc1EsSUFBaUMsR0FBRztnQkFDeEN5bEIsVUFBVSxFQUFWQSxVQUFVO2dCQUNWMkMsWUFBWSxFQUFFblIsTUFBTSxDQUFDbVIsWUFBWTtnQkFDakMxUCxxQkFBcUIsRUFBckJBLHFCQUFxQjtnQkFDckJrQyxzQkFBc0IsRUFBdEJBLHNCQUFzQjtnQkFDdEI2SSxZQUFZLEVBQUVGLDZEQUFtQixDQUFDQyxxQ0FBcUMsQ0FBQ0MsWUFBWSxDQUFDO2dCQUNyRkosV0FBVyxFQUFFRiw0REFBa0IsQ0FBQ0MsbUNBQW1DLENBQUNDLFdBQVc7Y0FDakYsQ0FBQztjQUVEMWpCLFFBQVEsQ0FBQ0UsTUFBTSxDQUFDLFVBQVUsRUFBRXBVLElBQUksQ0FBQ3dMLFNBQVMsQ0FBQytJLElBQUksQ0FBQyxDQUFDO2NBRTNDa1osS0FBSyxHQUFHejRCLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUM7Y0FBQXM5QixTQUFBLENBQUF2aEIsQ0FBQTtjQUlsQmdvQixPQUFzQixHQUFHLElBQUk7Y0FBQXpHLFNBQUEsQ0FBQWxpQixDQUFBO2NBQUEsT0FFWnVELE9BQU8sQ0FBQzRILElBQUksQ0FBQyxDQUNoQ2puQixnRUFBVyxDQUFDaUIsS0FBSyxDQUFDdVAsS0FBSyxDQUFDTSxHQUFHLEVBQUU7Z0JBQzNCaVAsTUFBTSxFQUFFLE1BQU07Z0JBQ2RDLElBQUksRUFBRUw7Y0FDUixDQUFDLENBQUMsRUFDRixJQUFJTixPQUFPLENBQVcsVUFBQTJILE9BQU87Z0JBQUEsT0FDM0J5ZCxPQUFPLEdBQUd6a0MsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ3NGLFVBQVUsQ0FBQyxZQUFNO2tCQUMzQ3UyQixNQUFJLENBQUNweUIsT0FBTyxDQUFDUyxLQUFLLENBQUMsbUNBQW1DLEVBQUUsSUFBSXJGLEtBQUssaUNBQUE3QixNQUFBLENBQWlDNk0sR0FBRyxNQUFHLENBQUMsQ0FBQztrQkFDMUdrVyxPQUFPLENBQUM7b0JBQUNuRyxNQUFNLEVBQUU7a0JBQUcsQ0FBYSxDQUFDO2dCQUNwQyxDQUFDLEVBQUVpYyxNQUFJLENBQUM0SSxRQUFRLENBQUM7Y0FBQSxFQUFDLENBQ3JCLENBQUMsV0FDUSxDQUFDLFlBQU07Z0JBQ2IsSUFBSWpCLE9BQU8sRUFBRTtrQkFDWHprQyxnRUFBVyxDQUFDaUIsS0FBSyxDQUFDa1AsWUFBWSxDQUFDczBCLE9BQU8sQ0FBQztnQkFDekM7Y0FDRixDQUFDLENBQUM7WUFBQTtjQWZKNEIsWUFBWSxHQUFBckksU0FBQSxDQUFBcGhCLENBQUE7Y0FBQW9oQixTQUFBLENBQUFsaUIsQ0FBQTtjQUFBO1lBQUE7Y0FBQWtpQixTQUFBLENBQUF2aEIsQ0FBQTtjQUFBcUcsR0FBQSxHQUFBa2IsU0FBQSxDQUFBcGhCLENBQUE7Y0FpQlosSUFBSSxDQUFDbFMsT0FBTyxDQUFDUyxLQUFLLENBQUMsbUNBQW1DLEVBQUEyWCxHQUFHLENBQUM7Y0FBQyxPQUFBa2IsU0FBQSxDQUFBbmhCLENBQUEsSUFFcEQ7Z0JBQUNnRSxNQUFNLEVBQUU7Y0FBUSxDQUFDO1lBQUE7Y0FHckJBLE1BQXdDLEdBQUcsSUFBSSxDQUFDNm5CLCtDQUErQyxDQUFDckMsWUFBWSxDQUFDO2NBQzdHUixRQUFRLEdBQUdwbEMsSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQztjQUUzQixJQUFJLENBQUNnSyxPQUFPLENBQUNDLElBQUksQ0FBQyxnREFBZ0QsRUFBRWtXLE1BQU0sRUFBRWdsQixRQUFRLEdBQUczTSxLQUFLLENBQUM7Y0FBQyxPQUFBOEUsU0FBQSxDQUFBbmhCLENBQUEsSUFFdkY7Z0JBQUNnRSxNQUFNLEVBQU5BO2NBQU0sQ0FBQztVQUFBO1FBQUEsR0FBQWdjLFFBQUE7TUFBQSxDQUNoQjtNQUFBLFNBdERLaEUsWUFBWUEsQ0FBQThQLEdBQUEsRUFBQUMsR0FBQSxFQUFBQyxJQUFBLEVBQUFDLElBQUEsRUFBQUMsSUFBQTtRQUFBLE9BQUFOLGFBQUEsQ0FBQXZvQixLQUFBLE9BQUEzSyxTQUFBO01BQUE7TUFBQSxPQUFac2pCLFlBQVk7SUFBQTtFQUFBO0lBQUE5M0IsR0FBQTtJQUFBRSxLQUFBO01BQUEsSUFBQStuQyxpQkFBQSxHQUFBeHBCLG1GQUFBLGNBQUFoQyxZQUFBLEdBQUFFLENBQUEsQ0F3RGxCLFNBQUErZ0IsU0FBdUJ4SCxNQUFlLEVBQUVnUyxVQUE2QixFQUFFQyxrQkFBMkI7UUFBQSxJQUFBaEssTUFBQTtRQUFBLElBQUF4YyxPQUFBO1VBQUE1UixHQUFBO1VBQUE2TyxRQUFBO1VBQUFLLElBQUE7VUFBQWtaLEtBQUE7VUFBQW1OLFlBQUE7VUFBQTVCLE9BQUE7VUFBQTVqQixNQUFBO1VBQUFnbEIsUUFBQTtVQUFBc0Qsd0JBQUE7VUFBQUMsTUFBQSxHQUFBN3pCLFNBQUE7VUFBQXdOLEdBQUE7UUFBQSxPQUFBdkYsWUFBQSxHQUFBQyxDQUFBLFdBQUFpaEIsU0FBQTtVQUFBLGtCQUFBQSxTQUFBLENBQUFqaUIsQ0FBQSxHQUFBaWlCLFNBQUEsQ0FBQTVpQixDQUFBO1lBQUE7Y0FBRTRHLE9BQWlCLEdBQUEwbUIsTUFBQSxDQUFBNzlCLE1BQUEsUUFBQTY5QixNQUFBLFFBQUFqaUMsU0FBQSxHQUFBaWlDLE1BQUEsTUFBRyxFQUFFO2NBQ2xIdDRCLEdBQUcsR0FBRyxJQUFJLENBQUM4MUIsUUFBUSxDQUFDLENBQUMzUCxNQUFNLENBQUN6YyxPQUFPLEVBQUUsUUFBUSxFQUFFeWMsTUFBTSxDQUFDcHRCLFFBQVEsRUFBRSxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQ2tJLFFBQVEsQ0FBQyxDQUFDO2NBQ2hHNE4sUUFBUSxHQUFHLElBQUkzZixnRUFBVyxDQUFDaUIsS0FBSyxDQUFDeU8sUUFBUSxDQUFDLENBQUM7Y0FDM0NzUSxJQUE4QixHQUFHO2dCQUNyQ3lsQixVQUFVLEVBQVZBLFVBQVU7Z0JBQ1YyQyxZQUFZLEVBQUVuUixNQUFNLENBQUNtUixZQUFZO2dCQUNqQ2EsVUFBVSxFQUFWQSxVQUFVO2dCQUNWQyxrQkFBa0IsRUFBbEJBLGtCQUFrQjtnQkFDbEJ4bUIsT0FBTyxFQUFQQTtjQUNGLENBQUM7Y0FFRC9DLFFBQVEsQ0FBQ0UsTUFBTSxDQUFDLFVBQVUsRUFBRXBVLElBQUksQ0FBQ3dMLFNBQVMsQ0FBQytJLElBQUksQ0FBQyxDQUFDO2NBRTNDa1osS0FBSyxHQUFHejRCLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUM7Y0FBQWcrQixTQUFBLENBQUFqaUIsQ0FBQTtjQUlsQmdvQixPQUFzQixHQUFHLElBQUk7Y0FBQS9GLFNBQUEsQ0FBQTVpQixDQUFBO2NBQUEsT0FFWnVELE9BQU8sQ0FBQzRILElBQUksQ0FBQyxDQUNoQ2puQixnRUFBVyxDQUFDaUIsS0FBSyxDQUFDdVAsS0FBSyxDQUFDTSxHQUFHLEVBQUU7Z0JBQzNCaVAsTUFBTSxFQUFFLE1BQU07Z0JBQ2RDLElBQUksRUFBRUw7Y0FDUixDQUFDLENBQUMsRUFDRixJQUFJTixPQUFPLENBQVcsVUFBQTJILE9BQU87Z0JBQUEsT0FDM0J5ZCxPQUFPLEdBQUd6a0MsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ3NGLFVBQVUsQ0FBQyxZQUFNO2tCQUMzQzI0QixNQUFJLENBQUN4MEIsT0FBTyxDQUFDUyxLQUFLLENBQUMsOEJBQThCLEVBQUUsSUFBSXJGLEtBQUssa0NBQUE3QixNQUFBLENBQWtDNk0sR0FBRyxNQUFHLENBQUMsQ0FBQztrQkFDdEdrVyxPQUFPLENBQUM7b0JBQUNuRyxNQUFNLEVBQUU7a0JBQUcsQ0FBYSxDQUFDO2dCQUNwQyxDQUFDLEVBQUVxZSxNQUFJLENBQUN3RyxRQUFRLENBQUM7Y0FBQSxFQUFDLENBQ3JCLENBQUMsV0FDUSxDQUFDLFlBQU07Z0JBQ2IsSUFBSWpCLE9BQU8sRUFBRTtrQkFDWHprQyxnRUFBVyxDQUFDaUIsS0FBSyxDQUFDa1AsWUFBWSxDQUFDczBCLE9BQU8sQ0FBQztnQkFDekM7Y0FDRixDQUFDLENBQUM7WUFBQTtjQWZKNEIsWUFBWSxHQUFBM0gsU0FBQSxDQUFBOWhCLENBQUE7Y0FBQThoQixTQUFBLENBQUE1aUIsQ0FBQTtjQUFBO1lBQUE7Y0FBQTRpQixTQUFBLENBQUFqaUIsQ0FBQTtjQUFBc0csR0FBQSxHQUFBMmIsU0FBQSxDQUFBOWhCLENBQUE7Y0FpQlosSUFBSSxDQUFDbFMsT0FBTyxDQUFDUyxLQUFLLENBQUMsOEJBQThCLEVBQUE0WCxHQUFHLENBQUM7Y0FBQyxPQUFBMmIsU0FBQSxDQUFBN2hCLENBQUEsSUFFL0M7Z0JBQUNnRSxNQUFNLEVBQUU7Y0FBUSxDQUFDO1lBQUE7Y0FHckJBLE1BQThCLEdBQUcsSUFBSSxDQUFDd29CLHFDQUFxQyxDQUFDaEQsWUFBWSxDQUFDO2NBQUEsTUFFM0Z4bEIsTUFBTSxLQUFLLElBQUk7Z0JBQUE2ZCxTQUFBLENBQUE1aUIsQ0FBQTtnQkFBQTtjQUFBO2NBQUEsT0FBQTRpQixTQUFBLENBQUE3aEIsQ0FBQSxJQUNWO2dCQUFDZ0UsTUFBTSxFQUFOQTtjQUFNLENBQUM7WUFBQTtjQUdYZ2xCLFFBQVEsR0FBR3BsQyxJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDO2NBQUFnK0IsU0FBQSxDQUFBNWlCLENBQUE7Y0FBQSxPQUNZLElBQUksQ0FBQ3d0QixxQ0FBcUMsQ0FBQ2pELFlBQVksQ0FBQztZQUFBO2NBQXpGOEMsd0JBQXdCLEdBQUF6SyxTQUFBLENBQUE5aEIsQ0FBQTtjQUU5QixJQUFJLENBQUNsUyxPQUFPLENBQUNDLElBQUksQ0FBQyxpREFBaUQsRUFBRXcrQix3QkFBd0IsRUFBRXRELFFBQVEsR0FBRzNNLEtBQUssQ0FBQztjQUFDLE9BQUF3RixTQUFBLENBQUE3aEIsQ0FBQSxJQUUxR3NzQix3QkFBd0I7VUFBQTtRQUFBLEdBQUExSyxRQUFBO01BQUEsQ0FDaEM7TUFBQSxTQXJESzhLLGdCQUFnQkEsQ0FBQUMsSUFBQSxFQUFBQyxJQUFBLEVBQUFDLElBQUE7UUFBQSxPQUFBVixpQkFBQSxDQUFBOW9CLEtBQUEsT0FBQTNLLFNBQUE7TUFBQTtNQUFBLE9BQWhCZzBCLGdCQUFnQjtJQUFBO0VBQUE7SUFBQXhvQyxHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBMG9DLGNBQUEsR0FBQW5xQixtRkFBQSxjQUFBaEMsWUFBQSxHQUFBRSxDQUFBLENBdUR0QixTQUFBa2hCLFNBQW9CM0gsTUFBZSxFQUFFb0MsTUFBYztRQUFBLElBQUFrRyxNQUFBO1FBQUEsSUFBQXp1QixHQUFBLEVBQUE2TyxRQUFBLEVBQUFLLElBQUEsRUFBQWtaLEtBQUEsRUFBQW1OLFlBQUEsRUFBQTVCLE9BQUEsRUFBQTVqQixNQUFBLEVBQUFnbEIsUUFBQSxFQUFBK0QscUJBQUEsRUFBQTVtQixHQUFBO1FBQUEsT0FBQXhGLFlBQUEsR0FBQUMsQ0FBQSxXQUFBb2hCLFNBQUE7VUFBQSxrQkFBQUEsU0FBQSxDQUFBcGlCLENBQUEsR0FBQW9pQixTQUFBLENBQUEvaUIsQ0FBQTtZQUFBO2NBQzNDaEwsR0FBRyxHQUFHLElBQUksQ0FBQzgxQixRQUFRLENBQUMsQ0FBQzNQLE1BQU0sQ0FBQ3pjLE9BQU8sRUFBRSxRQUFRLEVBQUV5YyxNQUFNLENBQUNwdEIsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUNrSSxRQUFRLENBQUMsQ0FBQztjQUN0RjROLFFBQVEsR0FBRyxJQUFJM2YsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ3lPLFFBQVEsQ0FBQyxDQUFDO2NBQzNDc1EsSUFBMkIsR0FBRztnQkFDbEN5bEIsVUFBVSxFQUFWQSxVQUFVO2dCQUNWMkMsWUFBWSxFQUFFblIsTUFBTSxDQUFDbVIsWUFBWTtnQkFDakMvTyxNQUFNLEVBQU5BLE1BQU07Z0JBQ04zVyxPQUFPLEVBQUU7Y0FDWCxDQUFDO2NBRUQvQyxRQUFRLENBQUNFLE1BQU0sQ0FBQyxVQUFVLEVBQUVwVSxJQUFJLENBQUN3TCxTQUFTLENBQUMrSSxJQUFJLENBQUMsQ0FBQztjQUUzQ2taLEtBQUssR0FBR3o0QixJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDO2NBQUFtK0IsU0FBQSxDQUFBcGlCLENBQUE7Y0FJbEJnb0IsT0FBc0IsR0FBRyxJQUFJO2NBQUE1RixTQUFBLENBQUEvaUIsQ0FBQTtjQUFBLE9BRVp1RCxPQUFPLENBQUM0SCxJQUFJLENBQUMsQ0FDaENqbkIsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ3VQLEtBQUssQ0FBQ00sR0FBRyxFQUFFO2dCQUMzQmlQLE1BQU0sRUFBRSxNQUFNO2dCQUNkQyxJQUFJLEVBQUVMLFFBQVE7Z0JBQ2RuSSxLQUFLLEVBQUU7Y0FDVCxDQUFDLENBQUMsRUFDRixJQUFJNkgsT0FBTyxDQUFXLFVBQUEySCxPQUFPO2dCQUFBLE9BQzNCeWQsT0FBTyxHQUFHemtDLGdFQUFXLENBQUNpQixLQUFLLENBQUNzRixVQUFVLENBQUMsWUFBTTtrQkFDM0NnNUIsTUFBSSxDQUFDNzBCLE9BQU8sQ0FBQ1MsS0FBSyxDQUFDLHFCQUFxQixFQUFFLElBQUlyRixLQUFLLDZCQUFBN0IsTUFBQSxDQUE2QjZNLEdBQUcsTUFBRyxDQUFDLENBQUM7a0JBQ3hGa1csT0FBTyxDQUFDO29CQUFDbkcsTUFBTSxFQUFFO2tCQUFHLENBQWEsQ0FBQztnQkFDcEMsQ0FBQyxFQUFFMGUsTUFBSSxDQUFDbUcsUUFBUSxDQUFDO2NBQUEsRUFBQyxDQUNyQixDQUFDLFdBQ1EsQ0FBQyxZQUFNO2dCQUNiLElBQUlqQixPQUFPLEVBQUU7a0JBQ1h6a0MsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ2tQLFlBQVksQ0FBQ3MwQixPQUFPLENBQUM7Z0JBQ3pDO2NBQ0YsQ0FBQyxDQUFDO1lBQUE7Y0FoQko0QixZQUFZLEdBQUF4SCxTQUFBLENBQUFqaUIsQ0FBQTtjQUFBaWlCLFNBQUEsQ0FBQS9pQixDQUFBO2NBQUE7WUFBQTtjQUFBK2lCLFNBQUEsQ0FBQXBpQixDQUFBO2NBQUF1RyxHQUFBLEdBQUE2YixTQUFBLENBQUFqaUIsQ0FBQTtjQWtCWixJQUFJLENBQUNsUyxPQUFPLENBQUNTLEtBQUssQ0FBQyx5QkFBeUIsRUFBQTZYLEdBQUcsQ0FBQztjQUFDLE9BQUE2YixTQUFBLENBQUFoaUIsQ0FBQSxJQUUxQztnQkFBQ2dFLE1BQU0sRUFBRTtjQUFRLENBQUM7WUFBQTtjQUdyQkEsTUFBMkIsR0FBRyxJQUFJLENBQUNncEIscUNBQXFDLENBQUN4RCxZQUFZLENBQUM7Y0FBQSxNQUV4RnhsQixNQUFNLEtBQUssSUFBSTtnQkFBQWdlLFNBQUEsQ0FBQS9pQixDQUFBO2dCQUFBO2NBQUE7Y0FBQSxPQUFBK2lCLFNBQUEsQ0FBQWhpQixDQUFBLElBQ1Y7Z0JBQUNnRSxNQUFNLEVBQU5BO2NBQU0sQ0FBQztZQUFBO2NBR1hnbEIsUUFBUSxHQUFHcGxDLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUM7Y0FBQW0rQixTQUFBLENBQUEvaUIsQ0FBQTtjQUFBLE9BQ1MsSUFBSSxDQUFDZ3VCLGtDQUFrQyxDQUFDekQsWUFBWSxDQUFDO1lBQUE7Y0FBbkZ1RCxxQkFBcUIsR0FBQS9LLFNBQUEsQ0FBQWppQixDQUFBO2NBRTNCLElBQUksQ0FBQ2xTLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLDZDQUE2QyxFQUFFaS9CLHFCQUFxQixFQUFFL0QsUUFBUSxHQUFHM00sS0FBSyxDQUFDO2NBQUMsT0FBQTJGLFNBQUEsQ0FBQWhpQixDQUFBLElBRW5HK3NCLHFCQUFxQjtVQUFBO1FBQUEsR0FBQWhMLFFBQUE7TUFBQSxDQUM3QjtNQUFBLFNBckRLUyxhQUFhQSxDQUFBMEssSUFBQSxFQUFBQyxJQUFBO1FBQUEsT0FBQUwsY0FBQSxDQUFBenBCLEtBQUEsT0FBQTNLLFNBQUE7TUFBQTtNQUFBLE9BQWI4cEIsYUFBYTtJQUFBO0VBQUE7SUFBQXQrQixHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBZ3BDLHVCQUFBLEdBQUF6cUIsbUZBQUEsY0FBQWhDLFlBQUEsR0FBQUUsQ0FBQSxDQXVEbkIsU0FBQXNoQixTQUE2Qi9ILE1BQWUsRUFBRW9DLE1BQWM7UUFBQSxJQUFBNEcsTUFBQTtRQUFBLElBQUFwdkIsVUFBQSxFQUFBQyxHQUFBLEVBQUE2TyxRQUFBLEVBQUFLLElBQUE7UUFBQSxPQUFBeEMsWUFBQSxHQUFBQyxDQUFBLFdBQUF3aEIsU0FBQTtVQUFBLGtCQUFBQSxTQUFBLENBQUFuakIsQ0FBQTtZQUFBO2NBQ3BEakwsVUFBVSxHQUFHN1EsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQzRQLFVBQVU7Y0FBQSxJQUUxQ0EsVUFBVTtnQkFBQW91QixTQUFBLENBQUFuakIsQ0FBQTtnQkFBQTtjQUFBO2NBQ2IsSUFBSSxDQUFDdWpCLGFBQWEsQ0FBQ3BJLE1BQU0sRUFBRW9DLE1BQU0sQ0FBQyxTQUFNLENBQUMsVUFBQTZRLEdBQUcsRUFBSTtnQkFDOUNqSyxNQUFJLENBQUN2MUIsT0FBTyxDQUFDUyxLQUFLLENBQUMscUNBQXFDLEVBQUUrK0IsR0FBRyxDQUFDO2NBQ2hFLENBQUMsQ0FBQztjQUFDLE9BQUFqTCxTQUFBLENBQUFwaUIsQ0FBQTtZQUFBO2NBS0MvTCxHQUFHLEdBQUcsSUFBSSxDQUFDODFCLFFBQVEsQ0FBQyxDQUFDM1AsTUFBTSxDQUFDemMsT0FBTyxFQUFFLFFBQVEsRUFBRXljLE1BQU0sQ0FBQ3B0QixRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQ2tJLFFBQVEsQ0FBQyxDQUFDO2NBQ3RGNE4sUUFBUSxHQUFHLElBQUkzZixnRUFBVyxDQUFDaUIsS0FBSyxDQUFDeU8sUUFBUSxDQUFDLENBQUM7Y0FDM0NzUSxJQUEyQixHQUFHO2dCQUNsQ3lsQixVQUFVLEVBQVZBLFVBQVU7Z0JBQ1YyQyxZQUFZLEVBQUVuUixNQUFNLENBQUNtUixZQUFZO2dCQUNqQy9PLE1BQU0sRUFBTkEsTUFBTTtnQkFDTjNXLE9BQU8sRUFBRTtjQUNYLENBQUM7Y0FFRC9DLFFBQVEsQ0FBQ0UsTUFBTSxDQUFDLFVBQVUsRUFBRXBVLElBQUksQ0FBQ3dMLFNBQVMsQ0FBQytJLElBQUksQ0FBQyxDQUFDO2NBRWpEblAsVUFBVSxDQUFDQyxHQUFHLEVBQUU2TyxRQUFRLENBQUM7WUFBQztjQUFBLE9BQUFzZixTQUFBLENBQUFwaUIsQ0FBQTtVQUFBO1FBQUEsR0FBQW1pQixRQUFBO01BQUEsQ0FDM0I7TUFBQSxTQXZCS2hHLHNCQUFzQkEsQ0FBQW1SLElBQUEsRUFBQUMsSUFBQTtRQUFBLE9BQUFILHVCQUFBLENBQUEvcEIsS0FBQSxPQUFBM0ssU0FBQTtNQUFBO01BQUEsT0FBdEJ5akIsc0JBQXNCO0lBQUE7RUFBQTtJQUFBajRCLEdBQUE7SUFBQUUsS0FBQSxFQXlCNUIsU0FBUTJsQyxRQUFRQSxDQUFDeUQsSUFBYyxFQUFPO01BQ3BDLElBQU1uK0IsR0FBRyxHQUFHLElBQUlsTSxnRUFBVyxDQUFDaUIsS0FBSyxDQUFDMEYsR0FBRyxDQUFDLElBQUksQ0FBQzQ5QixJQUFJLENBQUM7TUFDaEQsSUFBTStGLFdBQVcsR0FBR3ArQixHQUFHLENBQUNrTyxRQUFRLENBQUMxVyxLQUFLLENBQUMsR0FBRyxDQUFDO01BRTNDNG1DLFdBQVcsQ0FBQy8rQixNQUFNLEdBQUcrK0IsV0FBVyxDQUFDLytCLE1BQU0sR0FBRyxDQUFDO01BRTNDVyxHQUFHLENBQUNrTyxRQUFRLEdBQUdrd0IsV0FBVyxDQUFDcm1DLE1BQU0sQ0FBQWljLEtBQUEsQ0FBbEJvcUIsV0FBVyxFQUFBM3BCLG9GQUFBLENBQVcwcEIsSUFBSSxFQUFDLENBQUNyWSxJQUFJLENBQUMsR0FBRyxDQUFDO01BRXBELE9BQU85bEIsR0FBRztJQUNaO0VBQUM7SUFBQW5MLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQVE2a0MsWUFBWUEsQ0FBQSxFQUFXO01BQzdCLElBQU01NUIsR0FBRyxHQUFHLElBQUlsTSxnRUFBVyxDQUFDaUIsS0FBSyxDQUFDMEYsR0FBRyxDQUFDLElBQUksQ0FBQzQ5QixJQUFJLENBQUM7TUFDaEQsSUFBTXJsQixVQUFVLEdBQUdoQiwrREFBYyxDQUFDZ0IsVUFBVTtNQUM1QyxJQUFNbFEsVUFBVSxHQUFHTiwrREFBVSxDQUFDNjJCLG1CQUFtQixDQUFDdjJCLFVBQVU7TUFFNUQ5QyxHQUFHLENBQUNzNUIsWUFBWSxDQUFDdHJCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDO01BQ3BDaE8sR0FBRyxDQUFDczVCLFlBQVksQ0FBQ3RyQixHQUFHLENBQUMsU0FBUyxFQUFFZ0YsVUFBVSxDQUFDO01BQzNDaFQsR0FBRyxDQUFDczVCLFlBQVksQ0FBQ3RyQixHQUFHLENBQUMsWUFBWSxFQUFFbEwsVUFBVSxDQUFDO01BQzlDOUMsR0FBRyxDQUFDczVCLFlBQVksQ0FBQ3RyQixHQUFHLENBQUMsR0FBRyxLQUFBalcsTUFBQSxDQUFLeEQsSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQyxDQUFFLENBQUM7TUFFMUMsT0FBT3dMLEdBQUcsQ0FBQzZGLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZCO0VBQUM7SUFBQWhSLEdBQUE7SUFBQUUsS0FBQTtNQUFBLElBQUFzcEMsY0FBQSxHQUFBL3FCLG1GQUFBLGNBQUFoQyxZQUFBLEdBQUFFLENBQUEsQ0FFRCxTQUFBc2lCLFNBQStCeGYsUUFBa0I7UUFBQSxJQUFBZ3FCLEdBQUE7UUFBQSxPQUFBaHRCLFlBQUEsR0FBQUMsQ0FBQSxXQUFBMGlCLFNBQUE7VUFBQSxrQkFBQUEsU0FBQSxDQUFBMWpCLENBQUEsR0FBQTBqQixTQUFBLENBQUFya0IsQ0FBQTtZQUFBO2NBQUFxa0IsU0FBQSxDQUFBMWpCLENBQUE7Y0FBQTBqQixTQUFBLENBQUFya0IsQ0FBQTtjQUFBLE9BRWhDMEUsUUFBUSxDQUFDaXFCLElBQUksQ0FBQyxDQUFDO1lBQUE7Y0FBQSxPQUFBdEssU0FBQSxDQUFBdGpCLENBQUEsSUFBQXNqQixTQUFBLENBQUF2akIsQ0FBQTtZQUFBO2NBQUF1akIsU0FBQSxDQUFBMWpCLENBQUE7Y0FBQSt0QixHQUFBLEdBQUFySyxTQUFBLENBQUF2akIsQ0FBQTtjQUFBLE9BQUF1akIsU0FBQSxDQUFBdGpCLENBQUEsSUFHckIxVixTQUFTO1VBQUE7UUFBQSxHQUFBNjRCLFFBQUE7TUFBQSxDQUVuQjtNQUFBLFNBUGFtSCxhQUFhQSxDQUFBdUQsSUFBQTtRQUFBLE9BQUFILGNBQUEsQ0FBQXJxQixLQUFBLE9BQUEzSyxTQUFBO01BQUE7TUFBQSxPQUFiNHhCLGFBQWE7SUFBQTtFQUFBO0lBQUFwbUMsR0FBQTtJQUFBRSxLQUFBLEVBUzNCLFNBQVFtbUMsMkJBQTJCQSxDQUFDdUQsT0FBaUMsRUFBUTtNQUMzRSxJQUFJLENBQUNBLE9BQU8sRUFBRTtRQUNaO01BQ0Y7TUFFQSxJQUFJLENBQUNqZ0MsT0FBTyxDQUFDQyxJQUFJLENBQUMsOEJBQThCLEVBQUVnZ0MsT0FBTyxDQUFDO0lBQzVEO0VBQUM7SUFBQTVwQyxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFRNG1DLDRCQUE0QkEsQ0FBQ3JuQixRQUFrQixFQUFpQjtNQUN0RSxJQUFJLENBQUNBLFFBQVEsRUFBRTtRQUNiLE9BQU8sUUFBUTtNQUNqQjtNQUVBLFFBQVFBLFFBQVEsQ0FBQ0ssTUFBTTtRQUNyQixLQUFLLEdBQUc7VUFDTixPQUFPLElBQUk7UUFDYixLQUFLLEdBQUc7VUFDTixPQUFPLGNBQWM7UUFDdkIsS0FBSyxHQUFHO1VBQ04sT0FBTyxnQkFBZ0I7UUFDekIsS0FBSyxHQUFHO1VBQ04sT0FBTyxhQUFhO1FBQ3RCLEtBQUssR0FBRztVQUNOLE9BQU8sNEJBQTRCO1FBQ3JDLEtBQUssR0FBRztVQUNOLE9BQU8sU0FBUztRQUNsQixLQUFLLEdBQUc7VUFDTixPQUFPLHlCQUF5QjtRQUNsQyxLQUFLLEdBQUc7VUFDTixPQUFPLGVBQWU7UUFDeEIsS0FBSyxHQUFHO1VBQ04sT0FBTyxVQUFVO1FBQ25CLEtBQUssR0FBRztVQUNOLE9BQU8sY0FBYztRQUN2QjtVQUNFLE9BQU8sUUFBUTtNQUNuQjtJQUNGO0VBQUM7SUFBQTlmLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQVFxbUMsOEJBQThCQSxDQUFDOW1CLFFBQWtCLEVBQW1CO01BQzFFLElBQUksQ0FBQ0EsUUFBUSxFQUFFO1FBQ2IsT0FBTyxRQUFRO01BQ2pCO01BRUEsUUFBUUEsUUFBUSxDQUFDSyxNQUFNO1FBQ3JCLEtBQUssR0FBRztVQUNOLE9BQU8sSUFBSTtRQUNiLEtBQUssR0FBRztVQUNOLE9BQU8sY0FBYztRQUN2QixLQUFLLEdBQUc7VUFDTixPQUFPLGdCQUFnQjtRQUN6QixLQUFLLEdBQUc7VUFDTixPQUFPLGFBQWE7UUFDdEIsS0FBSyxHQUFHO1VBQ04sT0FBTyxTQUFTO1FBQ2xCLEtBQUssR0FBRztVQUNOLE9BQU8seUJBQXlCO1FBQ2xDLEtBQUssR0FBRztVQUNOLE9BQU8sZUFBZTtRQUN4QixLQUFLLEdBQUc7VUFDTixPQUFPLFVBQVU7UUFDbkIsS0FBSyxHQUFHO1VBQ04sT0FBTyxjQUFjO1FBQ3ZCO1VBQ0UsT0FBTyxRQUFRO01BQ25CO0lBQ0Y7RUFBQztJQUFBOWYsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBUW9uQyx5Q0FBeUNBLENBQUM3bkIsUUFBa0IsRUFBOEI7TUFDaEcsSUFBSSxDQUFDQSxRQUFRLEVBQUU7UUFDYixPQUFPLFFBQVE7TUFDakI7TUFFQSxRQUFRQSxRQUFRLENBQUNLLE1BQU07UUFDckIsS0FBSyxHQUFHO1VBQ04sT0FBTyxJQUFJO1FBQ2IsS0FBSyxHQUFHO1VBQ04sT0FBTyxjQUFjO1FBQ3ZCLEtBQUssR0FBRztVQUNOLE9BQU8sU0FBUztRQUNsQixLQUFLLEdBQUc7VUFDTixPQUFPLFVBQVU7UUFDbkIsS0FBSyxHQUFHO1VBQ04sT0FBTyxjQUFjO1FBQ3ZCO1VBQ0UsT0FBTyxRQUFRO01BQ25CO0lBQ0Y7RUFBQztJQUFBOWYsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBUXluQywrQ0FBK0NBLENBQUNsb0IsUUFBa0IsRUFBb0M7TUFDNUcsSUFBSSxDQUFDQSxRQUFRLEVBQUU7UUFDYixPQUFPLFFBQVE7TUFDakI7TUFFQSxRQUFRQSxRQUFRLENBQUNLLE1BQU07UUFDckIsS0FBSyxHQUFHO1VBQ04sT0FBTyxJQUFJO1FBQ2IsS0FBSyxHQUFHO1VBQ04sT0FBTyxjQUFjO1FBQ3ZCLEtBQUssR0FBRztVQUNOLE9BQU8sU0FBUztRQUNsQixLQUFLLEdBQUc7VUFDTixPQUFPLFVBQVU7UUFDbkIsS0FBSyxHQUFHO1VBQ04sT0FBTyxjQUFjO1FBQ3ZCO1VBQ0UsT0FBTyxRQUFRO01BQ25CO0lBQ0Y7RUFBQztJQUFBOWYsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBUW9vQyxxQ0FBcUNBLENBQUM3b0IsUUFBa0IsRUFBMEI7TUFDeEYsSUFBSSxDQUFDQSxRQUFRLEVBQUU7UUFDYixPQUFPLFFBQVE7TUFDakI7TUFFQSxRQUFRQSxRQUFRLENBQUNLLE1BQU07UUFDckIsS0FBSyxHQUFHO1VBQ04sT0FBTyxJQUFJO1FBQ2IsS0FBSyxHQUFHO1VBQ04sT0FBTyxjQUFjO1FBQ3ZCLEtBQUssR0FBRztVQUNOLE9BQU8sU0FBUztRQUNsQixLQUFLLEdBQUc7VUFDTixPQUFPLFVBQVU7UUFDbkIsS0FBSyxHQUFHO1VBQ04sT0FBTyxjQUFjO1FBQ3ZCO1VBQ0UsT0FBTyxRQUFRO01BQ25CO0lBQ0Y7RUFBQztJQUFBOWYsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBUTRvQyxxQ0FBcUNBLENBQUNycEIsUUFBa0IsRUFBdUI7TUFDckYsSUFBSSxDQUFDQSxRQUFRLEVBQUU7UUFDYixPQUFPLFFBQVE7TUFDakI7TUFFQSxRQUFRQSxRQUFRLENBQUNLLE1BQU07UUFDckIsS0FBSyxHQUFHO1VBQ04sT0FBTyxJQUFJO1FBQ2IsS0FBSyxHQUFHO1VBQ04sT0FBTyxjQUFjO1FBQ3ZCLEtBQUssR0FBRztVQUNOLE9BQU8sU0FBUztRQUNsQixLQUFLLEdBQUc7VUFDTixPQUFPLFVBQVU7UUFDbkIsS0FBSyxHQUFHO1VBQ04sT0FBTyxjQUFjO1FBQ3ZCO1VBQ0UsT0FBTyxRQUFRO01BQ25CO0lBQ0Y7RUFBQztJQUFBOWYsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBUXVtQywwQkFBMEJBLENBQUNodEIsT0FBZSxFQUFFekosSUFBK0IsRUFBaUM7TUFDbEgsSUFDRThQLE1BQU0sR0FRSjlQLElBQUksQ0FSTjhQLE1BQU07UUFDTmhYLFFBQVEsR0FPTmtILElBQUksQ0FQTmxILFFBQVE7UUFDUnUrQixZQUFZLEdBTVZyM0IsSUFBSSxDQU5OcTNCLFlBQVk7UUFDWjdSLEdBQUcsR0FLRHhsQixJQUFJLENBTE53bEIsR0FBRztRQUNIcVUsZ0JBQWdCLEdBSWQ3NUIsSUFBSSxDQUpONjVCLGdCQUFnQjtRQUNoQnpDLDRCQUE0QixHQUcxQnAzQixJQUFJLENBSE5vM0IsNEJBQTRCO1FBQzVCMEMsK0JBQStCLEdBRTdCOTVCLElBQUksQ0FGTjg1QiwrQkFBK0I7UUFDL0JDLDhCQUE4QixHQUM1Qi81QixJQUFJLENBRE4rNUIsOEJBQThCO01BRWhDLElBQU1uRSxpQkFBZ0QsR0FBRztRQUN2RDlsQixNQUFNLEVBQU5BLE1BQU07UUFDTm9XLE1BQU0sRUFBRTtVQUNOemMsT0FBTyxFQUFQQSxPQUFPO1VBQ1AzUSxRQUFRLEVBQVJBLFFBQVE7VUFDUnUrQixZQUFZLEVBQVpBO1FBQ0YsQ0FBQztRQUNEN1IsR0FBRyxFQUFIQTtNQUNGLENBQUM7TUFFRCxJQUFJcVUsZ0JBQWdCLEVBQUU7UUFDcEJqRSxpQkFBaUIsQ0FBQ2lFLGdCQUFnQixHQUFHLElBQUksQ0FBQ0csMENBQTBDLENBQUNILGdCQUFnQixDQUFDO01BQ3hHO01BRUEsSUFBSXpDLDRCQUE0QixhQUE1QkEsNEJBQTRCLGVBQTVCQSw0QkFBNEIsQ0FBRXBCLGtCQUFrQixFQUFFO1FBQ3BESixpQkFBaUIsQ0FBQ3dCLDRCQUE0QixHQUFHO1VBQUNwQixrQkFBa0IsRUFBRW9CLDRCQUE0QixDQUFDcEI7UUFBa0IsQ0FBQztNQUN4SDtNQUVBLElBQUk4RCwrQkFBK0IsYUFBL0JBLCtCQUErQixlQUEvQkEsK0JBQStCLENBQUU5RCxrQkFBa0IsRUFBRTtRQUN2REosaUJBQWlCLENBQUNrRSwrQkFBK0IsR0FBRztVQUFDOUQsa0JBQWtCLEVBQUU4RCwrQkFBK0IsQ0FBQzlEO1FBQWtCLENBQUM7TUFDOUg7TUFFQSxJQUFJK0QsOEJBQThCLGFBQTlCQSw4QkFBOEIsZUFBOUJBLDhCQUE4QixDQUFFL0Qsa0JBQWtCLEVBQUU7UUFDdERKLGlCQUFpQixDQUFDbUUsOEJBQThCLEdBQUc7VUFBQy9ELGtCQUFrQixFQUFFK0QsOEJBQThCLENBQUMvRDtRQUFrQixDQUFDO01BQzVIO01BRUEsT0FBT0osaUJBQWlCO0lBQzFCO0VBQUM7SUFBQTVsQyxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFRNm1DLHdCQUF3QkEsQ0FBQ3R0QixPQUFlLEVBQUV6SixJQUE2QixFQUErQjtNQUM1RyxJQUFNNjJCLGVBQTRDLEdBQUc7UUFDbkQvbUIsTUFBTSxFQUFFOVAsSUFBSSxDQUFDOFAsTUFBTTtRQUNuQm9XLE1BQU0sRUFBRTtVQUNOemMsT0FBTyxFQUFQQSxPQUFPO1VBQ1AzUSxRQUFRLEVBQUVrSCxJQUFJLENBQUNsSCxRQUFRO1VBQ3ZCdStCLFlBQVksRUFBRXIzQixJQUFJLENBQUNxM0I7UUFDckI7TUFDRixDQUFDO01BRUQsSUFBSXIzQixJQUFJLENBQUM2NUIsZ0JBQWdCLEVBQUU7UUFDekJoRCxlQUFlLENBQUNnRCxnQkFBZ0IsR0FBRyxJQUFJLENBQUNHLDBDQUEwQyxDQUFDaDZCLElBQUksQ0FBQzY1QixnQkFBZ0IsQ0FBQztNQUMzRztNQUVBLElBQUk3NUIsSUFBSSxDQUFDbzNCLDRCQUE0QixJQUFJcDNCLElBQUksQ0FBQ28zQiw0QkFBNEIsQ0FBQ3BCLGtCQUFrQixFQUFFO1FBQzdGYSxlQUFlLENBQUNPLDRCQUE0QixHQUFHO1VBQUNwQixrQkFBa0IsRUFBRWgyQixJQUFJLENBQUNvM0IsNEJBQTRCLENBQUNwQjtRQUFrQixDQUFDO01BQzNIO01BRUEsSUFBSWgyQixJQUFJLENBQUM4NUIsK0JBQStCLElBQUk5NUIsSUFBSSxDQUFDODVCLCtCQUErQixDQUFDOUQsa0JBQWtCLEVBQUU7UUFDbkdhLGVBQWUsQ0FBQ2lELCtCQUErQixHQUFHO1VBQUM5RCxrQkFBa0IsRUFBRWgyQixJQUFJLENBQUM4NUIsK0JBQStCLENBQUM5RDtRQUFrQixDQUFDO01BQ2pJO01BRUEsSUFBSWgyQixJQUFJLENBQUMrNUIsOEJBQThCLElBQUkvNUIsSUFBSSxDQUFDKzVCLDhCQUE4QixDQUFDL0Qsa0JBQWtCLEVBQUU7UUFDakdhLGVBQWUsQ0FBQ2tELDhCQUE4QixHQUFHO1VBQUMvRCxrQkFBa0IsRUFBRWgyQixJQUFJLENBQUMrNUIsOEJBQThCLENBQUMvRDtRQUFrQixDQUFDO01BQy9IO01BRUEsT0FBT2EsZUFBZTtJQUN4QjtFQUFDO0lBQUE3bUMsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBUThwQywwQ0FBMENBLENBQUMvb0IsYUFBK0IsRUFBb0I7TUFDcEcsSUFBTTRvQixnQkFBa0MsR0FBRztRQUFDN21CLFVBQVUsRUFBRTtNQUFFLENBQUM7TUFFM0QsSUFBSS9CLGFBQWEsQ0FBQ2dwQixZQUFZLEVBQUU7UUFDOUJKLGdCQUFnQixDQUFDSSxZQUFZLEdBQUdocEIsYUFBYSxDQUFDZ3BCLFlBQVk7TUFDNUQ7TUFFQSxJQUFJLE9BQU9ocEIsYUFBYSxDQUFDaXBCLG9CQUFvQixLQUFLLFFBQVEsRUFBRTtRQUMxREwsZ0JBQWdCLENBQUNLLG9CQUFvQixHQUFHanBCLGFBQWEsQ0FBQ2lwQixvQkFBb0I7TUFDNUU7TUFFQSxJQUFJanBCLGFBQWEsQ0FBQytCLFVBQVUsRUFBRTtRQUM1QixJQUFNQSxVQUEwQixHQUFHLEVBQUU7UUFFckMsS0FBSyxJQUFJN0gsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHOEYsYUFBYSxDQUFDK0IsVUFBVSxDQUFDeFksTUFBTSxFQUFFMlEsQ0FBQyxFQUFFLEVBQUU7VUFDeEQ2SCxVQUFVLENBQUN4WixJQUFJLENBQUM7WUFDZHlaLElBQUksRUFBRWhDLGFBQWEsQ0FBQytCLFVBQVUsQ0FBQzdILENBQUMsQ0FBQyxDQUFDOEgsSUFBSTtZQUN0Q0MsUUFBUSxFQUFFakMsYUFBYSxDQUFDK0IsVUFBVSxDQUFDN0gsQ0FBQyxDQUFDLENBQUMrSCxRQUFRO1lBQzlDQyxVQUFVLEVBQUVsQyxhQUFhLENBQUMrQixVQUFVLENBQUM3SCxDQUFDLENBQUMsQ0FBQ2dJO1VBQzFDLENBQUMsQ0FBQztRQUNKO1FBRUEwbUIsZ0JBQWdCLENBQUM3bUIsVUFBVSxHQUFHQSxVQUFVO01BQzFDO01BRUEsSUFBSS9CLGFBQWEsQ0FBQ2twQixrQkFBa0IsRUFBRTtRQUNwQ04sZ0JBQWdCLENBQUNNLGtCQUFrQixHQUFHbHBCLGFBQWEsQ0FBQ2twQixrQkFBa0I7TUFDeEU7TUFFQSxJQUFJbHBCLGFBQWEsQ0FBQ21wQixhQUFhLEVBQUU7UUFDL0JQLGdCQUFnQixDQUFDTyxhQUFhLEdBQUducEIsYUFBYSxDQUFDbXBCLGFBQWE7TUFDOUQ7TUFFQSxPQUFPUCxnQkFBZ0I7SUFDekI7RUFBQztJQUFBN3BDLEdBQUE7SUFBQUUsS0FBQTtNQUFBLElBQUFtcUMsMENBQUEsR0FBQTVyQixtRkFBQSxjQUFBaEMsWUFBQSxHQUFBRSxDQUFBLENBQ0QsU0FBQTJ0QixTQUF3RDdxQixRQUFrQjtRQUFBLElBQUF6UCxJQUFBLEVBQUFvM0IsNEJBQUE7UUFBQSxPQUFBM3FCLFlBQUEsR0FBQUMsQ0FBQSxXQUFBNnRCLFNBQUE7VUFBQSxrQkFBQUEsU0FBQSxDQUFBeHZCLENBQUE7WUFBQTtjQUFBd3ZCLFNBQUEsQ0FBQXh2QixDQUFBO2NBQUEsT0FDckQwRSxRQUFRLENBQUNpcUIsSUFBSSxDQUFDLENBQUM7WUFBQTtjQUE1QjE1QixJQUFJLEdBQUF1NkIsU0FBQSxDQUFBMXVCLENBQUE7Y0FDSnVyQiw0QkFBK0QsR0FBRztnQkFBQ3RuQixNQUFNLEVBQUU5UCxJQUFJLENBQUM4UDtjQUFNLENBQUM7Y0FFN0YsSUFBSTlQLElBQUksSUFBSUEsSUFBSSxDQUFDZzJCLGtCQUFrQixFQUFFO2dCQUNuQ29CLDRCQUE0QixDQUFDcEIsa0JBQWtCLEdBQUdoMkIsSUFBSSxDQUFDZzJCLGtCQUFrQjtjQUMzRTtjQUFDLE9BQUF1RSxTQUFBLENBQUF6dUIsQ0FBQSxJQUVNc3JCLDRCQUE0QjtVQUFBO1FBQUEsR0FBQWtELFFBQUE7TUFBQSxDQUNwQztNQUFBLFNBVGEvQyx5Q0FBeUNBLENBQUFpRCxJQUFBO1FBQUEsT0FBQUgsMENBQUEsQ0FBQWxyQixLQUFBLE9BQUEzSyxTQUFBO01BQUE7TUFBQSxPQUF6Qyt5Qix5Q0FBeUM7SUFBQTtFQUFBO0lBQUF2bkMsR0FBQTtJQUFBRSxLQUFBO01BQUEsSUFBQXVxQyxzQ0FBQSxHQUFBaHNCLG1GQUFBLGNBQUFoQyxZQUFBLEdBQUFFLENBQUEsQ0FXdkQsU0FBQSt0QixTQUFvRGpyQixRQUFrQjtRQUFBLElBQUF6UCxJQUFBLEVBQUFvNEIsd0JBQUE7UUFBQSxPQUFBM3JCLFlBQUEsR0FBQUMsQ0FBQSxXQUFBaXVCLFNBQUE7VUFBQSxrQkFBQUEsU0FBQSxDQUFBNXZCLENBQUE7WUFBQTtjQUFBNHZCLFNBQUEsQ0FBQTV2QixDQUFBO2NBQUEsT0FDakQwRSxRQUFRLENBQUNpcUIsSUFBSSxDQUFDLENBQUM7WUFBQTtjQUE1QjE1QixJQUFJLEdBQUEyNkIsU0FBQSxDQUFBOXVCLENBQUE7Y0FDSnVzQix3QkFBdUQsR0FBRztnQkFDOUR0b0IsTUFBTSxFQUFFOVAsSUFBSSxDQUFDOFAsTUFBTTtnQkFDbkI2QixPQUFPLEVBQUU7Y0FDWCxDQUFDO2NBRUQsSUFBSTNSLElBQUksRUFBRTtnQkFDUixJQUFJQSxJQUFJLENBQUMyUixPQUFPLEVBQUU7a0JBQ2hCeW1CLHdCQUF3QixDQUFDem1CLE9BQU8sR0FBRzNSLElBQUksQ0FBQzJSLE9BQU87Z0JBQ2pEO2NBQ0Y7Y0FBQyxPQUFBZ3BCLFNBQUEsQ0FBQTd1QixDQUFBLElBRU1zc0Isd0JBQXdCO1VBQUE7UUFBQSxHQUFBc0MsUUFBQTtNQUFBLENBQ2hDO01BQUEsU0FkYW5DLHFDQUFxQ0EsQ0FBQXFDLElBQUE7UUFBQSxPQUFBSCxzQ0FBQSxDQUFBdHJCLEtBQUEsT0FBQTNLLFNBQUE7TUFBQTtNQUFBLE9BQXJDK3pCLHFDQUFxQztJQUFBO0VBQUE7SUFBQXZvQyxHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBMnFDLG1DQUFBLEdBQUFwc0IsbUZBQUEsY0FBQWhDLFlBQUEsR0FBQUUsQ0FBQSxDQWdCbkQsU0FBQW11QixVQUFpRHJyQixRQUFrQjtRQUFBLElBQUF6UCxJQUFBLEVBQUFzdUIsYUFBQTtRQUFBLE9BQUE3aEIsWUFBQSxHQUFBQyxDQUFBLFdBQUFxdUIsVUFBQTtVQUFBLGtCQUFBQSxVQUFBLENBQUFod0IsQ0FBQTtZQUFBO2NBQUFnd0IsVUFBQSxDQUFBaHdCLENBQUE7Y0FBQSxPQUM5QzBFLFFBQVEsQ0FBQ2lxQixJQUFJLENBQUMsQ0FBQztZQUFBO2NBQTVCMTVCLElBQUksR0FBQSs2QixVQUFBLENBQUFsdkIsQ0FBQTtjQUNKeWlCLGFBQXlDLEdBQUc7Z0JBQUN4ZSxNQUFNLEVBQUU5UCxJQUFJLENBQUM4UDtjQUFNLENBQUM7Y0FBQSxPQUFBaXJCLFVBQUEsQ0FBQWp2QixDQUFBLElBRWhFd2lCLGFBQWE7VUFBQTtRQUFBLEdBQUF3TSxTQUFBO01BQUEsQ0FDckI7TUFBQSxTQUxhL0Isa0NBQWtDQSxDQUFBaUMsSUFBQTtRQUFBLE9BQUFILG1DQUFBLENBQUExckIsS0FBQSxPQUFBM0ssU0FBQTtNQUFBO01BQUEsT0FBbEN1MEIsa0NBQWtDO0lBQUE7RUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3A2QmxEO0FBQ0E7QUFDQTs7QUFHdUQ7QUFDUjtBQUNRO0FBSVM7QUFDd0Y7QUFBQSxJQWlCbkltQyw2QkFBNkI7RUFVaEQsU0FBQUEsOEJBQVl0QixPQUE2QyxFQUFFO0lBQUFwcUMsaUZBQUEsT0FBQTByQyw2QkFBQTtJQUFBenJDLGlGQUFBLGtCQVJ2QjZJLDZEQUFhLENBQUNHLFNBQVMsQ0FBQywrQkFBK0IsQ0FBQztJQUFBaEosaUZBQUEsdURBQ3NCLElBQUkwckMsR0FBRyxDQUFDLENBQUM7SUFBQTFyQyxpRkFBQSxtQ0FDL0QsSUFBSU4sNERBQWMsQ0FBQyxDQUFDO0lBQUFNLGlGQUFBLHVCQUNoQyxJQUFJTiw0REFBYyxDQUFDLENBQUM7SUFBQU0saUZBQUEsZ0NBQzhCLFNBQVM7SUFBQUEsaUZBQUEscUNBQ3ZELElBQUk7SUFBQUEsaUZBQUEsb0JBQzNCLEtBQUs7SUFHaEMsSUFBSSxDQUFDSyxVQUFVLENBQUM4cEMsT0FBTyxDQUFDO0VBQzFCO0VBQUMsT0FBQTdwQyw4RUFBQSxDQUFBbXJDLDZCQUFBO0lBQUFsckMsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBT0ssT0FBT0EsQ0FBQSxFQUFTO01BQ3JCLElBQUksQ0FBQ29RLFNBQVMsR0FBRyxJQUFJO01BQ3JCLElBQUksQ0FBQ25RLFlBQVksQ0FBQ0QsT0FBTyxDQUFDLENBQUM7SUFDN0I7RUFBQztJQUFBUCxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFRSixVQUFVQSxDQUFDOHBDLE9BQTZDLEVBQVE7TUFDdEUsSUFBSSxDQUFDLElBQUksQ0FBQ3dCLGdDQUFnQyxDQUFDeEIsT0FBTyxDQUFDOWdDLFFBQVEsRUFBRThnQyxPQUFPLENBQUN0akIsS0FBSyxFQUFFc2pCLE9BQU8sQ0FBQ2xKLFFBQVEsRUFBRWtKLE9BQU8sQ0FBQ2pKLEdBQUcsQ0FBQyxFQUFFO1FBQzFHO01BQ0Y7TUFFQSxJQUFJLENBQUMwSyx5QkFBeUIsQ0FBQ3pCLE9BQU8sQ0FBQ2pYLFlBQVksRUFBRWlYLE9BQU8sQ0FBQzBCLHFDQUFxQyxDQUFDO01BQ25HLElBQUksQ0FBQ0Msb0NBQW9DLENBQUMzQixPQUFPLENBQUN0akIsS0FBSyxFQUFFc2pCLE9BQU8sQ0FBQ2pKLEdBQUcsRUFBRWlKLE9BQU8sQ0FBQzRCLE9BQU8sRUFBRTVCLE9BQU8sQ0FBQy9JLHNCQUFzQixFQUFFK0ksT0FBTyxDQUFDOUksc0JBQXNCLEVBQUU4SSxPQUFPLENBQUM2QixvQ0FBb0MsQ0FBQztNQUNwTTdCLE9BQU8sQ0FBQzhCLGdCQUFnQixDQUFDeHJDLEtBQUssR0FBRyxJQUFJO0lBQ3ZDO0VBQUM7SUFBQUYsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBUWtyQyxnQ0FBZ0NBLENBQUN0aUMsUUFBZ0IsRUFBRXdkLEtBQWlCLEVBQUVvYSxRQUF3QixFQUFFQyxHQUFXLEVBQVc7TUFDNUgsSUFBSXJhLEtBQUssS0FBS21iLDBFQUFVLENBQUNHLElBQUksRUFBRTtRQUM3QixJQUFJLENBQUNqNEIsT0FBTyxDQUFDdUwsSUFBSSxDQUFDLHdGQUF3RixFQUFFcE0sUUFBUSxDQUFDO1FBRXJILE9BQU8sS0FBSztNQUNkO01BRUEsSUFBSSxDQUFDNDNCLFFBQVEsRUFBRTtRQUNiLElBQUksQ0FBQy8yQixPQUFPLENBQUN1TCxJQUFJLENBQUMsc0ZBQXNGLEVBQUVwTSxRQUFRLENBQUM7UUFFbkgsT0FBTyxLQUFLO01BQ2Q7TUFFQSxJQUFJLENBQUM2M0IsR0FBRyxFQUFFO1FBQ1IsSUFBSSxDQUFDaDNCLE9BQU8sQ0FBQ3VMLElBQUksQ0FBQyxpRkFBaUYsRUFBRXBNLFFBQVEsQ0FBQztRQUU5RyxPQUFPLEtBQUs7TUFDZDtNQUVBLE9BQU8sSUFBSTtJQUNiO0VBQUM7SUFBQTlJLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQVFxckMsb0NBQW9DQSxDQUFDamxCLEtBQWlCLEVBQUVxYSxHQUFXLEVBQUU2SyxPQUFlLEVBQUUzSyxzQkFBOEMsRUFBRUMsc0JBQWdDLEVBQUUySyxvQ0FBbUYsRUFBUTtNQUN6UTVLLHNCQUFzQixDQUFDOEssYUFBYSxDQUFrRFYsaUhBQXdCLENBQUNXLHNCQUFzQixFQUFFLElBQUksQ0FBQ0Msd0JBQXdCLENBQUN0bUMsSUFBSSxDQUFDLElBQUksRUFBRWs4QiwwRUFBVSxDQUFDbmIsS0FBSyxDQUFDLEVBQUVxYSxHQUFHLEVBQUc2SyxPQUFPLEVBQUdDLG9DQUFvQyxDQUFDLENBQUM7TUFDelAzSyxzQkFBc0IsQ0FBQ3QzQixJQUFJLENBQUMwaEMsNkJBQTZCLENBQUNZLGNBQWMsQ0FBQztJQUMzRTtFQUFDO0lBQUE5ckMsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBUTJyQyx3QkFBd0JBLENBQUN2bEIsS0FBYSxFQUFFcWEsR0FBVyxFQUFFNkssT0FBZSxFQUFFQyxvQ0FBbUYsRUFBRTkzQixPQUErQixFQUFRO01BQ3hNLElBQUksQ0FBQ0EsT0FBTyxFQUFFO1FBQ1o7TUFDRjtNQUVBLFNBQUF1WixFQUFBLE1BQUE2ZSxlQUFBLEdBQXVDcDFCLE1BQU0sQ0FBQ3ExQixPQUFPLENBQUNyNEIsT0FBTyxDQUFDLEVBQUF1WixFQUFBLEdBQUE2ZSxlQUFBLENBQUF2aEMsTUFBQSxFQUFBMGlCLEVBQUEsSUFBRTtRQUEzRCxJQUFBK2Usa0JBQUEsR0FBQUMsZ0ZBQUEsQ0FBQUgsZUFBQSxDQUFBN2UsRUFBQTtVQUFPaWYsWUFBWSxHQUFBRixrQkFBQTtVQUFFRyxRQUFRLEdBQUFILGtCQUFBO1FBQ2hDLElBQU1JLGtCQUFrQixHQUFHbHBDLFFBQVEsQ0FBQ2dwQyxZQUFZLEVBQUUsRUFBRSxDQUFDO1FBQ3JELElBQU1yViw2QkFBNkIsR0FBR3NWLFFBQVEsQ0FBQywrQkFBK0IsQ0FBQztRQUUvRSxJQUFJdFYsNkJBQTZCLEVBQUU7VUFBQSxJQUFBd1YscUJBQUEsRUFBQUMsc0JBQUE7VUFDakMsSUFBTUMsc0JBQXFELEdBQUc7WUFDNURDLFFBQVEsR0FBQUgscUJBQUEsR0FBRXhWLDZCQUE2QixDQUFDMlYsUUFBUSxjQUFBSCxxQkFBQSxjQUFBQSxxQkFBQSxHQUFJLElBQUk7WUFDeERJLGdCQUFnQixHQUFBSCxzQkFBQSxHQUFFelYsNkJBQTZCLENBQUM0VixnQkFBZ0IsY0FBQUgsc0JBQUEsY0FBQUEsc0JBQUEsR0FBSSxJQUFJO1lBQ3hFeHVCLElBQUksRUFBRSxPQUFPO1lBQ2J1SSxLQUFLLEVBQUxBLEtBQUs7WUFDTHFhLEdBQUcsRUFBSEEsR0FBRztZQUNINkssT0FBTyxFQUFQQSxPQUFPO1lBQ1BtQixlQUFlLEVBQUUsSUFBSTtZQUNyQkMsZUFBZSxFQUFFLElBQUk7WUFDckJDLGVBQWUsRUFBRSxJQUFJO1lBQ3JCQyxrQkFBa0IsRUFBRSxJQUFJO1lBQ3hCQyxhQUFhLEVBQUUsSUFBSSxDQUFDQztVQUN0QixDQUFDO1VBRUR2QixvQ0FBb0MsQ0FBQ3ZyQyxLQUFLLEdBQUdzc0Msc0JBQXNCO1VBRW5FLElBQUksSUFBSSxDQUFDUSxxQkFBcUIsS0FBSyxTQUFTLEVBQUU7WUFDNUMsSUFBSSxDQUFDQyw0Q0FBNEMsQ0FBQzl6QixHQUFHLENBQUNrekIsa0JBQWtCLEVBQUVHLHNCQUFzQixDQUFDO1VBQ25HO1FBQ0Y7TUFDRjtJQUNGO0VBQUM7SUFBQXhzQyxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFRbXJDLHlCQUF5QkEsQ0FBQzZCLG1CQUFxRCxFQUFFNUIscUNBQXFGLEVBQVE7TUFBQSxJQUFBN3FDLEtBQUE7TUFDcEwsSUFBSSxDQUFDRCxZQUFZLENBQUNRLEdBQUcsQ0FBQyxJQUFJOUIsd0RBQVUsQ0FBQztRQUFBLE9BQU11QixLQUFJLENBQUN3c0MsNENBQTRDLENBQUNFLEtBQUssQ0FBQyxDQUFDO01BQUEsRUFBQyxDQUFDO01BQ3RHLElBQUksQ0FBQzNzQyxZQUFZLENBQUNRLEdBQUcsQ0FBQyxJQUFJLENBQUNvc0Msd0JBQXdCLENBQUM7TUFDcEQsSUFBSSxDQUFDNXNDLFlBQVksQ0FBQ1EsR0FBRyxDQUFDa3NDLG1CQUFtQixDQUFDNThCLFNBQVMsQ0FBQyxVQUFBcWlCLFlBQVksRUFBSTtRQUNsRWx5QixLQUFJLENBQUMyc0Msd0JBQXdCLENBQUM3c0MsT0FBTyxDQUFDLENBQUM7UUFFdkMsSUFBSSxDQUFDb3lCLFlBQVksRUFBRTtVQUNqQjtRQUNGO1FBRUFseUIsS0FBSSxDQUFDNHNDLHdCQUF3QixDQUFDMWEsWUFBWSxFQUFFMlkscUNBQXFDLENBQUM7TUFDcEYsQ0FBQyxDQUFDLENBQUM7SUFDTDtFQUFDO0lBQUF0ckMsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBUW90Qyx3QkFBd0JBLENBQUMzYSxZQUE4QixFQUFFMlkscUNBQXFGLEVBQUUzckMsR0FBd0IsRUFBRXlzQyxRQUFvQyxFQUFRO01BQzVOLElBQUksSUFBSSxDQUFDejdCLFNBQVMsRUFBRTtRQUNsQjtNQUNGOztNQUVBO01BQ0EsSUFBSSxDQUFDNDhCLHNCQUFzQixDQUFDNWEsWUFBWSxFQUFFMlkscUNBQXFDLENBQUM7TUFFaEYsSUFBTWEsWUFBWSxHQUFHQyxRQUFRLENBQUNELFlBQVk7TUFFMUMsSUFBSSxDQUFDQSxZQUFZLEVBQUU7UUFDakI7UUFDQTtRQUNBO01BQ0Y7TUFFQSxJQUFNcUIsa0JBQWtDLEdBQUcsRUFBRTtNQUFDLElBQUFDLFNBQUEsR0FBQUMsMEJBQUEsQ0FFUCxJQUFJLENBQUNULDRDQUE0QztRQUFBVSxLQUFBO01BQUE7UUFBeEYsS0FBQUYsU0FBQSxDQUFBRyxDQUFBLE1BQUFELEtBQUEsR0FBQUYsU0FBQSxDQUFBMXlCLENBQUEsSUFBQW1CLElBQUEsR0FBMEY7VUFBQSxJQUFBMnhCLFdBQUEsR0FBQTNCLGdGQUFBLENBQUF5QixLQUFBLENBQUF6dEMsS0FBQTtZQUE5RStkLFVBQVMsR0FBQTR2QixXQUFBO1lBQUVDLFdBQVcsR0FBQUQsV0FBQTtVQUNoQyxJQUFJNXZCLFVBQVMsR0FBR2t1QixZQUFZLEVBQUU7WUFDNUI7VUFDRjtVQUVBYixxQ0FBcUMsQ0FBQ3ByQyxLQUFLLEdBQUE2dEMsYUFBQSxDQUFBQSxhQUFBLEtBQ3RDRCxXQUFXO1lBQ2RFLGVBQWUsRUFBRSxJQUFJdHVDLElBQUksQ0FBQ3V1QyxXQUFXLENBQUNDLFVBQVUsR0FBR3Z1QyxHQUFHLENBQUM7WUFDdkRvdEMsYUFBYSxFQUFFO1VBQVMsRUFDekI7VUFFRFMsa0JBQWtCLENBQUNoa0MsSUFBSSxDQUFDeVUsVUFBUyxDQUFDO1FBQ3BDO01BQUMsU0FBQWtyQixHQUFBO1FBQUFzRSxTQUFBLENBQUE3aUMsQ0FBQSxDQUFBdStCLEdBQUE7TUFBQTtRQUFBc0UsU0FBQSxDQUFBaHlCLENBQUE7TUFBQTtNQUVELFNBQUEweUIsR0FBQSxNQUFBQyxtQkFBQSxHQUF3Qlosa0JBQWtCLEVBQUFXLEdBQUEsR0FBQUMsbUJBQUEsQ0FBQTVqQyxNQUFBLEVBQUEyakMsR0FBQSxJQUFFO1FBQXZDLElBQU1sd0IsU0FBUyxHQUFBbXdCLG1CQUFBLENBQUFELEdBQUE7UUFDbEIsSUFBSSxDQUFDbEIsNENBQTRDLFVBQU8sQ0FBQ2h2QixTQUFTLENBQUM7TUFDckU7SUFDRjtFQUFDO0lBQUFqZSxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFRbXRDLHdCQUF3QkEsQ0FBQzFhLFlBQThCLEVBQUUyWSxxQ0FBcUYsRUFBUTtNQUFBLElBQUF6MUIsTUFBQTtNQUM1SixJQUFNdzRCLFNBQVMsR0FBRyxTQUFaQSxTQUFTQSxDQUFBO1FBQUEsT0FBU3g0QixNQUFJLENBQUNtM0IscUJBQXFCLEdBQUcsU0FBUztNQUFBO01BRTlEcmEsWUFBWSxDQUFDM3FCLGdCQUFnQixDQUFDLFNBQVMsRUFBRXFtQyxTQUFTLENBQUM7TUFDbkQsSUFBSSxDQUFDakIsd0JBQXdCLENBQUNwc0MsR0FBRyxDQUFDLElBQUk5Qix3REFBVSxDQUFDO1FBQUEsT0FBTXl6QixZQUFZLENBQUN6cUIsbUJBQW1CLENBQUMsU0FBUyxFQUFFbW1DLFNBQVMsQ0FBQztNQUFBLEVBQUMsQ0FBQztNQUUvRyxJQUFNQyxPQUFPLEdBQUcsU0FBVkEsT0FBT0EsQ0FBQTtRQUFBLE9BQVN6NEIsTUFBSSxDQUFDbTNCLHFCQUFxQixHQUFHLFFBQVE7TUFBQTtNQUUzRHJhLFlBQVksQ0FBQzNxQixnQkFBZ0IsQ0FBQyxPQUFPLEVBQUVzbUMsT0FBTyxDQUFDO01BQy9DLElBQUksQ0FBQ2xCLHdCQUF3QixDQUFDcHNDLEdBQUcsQ0FBQyxJQUFJOUIsd0RBQVUsQ0FBQztRQUFBLE9BQU15ekIsWUFBWSxDQUFDenFCLG1CQUFtQixDQUFDLE9BQU8sRUFBRW9tQyxPQUFPLENBQUM7TUFBQSxFQUFDLENBQUM7TUFFM0csSUFBTUMsU0FBUyxHQUFHLFNBQVpBLFNBQVNBLENBQUE7UUFBQSxPQUFTMTRCLE1BQUksQ0FBQ20zQixxQkFBcUIsR0FBRyxTQUFTO01BQUE7TUFFOURyYSxZQUFZLENBQUMzcUIsZ0JBQWdCLENBQUMsU0FBUyxFQUFFdW1DLFNBQVMsQ0FBQztNQUNuRCxJQUFJLENBQUNuQix3QkFBd0IsQ0FBQ3BzQyxHQUFHLENBQUMsSUFBSTlCLHdEQUFVLENBQUM7UUFBQSxPQUFNeXpCLFlBQVksQ0FBQ3pxQixtQkFBbUIsQ0FBQyxTQUFTLEVBQUVxbUMsU0FBUyxDQUFDO01BQUEsRUFBQyxDQUFDO01BRS9HLElBQU1DLFNBQVMsR0FBRyxTQUFaQSxTQUFTQSxDQUFBO1FBQUEsT0FBUzM0QixNQUFJLENBQUNtM0IscUJBQXFCLEdBQUcsU0FBUztNQUFBO01BRTlEcmEsWUFBWSxDQUFDM3FCLGdCQUFnQixDQUFDLFNBQVMsRUFBRXdtQyxTQUFTLENBQUM7TUFDbkQsSUFBSSxDQUFDcEIsd0JBQXdCLENBQUNwc0MsR0FBRyxDQUFDLElBQUk5Qix3REFBVSxDQUFDO1FBQUEsT0FBTXl6QixZQUFZLENBQUN6cUIsbUJBQW1CLENBQUMsU0FBUyxFQUFFc21DLFNBQVMsQ0FBQztNQUFBLEVBQUMsQ0FBQztNQUUvRyxJQUFNQyxPQUFPLEdBQUcsU0FBVkEsT0FBT0EsQ0FBQTtRQUFBLE9BQVM1NEIsTUFBSSxDQUFDbTNCLHFCQUFxQixHQUFHLE9BQU87TUFBQTtNQUUxRHJhLFlBQVksQ0FBQzNxQixnQkFBZ0IsQ0FBQyxPQUFPLEVBQUV5bUMsT0FBTyxDQUFDO01BQy9DLElBQUksQ0FBQ3JCLHdCQUF3QixDQUFDcHNDLEdBQUcsQ0FBQyxJQUFJOUIsd0RBQVUsQ0FBQztRQUFBLE9BQU15ekIsWUFBWSxDQUFDenFCLG1CQUFtQixDQUFDLE9BQU8sRUFBRXVtQyxPQUFPLENBQUM7TUFBQSxFQUFDLENBQUM7TUFFM0csSUFBTUMsT0FBTyxHQUFHLFNBQVZBLE9BQU9BLENBQUE7UUFBQSxPQUFTNzRCLE1BQUksQ0FBQ20zQixxQkFBcUIsR0FBRyxPQUFPO01BQUE7TUFFMURyYSxZQUFZLENBQUMzcUIsZ0JBQWdCLENBQUMsT0FBTyxFQUFFMG1DLE9BQU8sQ0FBQztNQUMvQyxJQUFJLENBQUN0Qix3QkFBd0IsQ0FBQ3BzQyxHQUFHLENBQUMsSUFBSTlCLHdEQUFVLENBQUM7UUFBQSxPQUFNeXpCLFlBQVksQ0FBQ3pxQixtQkFBbUIsQ0FBQyxPQUFPLEVBQUV3bUMsT0FBTyxDQUFDO01BQUEsRUFBQyxDQUFDO01BRTNHLElBQUksQ0FBQ25CLHNCQUFzQixDQUFDNWEsWUFBWSxFQUFFMlkscUNBQXFDLENBQUM7TUFDaEYsSUFBSSxDQUFDOEIsd0JBQXdCLENBQUNwc0MsR0FBRyxDQUFDLElBQUk5Qix3REFBVSxDQUFDLFlBQU07UUFDckQsSUFBSTJXLE1BQUksQ0FBQzg0QiwwQkFBMEIsRUFBRTtVQUNuQ2hjLFlBQVksQ0FBQ2ljLHdCQUF3QixDQUFDLzRCLE1BQUksQ0FBQzg0QiwwQkFBMEIsQ0FBQztRQUN4RTtNQUNGLENBQUMsQ0FDRCxDQUFDO0lBQ0g7RUFBQztJQUFBM3VDLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQVFxdEMsc0JBQXNCQSxDQUFDNWEsWUFBOEIsRUFBRTJZLHFDQUFxRixFQUFRO01BQzFKLElBQUksQ0FBQzNZLFlBQVksQ0FBQ3RsQix5QkFBeUIsRUFBRTtRQUMzQztNQUNGO01BRUEsSUFBSSxDQUFDc2hDLDBCQUEwQixHQUFHaGMsWUFBWSxDQUFDdGxCLHlCQUF5QixDQUFDLElBQUksQ0FBQ2lnQyx3QkFBd0IsQ0FBQy9uQyxJQUFJLENBQUMsSUFBSSxFQUFFb3RCLFlBQVksRUFBRTJZLHFDQUFxQyxDQUFDLENBQUM7SUFDeks7RUFBQztBQUFBO0FBQUE3ckMsaUZBQUEsQ0ExTGtCeXJDLDZCQUE2QixvQkFDUCwwQkFBMEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQkM3QnJFLHVLQUFBdGdDLENBQUEsRUFBQWdRLENBQUEsRUFBQUMsQ0FBQSx3QkFBQUMsTUFBQSxHQUFBQSxNQUFBLE9BQUFDLENBQUEsR0FBQUYsQ0FBQSxDQUFBRyxRQUFBLGtCQUFBQyxDQUFBLEdBQUFKLENBQUEsQ0FBQUssV0FBQSw4QkFBQUMsRUFBQU4sQ0FBQSxFQUFBRSxDQUFBLEVBQUFFLENBQUEsRUFBQUUsQ0FBQSxRQUFBQyxDQUFBLEdBQUFMLENBQUEsSUFBQUEsQ0FBQSxDQUFBL04sU0FBQSxZQUFBcU8sU0FBQSxHQUFBTixDQUFBLEdBQUFNLFNBQUEsRUFBQUMsQ0FBQSxHQUFBM0UsTUFBQSxDQUFBNEUsTUFBQSxDQUFBSCxDQUFBLENBQUFwTyxTQUFBLFVBQUF3TyxtQkFBQSxDQUFBRixDQUFBLHVCQUFBVCxDQUFBLEVBQUFFLENBQUEsRUFBQUUsQ0FBQSxRQUFBRSxDQUFBLEVBQUFDLENBQUEsRUFBQUUsQ0FBQSxFQUFBRyxDQUFBLE1BQUFDLENBQUEsR0FBQVQsQ0FBQSxRQUFBVSxDQUFBLE9BQUFDLENBQUEsS0FBQUYsQ0FBQSxLQUFBWCxDQUFBLEtBQUFjLENBQUEsRUFBQWpSLENBQUEsRUFBQWtSLENBQUEsRUFBQUMsQ0FBQSxFQUFBTixDQUFBLEVBQUFNLENBQUEsQ0FBQXhXLElBQUEsQ0FBQXFGLENBQUEsTUFBQW1SLENBQUEsV0FBQUEsRUFBQW5CLENBQUEsRUFBQUMsQ0FBQSxXQUFBTSxDQUFBLEdBQUFQLENBQUEsRUFBQVEsQ0FBQSxNQUFBRSxDQUFBLEdBQUExUSxDQUFBLEVBQUFnUixDQUFBLENBQUFiLENBQUEsR0FBQUYsQ0FBQSxFQUFBaUIsQ0FBQSxnQkFBQUMsRUFBQWxCLENBQUEsRUFBQUUsQ0FBQSxTQUFBSyxDQUFBLEdBQUFQLENBQUEsRUFBQVMsQ0FBQSxHQUFBUCxDQUFBLEVBQUFILENBQUEsT0FBQWUsQ0FBQSxJQUFBRixDQUFBLEtBQUFSLENBQUEsSUFBQUwsQ0FBQSxHQUFBYyxDQUFBLENBQUFsUixNQUFBLEVBQUFvUSxDQUFBLFVBQUFLLENBQUEsRUFBQUUsQ0FBQSxHQUFBTyxDQUFBLENBQUFkLENBQUEsR0FBQW1CLENBQUEsR0FBQUgsQ0FBQSxDQUFBRixDQUFBLEVBQUFNLENBQUEsR0FBQWIsQ0FBQSxLQUFBTixDQUFBLFFBQUFJLENBQUEsR0FBQWUsQ0FBQSxLQUFBakIsQ0FBQSxNQUFBTyxDQUFBLEdBQUFILENBQUEsRUFBQUMsQ0FBQSxHQUFBRCxDQUFBLFlBQUFDLENBQUEsV0FBQUQsQ0FBQSxNQUFBQSxDQUFBLE1BQUF2USxDQUFBLElBQUF1USxDQUFBLE9BQUFZLENBQUEsTUFBQWQsQ0FBQSxHQUFBSixDQUFBLFFBQUFrQixDQUFBLEdBQUFaLENBQUEsUUFBQUMsQ0FBQSxNQUFBUSxDQUFBLENBQUFDLENBQUEsR0FBQWQsQ0FBQSxFQUFBYSxDQUFBLENBQUFiLENBQUEsR0FBQUksQ0FBQSxPQUFBWSxDQUFBLEdBQUFDLENBQUEsS0FBQWYsQ0FBQSxHQUFBSixDQUFBLFFBQUFNLENBQUEsTUFBQUosQ0FBQSxJQUFBQSxDQUFBLEdBQUFpQixDQUFBLE1BQUFiLENBQUEsTUFBQU4sQ0FBQSxFQUFBTSxDQUFBLE1BQUFKLENBQUEsRUFBQWEsQ0FBQSxDQUFBYixDQUFBLEdBQUFpQixDQUFBLEVBQUFaLENBQUEsY0FBQUgsQ0FBQSxJQUFBSixDQUFBLGFBQUFpQixDQUFBLFFBQUFILENBQUEsT0FBQVosQ0FBQSxxQkFBQUUsQ0FBQSxFQUFBUyxDQUFBLEVBQUFNLENBQUEsUUFBQVAsQ0FBQSxZQUFBUSxTQUFBLHVDQUFBTixDQUFBLFVBQUFELENBQUEsSUFBQUssQ0FBQSxDQUFBTCxDQUFBLEVBQUFNLENBQUEsR0FBQVosQ0FBQSxHQUFBTSxDQUFBLEVBQUFKLENBQUEsR0FBQVUsQ0FBQSxHQUFBcEIsQ0FBQSxHQUFBUSxDQUFBLE9BQUF4USxDQUFBLEdBQUEwUSxDQUFBLE1BQUFLLENBQUEsS0FBQVIsQ0FBQSxLQUFBQyxDQUFBLEdBQUFBLENBQUEsUUFBQUEsQ0FBQSxTQUFBUSxDQUFBLENBQUFiLENBQUEsUUFBQWdCLENBQUEsQ0FBQVgsQ0FBQSxFQUFBRSxDQUFBLEtBQUFNLENBQUEsQ0FBQWIsQ0FBQSxHQUFBTyxDQUFBLEdBQUFNLENBQUEsQ0FBQUMsQ0FBQSxHQUFBUCxDQUFBLGFBQUFHLENBQUEsTUFBQU4sQ0FBQSxRQUFBQyxDQUFBLEtBQUFILENBQUEsWUFBQUwsQ0FBQSxHQUFBTyxDQUFBLENBQUFGLENBQUEsV0FBQUwsQ0FBQSxHQUFBQSxDQUFBLENBQUEvSixJQUFBLENBQUFzSyxDQUFBLEVBQUFHLENBQUEsVUFBQVcsU0FBQSwyQ0FBQXJCLENBQUEsQ0FBQXNCLElBQUEsU0FBQXRCLENBQUEsRUFBQVUsQ0FBQSxHQUFBVixDQUFBLENBQUExYSxLQUFBLEVBQUFrYixDQUFBLFNBQUFBLENBQUEsb0JBQUFBLENBQUEsS0FBQVIsQ0FBQSxHQUFBTyxDQUFBLGVBQUFQLENBQUEsQ0FBQS9KLElBQUEsQ0FBQXNLLENBQUEsR0FBQUMsQ0FBQSxTQUFBRSxDQUFBLEdBQUFXLFNBQUEsdUNBQUFoQixDQUFBLGdCQUFBRyxDQUFBLE9BQUFELENBQUEsR0FBQXZRLENBQUEsY0FBQWdRLENBQUEsSUFBQWUsQ0FBQSxHQUFBQyxDQUFBLENBQUFiLENBQUEsUUFBQU8sQ0FBQSxHQUFBVCxDQUFBLENBQUFoSyxJQUFBLENBQUFrSyxDQUFBLEVBQUFhLENBQUEsT0FBQUUsQ0FBQSxrQkFBQWxCLENBQUEsSUFBQU8sQ0FBQSxHQUFBdlEsQ0FBQSxFQUFBd1EsQ0FBQSxNQUFBRSxDQUFBLEdBQUFWLENBQUEsY0FBQWEsQ0FBQSxtQkFBQXZiLEtBQUEsRUFBQTBhLENBQUEsRUFBQXNCLElBQUEsRUFBQVAsQ0FBQSxTQUFBZCxDQUFBLEVBQUFJLENBQUEsRUFBQUUsQ0FBQSxRQUFBRyxDQUFBLFFBQUFRLENBQUEsZ0JBQUFULFVBQUEsY0FBQWMsa0JBQUEsY0FBQUMsMkJBQUEsS0FBQXhCLENBQUEsR0FBQWpFLE1BQUEsQ0FBQTBGLGNBQUEsTUFBQWpCLENBQUEsTUFBQUwsQ0FBQSxJQUFBSCxDQUFBLENBQUFBLENBQUEsSUFBQUcsQ0FBQSxTQUFBUyxtQkFBQSxDQUFBWixDQUFBLE9BQUFHLENBQUEsaUNBQUFILENBQUEsR0FBQVUsQ0FBQSxHQUFBYywwQkFBQSxDQUFBcFAsU0FBQSxHQUFBcU8sU0FBQSxDQUFBck8sU0FBQSxHQUFBMkosTUFBQSxDQUFBNEUsTUFBQSxDQUFBSCxDQUFBLFlBQUFLLEVBQUE3USxDQUFBLFdBQUErTCxNQUFBLENBQUEyRixjQUFBLEdBQUEzRixNQUFBLENBQUEyRixjQUFBLENBQUExUixDQUFBLEVBQUF3UiwwQkFBQSxLQUFBeFIsQ0FBQSxDQUFBMlIsU0FBQSxHQUFBSCwwQkFBQSxFQUFBWixtQkFBQSxDQUFBNVEsQ0FBQSxFQUFBcVEsQ0FBQSx5QkFBQXJRLENBQUEsQ0FBQW9DLFNBQUEsR0FBQTJKLE1BQUEsQ0FBQTRFLE1BQUEsQ0FBQUQsQ0FBQSxHQUFBMVEsQ0FBQSxXQUFBdVIsaUJBQUEsQ0FBQW5QLFNBQUEsR0FBQW9QLDBCQUFBLEVBQUFaLG1CQUFBLENBQUFGLENBQUEsaUJBQUFjLDBCQUFBLEdBQUFaLG1CQUFBLENBQUFZLDBCQUFBLGlCQUFBRCxpQkFBQSxHQUFBQSxpQkFBQSxDQUFBSyxXQUFBLHdCQUFBaEIsbUJBQUEsQ0FBQVksMEJBQUEsRUFBQW5CLENBQUEsd0JBQUFPLG1CQUFBLENBQUFGLENBQUEsR0FBQUUsbUJBQUEsQ0FBQUYsQ0FBQSxFQUFBTCxDQUFBLGdCQUFBTyxtQkFBQSxDQUFBRixDQUFBLEVBQUFQLENBQUEsaUNBQUFTLG1CQUFBLENBQUFGLENBQUEsOERBQUFtQixZQUFBLFlBQUFBLGFBQUEsYUFBQUMsQ0FBQSxFQUFBdkIsQ0FBQSxFQUFBd0IsQ0FBQSxFQUFBbEIsQ0FBQTtBQUFBLFNBQUFELG9CQUFBNVEsQ0FBQSxFQUFBaVEsQ0FBQSxFQUFBRSxDQUFBLEVBQUFILENBQUEsUUFBQU8sQ0FBQSxHQUFBeEUsTUFBQSxDQUFBaUcsY0FBQSxRQUFBekIsQ0FBQSx1QkFBQXZRLENBQUEsSUFBQXVRLENBQUEsUUFBQUssbUJBQUEsWUFBQXFCLG1CQUFBalMsQ0FBQSxFQUFBaVEsQ0FBQSxFQUFBRSxDQUFBLEVBQUFILENBQUEsYUFBQUssRUFBQUosQ0FBQSxFQUFBRSxDQUFBLElBQUFTLG1CQUFBLENBQUE1USxDQUFBLEVBQUFpUSxDQUFBLFlBQUFqUSxDQUFBLGdCQUFBa1MsT0FBQSxDQUFBakMsQ0FBQSxFQUFBRSxDQUFBLEVBQUFuUSxDQUFBLFNBQUFpUSxDQUFBLEdBQUFNLENBQUEsR0FBQUEsQ0FBQSxDQUFBdlEsQ0FBQSxFQUFBaVEsQ0FBQSxJQUFBM2EsS0FBQSxFQUFBNmEsQ0FBQSxFQUFBZ0MsVUFBQSxHQUFBbkMsQ0FBQSxFQUFBb0MsWUFBQSxHQUFBcEMsQ0FBQSxFQUFBcUMsUUFBQSxHQUFBckMsQ0FBQSxNQUFBaFEsQ0FBQSxDQUFBaVEsQ0FBQSxJQUFBRSxDQUFBLElBQUFFLENBQUEsYUFBQUEsQ0FBQSxjQUFBQSxDQUFBLG1CQUFBTyxtQkFBQSxDQUFBNVEsQ0FBQSxFQUFBaVEsQ0FBQSxFQUFBRSxDQUFBLEVBQUFILENBQUE7QUFBQSxTQUFBaTBCLFFBQUFqa0MsQ0FBQSxFQUFBaVEsQ0FBQSxRQUFBRCxDQUFBLEdBQUFqRSxNQUFBLENBQUFtNEIsSUFBQSxDQUFBbGtDLENBQUEsT0FBQStMLE1BQUEsQ0FBQW80QixxQkFBQSxRQUFBOXpCLENBQUEsR0FBQXRFLE1BQUEsQ0FBQW80QixxQkFBQSxDQUFBbmtDLENBQUEsR0FBQWlRLENBQUEsS0FBQUksQ0FBQSxHQUFBQSxDQUFBLENBQUFxa0IsTUFBQSxXQUFBemtCLENBQUEsV0FBQWxFLE1BQUEsQ0FBQXE0Qix3QkFBQSxDQUFBcGtDLENBQUEsRUFBQWlRLENBQUEsRUFBQWtDLFVBQUEsT0FBQW5DLENBQUEsQ0FBQXBSLElBQUEsQ0FBQTJWLEtBQUEsQ0FBQXZFLENBQUEsRUFBQUssQ0FBQSxZQUFBTCxDQUFBO0FBQUEsU0FBQW16QixjQUFBbmpDLENBQUEsYUFBQWlRLENBQUEsTUFBQUEsQ0FBQSxHQUFBckcsU0FBQSxDQUFBaEssTUFBQSxFQUFBcVEsQ0FBQSxVQUFBRCxDQUFBLFdBQUFwRyxTQUFBLENBQUFxRyxDQUFBLElBQUFyRyxTQUFBLENBQUFxRyxDQUFBLFFBQUFBLENBQUEsT0FBQWcwQixPQUFBLENBQUFsNEIsTUFBQSxDQUFBaUUsQ0FBQSxPQUFBN0osT0FBQSxXQUFBOEosQ0FBQSxJQUFBcGIsaUZBQUEsQ0FBQW1MLENBQUEsRUFBQWlRLENBQUEsRUFBQUQsQ0FBQSxDQUFBQyxDQUFBLFNBQUFsRSxNQUFBLENBQUFzNEIseUJBQUEsR0FBQXQ0QixNQUFBLENBQUF1NEIsZ0JBQUEsQ0FBQXRrQyxDQUFBLEVBQUErTCxNQUFBLENBQUFzNEIseUJBQUEsQ0FBQXIwQixDQUFBLEtBQUFpMEIsT0FBQSxDQUFBbDRCLE1BQUEsQ0FBQWlFLENBQUEsR0FBQTdKLE9BQUEsV0FBQThKLENBQUEsSUFBQWxFLE1BQUEsQ0FBQWlHLGNBQUEsQ0FBQWhTLENBQUEsRUFBQWlRLENBQUEsRUFBQWxFLE1BQUEsQ0FBQXE0Qix3QkFBQSxDQUFBcDBCLENBQUEsRUFBQUMsQ0FBQSxpQkFBQWpRLENBQUE7QUFEQTtBQUNBO0FBQ0E7O0FBRXdEO0FBQ1Q7QUFDUTtBQUNNO0FBRVc7QUFDNUI7QUFDbkI7QUFFbUI7QUFDNEI7QUFJL0I7QUFDeUI7QUFFbkI7QUFDcUI7QUFDaEI7QUFFRztBQUswRTtBQUM3RDtBQUVkO0FBQzJFO0FBR3JEO0FBQ0E7QUFFNUUsSUFBTTBrQyxnQ0FBZ0MsR0FBRyxHQUFHO0FBQzVDLElBQU1DLHlCQUF5QixHQUFHLEtBQUs7QUFBQyxJQUVuQkMsd0JBQXdCO0VBUzNDLFNBQUFBLHlCQUFZQyxjQUE4QixFQUFFQyxxQkFBNEMsRUFBRUMsc0JBQThDLEVBQUVDLDZCQUE0RCxFQUFFclMsbUJBQXdDLEVBQUU7SUFBQS85QixpRkFBQSxPQUFBZ3dDLHdCQUFBO0lBQUEvdkMsaUZBQUEsa0JBUjlNNkksOERBQWEsQ0FBQ0csU0FBUyxDQUFDLDBCQUEwQixDQUFDO0lBQUFoSixpRkFBQSx1QkFDdkMsSUFBSU4sNERBQWMsQ0FBQyxDQUFDO0lBQUFNLGlGQUFBO0lBQUFBLGlGQUFBO0lBQUFBLGlGQUFBO0lBQUFBLGlGQUFBO0lBQUFBLGlGQUFBO0lBUWxFLElBQUksQ0FBQ2kwQixlQUFlLEdBQUcrYixjQUFjO0lBQ3JDLElBQUksQ0FBQzliLHNCQUFzQixHQUFHK2IscUJBQXFCO0lBQ25ELElBQUksQ0FBQzliLHVCQUF1QixHQUFHK2Isc0JBQXNCO0lBQ3JELElBQUksQ0FBQ2xaLDhCQUE4QixHQUFHbVosNkJBQTZCO0lBQ25FLElBQUksQ0FBQzVSLG9CQUFvQixHQUFHVCxtQkFBbUI7RUFDakQ7RUFBQyxPQUFBeDlCLDhFQUFBLENBQUF5dkMsd0JBQUE7SUFBQXh2QyxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBaTRCLEtBQUtBLENBQUNodEIsR0FBUSxFQUFFakIsS0FBYSxFQUFFK3hCLG1CQUF3QyxFQUFFNUIsNkJBQXVDLEVBQWlCO01BQUEsSUFBQTU1QixLQUFBO01BQy9ILElBQUksQ0FBQ0QsWUFBWSxDQUFDRCxPQUFPLENBQUMsQ0FBQztNQUUzQixJQUFNc3ZDLGdDQUFnQyxHQUFHLElBQUksQ0FBQ2pjLHVCQUF1QixDQUFDUiwyQkFBMkIsQ0FBQ2x6QixLQUFLLElBQ2xHLElBQUksQ0FBQ3UyQiw4QkFBOEIsQ0FBQ2tJLHFCQUFxQixDQUFDeitCLEtBQUssSUFDL0QsSUFBSSxDQUFDdTJCLDhCQUE4QixDQUFDbUksdUJBQXVCLENBQUMxK0IsS0FBSyxHQUFHK2YsaUZBQXdCLENBQUNxQixPQUFPLEdBQUdyQixpRkFBd0IsQ0FBQ21CLFFBQVE7TUFFN0ksT0FBTzlDLE9BQU8sQ0FBQ3d4QixHQUFHLENBQUMsQ0FDakI3ZCw2REFBUyxDQUFDOFEsa0NBQWtDLENBQUM1M0IsR0FBRyxDQUFDLEVBQ2pEZ1YsbUVBQXFCLENBQUNTLHlCQUF5QixDQUFDLFVBQVUsRUFBRVYsMEVBQWlCLEVBQUUydkIsZ0NBQWdDLENBQUMsQ0FDN0dweUIsSUFBSSxDQUFDLFVBQUE1VyxJQUFBLEVBQWtDO1FBQUEsSUFBaEN1YixVQUFVLEdBQUF2YixJQUFBLENBQVZ1YixVQUFVO1VBQUV6QixjQUFjLEdBQUE5WixJQUFBLENBQWQ4WixjQUFjO1FBQ2hDbGdCLEtBQUksQ0FBQ2t6QixzQkFBc0IsQ0FBQ2hULGNBQWMsQ0FBQ3pnQixLQUFLLEdBQUd5Z0IsY0FBYztRQUVqRSxPQUFPO1VBQ0x5QixVQUFVLEVBQVZBLFVBQVU7VUFDVnpCLGNBQWMsRUFBZEE7UUFDRixDQUFDO01BQ0gsQ0FBQyxDQUFDLENBQ0wsQ0FBQyxDQUNDbEQsSUFBSSxDQUFDLFVBQUFyVyxLQUFBLEVBQThDO1FBQUEsSUFBQTJvQyxLQUFBLEdBQUE3RCxnRkFBQSxDQUFBOWtDLEtBQUE7VUFBNUM0dUIsUUFBUSxHQUFBK1osS0FBQTtVQUFBQyxNQUFBLEdBQUFELEtBQUE7VUFBRzN0QixVQUFVLEdBQUE0dEIsTUFBQSxDQUFWNXRCLFVBQVU7VUFBRXpCLGNBQWMsR0FBQXF2QixNQUFBLENBQWRydkIsY0FBYztRQUMzQ2xnQixLQUFJLENBQUNpekIsZUFBZSxDQUFDbUIsTUFBTSxDQUFDMzBCLEtBQUssR0FBRyxJQUFJO1FBQ3hDTyxLQUFJLENBQUNpekIsZUFBZSxDQUFDc0MsUUFBUSxDQUFDOTFCLEtBQUssR0FBRzgxQixRQUFRO1FBQzlDdjFCLEtBQUksQ0FBQ2tKLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLG9CQUFvQixFQUFFb3NCLFFBQVEsQ0FBQ2hsQixRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQzVEdlEsS0FBSSxDQUFDa0osT0FBTyxDQUFDQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUd3WSxVQUFVLENBQUNpQyxHQUFHLENBQUM7UUFFcEQsSUFBTTRyQixnQkFBa0MsR0FBRyxDQUFDLENBQUM7UUFFN0MsSUFBSXh2QyxLQUFJLENBQUNpekIsZUFBZSxDQUFDWixrQ0FBa0MsRUFBRTtVQUMzRG1kLGdCQUFnQixDQUFDOUosMEJBQTBCLEdBQUcxbEMsS0FBSSxDQUFDaXpCLGVBQWUsQ0FBQ1osa0NBQWtDO1FBQ3ZHO1FBRUEsSUFBSXJ5QixLQUFJLENBQUNpekIsZUFBZSxDQUFDWCxtQ0FBbUMsRUFBRTtVQUM1RGtkLGdCQUFnQixDQUFDekosMkJBQTJCLEdBQUcvbEMsS0FBSSxDQUFDaXpCLGVBQWUsQ0FBQ1gsbUNBQW1DO1FBQ3pHO1FBRUEsSUFBSW51Qix1RUFBaUIsQ0FBQ3NyQyxtQkFBbUIsSUFBSSxDQUFDdnZCLGNBQWMsQ0FBQ3d2Qix3QkFBd0IsSUFBSSxDQUFDeHZCLGNBQWMsQ0FBQ3l2Qix3QkFBd0IsRUFBRTtVQUNqSXp2QixjQUFjLENBQUNzTCxLQUFLLENBQUMsQ0FBQztVQUN0QnRMLGNBQWMsQ0FBQ3BnQixPQUFPLENBQUMsQ0FBQztVQUV4QixJQUFJc0UsNkNBQUcsQ0FBQ291QiwrQkFBK0IsSUFBSSxFQUFFcnVCLHVFQUFpQixDQUFDNUMsUUFBUSxJQUFJNkMsNkNBQUcsQ0FBQ0ksb0NBQW9DLENBQUMsRUFBRTtZQUNwSEgsb0VBQXVCLENBQUNFLHNCQUFzQixDQUFDLENBQUM7VUFDbEQ7VUFFQXZFLEtBQUksQ0FBQ2t6QixzQkFBc0IsQ0FBQ2hULGNBQWMsQ0FBQ3pnQixLQUFLLEdBQUcsSUFBSTtVQUV2RCxPQUFPODFCLFFBQVEsQ0FBQzFsQixTQUFTLENBQUNwRyxLQUFLLEVBQUUsSUFBSSxFQUFFekosS0FBSSxDQUFDaXpCLGVBQWUsQ0FBQ29DLFlBQVksQ0FBQzUxQixLQUFLLEVBQUUrdkMsZ0JBQWdCLENBQUM7UUFDbkc7UUFFQSxPQUFPamEsUUFBUSxDQUFDMWxCLFNBQVMsQ0FBQ3BHLEtBQUssRUFBRWtZLFVBQVUsRUFBRTNoQixLQUFJLENBQUNpekIsZUFBZSxDQUFDb0MsWUFBWSxDQUFDNTFCLEtBQUssRUFBRSt2QyxnQkFBZ0IsQ0FBQztNQUN6RyxDQUFDLENBQUMsQ0FDRHh5QixJQUFJLENBQUMsVUFBQWdDLFFBQVEsRUFBSTtRQUNoQixJQUFPSyxNQUFNLEdBQUlMLFFBQVEsQ0FBbEJLLE1BQU07UUFFYnJmLEtBQUksQ0FBQ2l6QixlQUFlLENBQUNTLE1BQU0sQ0FBQ2owQixLQUFLLEdBQUdPLEtBQUksQ0FBQ2l6QixlQUFlLENBQUM0TSwwQkFBMEIsQ0FBQ3hnQixNQUFNLENBQUM7UUFDM0ZyZixLQUFJLENBQUNpekIsZUFBZSxDQUFDTyxLQUFLLENBQUMvekIsS0FBSyxHQUFHTyxLQUFJLENBQUNpekIsZUFBZSxDQUFDMk0saUNBQWlDLENBQUN2Z0IsTUFBTSxDQUFDO1FBRWpHcmYsS0FBSSxDQUFDaXpCLGVBQWUsQ0FBQ3lNLFdBQVcsQ0FBQ3JnQixNQUFNLENBQUM7UUFFeEMsSUFBSUEsTUFBTSxLQUFLLElBQUksRUFBRTtVQUNuQnJmLEtBQUksQ0FBQ2l6QixlQUFlLENBQUN3QyxNQUFNLENBQUNoMkIsS0FBSyxHQUFHLElBQUk7VUFDeENPLEtBQUksQ0FBQ2l6QixlQUFlLENBQUM4QixHQUFHLENBQUN0MUIsS0FBSyxHQUFHa0csU0FBUztVQUUxQzNGLEtBQUksQ0FBQ2l6QixlQUFlLENBQUMwTSw2Q0FBNkMsQ0FBQyxDQUFDO1VBRXBFMy9CLEtBQUksQ0FBQ2tKLE9BQU8sQ0FBQ0MsSUFBSSxDQUNmLHdDQUF3QyxFQUN4Q25KLEtBQUksQ0FBQ2l6QixlQUFlLENBQUM1cUIsUUFBUSxFQUM3QmdYLE1BQ0YsQ0FBQztVQUVEO1FBQ0Y7UUFFQSxJQUFPb1csTUFBTSxHQUEwSHpXLFFBQVEsQ0FBeEl5VyxNQUFNO1VBQUUyVCxnQkFBZ0IsR0FBd0dwcUIsUUFBUSxDQUFoSW9xQixnQkFBZ0I7VUFBRXpDLDRCQUE0QixHQUEwRTNuQixRQUFRLENBQTlHMm5CLDRCQUE0QjtVQUFFMkMsOEJBQThCLEdBQTBDdHFCLFFBQVEsQ0FBaEZzcUIsOEJBQThCO1VBQUVELCtCQUErQixHQUFTcnFCLFFBQVEsQ0FBaERxcUIsK0JBQStCO1VBQUV0VSxHQUFHLEdBQUkvVixRQUFRLENBQWYrVixHQUFHO1FBRW5JLzBCLEtBQUksQ0FBQ2l6QixlQUFlLENBQUN3QyxNQUFNLENBQUNoMkIsS0FBSyxHQUFHZzJCLE1BQU07UUFDMUN6MUIsS0FBSSxDQUFDaXpCLGVBQWUsQ0FBQzhCLEdBQUcsQ0FBQ3QxQixLQUFLLEdBQUdzMUIsR0FBRztRQUVwQy8wQixLQUFJLENBQUNpekIsZUFBZSxDQUFDME0sNkNBQTZDLENBQUMsQ0FBQztRQUVwRTMvQixLQUFJLENBQUNrSixPQUFPLENBQUNnTCxLQUFLLENBQ2hCLG1EQUFtRCxFQUNuRGxVLEtBQUksQ0FBQ2l6QixlQUFlLENBQUM1cUIsUUFBUSxFQUM3QmdYLE1BQU0sRUFDTitwQixnQkFBZ0IsRUFDaEJ6Qyw0QkFBNEIsRUFDNUIyQyw4QkFBOEIsRUFDOUJELCtCQUNGLENBQUM7UUFFRCxPQUFPcnBDLEtBQUksQ0FBQzR2QyxxQkFBcUIsQ0FBQzV2QyxLQUFJLENBQUNrekIsc0JBQXNCLENBQUNoVCxjQUFjLENBQUN6Z0IsS0FBSyxFQUFFMnBDLGdCQUFvQyxDQUFDLENBQ3RIcHNCLElBQUksQ0FBQyxVQUFBa0QsY0FBYyxFQUFJO1VBQ3RCLElBQUkydkIsdUJBQTJDO1VBQy9DLElBQUlDLGVBQWUsR0FBRyxLQUFLO1VBQzNCLElBQUlwSSxrQkFBa0IsR0FBRyxLQUFLO1VBQzlCLElBQU1ELFVBQTZCLEdBQUcsRUFBRTtVQUV4QyxJQUFJLENBQUN6bkMsS0FBSSxDQUFDa3pCLHNCQUFzQixDQUFDaFQsY0FBYyxDQUFDemdCLEtBQUssRUFBRTtZQUNyRE8sS0FBSSxDQUFDa3pCLHNCQUFzQixDQUFDaFQsY0FBYyxDQUFDemdCLEtBQUssR0FBR3lnQixjQUFjO1VBQ25FO1VBRUFBLGNBQWMsQ0FBQ21MLGNBQWMsR0FBRyxVQUFDbGhCLENBQUMsRUFBVztZQUMzQyxJQUFJbkssS0FBSSxDQUFDaXpCLGVBQWUsQ0FBQ3dDLE1BQU0sQ0FBQ2gyQixLQUFLLEtBQUtnMkIsTUFBTSxFQUFFO2NBQ2hEO1lBQ0Y7WUFFQSxJQUFJejFCLEtBQUksQ0FBQ2t6QixzQkFBc0IsQ0FBQ2hULGNBQWMsQ0FBQ3pnQixLQUFLLEtBQUt5Z0IsY0FBYyxFQUFFO2NBQ3ZFO1lBQ0Y7WUFFQSxJQUFJNHZCLGVBQWUsRUFBRTtjQUNuQjtZQUNGO1lBRUEsSUFBSSxDQUFDMXJDLDZDQUFHLENBQUNnSCxtQkFBbUIsQ0FBQzNMLEtBQUssRUFBRTtjQUNsQztZQUNGO1lBRUEsSUFBSTBLLENBQUMsQ0FBQzRsQyxTQUFTLElBQUk1bEMsQ0FBQyxDQUFDNGxDLFNBQVMsQ0FBQ0EsU0FBUyxFQUFFO2NBQ3hDdEksVUFBVSxDQUFDMStCLElBQUksQ0FBQ29CLENBQUMsQ0FBQzRsQyxTQUFTLENBQUM7WUFDOUIsQ0FBQyxNQUFNO2NBQ0xySSxrQkFBa0IsR0FBRyxJQUFJO1lBQzNCO1lBRUEsSUFBSSxDQUFDbUksdUJBQXVCLEVBQUU7Y0FDNUJBLHVCQUF1QixHQUFHcnhDLGdFQUFXLENBQUNpQixLQUFLLENBQUNzRixVQUFVLENBQUMsWUFBTTtnQkFBQSxJQUFBaXJDLHFCQUFBO2dCQUMzRCxJQUFJaHdDLEtBQUksQ0FBQ2l6QixlQUFlLENBQUN3QyxNQUFNLENBQUNoMkIsS0FBSyxLQUFLZzJCLE1BQU0sRUFBRTtrQkFDaEQ7Z0JBQ0Y7Z0JBRUEsSUFBSXFhLGVBQWUsRUFBRTtrQkFDbkI7Z0JBQ0Y7Z0JBRUEsSUFBTW55QixPQUFPLElBQUFxeUIscUJBQUEsR0FBR2h3QyxLQUFJLENBQUNpekIsZUFBZSxDQUFDc0MsUUFBUSxDQUFDOTFCLEtBQUssY0FBQXV3QyxxQkFBQSx1QkFBbkNBLHFCQUFBLENBQXFDakksZ0JBQWdCLENBQUN0UyxNQUFNLEVBQUVnUyxVQUFVLEVBQUVDLGtCQUFrQixDQUFDLENBQzFHMXFCLElBQUksQ0FBQyxVQUFBaXpCLEtBQUEsRUFBdUI7a0JBQUEsSUFBckI1d0IsTUFBTSxHQUFBNHdCLEtBQUEsQ0FBTjV3QixNQUFNO29CQUFFNkIsT0FBTyxHQUFBK3VCLEtBQUEsQ0FBUC91QixPQUFPO2tCQUNyQixJQUFJN0IsTUFBTSxLQUFLLElBQUksRUFBRTtvQkFDbkJyZixLQUFJLENBQUNrSixPQUFPLENBQUN1TCxJQUFJLENBQUMsb0RBQW9ELEVBQUV6VSxLQUFJLENBQUNpekIsZUFBZSxDQUFDNXFCLFFBQVEsRUFBRWdYLE1BQU0sQ0FBQztvQkFFOUc7a0JBQ0Y7a0JBRUEsSUFBSTZCLE9BQU8sYUFBUEEsT0FBTyxlQUFQQSxPQUFPLENBQUVoZSxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUU7b0JBQy9CNHNDLGVBQWUsR0FBRyxJQUFJO2tCQUN4QjtrQkFFQTl2QyxLQUFJLENBQUNrSixPQUFPLENBQUNDLElBQUksQ0FBQyw2REFBNkQsRUFBRW5KLEtBQUksQ0FBQ2l6QixlQUFlLENBQUM1cUIsUUFBUSxFQUFFZ1gsTUFBTSxFQUFFNkIsT0FBTyxDQUFDO2dCQUNsSSxDQUFDLENBQUMsU0FDSSxDQUFDLFVBQUEvVyxDQUFDLEVBQUk7a0JBQ1ZuSyxLQUFJLENBQUNrSixPQUFPLENBQUNTLEtBQUssQ0FBQyxtQ0FBbUMsRUFBRTNKLEtBQUksQ0FBQ2l6QixlQUFlLENBQUM1cUIsUUFBUSxFQUFFOEIsQ0FBQyxDQUFDO2dCQUMzRixDQUFDLENBQUM7Y0FDTixDQUFDLEVBQUUwa0MsZ0NBQWdDLENBQUM7Y0FFcEM3dUMsS0FBSSxDQUFDRCxZQUFZLENBQUNRLEdBQUcsQ0FBQyxJQUFJOUIsd0RBQVUsQ0FBQztnQkFBQSxPQUFNRCxnRUFBVyxDQUFDaUIsS0FBSyxDQUFDa1AsWUFBWSxDQUFDa2hDLHVCQUF1QixDQUFDO2NBQUEsRUFBQyxDQUFDO1lBQ3RHO1VBQ0YsQ0FBQztVQUVEN3ZDLEtBQUksQ0FBQ0QsWUFBWSxDQUFDUSxHQUFHLENBQUMsSUFBSTlCLHdEQUFVLENBQUMsWUFBTTtZQUN6Q3loQixjQUFjLENBQUNtTCxjQUFjLEdBQUcsSUFBSTtZQUNwQ25MLGNBQWMsQ0FBQ3FMLDBCQUEwQixHQUFHLElBQUk7VUFDbEQsQ0FBQyxDQUFDLENBQUM7VUFFSHJMLGNBQWMsQ0FBQ3FMLDBCQUEwQixHQUFHLFlBQVk7WUFDdEQsSUFBSXZyQixLQUFJLENBQUNpekIsZUFBZSxDQUFDd0MsTUFBTSxDQUFDaDJCLEtBQUssS0FBS2cyQixNQUFNLEVBQUU7Y0FDaEQ7WUFDRjtZQUVBLElBQUl6MUIsS0FBSSxDQUFDa3pCLHNCQUFzQixDQUFDaFQsY0FBYyxDQUFDemdCLEtBQUssS0FBS3lnQixjQUFjLEVBQUU7Y0FDdkU7WUFDRjtZQUVBLElBQU1nd0IsYUFBYSxHQUFHLFNBQWhCQSxhQUFhQSxDQUFBLEVBQWU7Y0FDaEMsSUFBTXZ5QixPQUFPLEdBQUczZCxLQUFJLENBQUN1OUIsb0JBQW9CLENBQUMsQ0FBQyxTQUNuQyxDQUFDLFVBQUFwekIsQ0FBQyxFQUFJO2dCQUNWbkssS0FBSSxDQUFDa0osT0FBTyxDQUFDUyxLQUFLLENBQ2hCLG1GQUFtRixFQUNuRjNKLEtBQUksQ0FBQ2l6QixlQUFlLENBQUM1cUIsUUFBUSxFQUM3QjZYLGNBQWMsQ0FBQ2lKLGtCQUFrQixFQUNqQ2hmLENBQ0YsQ0FBQztjQUNILENBQUMsQ0FBQztZQUNOLENBQUM7WUFFRCxRQUFRK1YsY0FBYyxDQUFDaUosa0JBQWtCO2NBQ3ZDLEtBQUssVUFBVTtjQUNmLEtBQUssV0FBVztjQUNoQixLQUFLLFdBQVc7Y0FDaEIsS0FBSyxLQUFLO2dCQUNSO2NBRUYsS0FBSyxjQUFjO2NBQ25CLEtBQUssUUFBUTtnQkFDWCxJQUFJM3FCLGdFQUFXLENBQUNpQixLQUFLLENBQUMwd0MsaUJBQWlCLEVBQUU7a0JBQ3ZDbndDLEtBQUksQ0FBQ2tKLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLGdFQUFnRSxFQUFFbkosS0FBSSxDQUFDaXpCLGVBQWUsQ0FBQzVxQixRQUFRLEVBQUU2WCxjQUFjLENBQUNpSixrQkFBa0IsQ0FBQztrQkFDckpucEIsS0FBSSxDQUFDb3dDLHVCQUF1QixDQUFDcHdDLEtBQUksQ0FBQ2l6QixlQUFlLENBQUM1cUIsUUFBUSxFQUFFNlgsY0FBYyxFQUFFZ3dCLGFBQWEsQ0FBQztnQkFDNUY7Z0JBRUE7Y0FDRixLQUFLLFFBQVE7Z0JBQ1hsd0MsS0FBSSxDQUFDa0osT0FBTyxDQUFDQyxJQUFJLENBQUMsZ0VBQWdFLEVBQUVuSixLQUFJLENBQUNpekIsZUFBZSxDQUFDNXFCLFFBQVEsRUFBRTZYLGNBQWMsQ0FBQ2lKLGtCQUFrQixDQUFDO2dCQUVySittQixhQUFhLENBQUMsQ0FBQztnQkFFZjtjQUNGO2dCQUNFOTlCLG1FQUFpQixDQUFDOE4sY0FBYyxDQUFDaUosa0JBQTJCLENBQUM7WUFDakU7VUFDRixDQUFDO1VBRUQsSUFBTWtuQixrQkFBa0IsR0FBRyxJQUFJeHlCLE9BQU8sQ0FBYyxVQUFDMkgsT0FBTyxFQUFFc0UsTUFBTSxFQUFLO1lBQ3ZFLElBQUksQ0FBQzNsQix1RUFBaUIsQ0FBQ21zQyxlQUFlLEVBQUU7Y0FDdEMsSUFBTXpULFVBQVMsR0FBR3IrQixnRUFBVyxDQUFDaUIsS0FBSyxDQUFDc0YsVUFBVSxDQUFDO2dCQUFBLE9BQU0ra0IsTUFBTSxDQUFDLElBQUl4bEIsS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7Y0FBQSxHQUFFd3FDLHlCQUF5QixDQUFDO2NBRTVIOXVDLEtBQUksQ0FBQ0QsWUFBWSxDQUFDUSxHQUFHLENBQUMsSUFBSTlCLHdEQUFVLENBQUM7Z0JBQUEsT0FBTUQsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ2tQLFlBQVksQ0FBQ2t1QixVQUFTLENBQUM7Y0FBQSxFQUFDLENBQUM7Y0FFdEYzYyxjQUFjLENBQUNpTCxPQUFPLEdBQUcsVUFBQ2hoQixDQUFDLEVBQVc7Z0JBQ3BDM0wsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ2tQLFlBQVksQ0FBQ2t1QixVQUFTLENBQUM7Z0JBQ3pDclgsT0FBTyxDQUFDcmIsQ0FBQyxDQUFDb21DLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztjQUN2QixDQUFDO2NBRUQ7WUFDRjtZQUVBLElBQU1DLGNBQWEsR0FBRyxTQUFoQkEsYUFBYUEsQ0FBSXJtQyxDQUFtRCxFQUFXO2NBQ25GO2NBQ0EzTCxnRUFBVyxDQUFDaUIsS0FBSyxDQUFDa1AsWUFBWSxDQUFDa3VCLFNBQVMsQ0FBQztjQUN6QzNjLGNBQWMsQ0FBQ3pZLG1CQUFtQixDQUFDLE9BQU8sRUFBRStvQyxjQUFhLENBQUM7Y0FDMUR0d0IsY0FBYyxDQUFDelksbUJBQW1CLENBQUMsV0FBVyxFQUFFK29DLGNBQWEsQ0FBQztjQUU5RCxJQUFJLFNBQVMsSUFBSXJtQyxDQUFDLEVBQUU7Z0JBQ2xCcWIsT0FBTyxDQUFDcmIsQ0FBQyxDQUFDb21DLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztjQUN2QixDQUFDLE1BQU07Z0JBQ0wvcUIsT0FBTyxDQUFDcmIsQ0FBQyxDQUFDc3JCLE1BQU0sQ0FBQztjQUNuQjtZQUNGLENBQUM7WUFFRCxJQUFNb0gsU0FBUyxHQUFHcitCLGdFQUFXLENBQUNpQixLQUFLLENBQUNzRixVQUFVLENBQUMsWUFBTTtjQUNuRG1iLGNBQWMsQ0FBQ3pZLG1CQUFtQixDQUFDLE9BQU8sRUFBRStvQyxjQUFhLENBQUM7Y0FDMUR0d0IsY0FBYyxDQUFDelksbUJBQW1CLENBQUMsV0FBVyxFQUFFK29DLGNBQWEsQ0FBQztjQUM5RDFtQixNQUFNLENBQUMsSUFBSXhsQixLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztZQUM3QyxDQUFDLEVBQUV3cUMseUJBQXlCLENBQUM7WUFFN0I1dUIsY0FBYyxDQUFDM1ksZ0JBQWdCLENBQUMsT0FBTyxFQUFFaXBDLGNBQWEsQ0FBQztZQUN2RHR3QixjQUFjLENBQUMzWSxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUVpcEMsY0FBYSxDQUFDO1lBQzNEeHdDLEtBQUksQ0FBQ0QsWUFBWSxDQUFDUSxHQUFHLENBQUMsSUFBSTlCLHdEQUFVLENBQUM7Y0FBQSxPQUFNRCxnRUFBVyxDQUFDaUIsS0FBSyxDQUFDa1AsWUFBWSxDQUFDa3VCLFNBQVMsQ0FBQztZQUFBLEVBQUMsQ0FBQztZQUV0RjtVQUNGLENBQUMsQ0FBQztVQUVGLE9BQU8sSUFBSWhmLE9BQU8sQ0FBTyxVQUFBMkgsT0FBTyxFQUFJO1lBQ2xDQSxPQUFPLENBQUMsQ0FBQztVQUNYLENBQUMsQ0FBQyxDQUFDeEksSUFBSSxDQUFDLFlBQU07WUFDWixJQUFJLENBQUMycEIsNEJBQTRCLEVBQUU7Y0FDakM7WUFDRjtZQUVBM21DLEtBQUksQ0FBQ2tKLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLCtCQUErQixFQUFFbkosS0FBSSxDQUFDaXpCLGVBQWUsQ0FBQzVxQixRQUFRLEVBQUVzK0IsNEJBQTRCLENBQUNwQixrQkFBa0IsQ0FBQzNoQixHQUFHLENBQUM7WUFFdEksT0FBTzFELGNBQWMsQ0FBQ2tLLG1CQUFtQixDQUFDdWMsNEJBQTRCLENBQUNwQixrQkFBa0IsQ0FBQyxTQUNsRixDQUFDLFVBQUFwN0IsQ0FBQyxFQUFJO2NBQ1ZuSyxLQUFJLENBQUNrSixPQUFPLENBQUNDLElBQUksQ0FBQyw2REFBNkQsRUFBRW5KLEtBQUksQ0FBQ2l6QixlQUFlLENBQUM1cUIsUUFBUSxFQUFFcytCLDRCQUE0QixDQUFDcEIsa0JBQWtCLEVBQUVwN0IsQ0FBQyxDQUFDK0ksT0FBTyxDQUFDO2NBRTNLLE1BQU0vSSxDQUFDO1lBQ1QsQ0FBQyxDQUFDO1VBQ04sQ0FBQyxDQUFDLENBQUM2UyxJQUFJLENBQUMsWUFBTTtZQUNaLElBQUksQ0FBQ3FzQiwrQkFBK0IsRUFBRTtjQUNwQztZQUNGO1lBRUFycEMsS0FBSSxDQUFDa0osT0FBTyxDQUFDQyxJQUFJLENBQUMsaUNBQWlDLEVBQUVuSixLQUFJLENBQUNpekIsZUFBZSxDQUFDNXFCLFFBQVEsRUFBRWdoQywrQkFBK0IsQ0FBQzlELGtCQUFrQixDQUFDM2hCLEdBQUcsQ0FBQztZQUUzSSxPQUFPMUQsY0FBYyxDQUFDeUssb0JBQW9CLENBQUMwZSwrQkFBK0IsQ0FBQzlELGtCQUFrQixDQUFDLFNBQ3RGLENBQUMsVUFBQXA3QixDQUFDLEVBQUk7Y0FDVm5LLEtBQUksQ0FBQ2tKLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLDhEQUE4RCxFQUFFbkosS0FBSSxDQUFDaXpCLGVBQWUsQ0FBQzVxQixRQUFRLEVBQUVnaEMsK0JBQStCLENBQUM5RCxrQkFBa0IsRUFBRXA3QixDQUFDLENBQUMrSSxPQUFPLENBQUM7Y0FFL0ssTUFBTS9JLENBQUM7WUFDVCxDQUFDLENBQUM7VUFDTixDQUFDLENBQUMsQ0FBQzZTLElBQUksQ0FBQyxZQUFNO1lBQ1osSUFBSSxDQUFDc3NCLDhCQUE4QixFQUFFO2NBQ25DO1lBQ0Y7WUFFQXRwQyxLQUFJLENBQUNrSixPQUFPLENBQUNDLElBQUksQ0FBQyxnQ0FBZ0MsRUFBRW5KLEtBQUksQ0FBQ2l6QixlQUFlLENBQUM1cUIsUUFBUSxFQUFFaWhDLDhCQUE4QixDQUFDL0Qsa0JBQWtCLENBQUMzaEIsR0FBRyxDQUFDO1lBRXpJLE9BQU8xRCxjQUFjLENBQUN5SyxvQkFBb0IsQ0FBQzJlLDhCQUE4QixDQUFDL0Qsa0JBQWtCLENBQUMsU0FDckYsQ0FBQyxVQUFBcDdCLENBQUMsRUFBSTtjQUNWbkssS0FBSSxDQUFDa0osT0FBTyxDQUFDQyxJQUFJLENBQUMsOERBQThELEVBQUVuSixLQUFJLENBQUNpekIsZUFBZSxDQUFDNXFCLFFBQVEsRUFBRWloQyw4QkFBOEIsQ0FBQy9ELGtCQUFrQixFQUFFcDdCLENBQUMsQ0FBQytJLE9BQU8sQ0FBQztjQUU5SyxNQUFNL0ksQ0FBQztZQUNULENBQUMsQ0FBQyxDQUNENlMsSUFBSSxDQUFDLFlBQU07Y0FDVixPQUFPa0QsY0FBYyxDQUFDOEosWUFBWSxDQUFDO2dCQUNqQ3BJLG1CQUFtQixFQUFFLElBQUk7Z0JBQ3pCQyxtQkFBbUIsRUFBRTtjQUN2QixDQUFDLENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQzdFLElBQUksQ0FBQyxVQUFBeXpCLE1BQU0sRUFBSTtjQUNoQnp3QyxLQUFJLENBQUNrSixPQUFPLENBQUNDLElBQUksQ0FBQyxnQ0FBZ0MsRUFBRW5KLEtBQUksQ0FBQ2l6QixlQUFlLENBQUM1cUIsUUFBUSxFQUFFb29DLE1BQU0sQ0FBQztjQUUxRixJQUFNbGIsUUFBUSxHQUFHdjFCLEtBQUksQ0FBQ2l6QixlQUFlLENBQUNzQyxRQUFRLENBQUM5MUIsS0FBaUI7Y0FFaEUsT0FBTzgxQixRQUFRLENBQUM1SyxvQkFBb0IsQ0FBQzhLLE1BQU0sRUFBRWdiLE1BQU0sQ0FBQztZQUN0RCxDQUFDLENBQUMsQ0FBQ3p6QixJQUFJLENBQUMsVUFBQTB6QixLQUFBLEVBQWtDO2NBQUEsSUFBaENyeEIsTUFBTSxHQUFBcXhCLEtBQUEsQ0FBTnJ4QixNQUFNO2dCQUFFa21CLGtCQUFrQixHQUFBbUwsS0FBQSxDQUFsQm5MLGtCQUFrQjtjQUNsQ3ZsQyxLQUFJLENBQUNpekIsZUFBZSxDQUFDTyxLQUFLLENBQUMvekIsS0FBSyxHQUFHTyxLQUFJLENBQUMyd0MsNENBQTRDLENBQUN0eEIsTUFBTSxDQUFDO2NBRTVGLElBQUlBLE1BQU0sS0FBSyxJQUFJLEVBQUU7Z0JBQ25CcmYsS0FBSSxDQUFDaXpCLGVBQWUsQ0FBQ3VCLE9BQU8sQ0FBQy8wQixLQUFLLEdBQUcsS0FBSztnQkFDMUNPLEtBQUksQ0FBQ2l6QixlQUFlLENBQUN5QixPQUFPLENBQUNqMUIsS0FBSyxHQUFHLElBQUk7Z0JBQ3pDTyxLQUFJLENBQUNpekIsZUFBZSxDQUFDMkIsT0FBTyxDQUFDbjFCLEtBQUssR0FBRyxLQUFLO2dCQUUxQztjQUNGO2NBRUEsT0FBT3lnQixjQUFjLENBQUNrSyxtQkFBbUIsQ0FBQ21iLGtCQUEyQyxDQUFDLFNBQzlFLENBQUMsVUFBQXA3QixDQUFDLEVBQUk7Z0JBQ1ZuSyxLQUFJLENBQUNrSixPQUFPLENBQUNDLElBQUksQ0FBQyw2REFBNkQsRUFBRW5KLEtBQUksQ0FBQ2l6QixlQUFlLENBQUM1cUIsUUFBUSxFQUFFazlCLGtCQUFrQixFQUFFcDdCLENBQUMsQ0FBQytJLE9BQU8sQ0FBQztnQkFFOUksTUFBTS9JLENBQUM7Y0FDVCxDQUFDLENBQUM7WUFDTixDQUFDLENBQUM7VUFDTixDQUFDLENBQUMsQ0FBQzZTLElBQUksQ0FBQyxZQUFNO1lBQ1p3ZSxtQkFBbUIsQ0FBQ3B6QixPQUFPLENBQUNwSSxLQUFJLENBQUNpekIsZUFBZSxDQUFDNXFCLFFBQVEsQ0FBQztZQUUxRCxPQUFPZ29DLGtCQUFrQjtVQUMzQixDQUFDLENBQUMsQ0FBQ3J6QixJQUFJLENBQUMsVUFBQStGLFdBQVcsRUFBSTtZQUFBLElBQUE2dEIscUJBQUEsRUFBQUMsc0JBQUE7WUFDckIsSUFBSXpCLGdDQUFnQyxJQUFJbHZCLGNBQWMsYUFBZEEsY0FBYyxnQkFBQTB3QixxQkFBQSxHQUFkMXdCLGNBQWMsQ0FBRXlELHdCQUF3QixjQUFBaXRCLHFCQUFBLGVBQXhDQSxxQkFBQSxDQUEwQ2h0QixHQUFHLEVBQUU7Y0FBQSxJQUFBa3RCLHFCQUFBLEVBQUFDLHNCQUFBO2NBQ3JGLElBQU1DLHVCQUF1QixHQUFHLElBQUlydUIsdURBQVMsQ0FBQ3pDLGNBQWMsQ0FBQ3lELHdCQUF3QixDQUFDQyxHQUFHLENBQUM7Y0FFMUY1akIsS0FBSSxDQUFDbXpCLHVCQUF1QixDQUFDbU4sVUFBVSxDQUFDemEsS0FBSyxHQUFHb2Isa0ZBQWlCLENBQUNLLGlDQUFpQyxDQUFDMFAsdUJBQXVCLENBQUMvc0IsVUFBNEIsQ0FBQztjQUN6SmprQixLQUFJLENBQUNtekIsdUJBQXVCLENBQUM0TSxVQUFVLENBQUNsYSxLQUFLLEdBQUcyYSxrRkFBaUIsQ0FBQ0ksaUNBQWlDLENBQUNvUSx1QkFBdUIsQ0FBQ2p0QixVQUE0QixDQUFDO2NBRXpKLElBQU1rdEIsU0FBUyxHQUFHL3dCLGNBQWMsQ0FBQzRLLFlBQVksQ0FBQyxDQUFDO2NBQy9DO2NBQ0EsSUFBTXdWLFVBQVUsR0FBR3RnQyxLQUFJLENBQUNtekIsdUJBQXVCLENBQUNtTixVQUFVLENBQUNOLGdCQUFnQixHQUFHamQsV0FBVyxDQUFDbXVCLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2NBQzdHO2NBQ0EsSUFBTUMsa0JBQWtCLEdBQUdueEMsS0FBSSxDQUFDbXpCLHVCQUF1QixDQUFDbU4sVUFBVSxDQUFDTCxRQUFRLEdBQUdnUixTQUFTLENBQUNwUyxNQUFNLENBQUMsVUFBQW9CLFFBQVE7Z0JBQUEsT0FBSUEsUUFBUSxDQUFDMWMsS0FBSyxLQUFLK2MsVUFBVTtjQUFBLEVBQUMsQ0FBQyxDQUFDLENBQUM7Y0FFNUl0Z0MsS0FBSSxDQUFDbXpCLHVCQUF1QixDQUFDbU4sVUFBVSxDQUFDSixHQUFHLEdBQUdoZ0IsY0FBYyxDQUFDa3hCLHVCQUF1QixJQUFBTixxQkFBQSxHQUNoRjV3QixjQUFjLENBQUN3SixlQUFlLENBQUMsQ0FBQyxDQUFDbVYsTUFBTSxDQUFDLFVBQUF3UyxXQUFXO2dCQUFBLE9BQUlBLFdBQVcsQ0FBQ3BSLFFBQVEsS0FBS2tSLGtCQUFrQjtjQUFBLEVBQUMsQ0FBQyxDQUFDLENBQUMsY0FBQUwscUJBQUEsdUJBQXRHQSxxQkFBQSxDQUF3RzVRLEdBQUcsR0FDM0csSUFBSTtjQUVSLElBQU1ILFVBQVUsR0FBRy8vQixLQUFJLENBQUNtekIsdUJBQXVCLENBQUM0TSxVQUFVLENBQUNDLGdCQUFnQixHQUFHamQsV0FBVyxDQUFDdXVCLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2NBQzdHLElBQU1DLGtCQUFrQixHQUFHdnhDLEtBQUksQ0FBQ216Qix1QkFBdUIsQ0FBQzRNLFVBQVUsQ0FBQ0UsUUFBUSxHQUFHZ1IsU0FBUyxDQUFDcFMsTUFBTSxDQUFDLFVBQUFvQixRQUFRO2dCQUFBLE9BQUlBLFFBQVEsQ0FBQzFjLEtBQUssS0FBS3djLFVBQVU7Y0FBQSxFQUFDLENBQUMsQ0FBQyxDQUFDO2NBRTVJLy9CLEtBQUksQ0FBQ216Qix1QkFBdUIsQ0FBQzRNLFVBQVUsQ0FBQ0csR0FBRyxHQUFHaGdCLGNBQWMsQ0FBQ2t4Qix1QkFBdUIsSUFBQUwsc0JBQUEsR0FDaEY3d0IsY0FBYyxDQUFDd0osZUFBZSxDQUFDLENBQUMsQ0FBQ21WLE1BQU0sQ0FBQyxVQUFBd1MsV0FBVztnQkFBQSxPQUFJQSxXQUFXLENBQUNwUixRQUFRLEtBQUtzUixrQkFBa0I7Y0FBQSxFQUFDLENBQUMsQ0FBQyxDQUFDLGNBQUFSLHNCQUFBLHVCQUF0R0Esc0JBQUEsQ0FBd0c3USxHQUFHLEdBQzNHLElBQUk7Y0FFUmxnQyxLQUFJLENBQUNELFlBQVksQ0FBQ1EsR0FBRyxDQUFDbXVDLDBFQUFpQixDQUFDOEMsMkJBQTJCLENBQUN4eEMsS0FBSSxDQUFDbXpCLHVCQUF1QixDQUFDLENBQUM7Y0FFbEcsSUFBTXNlLDhCQUE4QixHQUFHenhDLEtBQUksQ0FBQ2cyQiw4QkFBOEIsQ0FBQ2tJLHFCQUFxQixDQUFDeitCLEtBQUssSUFBSU8sS0FBSSxDQUFDZzJCLDhCQUE4QixDQUFDbUksdUJBQXVCLENBQUMxK0IsS0FBSztjQUUzSyxJQUFJZ3lDLDhCQUE4QixFQUFFO2dCQUNsQyxJQUFNQyxvQ0FBMEUsR0FBRztrQkFDakZycEMsUUFBUSxFQUFFckksS0FBSSxDQUFDaXpCLGVBQWUsQ0FBQzVxQixRQUFRO2tCQUN2Q3dkLEtBQUssRUFBRTdsQixLQUFJLENBQUNtekIsdUJBQXVCLENBQUNtTixVQUFVLENBQUN6YSxLQUFLO2tCQUNwRHFNLFlBQVksRUFBRWx5QixLQUFJLENBQUNpekIsZUFBZSxDQUFDZixZQUFZO2tCQUMvQzhZLG9DQUFvQyxFQUFFaHJDLEtBQUksQ0FBQ2cyQiw4QkFBOEIsQ0FBQ0ssNkJBQTZCO2tCQUN2R3dVLHFDQUFxQyxFQUFFN3FDLEtBQUksQ0FBQ2cyQiw4QkFBOEIsQ0FBQ08sOEJBQThCO2tCQUN6RzBVLGdCQUFnQixFQUFFanJDLEtBQUksQ0FBQ2cyQiw4QkFBOEIsQ0FBQ0csU0FBUztrQkFDL0Q4SixRQUFRLEVBQUVrUixrQkFBa0I7a0JBQzVCalIsR0FBRyxFQUFFbGdDLEtBQUksQ0FBQ216Qix1QkFBdUIsQ0FBQ21OLFVBQVUsQ0FBQ0osR0FBSTtrQkFDakQ2SyxPQUFPLEVBQUUvcUMsS0FBSSxDQUFDbXpCLHVCQUF1QixDQUFDbU4sVUFBVSxDQUFDTixnQkFBZ0IsQ0FBQzFhLEVBQUc7a0JBQ3JFOGEsc0JBQXNCLEVBQUVwZ0MsS0FBSSxDQUFDbXpCLHVCQUF1QixDQUFDbU4sVUFBVSxDQUFDRixzQkFBdUI7a0JBQ3ZGQyxzQkFBc0IsRUFBRXJnQyxLQUFJLENBQUNtekIsdUJBQXVCLENBQUNtTixVQUFVLENBQUNEO2dCQUNsRSxDQUFDO2dCQUVEcmdDLEtBQUksQ0FBQ0QsWUFBWSxDQUFDUSxHQUFHLENBQUMsSUFBSWtxQyxtRkFBNkIsQ0FBQ2lILG9DQUFvQyxDQUFDLENBQUM7Y0FDaEc7Y0FFQSxJQUFNQyw2QkFBNkIsR0FBRzN4QyxLQUFJLENBQUNtekIsdUJBQXVCLENBQUNSLDJCQUEyQixDQUFDbHpCLEtBQUs7Y0FFcEcsSUFBSWt5Qyw2QkFBNkIsRUFBRTtnQkFDakMsSUFBTUMsbUNBQXdFLEdBQUc7a0JBQy9FdFIsVUFBVSxFQUFFdGdDLEtBQUksQ0FBQ216Qix1QkFBdUIsQ0FBQ21OLFVBQVU7a0JBQ25EUCxVQUFVLEVBQUUvL0IsS0FBSSxDQUFDbXpCLHVCQUF1QixDQUFDNE0sVUFBVTtrQkFDbkRqTixzQkFBc0IsRUFBRTl5QixLQUFJLENBQUNtekIsdUJBQXVCLENBQUNMLHNCQUF1QjtrQkFDNUVDLHNCQUFzQixFQUFFL3lCLEtBQUksQ0FBQ216Qix1QkFBdUIsQ0FBQ0o7Z0JBQ3ZELENBQUM7Z0JBRUQveUIsS0FBSSxDQUFDRCxZQUFZLENBQUNRLEdBQUcsQ0FBQyxJQUFJcXVDLHFGQUE0QixDQUFDZ0QsbUNBQW1DLENBQUMsQ0FBQztjQUM5RjtjQUVBbEQsMEVBQWlCLENBQUNtRCw4QkFBOEIsQ0FBQzd4QyxLQUFJLENBQUNtekIsdUJBQXVCLENBQUM7WUFDaEY7WUFFQSxJQUFJbnpCLEtBQUksQ0FBQ216Qix1QkFBdUIsQ0FBQ1Qsb0JBQW9CLENBQUNqekIsS0FBSyxFQUFFO2NBQzNELElBQUFxeUMscUJBQUEsR0FBeUNwRCwwRUFBaUIsQ0FBQ3FELHVDQUF1QyxDQUFDaHZCLFdBQVcsRUFBRS9pQixLQUFJLENBQUNtekIsdUJBQXVCLENBQUNQLDRCQUE0QixFQUFFNXlCLEtBQUksQ0FBQ216Qix1QkFBdUIsQ0FBQ04sNEJBQTRCLENBQUM7Z0JBQTlObWYsaUJBQWlCLEdBQUFGLHFCQUFBLENBQWpCRSxpQkFBaUI7Z0JBQUUvWSxXQUFXLEdBQUE2WSxxQkFBQSxDQUFYN1ksV0FBVztjQUVyQ2o1QixLQUFJLENBQUNELFlBQVksQ0FBQ1EsR0FBRyxDQUFDMDRCLFdBQVcsQ0FBQztjQUNsQ2xXLFdBQVcsR0FBR2l2QixpQkFBaUI7WUFDakM7WUFFQWh5QyxLQUFJLENBQUNrekIsc0JBQXNCLENBQUNuUSxXQUFXLENBQUN0akIsS0FBSyxHQUFHc2pCLFdBQVc7WUFFM0QsSUFBTWt2QixvQkFBb0IsR0FBRyxJQUFJbnZCLGtFQUFvQixDQUNuRDVDLGNBQWMsRUFBRTZDLFdBQVcsRUFDM0IsQ0FBQTh0QixzQkFBQSxHQUFBN3dDLEtBQUksQ0FBQ2l6QixlQUFlLENBQUNzQyxRQUFRLENBQUM5MUIsS0FBSyxjQUFBb3hDLHNCQUFBLGVBQW5DQSxzQkFBQSxDQUFxQzNyQixhQUFhLEdBQUdsbEIsS0FBSSxDQUFDaXpCLGVBQWUsQ0FBQ3NDLFFBQVEsQ0FBQzkxQixLQUFLLENBQUN5bEIsYUFBYSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQzlHOWdCLDZDQUFHLENBQUM0ekIsMEJBQTBCLENBQUUvVSxZQUNsQyxDQUFDO1lBRURqakIsS0FBSSxDQUFDRCxZQUFZLENBQUNRLEdBQUcsQ0FBQzB4QyxvQkFBb0IsQ0FBQztZQUUzQyxJQUFNQyx5Q0FBeUMsR0FBR0Qsb0JBQW9CLENBQUNFLFlBQVksQ0FBQ3RpQyxTQUFTLENBQUMsVUFBQXVpQyxVQUFVLEVBQUk7Y0FDMUdweUMsS0FBSSxDQUFDaXpCLGVBQWUsQ0FBQ2hPLGFBQWEsQ0FBQ3hsQixLQUFLLEdBQUcyeUMsVUFBVTtjQUVyRCxJQUFJLENBQUNBLFVBQVUsRUFBRTtnQkFDZjtjQUNGO2NBRUEsSUFBSSxDQUFDcHlDLEtBQUksQ0FBQ2l6QixlQUFlLENBQUN3TSxpQkFBaUIsSUFBSSxDQUFDei9CLEtBQUksQ0FBQ2l6QixlQUFlLENBQUN1TSxpQkFBaUIsRUFBRTtnQkFDdEZ4L0IsS0FBSSxDQUFDaXpCLGVBQWUsQ0FBQ3VNLGlCQUFpQixHQUFHNFMsVUFBVSxDQUFDbndCLEtBQUs7Z0JBQ3pEamlCLEtBQUksQ0FBQ2l6QixlQUFlLENBQUN3TSxpQkFBaUIsR0FBRzJTLFVBQVUsQ0FBQ2x3QixLQUFLO2dCQUV6RDtjQUNGO2NBRUEsSUFBSSxDQUFDOWQsNkNBQUcsQ0FBQzR6QiwwQkFBMEIsQ0FBRS9VLFlBQVksQ0FBQ3hqQixLQUFLLEVBQUU7Z0JBQ3ZETyxLQUFJLENBQUNpekIsZUFBZSxDQUFDdU0saUJBQWlCLEdBQUc0UyxVQUFVLENBQUNud0IsS0FBSztnQkFDekRqaUIsS0FBSSxDQUFDaXpCLGVBQWUsQ0FBQ3dNLGlCQUFpQixHQUFHMlMsVUFBVSxDQUFDbHdCLEtBQUs7Z0JBRXpEO2NBQ0Y7Y0FFQSxJQUFJbXdCLGdCQUFnQixHQUFHLEtBQUs7Y0FDNUIsSUFBSUMsZ0JBQWdCLEdBQUcsS0FBSztjQUU1QixJQUFJRixVQUFVLENBQUNud0IsS0FBSyxFQUFFO2dCQUNwQixJQUFJamlCLEtBQUksQ0FBQ2l6QixlQUFlLENBQUN1TSxpQkFBaUIsSUFBSXgvQixLQUFJLENBQUNpekIsZUFBZSxDQUFDdU0saUJBQWlCLENBQUNoaUIsU0FBUyxLQUFLNDBCLFVBQVUsQ0FBQ253QixLQUFLLENBQUN6RSxTQUFTLEVBQUU7a0JBQzdINjBCLGdCQUFnQixHQUFHcnlDLEtBQUksQ0FBQ2l6QixlQUFlLENBQUN1TSxpQkFBaUIsSUFBSXgvQixLQUFJLENBQUNpekIsZUFBZSxDQUFDdU0saUJBQWlCLENBQUNoWixhQUFhLEtBQUs0ckIsVUFBVSxDQUFDbndCLEtBQUssQ0FBQ3VFLGFBQWE7a0JBRXBKLElBQUk2ckIsZ0JBQWdCLElBQUk3ekMsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQzB3QyxpQkFBaUIsRUFBRTtvQkFDM0Rud0MsS0FBSSxDQUFDa0osT0FBTyxDQUFDQyxJQUFJLENBQ2YsMEdBQTBHLEVBQzFHbkosS0FBSSxDQUFDaXpCLGVBQWUsQ0FBQzVxQixRQUFRLEVBQzdCK3BDLFVBQVUsQ0FBQ253QixLQUFLLENBQUN1RSxhQUFhLEVBQzlCeG1CLEtBQUksQ0FBQ2l6QixlQUFlLENBQUN1TSxpQkFBaUIsQ0FBQ2haLGFBQWEsRUFDcEQsSUFBSTVlLHVEQUFTLENBQUN3cUMsVUFBVSxDQUFDbndCLEtBQUssQ0FBQ3pFLFNBQVMsR0FBR3hkLEtBQUksQ0FBQ2l6QixlQUFlLENBQUN1TSxpQkFBaUIsQ0FBQ2hpQixTQUFTLENBQUMsQ0FBQ3BVLFdBQVcsQ0FBQyxDQUMzRyxDQUFDO2tCQUNIO2tCQUVBcEosS0FBSSxDQUFDaXpCLGVBQWUsQ0FBQ3VNLGlCQUFpQixHQUFHNFMsVUFBVSxDQUFDbndCLEtBQUs7Z0JBQzNEO2NBQ0Y7Y0FFQSxJQUFJbXdCLFVBQVUsQ0FBQ2x3QixLQUFLLEVBQUU7Z0JBQ3BCLElBQUlsaUIsS0FBSSxDQUFDaXpCLGVBQWUsQ0FBQ3dNLGlCQUFpQixJQUFJei9CLEtBQUksQ0FBQ2l6QixlQUFlLENBQUN3TSxpQkFBaUIsQ0FBQ2ppQixTQUFTLEtBQUs0MEIsVUFBVSxDQUFDbHdCLEtBQUssQ0FBQzFFLFNBQVMsRUFBRTtrQkFDN0g4MEIsZ0JBQWdCLEdBQUd0eUMsS0FBSSxDQUFDaXpCLGVBQWUsQ0FBQ3dNLGlCQUFpQixJQUFJei9CLEtBQUksQ0FBQ2l6QixlQUFlLENBQUN3TSxpQkFBaUIsQ0FBQ2paLGFBQWEsS0FBSzRyQixVQUFVLENBQUNsd0IsS0FBSyxDQUFDc0UsYUFBYTtrQkFFcEosSUFBSThyQixnQkFBZ0IsSUFBSTl6QyxnRUFBVyxDQUFDaUIsS0FBSyxDQUFDMHdDLGlCQUFpQixFQUFFO29CQUMzRG53QyxLQUFJLENBQUNrSixPQUFPLENBQUNDLElBQUksQ0FDZiwwR0FBMEcsRUFDMUduSixLQUFJLENBQUNpekIsZUFBZSxDQUFDNXFCLFFBQVEsRUFDN0IrcEMsVUFBVSxDQUFDbHdCLEtBQUssQ0FBQ3NFLGFBQWEsRUFDOUJ4bUIsS0FBSSxDQUFDaXpCLGVBQWUsQ0FBQ3dNLGlCQUFpQixDQUFDalosYUFBYSxFQUNwRCxJQUFJNWUsdURBQVMsQ0FBQ3dxQyxVQUFVLENBQUNsd0IsS0FBSyxDQUFDMUUsU0FBUyxHQUFHeGQsS0FBSSxDQUFDaXpCLGVBQWUsQ0FBQ3dNLGlCQUFpQixDQUFDamlCLFNBQVMsQ0FBQyxDQUFDcFUsV0FBVyxDQUFDLENBQzNHLENBQUM7a0JBQ0g7a0JBRUFwSixLQUFJLENBQUNpekIsZUFBZSxDQUFDd00saUJBQWlCLEdBQUcyUyxVQUFVLENBQUNsd0IsS0FBSztnQkFDM0Q7Y0FDRjtjQUVBLElBQUksQ0FBQzFqQixnRUFBVyxDQUFDaUIsS0FBSyxDQUFDMHdDLGlCQUFpQixFQUFFO2dCQUN4Q253QyxLQUFJLENBQUNpekIsZUFBZSxDQUFDTyxLQUFLLENBQUMvekIsS0FBSyxHQUFHbXhCLCtEQUFZLENBQUMrSixPQUFPO2dCQUV2RDtjQUNGO2NBRUEsSUFBSTJYLGdCQUFnQixJQUFJRCxnQkFBZ0IsRUFBRTtnQkFDeEMsSUFBTW5DLGFBQWEsR0FBRyxTQUFoQkEsYUFBYUEsQ0FBQSxFQUFlO2tCQUNoQytCLG9CQUFvQixDQUFDbnlDLE9BQU8sQ0FBQyxDQUFDO2tCQUU5QixJQUFNNmQsT0FBTyxHQUFHM2QsS0FBSSxDQUFDdTlCLG9CQUFvQixDQUFDLENBQUMsU0FDbkMsQ0FBQyxVQUFBcHpCLENBQUMsRUFBSTtvQkFDVm5LLEtBQUksQ0FBQ2tKLE9BQU8sQ0FBQ1MsS0FBSyxDQUNoQix5RUFBeUUsRUFDekUzSixLQUFJLENBQUNpekIsZUFBZSxDQUFDNXFCLFFBQVEsRUFDN0I2WCxjQUFjLENBQUNpSixrQkFBa0IsRUFDakNoZixDQUNGLENBQUM7a0JBQ0gsQ0FBQyxDQUFDO2dCQUNOLENBQUM7Z0JBRURuSyxLQUFJLENBQUNvd0MsdUJBQXVCLENBQUNwd0MsS0FBSSxDQUFDaXpCLGVBQWUsQ0FBQzVxQixRQUFRLEVBQUU2WCxjQUFjLEVBQUVnd0IsYUFBYSxDQUFDO2NBQzVGLENBQUMsTUFBTTtnQkFDTGx3QyxLQUFJLENBQUNrekIsc0JBQXNCLENBQUM0SywrQkFBK0IsR0FBRyxDQUFDO2dCQUUvRCxJQUFJOTlCLEtBQUksQ0FBQ2l6QixlQUFlLENBQUNPLEtBQUssQ0FBQy96QixLQUFLLEtBQUtteEIsK0RBQVksQ0FBQ3dILFlBQVksSUFBSXA0QixLQUFJLENBQUNpekIsZUFBZSxDQUFDTyxLQUFLLENBQUMvekIsS0FBSyxLQUFLbXhCLCtEQUFZLENBQUMrSixPQUFPLEVBQUU7a0JBQy9IO2dCQUNGO2dCQUVBMzZCLEtBQUksQ0FBQ2l6QixlQUFlLENBQUNPLEtBQUssQ0FBQy96QixLQUFLLEdBQUdPLEtBQUksQ0FBQ2l6QixlQUFlLENBQUN1QixPQUFPLENBQUMvMEIsS0FBSyxHQUFHbXhCLCtEQUFZLENBQUNvRyxPQUFPLEdBQUdwRywrREFBWSxDQUFDaUssTUFBTTtnQkFDbEg3NkIsS0FBSSxDQUFDa0osT0FBTyxDQUFDQyxJQUFJLENBQUMsbURBQW1ELEVBQUV5bkIsK0RBQVksQ0FBQzV3QixLQUFJLENBQUNpekIsZUFBZSxDQUFDTyxLQUFLLENBQUMvekIsS0FBSyxDQUFDLENBQUM7Y0FDeEg7WUFDRixDQUFDLENBQUM7WUFFRk8sS0FBSSxDQUFDRCxZQUFZLENBQUNRLEdBQUcsQ0FBQzJ4Qyx5Q0FBeUMsQ0FBQztZQUVoRSxJQUFJLENBQUM5dEMsNkNBQUcsQ0FBQ3lyQiw0QkFBNEIsRUFBRTtjQUNyQzd2QixLQUFJLENBQUNpekIsZUFBZSxDQUFDVyxTQUFTLENBQUNuMEIsS0FBSyxHQUFHLEtBQUs7Y0FDNUNPLEtBQUksQ0FBQ2l6QixlQUFlLENBQUNhLFVBQVUsQ0FBQ3IwQixLQUFLLEdBQUcsSUFBSTtjQUM1Q08sS0FBSSxDQUFDaXpCLGVBQWUsQ0FBQ3FCLE9BQU8sQ0FBQzcwQixLQUFLLEdBQUcsS0FBSztjQUMxQ08sS0FBSSxDQUFDaXpCLGVBQWUsQ0FBQ3VCLE9BQU8sQ0FBQy8wQixLQUFLLEdBQUcsS0FBSztjQUMxQ08sS0FBSSxDQUFDaXpCLGVBQWUsQ0FBQ08sS0FBSyxDQUFDL3pCLEtBQUssR0FBR214QiwrREFBWSxDQUFDaUssTUFBTTtjQUV0RDtZQUNGO1lBRUEsT0FBT2pCLDZCQUE2QixDQUFDN1csV0FBVyxDQUFDO1VBQ25ELENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQztNQUNOLENBQUMsQ0FBQztJQUNOO0VBQUM7SUFBQXhqQixHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBOHlDLHNCQUFBLEdBQUF2MEIsbUZBQUEsY0FBQWhDLFlBQUEsR0FBQUUsQ0FBQSxDQUVELFNBQUErQixRQUNFdTBCLHNCQUE4QyxFQUM5Q3BKLGdCQUFrQztRQUFBLElBQUFxSixtQkFBQTtRQUFBLE9BQUF6MkIsWUFBQSxHQUFBQyxDQUFBLFdBQUFtQyxRQUFBO1VBQUEsa0JBQUFBLFFBQUEsQ0FBQTlELENBQUE7WUFBQTtjQUFBLElBQzdCazRCLHNCQUFzQjtnQkFBQXAwQixRQUFBLENBQUE5RCxDQUFBO2dCQUFBO2NBQUE7Y0FDekI4dUIsZ0JBQWdCLEdBQUcvbUIscUVBQXVCLENBQUNDLGtCQUFrQixDQUFDOG1CLGdCQUFnQixDQUFDO2NBQUMsT0FBQWhyQixRQUFBLENBQUEvQyxDQUFBLElBRXpFalgsNkNBQUcsQ0FBQ3NyQixxQkFBcUIsQ0FBQ2p3QixLQUFLLENBQUNxaEIsb0JBQW9CLENBQUNzb0IsZ0JBQWdCLENBQUM7WUFBQTtjQUd6RXFKLG1CQUFtQixHQUFBbkYsYUFBQSxDQUFBQSxhQUFBLEtBQ3BCa0Ysc0JBQXNCLENBQUNucEIsZ0JBQWdCLENBQUMsQ0FBQyxHQUN6QytmLGdCQUFnQjtjQUdyQm9KLHNCQUFzQixDQUFDanBCLGdCQUFnQixDQUFDa3BCLG1CQUFtQixDQUFDO2NBQUMsT0FBQXIwQixRQUFBLENBQUEvQyxDQUFBLElBRXREbTNCLHNCQUFzQjtVQUFBO1FBQUEsR0FBQXYwQixPQUFBO01BQUEsQ0FDOUI7TUFBQSxTQWpCYTJ4QixxQkFBcUJBLENBQUFueEIsRUFBQSxFQUFBd0wsR0FBQTtRQUFBLE9BQUFzb0Isc0JBQUEsQ0FBQTd6QixLQUFBLE9BQUEzSyxTQUFBO01BQUE7TUFBQSxPQUFyQjY3QixxQkFBcUI7SUFBQTtFQUFBO0lBQUFyd0MsR0FBQTtJQUFBRSxLQUFBLEVBbUJuQyxTQUFRMndDLHVCQUF1QkEsQ0FBQy9uQyxRQUFnQixFQUFFNlgsY0FBK0IsRUFBRWd3QixhQUF5QixFQUFRO01BQUEsSUFBQTk2QixNQUFBO01BQ2xILElBQUksQ0FBQ2hSLDZDQUFHLENBQUM0ekIsMEJBQTBCLENBQUUvVSxZQUFZLENBQUN4akIsS0FBSyxFQUFFO1FBQ3ZELElBQUksQ0FBQ3lKLE9BQU8sQ0FBQ2dMLEtBQUssQ0FBQyx1R0FBdUcsRUFBRTdMLFFBQVEsRUFBRTZYLGNBQWMsQ0FBQ2lKLGtCQUFrQixDQUFDO1FBRXhLO01BQ0Y7TUFFQSxJQUFJakosY0FBYyxDQUFDaUosa0JBQWtCLEtBQUssUUFBUSxFQUFFO1FBQ2xEO01BQ0Y7TUFFQSxRQUFRLElBQUksQ0FBQzhKLGVBQWUsQ0FBQ08sS0FBSyxDQUFDL3pCLEtBQUs7UUFDdEMsS0FBS214QiwrREFBWSxDQUFDaUssTUFBTTtRQUN4QixLQUFLakssK0RBQVksQ0FBQ2lHLE9BQU87UUFDekIsS0FBS2pHLCtEQUFZLENBQUMwSixZQUFZO1FBQzlCLEtBQUsxSiwrREFBWSxDQUFDMkosYUFBYTtRQUMvQixLQUFLM0osK0RBQVksQ0FBQzRKLFVBQVU7UUFDNUIsS0FBSzVKLCtEQUFZLENBQUM2SixrQkFBa0I7UUFDcEMsS0FBSzdKLCtEQUFZLENBQUM4SixrQkFBa0I7VUFDbEMsSUFBSSxDQUFDeHhCLE9BQU8sQ0FBQ2dMLEtBQUssQ0FBQywrRUFBK0UsRUFBRTdMLFFBQVEsRUFBRXVvQiwrREFBWSxDQUFDLElBQUksQ0FBQ3FDLGVBQWUsQ0FBQ08sS0FBSyxDQUFDL3pCLEtBQUssQ0FBQyxDQUFDO1VBRTdKO1FBQ0Y7VUFDRTtNQUNKO01BRUEsSUFBSSxDQUFDd3pCLGVBQWUsQ0FBQ08sS0FBSyxDQUFDL3pCLEtBQUssR0FBR214QiwrREFBWSxDQUFDd0gsWUFBWTtNQUU1RCxJQUFJLElBQUksQ0FBQ2xGLHNCQUFzQixDQUFDNEssK0JBQStCLEdBQUcxNUIsNkNBQUcsQ0FBQ3N1Qyw4Q0FBOEMsSUFBSSxDQUFDdHVDLDZDQUFHLENBQUN1dUMsb0NBQW9DLEVBQUU7UUFBQSxJQUFBQyxzQkFBQTtRQUNqSyxJQUFJLENBQUMxZixzQkFBc0IsQ0FBQzRLLCtCQUErQixFQUFFO1FBRTdELElBQU0rVSxpQkFBaUIsR0FBRyxFQUFBRCxzQkFBQSxHQUFBMXlCLGNBQWMsQ0FBQytJLHVCQUF1QixjQUFBMnBCLHNCQUFBLHVCQUF0Q0Esc0JBQUEsQ0FBd0M1ckMsSUFBSSxNQUFLLE9BQU87UUFFbEYsSUFBSTdDLHVFQUFpQixDQUFDc3JDLG1CQUFtQixJQUN2QyxDQUFDdnZCLGNBQWMsQ0FBQ3d2Qix3QkFBd0IsSUFDeEMsQ0FBQ3h2QixjQUFjLENBQUN5dkIsd0JBQXdCLElBQ3hDLENBQUNrRCxpQkFBaUIsRUFDbEI7VUFDQTtRQUNGO1FBRUEsSUFBSSxDQUFDM3BDLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLGdEQUFnRCxDQUFDO1FBRW5FLElBQU04Zix1QkFBdUIsR0FBRy9JLGNBQWMsQ0FBQytJLHVCQUF1QjtRQUN0RSxJQUFNdEwsT0FBTyxHQUFHdUMsY0FBYyxDQUFDd0IsV0FBVyxDQUFDO1VBQUNveEIsVUFBVSxFQUFFO1FBQUksQ0FBQyxDQUFDLENBQUM5MUIsSUFBSSxDQUFDLFVBQUErMUIsS0FBSyxFQUFJO1VBQzNFLE9BQU83eUIsY0FBYyxDQUFDa0ssbUJBQW1CLENBQUMyb0IsS0FBSyxDQUFDLENBQUMvMUIsSUFBSSxDQUFDLFlBQU07WUFDMUQsT0FBT2tELGNBQWMsQ0FBQ2tLLG1CQUFtQixDQUFDbkIsdUJBQXVCLENBQUM7VUFDcEUsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLFNBQ00sQ0FBQyxVQUFBOWUsQ0FBQyxFQUFJO1VBQ1ZpTCxNQUFJLENBQUNsTSxPQUFPLENBQUNTLEtBQUssQ0FBQyxxQ0FBcUMsRUFBRVEsQ0FBQyxDQUFDO1VBQzVEaUwsTUFBSSxDQUFDOGQsc0JBQXNCLENBQUM0SywrQkFBK0IsR0FBRyxDQUFDO1VBQy9Eb1MsYUFBYSxDQUFDLENBQUM7UUFDakIsQ0FBQyxDQUFDO1FBRUo7TUFDRjtNQUVBLElBQUksQ0FBQ2huQyxPQUFPLENBQUNDLElBQUksQ0FBQyxtRkFBbUYsRUFBRSxJQUFJLENBQUMrcEIsc0JBQXNCLENBQUM0SywrQkFBK0IsQ0FBQztNQUNuSyxJQUFJLENBQUM1SyxzQkFBc0IsQ0FBQzRLLCtCQUErQixHQUFHLENBQUM7TUFDL0RvUyxhQUFhLENBQUMsQ0FBQztJQUNqQjtFQUFDO0lBQUEzd0MsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQTA3QixlQUFlQSxDQUFBLEVBQXFCO01BQUEsSUFBQTZYLHFCQUFBO01BQ2xDLElBQU05Z0IsWUFBWSxHQUFHLElBQUksQ0FBQ2UsZUFBZSxDQUFDZixZQUFZLENBQUN6eUIsS0FBSztNQUU1RCxJQUFJLENBQUN5eUIsWUFBWSxFQUFFO1FBQ2pCLE9BQU9yVSxPQUFPLENBQUMySCxPQUFPLENBQUMsS0FBSyxDQUFDO01BQy9CO01BRUEsSUFBTXpDLFdBQVcsR0FBRyxJQUFJLENBQUNtUSxzQkFBc0IsQ0FBQ25RLFdBQVcsQ0FBQ3RqQixLQUFLO01BQ2pFLElBQU13ekMsZUFBZSxJQUFBRCxxQkFBQSxHQUFHandCLFdBQVcsYUFBWEEsV0FBVyx1QkFBWEEsV0FBVyxDQUFFTSxTQUFTLENBQUMsQ0FBQyxDQUFDNnZCLElBQUksQ0FBQyxVQUFBM3ZCLEtBQUs7UUFBQSxPQUFJQSxLQUFLLENBQUM0dkIsVUFBVSxLQUFLLE1BQU07TUFBQSxFQUFDLGNBQUFILHFCQUFBLGNBQUFBLHFCQUFBLEdBQUksS0FBSztNQUVwRyxJQUFJOWdCLFlBQVksQ0FBQ2toQixNQUFNLElBQUksQ0FBQ0gsZUFBZSxFQUFFO1FBQzNDLE9BQU9wMUIsT0FBTyxDQUFDMkgsT0FBTyxDQUFDLEtBQUssQ0FBQztNQUMvQjtNQUVBLE9BQU9tcEIsNERBQWtCLENBQUMwRSxpQkFBaUIsQ0FBQ25oQixZQUFZLENBQUM7SUFDM0Q7RUFBQztJQUFBM3lCLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQUFLLE9BQU9BLENBQUEsRUFBUztNQUNkLElBQUksQ0FBQ0MsWUFBWSxDQUFDRCxPQUFPLENBQUMsQ0FBQztJQUM3QjtFQUFDO0lBQUFQLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQVFreEMsNENBQTRDQSxDQUFDdHhCLE1BQWtDLEVBQWdCO01BQ3JHLFFBQVFBLE1BQU07UUFDWixLQUFLLElBQUk7VUFDUCxPQUFPdVIsK0RBQVksQ0FBQ2dLLFFBQVE7UUFDOUIsS0FBSyxjQUFjO1VBQ2pCLE9BQU9oSywrREFBWSxDQUFDMEosWUFBWTtRQUNsQyxLQUFLLFdBQVc7UUFDaEIsS0FBSyxVQUFVO1FBQ2YsS0FBSyxjQUFjO1FBQ25CLEtBQUssU0FBUztVQUNaLE9BQU8xSiwrREFBWSxDQUFDa0ssVUFBVTtRQUNoQyxLQUFLLFFBQVE7VUFDWCxPQUFPbEssK0RBQVksQ0FBQ3RzQixLQUFLO1FBQzNCO1VBQ0U4TixtRUFBaUIsQ0FBQ2lOLE1BQU0sQ0FBQztNQUM3QjtJQUNGO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDcnJCSDtBQUNBO0FBQ0E7O0FBRzJEO0FBQ087QUFFWDtBQUNIO0FBQUEsSUFNL0JpMEIsK0JBQStCO0VBdUJsRCxTQUFBQSxnQ0FBQSxFQUFjO0lBQUF2MEMsaUZBQUEsT0FBQXUwQywrQkFBQTtJQUNaLE1BQU0sSUFBSWh2QyxLQUFLLENBQUMsZ0ZBQWdGLENBQUM7RUFDbkc7RUFBQyxPQUFBaEYsOEVBQUEsQ0FBQWcwQywrQkFBQTtJQUFBL3pDLEdBQUE7SUFBQUUsS0FBQSxFQXRCRCxTQUFPcWIsTUFBTUEsQ0FBQ3JSLEtBQWEsRUFBRXVsQyxjQUE4QixFQUFFQyxxQkFBNEMsRUFBRUMsc0JBQThDLEVBQUVDLDZCQUE0RCxFQUFFclMsbUJBQXdDLEVBQWlDO01BQ2hTLElBQU15VyxpQkFBaUIsR0FBR2hxQyxnRUFBYyxDQUFDQyxVQUFVLENBQUNDLEtBQUssQ0FBQyxDQUFDa0IsWUFBWTtNQUV2RSxJQUFJNG9DLGlCQUFpQixDQUFDcndDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRTtRQUMzQyxJQUFJLENBQUNnRyxPQUFPLENBQUNTLEtBQUssQ0FBQyx3REFBd0QsQ0FBQztRQUM1RXFsQyxjQUFjLENBQUN4YixLQUFLLENBQUMvekIsS0FBSyxHQUFHbXhCLDhEQUFZLENBQUM2SixrQkFBa0I7UUFFNUQ7TUFDRjtNQUVBLElBQUk4WSxpQkFBaUIsQ0FBQ3J3QyxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUU7UUFDM0MsSUFBSSxDQUFDZ0csT0FBTyxDQUFDUyxLQUFLLENBQUMsbURBQW1ELENBQUM7UUFDdkVxbEMsY0FBYyxDQUFDeGIsS0FBSyxDQUFDL3pCLEtBQUssR0FBR214Qiw4REFBWSxDQUFDNkosa0JBQWtCO1FBRTVEO01BQ0Y7TUFFQSxPQUFPLElBQUlzVSxpRUFBd0IsQ0FBQ0MsY0FBYyxFQUFFQyxxQkFBcUIsRUFBRUMsc0JBQXNCLEVBQUVDLDZCQUE2QixFQUFFclMsbUJBQW1CLENBQUM7SUFDeEo7RUFBQztBQUFBO0FBQUE5OUIsaUZBQUEsQ0FyQmtCczBDLCtCQUErQixhQUNoQnpyQyw2REFBYSxDQUFDRyxTQUFTLENBQUMsV0FBVyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2hCeEU7QUFDQTtBQUNBOztBQUV3RDtBQUVEO0FBQ2E7QUFFcEUsSUFBTXdyQyw4QkFBOEIsR0FBRyxJQUFJO0FBQUMsSUFFdkI3RSxrQkFBa0I7RUE2RXJDLFNBQUFBLG1CQUFBLEVBQWM7SUFBQTV2QyxpRkFBQSxPQUFBNHZDLGtCQUFBO0lBQ1osTUFBTSxJQUFJcnFDLEtBQUssQ0FBQyxtRUFBbUUsQ0FBQztFQUN0RjtFQUFDLE9BQUFoRiw4RUFBQSxDQUFBcXZDLGtCQUFBO0lBQUFwdkMsR0FBQTtJQUFBRSxLQUFBLEVBNUVELFNBQWM0ekMsaUJBQWlCQSxDQUFDbmhCLFlBQThCLEVBQW9CO01BQUEsSUFBQWx5QixLQUFBO01BQ2hGLElBQUksQ0FBQ21FLHNFQUFpQixDQUFDNEksb0NBQW9DLEVBQUU7UUFDM0QsSUFBSSxDQUFDN0QsT0FBTyxDQUFDZ0wsS0FBSyxDQUFDLDZEQUE2RCxDQUFDO1FBRWpGLE9BQU8ySixPQUFPLENBQUMySCxPQUFPLENBQUMsSUFBSSxDQUFDO01BQzlCO01BRUEsSUFBSSxDQUFDcmhCLHNFQUFpQixDQUFDc3ZDLGdDQUFnQyxFQUFFO1FBQ3ZELElBQUksQ0FBQ3ZxQyxPQUFPLENBQUNnTCxLQUFLLENBQUMseURBQXlELENBQUM7UUFFN0UsT0FBTzJKLE9BQU8sQ0FBQzJILE9BQU8sQ0FBQyxJQUFJLENBQUM7TUFDOUI7O01BRUE7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0EsSUFBSSxDQUFDcmhCLHNFQUFpQixDQUFDNUMsUUFBUSxFQUFFO1FBQy9CLElBQUksQ0FBQzJILE9BQU8sQ0FBQ2dMLEtBQUssQ0FBQyx5REFBeUQsQ0FBQztRQUU3RSxPQUFPMkosT0FBTyxDQUFDMkgsT0FBTyxDQUFDLElBQUksQ0FBQztNQUM5QjtNQUVBLElBQU1rdUIsU0FBUyxHQUFHejBDLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUM7O01BRTVCO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBLE9BQU8sSUFBSTJlLE9BQU8sQ0FBVSxVQUFBMkgsT0FBTyxFQUFJO1FBQ3JDLElBQUltdUIsUUFBUSxHQUFHLEtBQUs7UUFDcEIsSUFBTTlXLFNBQVMsR0FBR3IrQixnRUFBVyxDQUFDaUIsS0FBSyxDQUFDc0YsVUFBVSxDQUFDLFlBQU07VUFDbkQsSUFBSSxDQUFDNHVDLFFBQVEsRUFBRTtZQUNiQSxRQUFRLEdBQUcsSUFBSTtZQUNmM3pDLEtBQUksQ0FBQ2tKLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLDZEQUE2RCxFQUFFcXFDLDhCQUE4QixDQUFDO1lBRWhIaHVCLE9BQU8sQ0FBQyxJQUFJLENBQUM7VUFDZjtRQUNGLENBQUMsRUFBRWd1Qiw4QkFBOEIsQ0FBQztRQUVsQ3RoQixZQUFZLENBQUN0bEIseUJBQXlCLENBQUMsWUFBTTtVQUMzQyxJQUFJLENBQUMrbUMsUUFBUSxFQUFFO1lBQ2JBLFFBQVEsR0FBRyxJQUFJO1lBQ2ZuMUMsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ2tQLFlBQVksQ0FBQ2t1QixTQUFTLENBQUM7WUFDekM3OEIsS0FBSSxDQUFDa0osT0FBTyxDQUFDZ0wsS0FBSyxDQUFDLHlEQUF5RCxFQUFFalYsSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQyxHQUFHdzBDLFNBQVMsQ0FBQztZQUVyR2x1QixPQUFPLENBQUMsSUFBSSxDQUFDO1VBQ2Y7UUFDRixDQUFDLENBQUM7O1FBRUY7UUFDQTtRQUNBaG5CLGdFQUFXLENBQUNpQixLQUFLLENBQUNxTixxQkFBcUIsQ0FBQyxZQUFNO1VBQzVDLElBQUksQ0FBQzZtQyxRQUFRLEVBQUU7WUFDYkEsUUFBUSxHQUFHLElBQUk7WUFDZm4xQyxnRUFBVyxDQUFDaUIsS0FBSyxDQUFDa1AsWUFBWSxDQUFDa3VCLFNBQVMsQ0FBQztZQUN6Qzc4QixLQUFJLENBQUNrSixPQUFPLENBQUNnTCxLQUFLLENBQUMsNERBQTRELEVBQUVqVixJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDLEdBQUd3MEMsU0FBUyxDQUFDO1lBRXhHbHVCLE9BQU8sQ0FBQyxLQUFLLENBQUM7VUFDaEI7UUFDRixDQUFDLENBQUM7TUFDSixDQUFDLENBQUM7SUFDSjtFQUFDO0FBQUE7QUFBQXhtQixpRkFBQSxDQTNFa0IydkMsa0JBQWtCLGFBQ0g5bUMsNkRBQWEsQ0FBQ0csU0FBUyxDQUFDLG9CQUFvQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCQ1hqRix1S0FBQW1DLENBQUEsRUFBQWdRLENBQUEsRUFBQUMsQ0FBQSx3QkFBQUMsTUFBQSxHQUFBQSxNQUFBLE9BQUFDLENBQUEsR0FBQUYsQ0FBQSxDQUFBRyxRQUFBLGtCQUFBQyxDQUFBLEdBQUFKLENBQUEsQ0FBQUssV0FBQSw4QkFBQUMsRUFBQU4sQ0FBQSxFQUFBRSxDQUFBLEVBQUFFLENBQUEsRUFBQUUsQ0FBQSxRQUFBQyxDQUFBLEdBQUFMLENBQUEsSUFBQUEsQ0FBQSxDQUFBL04sU0FBQSxZQUFBcU8sU0FBQSxHQUFBTixDQUFBLEdBQUFNLFNBQUEsRUFBQUMsQ0FBQSxHQUFBM0UsTUFBQSxDQUFBNEUsTUFBQSxDQUFBSCxDQUFBLENBQUFwTyxTQUFBLFVBQUF3TyxtQkFBQSxDQUFBRixDQUFBLHVCQUFBVCxDQUFBLEVBQUFFLENBQUEsRUFBQUUsQ0FBQSxRQUFBRSxDQUFBLEVBQUFDLENBQUEsRUFBQUUsQ0FBQSxFQUFBRyxDQUFBLE1BQUFDLENBQUEsR0FBQVQsQ0FBQSxRQUFBVSxDQUFBLE9BQUFDLENBQUEsS0FBQUYsQ0FBQSxLQUFBWCxDQUFBLEtBQUFjLENBQUEsRUFBQWpSLENBQUEsRUFBQWtSLENBQUEsRUFBQUMsQ0FBQSxFQUFBTixDQUFBLEVBQUFNLENBQUEsQ0FBQXhXLElBQUEsQ0FBQXFGLENBQUEsTUFBQW1SLENBQUEsV0FBQUEsRUFBQW5CLENBQUEsRUFBQUMsQ0FBQSxXQUFBTSxDQUFBLEdBQUFQLENBQUEsRUFBQVEsQ0FBQSxNQUFBRSxDQUFBLEdBQUExUSxDQUFBLEVBQUFnUixDQUFBLENBQUFiLENBQUEsR0FBQUYsQ0FBQSxFQUFBaUIsQ0FBQSxnQkFBQUMsRUFBQWxCLENBQUEsRUFBQUUsQ0FBQSxTQUFBSyxDQUFBLEdBQUFQLENBQUEsRUFBQVMsQ0FBQSxHQUFBUCxDQUFBLEVBQUFILENBQUEsT0FBQWUsQ0FBQSxJQUFBRixDQUFBLEtBQUFSLENBQUEsSUFBQUwsQ0FBQSxHQUFBYyxDQUFBLENBQUFsUixNQUFBLEVBQUFvUSxDQUFBLFVBQUFLLENBQUEsRUFBQUUsQ0FBQSxHQUFBTyxDQUFBLENBQUFkLENBQUEsR0FBQW1CLENBQUEsR0FBQUgsQ0FBQSxDQUFBRixDQUFBLEVBQUFNLENBQUEsR0FBQWIsQ0FBQSxLQUFBTixDQUFBLFFBQUFJLENBQUEsR0FBQWUsQ0FBQSxLQUFBakIsQ0FBQSxNQUFBTyxDQUFBLEdBQUFILENBQUEsRUFBQUMsQ0FBQSxHQUFBRCxDQUFBLFlBQUFDLENBQUEsV0FBQUQsQ0FBQSxNQUFBQSxDQUFBLE1BQUF2USxDQUFBLElBQUF1USxDQUFBLE9BQUFZLENBQUEsTUFBQWQsQ0FBQSxHQUFBSixDQUFBLFFBQUFrQixDQUFBLEdBQUFaLENBQUEsUUFBQUMsQ0FBQSxNQUFBUSxDQUFBLENBQUFDLENBQUEsR0FBQWQsQ0FBQSxFQUFBYSxDQUFBLENBQUFiLENBQUEsR0FBQUksQ0FBQSxPQUFBWSxDQUFBLEdBQUFDLENBQUEsS0FBQWYsQ0FBQSxHQUFBSixDQUFBLFFBQUFNLENBQUEsTUFBQUosQ0FBQSxJQUFBQSxDQUFBLEdBQUFpQixDQUFBLE1BQUFiLENBQUEsTUFBQU4sQ0FBQSxFQUFBTSxDQUFBLE1BQUFKLENBQUEsRUFBQWEsQ0FBQSxDQUFBYixDQUFBLEdBQUFpQixDQUFBLEVBQUFaLENBQUEsY0FBQUgsQ0FBQSxJQUFBSixDQUFBLGFBQUFpQixDQUFBLFFBQUFILENBQUEsT0FBQVosQ0FBQSxxQkFBQUUsQ0FBQSxFQUFBUyxDQUFBLEVBQUFNLENBQUEsUUFBQVAsQ0FBQSxZQUFBUSxTQUFBLHVDQUFBTixDQUFBLFVBQUFELENBQUEsSUFBQUssQ0FBQSxDQUFBTCxDQUFBLEVBQUFNLENBQUEsR0FBQVosQ0FBQSxHQUFBTSxDQUFBLEVBQUFKLENBQUEsR0FBQVUsQ0FBQSxHQUFBcEIsQ0FBQSxHQUFBUSxDQUFBLE9BQUF4USxDQUFBLEdBQUEwUSxDQUFBLE1BQUFLLENBQUEsS0FBQVIsQ0FBQSxLQUFBQyxDQUFBLEdBQUFBLENBQUEsUUFBQUEsQ0FBQSxTQUFBUSxDQUFBLENBQUFiLENBQUEsUUFBQWdCLENBQUEsQ0FBQVgsQ0FBQSxFQUFBRSxDQUFBLEtBQUFNLENBQUEsQ0FBQWIsQ0FBQSxHQUFBTyxDQUFBLEdBQUFNLENBQUEsQ0FBQUMsQ0FBQSxHQUFBUCxDQUFBLGFBQUFHLENBQUEsTUFBQU4sQ0FBQSxRQUFBQyxDQUFBLEtBQUFILENBQUEsWUFBQUwsQ0FBQSxHQUFBTyxDQUFBLENBQUFGLENBQUEsV0FBQUwsQ0FBQSxHQUFBQSxDQUFBLENBQUEvSixJQUFBLENBQUFzSyxDQUFBLEVBQUFHLENBQUEsVUFBQVcsU0FBQSwyQ0FBQXJCLENBQUEsQ0FBQXNCLElBQUEsU0FBQXRCLENBQUEsRUFBQVUsQ0FBQSxHQUFBVixDQUFBLENBQUExYSxLQUFBLEVBQUFrYixDQUFBLFNBQUFBLENBQUEsb0JBQUFBLENBQUEsS0FBQVIsQ0FBQSxHQUFBTyxDQUFBLGVBQUFQLENBQUEsQ0FBQS9KLElBQUEsQ0FBQXNLLENBQUEsR0FBQUMsQ0FBQSxTQUFBRSxDQUFBLEdBQUFXLFNBQUEsdUNBQUFoQixDQUFBLGdCQUFBRyxDQUFBLE9BQUFELENBQUEsR0FBQXZRLENBQUEsY0FBQWdRLENBQUEsSUFBQWUsQ0FBQSxHQUFBQyxDQUFBLENBQUFiLENBQUEsUUFBQU8sQ0FBQSxHQUFBVCxDQUFBLENBQUFoSyxJQUFBLENBQUFrSyxDQUFBLEVBQUFhLENBQUEsT0FBQUUsQ0FBQSxrQkFBQWxCLENBQUEsSUFBQU8sQ0FBQSxHQUFBdlEsQ0FBQSxFQUFBd1EsQ0FBQSxNQUFBRSxDQUFBLEdBQUFWLENBQUEsY0FBQWEsQ0FBQSxtQkFBQXZiLEtBQUEsRUFBQTBhLENBQUEsRUFBQXNCLElBQUEsRUFBQVAsQ0FBQSxTQUFBZCxDQUFBLEVBQUFJLENBQUEsRUFBQUUsQ0FBQSxRQUFBRyxDQUFBLFFBQUFRLENBQUEsZ0JBQUFULFVBQUEsY0FBQWMsa0JBQUEsY0FBQUMsMkJBQUEsS0FBQXhCLENBQUEsR0FBQWpFLE1BQUEsQ0FBQTBGLGNBQUEsTUFBQWpCLENBQUEsTUFBQUwsQ0FBQSxJQUFBSCxDQUFBLENBQUFBLENBQUEsSUFBQUcsQ0FBQSxTQUFBUyxtQkFBQSxDQUFBWixDQUFBLE9BQUFHLENBQUEsaUNBQUFILENBQUEsR0FBQVUsQ0FBQSxHQUFBYywwQkFBQSxDQUFBcFAsU0FBQSxHQUFBcU8sU0FBQSxDQUFBck8sU0FBQSxHQUFBMkosTUFBQSxDQUFBNEUsTUFBQSxDQUFBSCxDQUFBLFlBQUFLLEVBQUE3USxDQUFBLFdBQUErTCxNQUFBLENBQUEyRixjQUFBLEdBQUEzRixNQUFBLENBQUEyRixjQUFBLENBQUExUixDQUFBLEVBQUF3UiwwQkFBQSxLQUFBeFIsQ0FBQSxDQUFBMlIsU0FBQSxHQUFBSCwwQkFBQSxFQUFBWixtQkFBQSxDQUFBNVEsQ0FBQSxFQUFBcVEsQ0FBQSx5QkFBQXJRLENBQUEsQ0FBQW9DLFNBQUEsR0FBQTJKLE1BQUEsQ0FBQTRFLE1BQUEsQ0FBQUQsQ0FBQSxHQUFBMVEsQ0FBQSxXQUFBdVIsaUJBQUEsQ0FBQW5QLFNBQUEsR0FBQW9QLDBCQUFBLEVBQUFaLG1CQUFBLENBQUFGLENBQUEsaUJBQUFjLDBCQUFBLEdBQUFaLG1CQUFBLENBQUFZLDBCQUFBLGlCQUFBRCxpQkFBQSxHQUFBQSxpQkFBQSxDQUFBSyxXQUFBLHdCQUFBaEIsbUJBQUEsQ0FBQVksMEJBQUEsRUFBQW5CLENBQUEsd0JBQUFPLG1CQUFBLENBQUFGLENBQUEsR0FBQUUsbUJBQUEsQ0FBQUYsQ0FBQSxFQUFBTCxDQUFBLGdCQUFBTyxtQkFBQSxDQUFBRixDQUFBLEVBQUFQLENBQUEsaUNBQUFTLG1CQUFBLENBQUFGLENBQUEsOERBQUFtQixZQUFBLFlBQUFBLGFBQUEsYUFBQUMsQ0FBQSxFQUFBdkIsQ0FBQSxFQUFBd0IsQ0FBQSxFQUFBbEIsQ0FBQTtBQUFBLFNBQUFELG9CQUFBNVEsQ0FBQSxFQUFBaVEsQ0FBQSxFQUFBRSxDQUFBLEVBQUFILENBQUEsUUFBQU8sQ0FBQSxHQUFBeEUsTUFBQSxDQUFBaUcsY0FBQSxRQUFBekIsQ0FBQSx1QkFBQXZRLENBQUEsSUFBQXVRLENBQUEsUUFBQUssbUJBQUEsWUFBQXFCLG1CQUFBalMsQ0FBQSxFQUFBaVEsQ0FBQSxFQUFBRSxDQUFBLEVBQUFILENBQUEsYUFBQUssRUFBQUosQ0FBQSxFQUFBRSxDQUFBLElBQUFTLG1CQUFBLENBQUE1USxDQUFBLEVBQUFpUSxDQUFBLFlBQUFqUSxDQUFBLGdCQUFBa1MsT0FBQSxDQUFBakMsQ0FBQSxFQUFBRSxDQUFBLEVBQUFuUSxDQUFBLFNBQUFpUSxDQUFBLEdBQUFNLENBQUEsR0FBQUEsQ0FBQSxDQUFBdlEsQ0FBQSxFQUFBaVEsQ0FBQSxJQUFBM2EsS0FBQSxFQUFBNmEsQ0FBQSxFQUFBZ0MsVUFBQSxHQUFBbkMsQ0FBQSxFQUFBb0MsWUFBQSxHQUFBcEMsQ0FBQSxFQUFBcUMsUUFBQSxHQUFBckMsQ0FBQSxNQUFBaFEsQ0FBQSxDQUFBaVEsQ0FBQSxJQUFBRSxDQUFBLElBQUFFLENBQUEsYUFBQUEsQ0FBQSxjQUFBQSxDQUFBLG1CQUFBTyxtQkFBQSxDQUFBNVEsQ0FBQSxFQUFBaVEsQ0FBQSxFQUFBRSxDQUFBLEVBQUFILENBQUE7QUFEQTtBQUNBO0FBQ0E7O0FBRXVEO0FBTThDO0FBQ2Q7QUFBQSxJQVVsRXkwQiw0QkFBNEI7RUFHL0MsU0FBQUEsNkJBQVl6RixPQUE0QyxFQUFFO0lBQUFwcUMsaUZBQUEsT0FBQTZ2Qyw0QkFBQTtJQUFBNXZDLGlGQUFBLHVCQUZWLElBQUlOLDREQUFjLENBQUMsQ0FBQztJQUdsRSxJQUFJLENBQUNXLFVBQVUsQ0FBQzhwQyxPQUFPLENBQUM7RUFDMUI7RUFBQyxPQUFBN3BDLDhFQUFBLENBQUFzdkMsNEJBQUE7SUFBQXJ2QyxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFPSyxPQUFPQSxDQUFBLEVBQVM7TUFDckIsSUFBSSxDQUFDQyxZQUFZLENBQUNELE9BQU8sQ0FBQyxDQUFDO0lBQzdCO0VBQUM7SUFBQVAsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBUUosVUFBVUEsQ0FBQzhwQyxPQUE0QyxFQUFRO01BQUEsSUFBQW5wQyxLQUFBO01BQ3JFLElBQUltcEMsT0FBTyxDQUFDN0ksVUFBVSxDQUFDTixnQkFBZ0IsRUFBRTtRQUN2Q21KLE9BQU8sQ0FBQzdJLFVBQVUsQ0FBQ0Qsc0JBQXNCLENBQUN0M0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBRWpFLElBQUksQ0FBQ2hKLFlBQVksQ0FBQ1EsR0FBRyxDQUFDNG9DLE9BQU8sQ0FBQzdJLFVBQVUsQ0FBQ0Ysc0JBQXNCLENBQUU4SyxhQUFhLENBQUNWLGtHQUF3QixDQUFDc0osaUJBQWlCLEVBQUUsVUFBQ0MsS0FBMkI7VUFBQSxPQUFLL3pDLEtBQUksQ0FBQ2cwQywwQkFBMEIsQ0FBQzdLLE9BQU8sQ0FBQzdJLFVBQVUsRUFBRTZJLE9BQU8sQ0FBQ3JXLHNCQUFzQixFQUE4Q2loQixLQUFLLENBQUM7UUFBQSxFQUFDLENBQUM7TUFDdFM7TUFFQSxJQUFJNUssT0FBTyxDQUFDcEosVUFBVSxDQUFDQyxnQkFBZ0IsRUFBRTtRQUN2Q21KLE9BQU8sQ0FBQ3BKLFVBQVUsQ0FBQ00sc0JBQXNCLENBQUN0M0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBRWpFLElBQUksQ0FBQ2hKLFlBQVksQ0FBQ1EsR0FBRyxDQUFDNG9DLE9BQU8sQ0FBQ3BKLFVBQVUsQ0FBQ0ssc0JBQXNCLENBQUU4SyxhQUFhLENBQUNWLGtHQUF3QixDQUFDeUosaUJBQWlCLEVBQUUsVUFBQ0YsS0FBMkI7VUFBQSxPQUFLL3pDLEtBQUksQ0FBQ2swQywwQkFBMEIsQ0FBQy9LLE9BQU8sQ0FBQ3BKLFVBQVUsRUFBRW9KLE9BQU8sQ0FBQ3BXLHNCQUFzQixFQUE4Q2doQixLQUFLLENBQUM7UUFBQSxFQUFDLENBQUM7TUFDdFM7SUFDRjtFQUFDO0lBQUF4MEMsR0FBQTtJQUFBRSxLQUFBO01BQUEsSUFBQTAwQywyQkFBQSxHQUFBbjJCLG1GQUFBLGNBQUFoQyxZQUFBLEdBQUFFLENBQUEsQ0FFRCxTQUFBK0IsUUFBeUNzRixLQUFrQyxFQUFFd1Asc0JBQWdFLEVBQUVnaEIsS0FBMkI7UUFBQSxPQUFBLzNCLFlBQUEsR0FBQUMsQ0FBQSxXQUFBbUMsUUFBQTtVQUFBLGtCQUFBQSxRQUFBLENBQUE5RCxDQUFBO1lBQUE7Y0FBQThELFFBQUEsQ0FBQTlELENBQUE7Y0FBQSxPQUM3SnlZLHNCQUFzQixDQUFDeFAsS0FBSyxDQUFDeWMsZ0JBQWdCLEVBQUcrVCxLQUFLLENBQUM7WUFBQTtjQUFBLElBQUEzMUIsUUFBQSxDQUFBaEQsQ0FBQTtnQkFBQWdELFFBQUEsQ0FBQTlELENBQUE7Z0JBQUE7Y0FBQTtjQUMvRHk1QixLQUFLLENBQUN4a0MsSUFBSSxHQUFHcWtDLGtFQUF5QixDQUFDUSw0QkFBNEIsQ0FBQyxDQUFDO2NBQUNoMkIsUUFBQSxDQUFBOUQsQ0FBQTtjQUFBO1lBQUE7Y0FFdEV5NUIsS0FBSyxDQUFDeGtDLElBQUksR0FBR3FrQyxrRUFBeUIsQ0FBQ1MsK0JBQStCLENBQUM5d0IsS0FBSyxDQUFDc0MsS0FBbUIsQ0FBQyxJQUFJa3VCLEtBQUssQ0FBQ3hrQyxJQUFJO1lBQUM7Y0FBQSxPQUFBNk8sUUFBQSxDQUFBL0MsQ0FBQSxJQUczRzA0QixLQUFLO1VBQUE7UUFBQSxHQUFBOTFCLE9BQUE7TUFBQSxDQUNiO01BQUEsU0FSYWkyQiwwQkFBMEJBLENBQUF6MUIsRUFBQSxFQUFBd0wsR0FBQSxFQUFBSSxHQUFBO1FBQUEsT0FBQThwQiwyQkFBQSxDQUFBejFCLEtBQUEsT0FBQTNLLFNBQUE7TUFBQTtNQUFBLE9BQTFCbWdDLDBCQUEwQjtJQUFBO0VBQUE7SUFBQTMwQyxHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBNjBDLDJCQUFBLEdBQUF0MkIsbUZBQUEsY0FBQWhDLFlBQUEsR0FBQUUsQ0FBQSxDQVV4QyxTQUFBMEMsU0FBeUMyRSxLQUFrQyxFQUFFdVAsc0JBQWdFLEVBQUVpaEIsS0FBMkI7UUFBQSxJQUFBUSxTQUFBO1FBQUEsT0FBQXY0QixZQUFBLEdBQUFDLENBQUEsV0FBQTRDLFNBQUE7VUFBQSxrQkFBQUEsU0FBQSxDQUFBdkUsQ0FBQTtZQUFBO2NBQUF1RSxTQUFBLENBQUF2RSxDQUFBO2NBQUEsT0FDN0p3WSxzQkFBc0IsQ0FBQ3ZQLEtBQUssQ0FBQ3ljLGdCQUFnQixFQUFHK1QsS0FBSyxDQUFDO1lBQUE7Y0FBQSxJQUFBbDFCLFNBQUEsQ0FBQXpELENBQUE7Z0JBQUF5RCxTQUFBLENBQUF2RSxDQUFBO2dCQUFBO2NBQUE7Y0FHL0QsSUFBSXk1QixLQUFLLENBQUMvc0MsSUFBSSxLQUFLLEtBQUssRUFBRTtnQkFDeEJ1dEMsU0FBUyxHQUFHWCxrRUFBeUIsQ0FBQ1ksOEJBQThCLENBQUNqeEIsS0FBSyxDQUFDc0MsS0FBbUIsQ0FBQztjQUNqRyxDQUFDLE1BQU07Z0JBQ0wwdUIsU0FBUyxHQUFHWCxrRUFBeUIsQ0FBQ2EsOEJBQThCLENBQUMsQ0FBQztjQUN4RTtjQUFDLE1BRUdGLFNBQVMsS0FBS1YsaUVBQVM7Z0JBQUFoMUIsU0FBQSxDQUFBdkUsQ0FBQTtnQkFBQTtjQUFBO2NBQUEsT0FBQXVFLFNBQUEsQ0FBQXhELENBQUE7WUFBQTtjQUkzQjA0QixLQUFLLENBQUN4a0MsSUFBSSxHQUFHZ2xDLFNBQVMsSUFBSVIsS0FBSyxDQUFDeGtDLElBQUk7Y0FBQ3NQLFNBQUEsQ0FBQXZFLENBQUE7Y0FBQTtZQUFBO2NBRXJDLElBQUl5NUIsS0FBSyxDQUFDL3NDLElBQUksS0FBSyxLQUFLLEVBQUU7Z0JBQ3hCK3NDLEtBQUssQ0FBQ3hrQyxJQUFJLEdBQUdxa0Msa0VBQXlCLENBQUNjLCtCQUErQixDQUFDbnhCLEtBQUssQ0FBQ3NDLEtBQW1CLENBQUMsSUFBSWt1QixLQUFLLENBQUN4a0MsSUFBSTtjQUNqSCxDQUFDLE1BQU07Z0JBQ0x3a0MsS0FBSyxDQUFDeGtDLElBQUksR0FBR3FrQyxrRUFBeUIsQ0FBQ2UsK0JBQStCLENBQUNweEIsS0FBSyxDQUFDc0MsS0FBbUIsQ0FBQyxJQUFJa3VCLEtBQUssQ0FBQ3hrQyxJQUFJO2NBQ2pIO1lBQUM7Y0FBQSxPQUFBc1AsU0FBQSxDQUFBeEQsQ0FBQSxJQUdJMDRCLEtBQUs7VUFBQTtRQUFBLEdBQUFuMUIsUUFBQTtNQUFBLENBQ2I7TUFBQSxTQXhCYW8xQiwwQkFBMEJBLENBQUFwcEIsR0FBQSxFQUFBNGIsR0FBQSxFQUFBQyxHQUFBO1FBQUEsT0FBQTZOLDJCQUFBLENBQUE1MUIsS0FBQSxPQUFBM0ssU0FBQTtNQUFBO01BQUEsT0FBMUJpZ0MsMEJBQTBCO0lBQUE7RUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3hEMUM7QUFDQTtBQUNBO0FBRkEsSUFRcUIvaUIsaUJBQWlCO0VBc0JwQyxTQUFBQSxrQkFBQSxFQUFjO0lBQUFseUIsaUZBQUEsT0FBQWt5QixpQkFBQTtJQUNaLE1BQU0sSUFBSTNzQixLQUFLLENBQUMsa0VBQWtFLENBQUM7RUFDckY7RUFBQyxPQUFBaEYsOEVBQUEsQ0FBQTJ4QixpQkFBQTtJQUFBMXhCLEdBQUE7SUFBQUUsS0FBQSxFQXZCRCxTQUFPaTlCLHlCQUF5QkEsQ0FBd0RrWSxJQUF1QixFQUFFamlDLElBQTJCLEVBQUU7TUFDNUksSUFBSSxPQUFPQSxJQUFJLEtBQUssVUFBVSxFQUFFO1FBQzlCLE9BQU87VUFDTCtvQixLQUFLLEVBQUUsS0FBSztVQUNaQyxnQkFBZ0IsZ0JBQUFsNUIsTUFBQSxDQUFnQm15QyxJQUFJLGlEQUFBbnlDLE1BQUEsQ0FBQStXLHlFQUFBLENBQXFEN0csSUFBSTtRQUMvRixDQUFDO01BQ0g7TUFFQSxJQUFJQSxJQUFJLENBQUM1SSxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ3JCLE9BQU87VUFDTDJ4QixLQUFLLEVBQUUsS0FBSztVQUNaQyxnQkFBZ0IsZ0JBQUFsNUIsTUFBQSxDQUFnQm15QyxJQUFJLHlFQUFBbnlDLE1BQUEsQ0FBc0VrUSxJQUFJLENBQUM1SSxNQUFNO1FBQ3ZILENBQUM7TUFDSDtNQUVBLE9BQU87UUFDTDJ4QixLQUFLLEVBQUUsSUFBSTtRQUNYQyxnQkFBZ0IsRUFBRTtNQUNwQixDQUFDO0lBQ0g7RUFBQztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MEJDM0JILHVLQUFBeHhCLENBQUEsRUFBQWdRLENBQUEsRUFBQUMsQ0FBQSx3QkFBQUMsTUFBQSxHQUFBQSxNQUFBLE9BQUFDLENBQUEsR0FBQUYsQ0FBQSxDQUFBRyxRQUFBLGtCQUFBQyxDQUFBLEdBQUFKLENBQUEsQ0FBQUssV0FBQSw4QkFBQUMsRUFBQU4sQ0FBQSxFQUFBRSxDQUFBLEVBQUFFLENBQUEsRUFBQUUsQ0FBQSxRQUFBQyxDQUFBLEdBQUFMLENBQUEsSUFBQUEsQ0FBQSxDQUFBL04sU0FBQSxZQUFBcU8sU0FBQSxHQUFBTixDQUFBLEdBQUFNLFNBQUEsRUFBQUMsQ0FBQSxHQUFBM0UsTUFBQSxDQUFBNEUsTUFBQSxDQUFBSCxDQUFBLENBQUFwTyxTQUFBLFVBQUF3TyxtQkFBQSxDQUFBRixDQUFBLHVCQUFBVCxDQUFBLEVBQUFFLENBQUEsRUFBQUUsQ0FBQSxRQUFBRSxDQUFBLEVBQUFDLENBQUEsRUFBQUUsQ0FBQSxFQUFBRyxDQUFBLE1BQUFDLENBQUEsR0FBQVQsQ0FBQSxRQUFBVSxDQUFBLE9BQUFDLENBQUEsS0FBQUYsQ0FBQSxLQUFBWCxDQUFBLEtBQUFjLENBQUEsRUFBQWpSLENBQUEsRUFBQWtSLENBQUEsRUFBQUMsQ0FBQSxFQUFBTixDQUFBLEVBQUFNLENBQUEsQ0FBQXhXLElBQUEsQ0FBQXFGLENBQUEsTUFBQW1SLENBQUEsV0FBQUEsRUFBQW5CLENBQUEsRUFBQUMsQ0FBQSxXQUFBTSxDQUFBLEdBQUFQLENBQUEsRUFBQVEsQ0FBQSxNQUFBRSxDQUFBLEdBQUExUSxDQUFBLEVBQUFnUixDQUFBLENBQUFiLENBQUEsR0FBQUYsQ0FBQSxFQUFBaUIsQ0FBQSxnQkFBQUMsRUFBQWxCLENBQUEsRUFBQUUsQ0FBQSxTQUFBSyxDQUFBLEdBQUFQLENBQUEsRUFBQVMsQ0FBQSxHQUFBUCxDQUFBLEVBQUFILENBQUEsT0FBQWUsQ0FBQSxJQUFBRixDQUFBLEtBQUFSLENBQUEsSUFBQUwsQ0FBQSxHQUFBYyxDQUFBLENBQUFsUixNQUFBLEVBQUFvUSxDQUFBLFVBQUFLLENBQUEsRUFBQUUsQ0FBQSxHQUFBTyxDQUFBLENBQUFkLENBQUEsR0FBQW1CLENBQUEsR0FBQUgsQ0FBQSxDQUFBRixDQUFBLEVBQUFNLENBQUEsR0FBQWIsQ0FBQSxLQUFBTixDQUFBLFFBQUFJLENBQUEsR0FBQWUsQ0FBQSxLQUFBakIsQ0FBQSxNQUFBTyxDQUFBLEdBQUFILENBQUEsRUFBQUMsQ0FBQSxHQUFBRCxDQUFBLFlBQUFDLENBQUEsV0FBQUQsQ0FBQSxNQUFBQSxDQUFBLE1BQUF2USxDQUFBLElBQUF1USxDQUFBLE9BQUFZLENBQUEsTUFBQWQsQ0FBQSxHQUFBSixDQUFBLFFBQUFrQixDQUFBLEdBQUFaLENBQUEsUUFBQUMsQ0FBQSxNQUFBUSxDQUFBLENBQUFDLENBQUEsR0FBQWQsQ0FBQSxFQUFBYSxDQUFBLENBQUFiLENBQUEsR0FBQUksQ0FBQSxPQUFBWSxDQUFBLEdBQUFDLENBQUEsS0FBQWYsQ0FBQSxHQUFBSixDQUFBLFFBQUFNLENBQUEsTUFBQUosQ0FBQSxJQUFBQSxDQUFBLEdBQUFpQixDQUFBLE1BQUFiLENBQUEsTUFBQU4sQ0FBQSxFQUFBTSxDQUFBLE1BQUFKLENBQUEsRUFBQWEsQ0FBQSxDQUFBYixDQUFBLEdBQUFpQixDQUFBLEVBQUFaLENBQUEsY0FBQUgsQ0FBQSxJQUFBSixDQUFBLGFBQUFpQixDQUFBLFFBQUFILENBQUEsT0FBQVosQ0FBQSxxQkFBQUUsQ0FBQSxFQUFBUyxDQUFBLEVBQUFNLENBQUEsUUFBQVAsQ0FBQSxZQUFBUSxTQUFBLHVDQUFBTixDQUFBLFVBQUFELENBQUEsSUFBQUssQ0FBQSxDQUFBTCxDQUFBLEVBQUFNLENBQUEsR0FBQVosQ0FBQSxHQUFBTSxDQUFBLEVBQUFKLENBQUEsR0FBQVUsQ0FBQSxHQUFBcEIsQ0FBQSxHQUFBUSxDQUFBLE9BQUF4USxDQUFBLEdBQUEwUSxDQUFBLE1BQUFLLENBQUEsS0FBQVIsQ0FBQSxLQUFBQyxDQUFBLEdBQUFBLENBQUEsUUFBQUEsQ0FBQSxTQUFBUSxDQUFBLENBQUFiLENBQUEsUUFBQWdCLENBQUEsQ0FBQVgsQ0FBQSxFQUFBRSxDQUFBLEtBQUFNLENBQUEsQ0FBQWIsQ0FBQSxHQUFBTyxDQUFBLEdBQUFNLENBQUEsQ0FBQUMsQ0FBQSxHQUFBUCxDQUFBLGFBQUFHLENBQUEsTUFBQU4sQ0FBQSxRQUFBQyxDQUFBLEtBQUFILENBQUEsWUFBQUwsQ0FBQSxHQUFBTyxDQUFBLENBQUFGLENBQUEsV0FBQUwsQ0FBQSxHQUFBQSxDQUFBLENBQUEvSixJQUFBLENBQUFzSyxDQUFBLEVBQUFHLENBQUEsVUFBQVcsU0FBQSwyQ0FBQXJCLENBQUEsQ0FBQXNCLElBQUEsU0FBQXRCLENBQUEsRUFBQVUsQ0FBQSxHQUFBVixDQUFBLENBQUExYSxLQUFBLEVBQUFrYixDQUFBLFNBQUFBLENBQUEsb0JBQUFBLENBQUEsS0FBQVIsQ0FBQSxHQUFBTyxDQUFBLGVBQUFQLENBQUEsQ0FBQS9KLElBQUEsQ0FBQXNLLENBQUEsR0FBQUMsQ0FBQSxTQUFBRSxDQUFBLEdBQUFXLFNBQUEsdUNBQUFoQixDQUFBLGdCQUFBRyxDQUFBLE9BQUFELENBQUEsR0FBQXZRLENBQUEsY0FBQWdRLENBQUEsSUFBQWUsQ0FBQSxHQUFBQyxDQUFBLENBQUFiLENBQUEsUUFBQU8sQ0FBQSxHQUFBVCxDQUFBLENBQUFoSyxJQUFBLENBQUFrSyxDQUFBLEVBQUFhLENBQUEsT0FBQUUsQ0FBQSxrQkFBQWxCLENBQUEsSUFBQU8sQ0FBQSxHQUFBdlEsQ0FBQSxFQUFBd1EsQ0FBQSxNQUFBRSxDQUFBLEdBQUFWLENBQUEsY0FBQWEsQ0FBQSxtQkFBQXZiLEtBQUEsRUFBQTBhLENBQUEsRUFBQXNCLElBQUEsRUFBQVAsQ0FBQSxTQUFBZCxDQUFBLEVBQUFJLENBQUEsRUFBQUUsQ0FBQSxRQUFBRyxDQUFBLFFBQUFRLENBQUEsZ0JBQUFULFVBQUEsY0FBQWMsa0JBQUEsY0FBQUMsMkJBQUEsS0FBQXhCLENBQUEsR0FBQWpFLE1BQUEsQ0FBQTBGLGNBQUEsTUFBQWpCLENBQUEsTUFBQUwsQ0FBQSxJQUFBSCxDQUFBLENBQUFBLENBQUEsSUFBQUcsQ0FBQSxTQUFBUyxtQkFBQSxDQUFBWixDQUFBLE9BQUFHLENBQUEsaUNBQUFILENBQUEsR0FBQVUsQ0FBQSxHQUFBYywwQkFBQSxDQUFBcFAsU0FBQSxHQUFBcU8sU0FBQSxDQUFBck8sU0FBQSxHQUFBMkosTUFBQSxDQUFBNEUsTUFBQSxDQUFBSCxDQUFBLFlBQUFLLEVBQUE3USxDQUFBLFdBQUErTCxNQUFBLENBQUEyRixjQUFBLEdBQUEzRixNQUFBLENBQUEyRixjQUFBLENBQUExUixDQUFBLEVBQUF3UiwwQkFBQSxLQUFBeFIsQ0FBQSxDQUFBMlIsU0FBQSxHQUFBSCwwQkFBQSxFQUFBWixtQkFBQSxDQUFBNVEsQ0FBQSxFQUFBcVEsQ0FBQSx5QkFBQXJRLENBQUEsQ0FBQW9DLFNBQUEsR0FBQTJKLE1BQUEsQ0FBQTRFLE1BQUEsQ0FBQUQsQ0FBQSxHQUFBMVEsQ0FBQSxXQUFBdVIsaUJBQUEsQ0FBQW5QLFNBQUEsR0FBQW9QLDBCQUFBLEVBQUFaLG1CQUFBLENBQUFGLENBQUEsaUJBQUFjLDBCQUFBLEdBQUFaLG1CQUFBLENBQUFZLDBCQUFBLGlCQUFBRCxpQkFBQSxHQUFBQSxpQkFBQSxDQUFBSyxXQUFBLHdCQUFBaEIsbUJBQUEsQ0FBQVksMEJBQUEsRUFBQW5CLENBQUEsd0JBQUFPLG1CQUFBLENBQUFGLENBQUEsR0FBQUUsbUJBQUEsQ0FBQUYsQ0FBQSxFQUFBTCxDQUFBLGdCQUFBTyxtQkFBQSxDQUFBRixDQUFBLEVBQUFQLENBQUEsaUNBQUFTLG1CQUFBLENBQUFGLENBQUEsOERBQUFtQixZQUFBLFlBQUFBLGFBQUEsYUFBQUMsQ0FBQSxFQUFBdkIsQ0FBQSxFQUFBd0IsQ0FBQSxFQUFBbEIsQ0FBQTtBQUFBLFNBQUFELG9CQUFBNVEsQ0FBQSxFQUFBaVEsQ0FBQSxFQUFBRSxDQUFBLEVBQUFILENBQUEsUUFBQU8sQ0FBQSxHQUFBeEUsTUFBQSxDQUFBaUcsY0FBQSxRQUFBekIsQ0FBQSx1QkFBQXZRLENBQUEsSUFBQXVRLENBQUEsUUFBQUssbUJBQUEsWUFBQXFCLG1CQUFBalMsQ0FBQSxFQUFBaVEsQ0FBQSxFQUFBRSxDQUFBLEVBQUFILENBQUEsYUFBQUssRUFBQUosQ0FBQSxFQUFBRSxDQUFBLElBQUFTLG1CQUFBLENBQUE1USxDQUFBLEVBQUFpUSxDQUFBLFlBQUFqUSxDQUFBLGdCQUFBa1MsT0FBQSxDQUFBakMsQ0FBQSxFQUFBRSxDQUFBLEVBQUFuUSxDQUFBLFNBQUFpUSxDQUFBLEdBQUFNLENBQUEsR0FBQUEsQ0FBQSxDQUFBdlEsQ0FBQSxFQUFBaVEsQ0FBQSxJQUFBM2EsS0FBQSxFQUFBNmEsQ0FBQSxFQUFBZ0MsVUFBQSxHQUFBbkMsQ0FBQSxFQUFBb0MsWUFBQSxHQUFBcEMsQ0FBQSxFQUFBcUMsUUFBQSxHQUFBckMsQ0FBQSxNQUFBaFEsQ0FBQSxDQUFBaVEsQ0FBQSxJQUFBRSxDQUFBLElBQUFFLENBQUEsYUFBQUEsQ0FBQSxjQUFBQSxDQUFBLG1CQUFBTyxtQkFBQSxDQUFBNVEsQ0FBQSxFQUFBaVEsQ0FBQSxFQUFBRSxDQUFBLEVBQUFILENBQUE7QUFBQSxTQUFBOHlCLDJCQUFBN3lCLENBQUEsRUFBQWpRLENBQUEsUUFBQWdRLENBQUEseUJBQUFFLE1BQUEsSUFBQUQsQ0FBQSxDQUFBQyxNQUFBLENBQUFFLFFBQUEsS0FBQUgsQ0FBQSxxQkFBQUQsQ0FBQSxRQUFBcEksS0FBQSxDQUFBOGlDLE9BQUEsQ0FBQXo2QixDQUFBLE1BQUFELENBQUEsR0FBQTI2QiwyQkFBQSxDQUFBMTZCLENBQUEsTUFBQWpRLENBQUEsSUFBQWlRLENBQUEsdUJBQUFBLENBQUEsQ0FBQXJRLE1BQUEsSUFBQW9RLENBQUEsS0FBQUMsQ0FBQSxHQUFBRCxDQUFBLE9BQUE0NkIsRUFBQSxNQUFBQyxDQUFBLFlBQUFBLEVBQUEsZUFBQTdILENBQUEsRUFBQTZILENBQUEsRUFBQTE2QixDQUFBLFdBQUFBLEVBQUEsV0FBQXk2QixFQUFBLElBQUEzNkIsQ0FBQSxDQUFBclEsTUFBQSxLQUFBMFIsSUFBQSxXQUFBQSxJQUFBLE1BQUFoYyxLQUFBLEVBQUEyYSxDQUFBLENBQUEyNkIsRUFBQSxVQUFBNXFDLENBQUEsV0FBQUEsRUFBQWlRLENBQUEsVUFBQUEsQ0FBQSxLQUFBWSxDQUFBLEVBQUFnNkIsQ0FBQSxnQkFBQXg1QixTQUFBLGlKQUFBaEIsQ0FBQSxFQUFBYSxDQUFBLE9BQUFSLENBQUEsZ0JBQUFzeUIsQ0FBQSxXQUFBQSxFQUFBLElBQUFoekIsQ0FBQSxHQUFBQSxDQUFBLENBQUEvSixJQUFBLENBQUFnSyxDQUFBLE1BQUFFLENBQUEsV0FBQUEsRUFBQSxRQUFBRixDQUFBLEdBQUFELENBQUEsQ0FBQTg2QixJQUFBLFdBQUE1NUIsQ0FBQSxHQUFBakIsQ0FBQSxDQUFBcUIsSUFBQSxFQUFBckIsQ0FBQSxLQUFBalEsQ0FBQSxXQUFBQSxFQUFBaVEsQ0FBQSxJQUFBUyxDQUFBLE9BQUFMLENBQUEsR0FBQUosQ0FBQSxLQUFBWSxDQUFBLFdBQUFBLEVBQUEsVUFBQUssQ0FBQSxZQUFBbEIsQ0FBQSxjQUFBQSxDQUFBLDhCQUFBVSxDQUFBLFFBQUFMLENBQUE7QUFBQSxTQUFBczZCLDRCQUFBMTZCLENBQUEsRUFBQWlCLENBQUEsUUFBQWpCLENBQUEsMkJBQUFBLENBQUEsU0FBQTg2QixpQkFBQSxDQUFBOTZCLENBQUEsRUFBQWlCLENBQUEsT0FBQWxCLENBQUEsTUFBQTVKLFFBQUEsQ0FBQUgsSUFBQSxDQUFBZ0ssQ0FBQSxFQUFBMkUsS0FBQSw2QkFBQTVFLENBQUEsSUFBQUMsQ0FBQSxDQUFBKzZCLFdBQUEsS0FBQWg3QixDQUFBLEdBQUFDLENBQUEsQ0FBQSs2QixXQUFBLENBQUExeEMsSUFBQSxhQUFBMFcsQ0FBQSxjQUFBQSxDQUFBLEdBQUFwSSxLQUFBLENBQUFxakMsSUFBQSxDQUFBaDdCLENBQUEsb0JBQUFELENBQUEsK0NBQUFwWCxJQUFBLENBQUFvWCxDQUFBLElBQUErNkIsaUJBQUEsQ0FBQTk2QixDQUFBLEVBQUFpQixDQUFBO0FBQUEsU0FBQTY1QixrQkFBQTk2QixDQUFBLEVBQUFpQixDQUFBLGFBQUFBLENBQUEsSUFBQUEsQ0FBQSxHQUFBakIsQ0FBQSxDQUFBclEsTUFBQSxNQUFBc1IsQ0FBQSxHQUFBakIsQ0FBQSxDQUFBclEsTUFBQSxZQUFBSSxDQUFBLE1BQUFtUSxDQUFBLEdBQUF2SSxLQUFBLENBQUFzSixDQUFBLEdBQUFsUixDQUFBLEdBQUFrUixDQUFBLEVBQUFsUixDQUFBLElBQUFtUSxDQUFBLENBQUFuUSxDQUFBLElBQUFpUSxDQUFBLENBQUFqUSxDQUFBLFVBQUFtUSxDQUFBO0FBREE7QUFDQTtBQUNBOztBQUUrQztBQUNRO0FBQ007QUFDTztBQUdnQjtBQUNEO0FBQ3ZCO0FBQUEsSUFJdkNvMEIsaUJBQWlCO0VBNk5wQyxTQUFBQSxrQkFBQSxFQUFjO0lBQUEzdkMsaUZBQUEsT0FBQTJ2QyxpQkFBQTtJQUNaLE1BQU0sSUFBSXBxQyxLQUFLLENBQUMsa0VBQWtFLENBQUM7RUFDckY7RUFBQyxPQUFBaEYsOEVBQUEsQ0FBQW92QyxpQkFBQTtJQUFBbnZDLEdBQUE7SUFBQUUsS0FBQSxFQTlORCxTQUFPK3hDLDJCQUEyQkEsQ0FBQ3RDLHNCQUE4QyxFQUFrQjtNQUNqRyxJQUFNalcsV0FBMkIsR0FBRyxJQUFJdjZCLDREQUFjLENBQUMsQ0FBQztNQUN4RCxJQUFPNGhDLFVBQVUsR0FBZ0I0TyxzQkFBc0IsQ0FBaEQ1TyxVQUFVO1FBQUVQLFVBQVUsR0FBSW1QLHNCQUFzQixDQUFwQ25QLFVBQVU7TUFDN0IsSUFBTXlWLHFDQUFxQyxHQUFHLFNBQXhDQSxxQ0FBcUNBLENBQUlyTSxPQUFvQyxFQUFLO1FBQ3RGO1FBQ0E7UUFDQSxJQUFNc00sTUFBTSxHQUFHdE0sT0FBTyxDQUFDaEosdUJBQXVCLEdBQUcsSUFBSWtWLDhFQUE2QixDQUFDLENBQUM7UUFFcEZwYyxXQUFXLENBQUMxNEIsR0FBRyxDQUFDLElBQUk5Qix3REFBVSxDQUFDO1VBQUEsT0FBTWczQyxNQUFNLENBQUNDLFNBQVMsQ0FBQyxDQUFDO1FBQUEsRUFBQyxDQUFDO1FBQ3pEemMsV0FBVyxDQUFDMTRCLEdBQUcsQ0FBQzRvQyxPQUFPLENBQUMvSSxzQkFBc0IsR0FBRyxJQUFJbVYsNkRBQXNCLENBQUNFLE1BQU0sQ0FBQyxDQUFDO01BQ3RGLENBQUM7TUFFRCxJQUFpQnRFLGtCQUFrQixHQUFrRDdRLFVBQVUsQ0FBeEZMLFFBQVE7UUFBd0MwViwwQkFBMEIsR0FBSXJWLFVBQVUsQ0FBMUROLGdCQUFnQjtNQUVyRCxJQUFJbVIsa0JBQWtCLElBQUl3RSwwQkFBMEIsRUFBRTtRQUNwREgscUNBQXFDLENBQUNsVixVQUFVLENBQUM7TUFDbkQ7TUFFQSxJQUFpQmlSLGtCQUFrQixHQUFrRHhSLFVBQVUsQ0FBeEZFLFFBQVE7UUFBd0MyViwwQkFBMEIsR0FBSTdWLFVBQVUsQ0FBMURDLGdCQUFnQjtNQUVyRCxJQUFJdVIsa0JBQWtCLElBQUlxRSwwQkFBMEIsRUFBRTtRQUNwREoscUNBQXFDLENBQUN6VixVQUFVLENBQUM7TUFDbkQ7TUFFQSxPQUFPOUcsV0FBVztJQUNwQjtFQUFDO0lBQUExNUIsR0FBQTtJQUFBRSxLQUFBO01BQUEsSUFBQW8yQywrQkFBQSxHQUFBNzNCLG1GQUFBLGNBQUFoQyxZQUFBLEdBQUFFLENBQUEsQ0FFRCxTQUFBcU8sU0FBNEMya0Isc0JBQThDO1FBQUEsSUFBQTVPLFVBQUEsRUFBQVAsVUFBQSxFQUFBK1Ysa0JBQUEsRUFBQUMsOEJBQUEsRUFBQUMsdUJBQUE7UUFBQSxPQUFBaDZCLFlBQUEsR0FBQUMsQ0FBQSxXQUFBeU8sU0FBQTtVQUFBLGtCQUFBQSxTQUFBLENBQUFwUSxDQUFBO1lBQUE7Y0FDakZnbUIsVUFBVSxHQUFnQjRPLHNCQUFzQixDQUFoRDVPLFVBQVUsRUFBRVAsVUFBVSxHQUFJbVAsc0JBQXNCLENBQXBDblAsVUFBVTtjQUN2QitWLGtCQUFrQixHQUFHLFNBQXJCQSxrQkFBa0JBLENBQUl2eUIsS0FBa0MsRUFBSztnQkFDakUsSUFBSUEsS0FBSyxDQUFDNGMsdUJBQXVCLEVBQUU7a0JBQ2pDLElBQUk1YyxLQUFLLENBQUM4YyxzQkFBc0IsQ0FBQ3QyQixNQUFNLEVBQUU7b0JBQUEsSUFBQWlqQyxTQUFBLEdBQUFDLDBCQUFBLENBQ0gxcEIsS0FBSyxDQUFDOGMsc0JBQXNCO3NCQUFBNk0sS0FBQTtvQkFBQTtzQkFBaEUsS0FBQUYsU0FBQSxDQUFBRyxDQUFBLE1BQUFELEtBQUEsR0FBQUYsU0FBQSxDQUFBMXlCLENBQUEsSUFBQW1CLElBQUEsR0FBa0U7d0JBQUEsSUFBdkR3NkIscUJBQXFCLEdBQUEvSSxLQUFBLENBQUF6dEMsS0FBQTt3QkFDOUI4akIsS0FBSyxDQUFDNGMsdUJBQXVCLENBQUMrVixXQUFXLENBQUM7MEJBQ3hDbHZDLElBQUksRUFBRXN1Qyw4RkFBb0IsQ0FBQ2EsWUFBWTswQkFDdkM1bUMsSUFBSSxFQUFFMG1DO3dCQUNSLENBQUMsQ0FBQztzQkFDSjtvQkFBQyxTQUFBdk4sR0FBQTtzQkFBQXNFLFNBQUEsQ0FBQTdpQyxDQUFBLENBQUF1K0IsR0FBQTtvQkFBQTtzQkFBQXNFLFNBQUEsQ0FBQWh5QixDQUFBO29CQUFBO2tCQUNILENBQUMsTUFBTTtvQkFDTDtvQkFDQXVJLEtBQUssQ0FBQzRjLHVCQUF1QixDQUFDK1YsV0FBVyxDQUFDO3NCQUN4Q2x2QyxJQUFJLEVBQUVzdUMsOEZBQW9CLENBQUNhLFlBQVk7c0JBQ3ZDNW1DLElBQUksRUFBRTtvQkFDUixDQUFDLENBQUM7a0JBQ0o7Z0JBQ0Y7Y0FDRixDQUFDO2NBRUR1bUMsa0JBQWtCLENBQUN4VixVQUFVLENBQUM7Y0FDOUJ3VixrQkFBa0IsQ0FBQy9WLFVBQVUsQ0FBQztjQUV4QmdXLDhCQUE4QjtnQkFBQSxJQUFBM3ZDLElBQUEsR0FBQTRYLG1GQUFBLGNBQUFoQyxZQUFBLEdBQUFFLENBQUEsQ0FBRyxTQUFBMEMsU0FBTXN3QixzQkFBOEM7a0JBQUEsSUFBQWtILHNDQUFBLEVBQUE5VixVQUFBLEVBQUFQLFVBQUE7a0JBQUEsT0FBQS9qQixZQUFBLEdBQUFDLENBQUEsV0FBQTRDLFNBQUE7b0JBQUEsa0JBQUFBLFNBQUEsQ0FBQXZFLENBQUE7c0JBQUE7d0JBQ3pGO3dCQUNNODdCLHNDQUFzQzswQkFBQSxJQUFBenZDLEtBQUEsR0FBQXFYLG1GQUFBLGNBQUFoQyxZQUFBLEdBQUFFLENBQUEsQ0FBRyxTQUFBK0IsUUFBTWtyQixPQUFvQzs0QkFBQSxJQUFBa04sYUFBQSxFQUFBQyxxQkFBQSxFQUFBQyw0QkFBQTs0QkFBQSxPQUFBdjZCLFlBQUEsR0FBQUMsQ0FBQSxXQUFBbUMsUUFBQTs4QkFBQSxrQkFBQUEsUUFBQSxDQUFBOUQsQ0FBQTtnQ0FBQTtrQ0FDdEUrN0IsYUFBYSxHQUFvR2xOLE9BQU8sQ0FBbElsSixRQUFRLEVBQW1DcVcscUJBQXFCLEdBQTJEbk4sT0FBTyxDQUF6R25KLGdCQUFnQixFQUFrRHVXLDRCQUE0QixHQUFJcE4sT0FBTyxDQUFoRWhKLHVCQUF1QjtrQ0FBQSxNQUU1RmtXLGFBQWEsSUFBSUMscUJBQXFCLElBQUlDLDRCQUE0QjtvQ0FBQW40QixRQUFBLENBQUE5RCxDQUFBO29DQUFBO2tDQUFBO2tDQUN4RSs3QixhQUFhLENBQUNHLFNBQVMsR0FBRyxJQUFJL3BDLHFCQUFxQixDQUFDOHBDLDRCQUE0QixFQUFFO29DQUFDOXlDLElBQUksS0FBQWhCLE1BQUEsQ0FBSzZ6QyxxQkFBcUIsQ0FBQ2g1QixJQUFJO2tDQUFxQixDQUFDLENBQUM7a0NBQUMsT0FBQWMsUUFBQSxDQUFBL0MsQ0FBQSxJQUV2SSxJQUFJd0MsT0FBTyxDQUFPLFVBQUEySCxPQUFPLEVBQUk7b0NBQ2xDK3dCLDRCQUE0QixDQUFDaHZDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxVQUFBK25DLEtBQUEsRUFBbUM7c0NBQUEsSUFBM0JwOEIsT0FBTyxHQUFBbzhCLEtBQUEsQ0FBYi8vQixJQUFJO3NDQUM3RCxJQUFJMkQsT0FBTyxDQUFDbE0sSUFBSSxLQUFLc3VDLDhGQUFvQixDQUFDbUIsa0JBQWtCLEVBQUU7d0NBQzVEanhCLE9BQU8sQ0FBQyxDQUFDO3NDQUNYO29DQUNGLENBQUMsRUFBRTtzQ0FBQ2t4QixJQUFJLEVBQUU7b0NBQUksQ0FBQyxDQUFDO2tDQUNsQixDQUFDLENBQUM7Z0NBQUE7a0NBQUEsT0FBQXQ0QixRQUFBLENBQUEvQyxDQUFBLElBR0d3QyxPQUFPLENBQUMySCxPQUFPLENBQUMsQ0FBQzs4QkFBQTs0QkFBQSxHQUFBdkgsT0FBQTswQkFBQSxDQUN6QjswQkFBQSxnQkFoQkttNEIsc0NBQXNDQSxDQUFBL3JCLEdBQUE7NEJBQUEsT0FBQTFqQixLQUFBLENBQUErWCxLQUFBLE9BQUEzSyxTQUFBOzBCQUFBO3dCQUFBO3dCQWtCckN1c0IsVUFBVSxHQUFnQjRPLHNCQUFzQixDQUFoRDVPLFVBQVUsRUFBRVAsVUFBVSxHQUFJbVAsc0JBQXNCLENBQXBDblAsVUFBVTt3QkFBQWxoQixTQUFBLENBQUF2RSxDQUFBO3dCQUFBLE9BRXZCdUQsT0FBTyxDQUFDd3hCLEdBQUcsQ0FBQyxDQUFDK0csc0NBQXNDLENBQUM5VixVQUFVLENBQUMsRUFBRThWLHNDQUFzQyxDQUFDclcsVUFBVSxDQUFDLENBQUMsQ0FBQztzQkFBQTt3QkFBQSxPQUFBbGhCLFNBQUEsQ0FBQXhELENBQUE7b0JBQUE7a0JBQUEsR0FBQXVELFFBQUE7Z0JBQUEsQ0FDNUg7Z0JBQUEsZ0JBdkJLbTNCLDhCQUE4QkEsQ0FBQTlyQixHQUFBO2tCQUFBLE9BQUE3akIsSUFBQSxDQUFBc1ksS0FBQSxPQUFBM0ssU0FBQTtnQkFBQTtjQUFBO2NBeUI5QmlpQyx1QkFBdUI7Z0JBQUEsSUFBQS9GLEtBQUEsR0FBQWp5QixtRkFBQSxjQUFBaEMsWUFBQSxHQUFBRSxDQUFBLENBQUcsU0FBQW1FLFNBQU02dUIsc0JBQThDO2tCQUFBLElBQUF5SCwrQkFBQSxFQUFBclcsVUFBQSxFQUFBUCxVQUFBLEVBQUE2VyxPQUFBO2tCQUFBLE9BQUE1NkIsWUFBQSxHQUFBQyxDQUFBLFdBQUF5RSxTQUFBO29CQUFBLGtCQUFBQSxTQUFBLENBQUFwRyxDQUFBO3NCQUFBO3dCQUM1RXE4QiwrQkFBK0IsR0FBRyxTQUFsQ0EsK0JBQStCQSxDQUFJeE4sT0FBb0MsRUFBSzswQkFDaEYsSUFBaUJrTixhQUFhLEdBQW9HbE4sT0FBTyxDQUFsSWxKLFFBQVE7NEJBQW1DcVcscUJBQXFCLEdBQTJEbk4sT0FBTyxDQUF6R25KLGdCQUFnQjs0QkFBa0R1Vyw0QkFBNEIsR0FBSXBOLE9BQU8sQ0FBaEVoSix1QkFBdUI7MEJBRWhHLElBQUlrVyxhQUFhLElBQUlDLHFCQUFxQixJQUFJQyw0QkFBNEIsRUFBRTs0QkFDMUU7NEJBQ0E7NEJBQ0EsSUFBTU0sc0JBQXNCLEdBQUdSLGFBQWEsQ0FBQzdwQyxvQkFBb0IsQ0FBQyxDQUFDOzRCQUVuRSxPQUFPLElBQUlxUixPQUFPLENBQU8sVUFBQTJILE9BQU8sRUFBSTs4QkFDbEMrd0IsNEJBQTRCLENBQUNodkMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLFVBQUFtcEMsS0FBQSxFQUFtQztnQ0FBQSxJQUEzQng5QixPQUFPLEdBQUF3OUIsS0FBQSxDQUFibmhDLElBQUk7Z0NBQzdELElBQUkyRCxPQUFPLENBQUNsTSxJQUFJLEtBQUtzdUMsOEZBQW9CLENBQUNtQixrQkFBa0IsRUFBRTtrQ0FDNURqeEIsT0FBTyxDQUFDLENBQUM7Z0NBQ1g7OEJBQ0YsQ0FBQyxFQUFFO2dDQUFDa3hCLElBQUksRUFBRTs4QkFBSSxDQUFDLENBQUM7OEJBRWhCSCw0QkFBNEIsQ0FBQ0wsV0FBVyxDQUN0QztnQ0FDRWx2QyxJQUFJLEVBQUVzdUMsOEZBQW9CLENBQUN3QixpQkFBaUI7Z0NBQzVDdm5DLElBQUksRUFBRTtrQ0FDSnduQyxNQUFNLEVBQUVGLHNCQUFzQixDQUFDRyxRQUFRO2tDQUN2Q0MsSUFBSSxFQUFFSixzQkFBc0IsQ0FBQ3I2QjtnQ0FDL0I7OEJBQ0YsQ0FBQyxFQUNEO2dDQUFDMDZCLFFBQVEsRUFBRSxDQUFDTCxzQkFBc0IsQ0FBQ0csUUFBUSxFQUFFSCxzQkFBc0IsQ0FBQ3I2QixRQUFROzhCQUFDLENBQy9FLENBQUM7NEJBQ0gsQ0FBQyxDQUFDOzBCQUNKOzBCQUVBLE9BQU9xQixPQUFPLENBQUMySCxPQUFPLENBQUMsQ0FBQzt3QkFDMUIsQ0FBQzt3QkFFTThhLFVBQVUsR0FBZ0I0TyxzQkFBc0IsQ0FBaEQ1TyxVQUFVLEVBQUVQLFVBQVUsR0FBSW1QLHNCQUFzQixDQUFwQ25QLFVBQVU7d0JBQ3ZCNlcsT0FBd0IsR0FBRyxFQUFFO3dCQUVuQyxJQUFJdFcsVUFBVSxDQUFDTCxRQUFRLElBQUlLLFVBQVUsQ0FBQ0gsdUJBQXVCLEVBQUU7MEJBQzdEeVcsT0FBTyxDQUFDN3RDLElBQUksQ0FBQzR0QywrQkFBK0IsQ0FBQ3JXLFVBQVUsQ0FBQyxDQUFDO3dCQUMzRDt3QkFFQSxJQUFJUCxVQUFVLENBQUNFLFFBQVEsSUFBSUYsVUFBVSxDQUFDSSx1QkFBdUIsRUFBRTswQkFDN0R5VyxPQUFPLENBQUM3dEMsSUFBSSxDQUFDNHRDLCtCQUErQixDQUFDNVcsVUFBVSxDQUFDLENBQUM7d0JBQzNEO3dCQUFDcmYsU0FBQSxDQUFBcEcsQ0FBQTt3QkFBQSxPQUVLdUQsT0FBTyxDQUFDd3hCLEdBQUcsQ0FBQ3VILE9BQU8sQ0FBQztzQkFBQTt3QkFBQSxPQUFBbDJCLFNBQUEsQ0FBQXJGLENBQUE7b0JBQUE7a0JBQUEsR0FBQWdGLFFBQUE7Z0JBQUEsQ0FDM0I7Z0JBQUEsZ0JBNUNLMjFCLHVCQUF1QkEsQ0FBQXByQixHQUFBO2tCQUFBLE9BQUFxbEIsS0FBQSxDQUFBdnhCLEtBQUEsT0FBQTNLLFNBQUE7Z0JBQUE7Y0FBQTtjQUFBLEtBOEN6QjVQLHNFQUFpQixDQUFDOEksZ0NBQWdDO2dCQUFBeWQsU0FBQSxDQUFBcFEsQ0FBQTtnQkFBQTtjQUFBO2NBQUFvUSxTQUFBLENBQUFwUSxDQUFBO2NBQUEsT0FFOUN5N0IsOEJBQThCLENBQUM3RyxzQkFBc0IsQ0FBQztZQUFBO2NBQUEsT0FBQXhrQixTQUFBLENBQUFyUCxDQUFBO1lBQUE7Y0FBQXFQLFNBQUEsQ0FBQXBRLENBQUE7Y0FBQSxPQU14RDA3Qix1QkFBdUIsQ0FBQzlHLHNCQUFzQixDQUFDO1lBQUE7Y0FBQSxPQUFBeGtCLFNBQUEsQ0FBQXJQLENBQUE7VUFBQTtRQUFBLEdBQUFrUCxRQUFBO01BQUEsQ0FDdEQ7TUFBQSxTQXhHWXNuQiw4QkFBOEJBLENBQUFwekIsRUFBQTtRQUFBLE9BQUFvM0IsK0JBQUEsQ0FBQW4zQixLQUFBLE9BQUEzSyxTQUFBO01BQUE7TUFBQSxPQUE5Qjg5Qiw4QkFBOEI7SUFBQTtFQUFBO0lBQUF0eUMsR0FBQTtJQUFBRSxLQUFBLEVBMEczQyxTQUFPc3lDLHVDQUF1Q0EsQ0FDNUN0YyxNQUFtQixFQUNuQjdDLDRCQUEyRSxFQUMzRUMsNEJBQTBFLEVBQ1g7TUFDL0QsSUFBTW1mLGlCQUFpQixHQUFHLElBQUk3akMsV0FBVyxDQUFDLENBQUM7TUFDM0MsSUFBTThxQixXQUEyQixHQUFHLElBQUl2NkIsNERBQWMsQ0FBQyxDQUFDO01BRXhEKzJCLE1BQU0sQ0FBQ3BTLFNBQVMsQ0FBQyxDQUFDLENBQUMvUyxPQUFPLENBQUMsVUFBQWlULEtBQUssRUFBSTtRQUNsQyxJQUFNakcsSUFBMEIsR0FBR2lHLEtBQUssQ0FBQ2pHLElBQTRCO1FBRXJFLFFBQVFBLElBQUk7VUFDVixLQUFLLE9BQU87WUFBRTtjQUNaLElBQUlzViw0QkFBNEIsRUFBRTtnQkFDaEMsSUFBTXVrQixpQ0FBdUYsR0FBRyxTQUExRkEsaUNBQXVGQSxDQUFJcEQsS0FBSyxFQUFFcUQsVUFBVSxFQUFLO2tCQUNySHhrQiw0QkFBNEIsQ0FBQ3JQLEtBQUssRUFBRXd3QixLQUFLLEVBQUVxRCxVQUFVLENBQUM7Z0JBQ3hELENBQUM7Z0JBRUQsSUFBTTlXLFVBQVUsR0FBRy9jLEtBQThCO2dCQUNqRCxJQUFNOHpCLFdBQVcsR0FBRyxJQUFJQyxlQUFlLENBQUM7a0JBQUNkLFNBQVMsRUFBRVc7Z0JBQWlDLENBQUMsQ0FBQztnQkFDdkYsSUFBTUksU0FBUyxHQUFHLElBQUluckMseUJBQXlCLENBQUM7a0JBQUNtWCxLQUFLLEVBQUUrYztnQkFBVSxDQUFDLENBQUM7Z0JBQ3BFLElBQU1rWCxTQUFTLEdBQUcsSUFBSW5yQyx5QkFBeUIsQ0FBQztrQkFBQ2lSLElBQUksRUFBRWdqQixVQUFVLENBQUNoakI7Z0JBQUksQ0FBQyxDQUFDO2dCQUN4RSxJQUFNeTVCLE1BQU0sR0FBR1EsU0FBUyxDQUFDUCxRQUFRO2dCQUNqQyxJQUFNQyxJQUFJLEdBQUdPLFNBQVMsQ0FBQ2g3QixRQUFRO2dCQUUvQnU2QixNQUFNLENBQUNVLFdBQVcsQ0FBQ0osV0FBVyxDQUFDLENBQUNLLE1BQU0sQ0FBQ1QsSUFBSSxDQUFDO2dCQUU1Q2pGLGlCQUFpQixDQUFDOW1CLFFBQVEsQ0FBQ3NzQixTQUFTLENBQUM7Z0JBQ3JDdmUsV0FBVyxDQUFDMTRCLEdBQUcsQ0FDYixJQUFJOUIsd0RBQVUsQ0FBQyxZQUFNO2tCQUNuQnV6QyxpQkFBaUIsQ0FBQzJGLFdBQVcsQ0FBQ0gsU0FBUyxDQUFDO2dCQUMxQyxDQUFDLENBQ0gsQ0FBQztjQUNILENBQUMsTUFBTTtnQkFDTHhGLGlCQUFpQixDQUFDOW1CLFFBQVEsQ0FBQzNILEtBQUssQ0FBQztjQUNuQztjQUVBO1lBQ0Y7VUFFQSxLQUFLLE9BQU87WUFBRTtjQUNaLElBQUlzUCw0QkFBNEIsRUFBRTtnQkFDaEMsSUFBTXNrQixrQ0FBcUYsR0FBRyxTQUF4RkEsa0NBQXFGQSxDQUFJcEQsS0FBSyxFQUFFcUQsVUFBVSxFQUFLO2tCQUNuSHZrQiw0QkFBNEIsQ0FBQ3RQLEtBQUssRUFBRXd3QixLQUFLLEVBQUVxRCxVQUFVLENBQUM7Z0JBQ3hELENBQUM7Z0JBRUQsSUFBTXJYLFVBQVUsR0FBR3hjLEtBQThCO2dCQUNqRCxJQUFNOHpCLFlBQVcsR0FBRyxJQUFJQyxlQUFlLENBQUM7a0JBQUNkLFNBQVMsRUFBRVc7Z0JBQWlDLENBQUMsQ0FBQztnQkFDdkYsSUFBTUksVUFBUyxHQUFHLElBQUluckMseUJBQXlCLENBQUM7a0JBQUNtWCxLQUFLLEVBQUV3YztnQkFBVSxDQUFDLENBQUM7Z0JBQ3BFLElBQU15WCxVQUFTLEdBQUcsSUFBSW5yQyx5QkFBeUIsQ0FBQztrQkFBQ2lSLElBQUksRUFBRXlpQixVQUFVLENBQUN6aUI7Z0JBQUksQ0FBQyxDQUFDO2dCQUN4RSxJQUFNeTVCLE9BQU0sR0FBR1EsVUFBUyxDQUFDUCxRQUFRO2dCQUNqQyxJQUFNQyxLQUFJLEdBQUdPLFVBQVMsQ0FBQ2g3QixRQUFRO2dCQUUvQnU2QixPQUFNLENBQUNVLFdBQVcsQ0FBQ0osWUFBVyxDQUFDLENBQUNLLE1BQU0sQ0FBQ1QsS0FBSSxDQUFDO2dCQUU1Q2pGLGlCQUFpQixDQUFDOW1CLFFBQVEsQ0FBQ3NzQixVQUFTLENBQUM7Z0JBRXJDLElBQU16MEIsV0FBVyxHQUFHLElBQUk1VSxXQUFXLENBQUMsQ0FBQztnQkFDckMsSUFBTXlwQyxXQUFXLEdBQUcsSUFBSUMsS0FBSyxDQUFDLENBQUM7Z0JBRS9COTBCLFdBQVcsQ0FBQ21JLFFBQVEsQ0FBQzNILEtBQUssQ0FBQztnQkFDM0JxMEIsV0FBVyxDQUFDbGYsU0FBUyxHQUFHM1YsV0FBVztnQkFDbkNyVixRQUFRLENBQUM4USxJQUFJLENBQUNzNUIsV0FBVyxDQUFDRixXQUFXLENBQUM7Z0JBQ3RDM2UsV0FBVyxDQUFDMTRCLEdBQUcsQ0FDYixJQUFJOUIsd0RBQVUsQ0FBQyxZQUFNO2tCQUNuQnV6QyxpQkFBaUIsQ0FBQzJGLFdBQVcsQ0FBQ0gsVUFBUyxDQUFDO2tCQUN4QzlwQyxRQUFRLENBQUM4USxJQUFJLENBQUN1NUIsV0FBVyxDQUFDSCxXQUFXLENBQUM7Z0JBQ3hDLENBQUMsQ0FDSCxDQUFDO2NBQ0gsQ0FBQyxNQUFNO2dCQUNMNUYsaUJBQWlCLENBQUM5bUIsUUFBUSxDQUFDM0gsS0FBSyxDQUFDO2NBQ25DO2NBRUE7WUFDRjtVQUVBO1lBQ0VuUixtRUFBaUIsQ0FBQ2tMLElBQUksQ0FBQztRQUMzQjtNQUNGLENBQUMsQ0FBQztNQUVGLE9BQU87UUFDTDAwQixpQkFBaUIsRUFBakJBLGlCQUFpQjtRQUNqQi9ZLFdBQVcsRUFBWEE7TUFDRixDQUFDO0lBQ0g7RUFBQztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzNPSDtBQUNBO0FBQ0E7QUFGQSxJQVFxQi9ILG9CQUFvQjtFQUFBLFNBQUFBLHFCQUFBO0lBQUFueUIsaUZBQUEsT0FBQW15QixvQkFBQTtFQUFBO0VBQUEsT0FBQTV4Qiw4RUFBQSxDQUFBNHhCLG9CQUFBO0lBQUEzeEIsR0FBQTtJQUFBRSxLQUFBLEVBQ3ZDLFNBQU9nOUIsaUNBQWlDQSxDQUFtQ21ZLElBQXVCLEVBQUVqaUMsSUFBOEIsRUFBRTtNQUNsSSxJQUFJLE9BQU9BLElBQUksS0FBSyxVQUFVLEVBQUU7UUFDOUIsT0FBTztVQUNMK29CLEtBQUssRUFBRSxLQUFLO1VBQ1pDLGdCQUFnQixnQkFBQWw1QixNQUFBLENBQWdCbXlDLElBQUksMERBQUFueUMsTUFBQSxDQUFBK1cseUVBQUEsQ0FBOEQ3RyxJQUFJO1FBQ3hHLENBQUM7TUFDSDtNQUVBLElBQUlBLElBQUksQ0FBQzVJLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDckIsT0FBTztVQUNMMnhCLEtBQUssRUFBRSxLQUFLO1VBQ1pDLGdCQUFnQixnQkFBQWw1QixNQUFBLENBQWdCbXlDLElBQUksa0ZBQUFueUMsTUFBQSxDQUErRWtRLElBQUksQ0FBQzVJLE1BQU07UUFDaEksQ0FBQztNQUNIO01BRUEsT0FBTztRQUNMMnhCLEtBQUssRUFBRSxJQUFJO1FBQ1hDLGdCQUFnQixFQUFFO01BQ3BCLENBQUM7SUFDSDtFQUFDO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM1Qkg7QUFDQTtBQUNBOztBQUV3RDtBQUNLO0FBQ0c7QUFDQTtBQUNxQztBQUNsQjtBQUNBO0FBRTVFLElBQU1rWSxTQUFTLEdBQUd4NUIsTUFBTSxDQUFDLENBQUM7QUFBQyxJQUlidTVCLHlCQUF5QjtFQW1HNUMsU0FBQUEsMEJBQUEsRUFBc0I7SUFBQTcwQyxpRkFBQSxPQUFBNjBDLHlCQUFBO0lBQ3BCLE1BQU0sSUFBSXR2QyxLQUFLLENBQUMsMEVBQTBFLENBQUM7RUFDN0Y7RUFBQyxPQUFBaEYsOEVBQUEsQ0FBQXMwQyx5QkFBQTtJQUFBcjBDLEdBQUE7SUFBQUUsS0FBQSxFQTNFRCxTQUFPNDBDLCtCQUErQkEsQ0FBQ3h1QixLQUFpQixFQUEyQjtNQUNqRixRQUFRQSxLQUFLO1FBQ1gsS0FBSzBhLDBFQUFVLENBQUNHLElBQUk7VUFDbEIsT0FBT2tULHlCQUF5QixDQUFDdUUseUJBQXlCLENBQUN6WCxJQUFJLENBQUMwWCxNQUFNOztRQUV4RTtRQUNBLEtBQUs3WCwwRUFBVSxDQUFDSSxHQUFHO1VBQ2pCLE9BQU9oN0IsU0FBUztRQUVsQjtVQUNFeU0sbUVBQWlCLENBQUN5VCxLQUFLLENBQUM7TUFDNUI7SUFDRjtFQUFDO0lBQUF0bUIsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBTzIwQyw0QkFBNEJBLENBQUEsRUFBZ0I7TUFDakQsT0FBT1IseUJBQXlCLENBQUN5RSxlQUFlLENBQUNELE1BQU07SUFDekQ7RUFBQztJQUFBNzRDLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQU9pMUMsK0JBQStCQSxDQUFDN3VCLEtBQWlCLEVBQTJCO01BQ2pGLFFBQVFBLEtBQUs7UUFDWCxLQUFLbWIsMEVBQVUsQ0FBQ0csSUFBSTtVQUNsQixJQUFJeVMseUJBQXlCLENBQUMwRSxTQUFTLEVBQUU7WUFDdkMsT0FBTzFFLHlCQUF5QixDQUFDMkUseUJBQXlCLENBQUNILE1BQU07VUFDbkU7VUFFQSxPQUFPeEUseUJBQXlCLENBQUM0RSw0QkFBNEIsQ0FBQ3JYLElBQUksQ0FBQ2lYLE1BQU07UUFFM0UsS0FBS3BYLDBFQUFVLENBQUNJLEdBQUc7VUFDakIsT0FBT3dTLHlCQUF5QixDQUFDNEUsNEJBQTRCLENBQUNwWCxHQUFHLENBQUNnWCxNQUFNO1FBRTFFLEtBQUtwWCwwRUFBVSxDQUFDSyxHQUFHO1VBQ2pCLE9BQU91Uyx5QkFBeUIsQ0FBQzRFLDRCQUE0QixDQUFDblgsR0FBRyxDQUFDK1csTUFBTTtRQUUxRTtVQUNFaG1DLG1FQUFpQixDQUFDeVQsS0FBSyxDQUFDO01BQzVCO0lBQ0Y7RUFBQztJQUFBdG1CLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQU8rMEMsOEJBQThCQSxDQUFDM3VCLEtBQWlCLEVBQXNCO01BQzNFLElBQUtBLEtBQUssS0FBS21iLDBFQUFVLENBQUNHLElBQUksSUFBS3lTLHlCQUF5QixDQUFDNkUsZ0JBQWdCLEVBQUU7UUFDN0U3RSx5QkFBeUIsQ0FBQzhFLGdDQUFnQyxHQUFHOUUseUJBQXlCLENBQUMrRSxxQ0FBcUM7UUFFNUgsT0FBTzlFLFNBQVM7TUFDbEI7TUFFQSxPQUFPRCx5QkFBeUIsQ0FBQ3lFLGVBQWUsQ0FBQ0QsTUFBTTtJQUN6RDtFQUFDO0lBQUE3NEMsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBT2sxQywrQkFBK0JBLENBQUM5dUIsS0FBaUIsRUFBMkI7TUFDakYsUUFBUUEsS0FBSztRQUNYLEtBQUttYiwwRUFBVSxDQUFDRyxJQUFJO1VBQUU7WUFDcEIsSUFBSXlTLHlCQUF5QixDQUFDMEUsU0FBUyxFQUFFO2NBQ3ZDLE9BQU8xRSx5QkFBeUIsQ0FBQ2dGLHlCQUF5QixDQUFDUixNQUFNO1lBQ25FO1lBRUEsT0FBT3hFLHlCQUF5QixDQUFDaUYsNEJBQTRCLENBQUMxWCxJQUFJLENBQUNpWCxNQUFNO1VBQzNFO1FBRUEsS0FBS3BYLDBFQUFVLENBQUNJLEdBQUc7VUFDakIsT0FBT3dTLHlCQUF5QixDQUFDaUYsNEJBQTRCLENBQUN6WCxHQUFHLENBQUNnWCxNQUFNO1FBRTFFLEtBQUtwWCwwRUFBVSxDQUFDSyxHQUFHO1VBQ2pCLE9BQU91Uyx5QkFBeUIsQ0FBQ2lGLDRCQUE0QixDQUFDeFgsR0FBRyxDQUFDK1csTUFBTTtRQUUxRTtVQUNFaG1DLG1FQUFpQixDQUFDeVQsS0FBSyxDQUFDO01BQzVCO0lBQ0Y7RUFBQztJQUFBdG1CLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQU9nMUMsOEJBQThCQSxDQUFBLEVBQXVCO01BQzFELE9BQU9iLHlCQUF5QixDQUFDeUUsZUFBZSxDQUFDRCxNQUFNO0lBQ3pEO0VBQUM7QUFBQTtBQUFBVSwwQkFBQSxHQWpHa0JsRix5QkFBeUI7QUFBQTUwQyxpRkFBQSxDQUF6QjQwQyx5QkFBeUIsZUFDUmx6Qyw0REFBZSxDQUFDdUwsV0FBVyxLQUFLLFFBQVE7QUFBQWpOLGlGQUFBLENBRHpENDBDLHlCQUF5QixzQkFFRGx6Qyw0REFBZSxDQUFDdUwsV0FBVyxLQUFLLFFBQVEsSUFBSXZMLDREQUFlLENBQUNxNEMsU0FBUztBQUFBLzVDLGlGQUFBLENBRjdGNDBDLHlCQUF5QixxQkFHRixJQUFJblMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFBQXppQyxpRkFBQSxDQUg3QzQwQyx5QkFBeUIsK0JBSVE7RUFBQ2xULElBQUksRUFBRSxJQUFJZSxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7QUFBQyxDQUFDO0FBQUF6aUMsaUZBQUEsQ0FKdlI0MEMseUJBQXlCLGtDQUtXO0VBQ3JEelMsSUFBSSxFQUFFLElBQUlNLFVBQVUsSUFBQWgvQixNQUFBLENBQUEwYyxvRkFBQSxDQUNmNjRCLG9HQUF1QixJQUFFLElBQUksRUFBRSxJQUFJLEdBQUE3NEIsb0ZBQUEsQ0FDbkM2NEIsb0dBQXVCLElBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEdBQUE3NEIsb0ZBQUEsQ0FDdks2NEIsb0dBQXVCLElBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0VBQUU7RUFDaEU7RUFBTSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFDLENBQUM7RUFBRTtFQUN4TDVXLEdBQUcsRUFBRSxJQUFJSyxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFB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QTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNEJBQTRCLHFCQUFxQjtBQUNqRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQSxxQ0FBcUMsNEJBQTRCO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNkJBQTZCLDBCQUEwQixlQUFlO0FBQ3RFOztBQUVPO0FBQ1A7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLE1BQU07QUFDTjtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7OztBQ2pvQkE7QUFDQTtBQUNBOztBQUV5QjtBQUNTO0FBQ1E7QUFLNUI7QUFHZCwrREFBZTtFQUNiejZDLEdBQUcsRUFBSEEsNENBQUc7RUFDSDI2QixRQUFRLEVBQVJBLGlEQUFRO0VBQ1JuTyxZQUFZLEVBQVpBLHFEQUFZQTtBQUNkLENBQUMsRSIsInNvdXJjZXMiOlsid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9BcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL0Jyb3dzZXJEZXRlY3Rvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL1BsYWluQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL0dhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9kb20vTmV0d29ya01vbml0b3IudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9TdHJlYW1TZXR1cExpc3RlbmVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lZGdlQXV0aC9FZGdlQXV0aFBhcnNlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZWRnZUF1dGgvRWRnZVRva2VuLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lbnZpcm9ubWVudC9CdWlsZEZlYXR1cmVzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZW52aXJvbm1lbnQvUGFyYW1ldGVycy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xhbmcvRGlzcG9zYWJsZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbGFuZy9EaXNwb3NhYmxlTGlzdC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbGFuZy9OdW1iZXJzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sYW5nL1N0cmluZ3MudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9BcHBlbmRlcnMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Db25zb2xlQXBwZW5kZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnZXJEZWZhdWx0cy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0xvZ2dlckZhY3RvcnkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnaW5nTGV2ZWxNYXBwaW5nLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sb2dnZXIvTG9nZ2luZ1RocmVzaG9sZC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbWV0cmljcy9NZXRyaWNUeXBlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NDb25maWd1cmF0aW9uLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NGYWN0b3J5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NTZXJ2aWNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NUeXBlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL1RlbGVtZXRyaWNMZXZlbE1hcHBpbmcudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvVGVsZW1ldHJ5RGVmYXVsdC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1BlZXJDb25uZWN0aW9uU2VydmljZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1J0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9ydGMvUnRjQ29ubmVjdGlvbk1vbml0b3IudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9TZHBQYXJzZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9WYW5pbGxhUGVlckNvbm5lY3Rpb24udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9WYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9yeC9SZWFkT25seVN1YmplY3QudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J4L1N1YmplY3QudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9FbnZpcm9ubWVudC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL1NESy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL1RlbGVtZXRyeVVybC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2FwaS9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NoYW5uZWxzL0NoYW5uZWwudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jaGFubmVscy9DaGFubmVsU3RhdGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jaGFubmVscy9DaGFubmVscy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NvbnRleHQvQ2hhbm5lbENvbnRleHQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jb250ZXh0L0ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvY29udGV4dC9QZWVyQ29ubmVjdGlvbkNvbnRleHQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jb250ZXh0L1N0YXRlQ29udGV4dC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NvbnRleHQvU3RyZWFtVHJhbnNmb3JtQ29udGV4dC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NvbnRleHQvVG9rZW5Db250ZXh0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9BdWRpb0NvZGVjLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9BdWRpb0NvZGVjTWFwcGluZy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvVmlkZW9Db2RlYy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvVmlkZW9Db2RlY01hcHBpbmcudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL2gyNjQvbmFsVW5pdC9Bbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2RlZmF1bHRzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0JpdHJhdGVNb2RlTWFwcGluZy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9CaXRyYXRlU3RhdGVNYXBwaW5nLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0Rpc2NvdmVyeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9EaXNjb3ZlcnlTZXJ2aWNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0Rpc2NvdmVyeVVyaS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9FbmRQb2ludC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2ZyYW1lVGltaW5nL0ZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvc3RyZWFtaW5nL1JlYWxUaW1lU3RyZWFtU3Vic2NyaWJlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3N0cmVhbWluZy9SZWFsVGltZVN0cmVhbVN1YnNjcmliZXJGYWN0b3J5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvc3RyZWFtaW5nL1ZpZGVvRnJhbWVEZXRlY3Rvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL0VuY29kZWRNZWRpYVRyYW5zZm9ybU1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi9FbmNvZGVkU3RyZWFtU2luay50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL0luc2VydGFibGVTdHJlYW1zLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vU3RyZWFtVHJhY2tUcmFuc2Zvcm0udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi9TdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vc3Vycm9nYXRlRnJhbWVzL2gyNjQvc3Vycm9nYXRlMjh4MTZJRnJhbWUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi9zdXJyb2dhdGVGcmFtZXMvaDI2NC9zdXJyb2dhdGUyOHgxNlBGcmFtZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci9NZXNzYWdlUm91dGVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3ZlcnNpb24vVmVyc2lvbk1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3RlbGVtZXRyeS9UZWxlbWV0cnlBcGVuZGVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy90ZWxlbWV0cnkvVGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdGVsZW1ldHJ5L1RlbGVtZXRyeVNlcnZpY2UudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3RpbWUvRHVyYXRpb24udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3RpbWUvRXhwb25lbnRpYWxCYWNrb2ZmLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy92aWRlby9EaW1lbnNpb24udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3ZpZGVvL1Nlc3Npb25UZWxlbWV0cnkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3ZpZGVvL1ZpZGVvVGVsZW1ldHJ5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lLndvcmtlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvd29ya2VyLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5saW5lLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hcnJheUxpa2VUb0FycmF5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hcnJheVdpdGhIb2xlcy5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXJyYXlXaXRob3V0SG9sZXMuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZC5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXN5bmNUb0dlbmVyYXRvci5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2suanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZ2V0UHJvdG90eXBlT2YuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pdGVyYWJsZVRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2l0ZXJhYmxlVG9BcnJheUxpbWl0LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9ub25JdGVyYWJsZVJlc3QuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL25vbkl0ZXJhYmxlU3ByZWFkLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9zZXRQcm90b3R5cGVPZi5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2xpY2VkVG9BcnJheS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9Db25zdW1hYmxlQXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvUHJpbWl0aXZlLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b1Byb3BlcnR5S2V5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90eXBlb2YuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzIiwid2VicGFjazovL3BoZW5peC93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9waGVuaXgvd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9waGVuaXgvd2VicGFjay9ydW50aW1lL2dsb2JhbCIsIndlYnBhY2s6Ly9waGVuaXgvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9waGVuaXgvd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvd2hhdHdnLWZldGNoL2ZldGNoLmpzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvY2hhbm5lbHMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wicGhlbml4XCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcInBoZW5peFwiXSA9IGZhY3RvcnkoKTtcbn0pKHNlbGYsIGZ1bmN0aW9uKCkge1xucmV0dXJuICIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtNaWxsaXNlY29uZH0gZnJvbSAnLi4vdW5pdHMvVW5pdHMnO1xuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi9yeC9TdWJqZWN0JztcbmltcG9ydCBSZWFkT25seVN1YmplY3QgZnJvbSAnLi4vcngvUmVhZE9ubHlTdWJqZWN0JztcblxuY29uc3QgdmlzaWJpbGl0eUNoYW5nZUV2ZW50ID0gJ3Zpc2liaWxpdHljaGFuZ2UnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUlzRm9yZWdyb3VuZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc0ZvcmVncm91bmQ6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RpbWVPZkxhc3RUYWJGb2N1c0NoYW5nZTogbnVtYmVyID0gRGF0ZS5ub3coKTtcbiAgcHJpdmF0ZSBfbGFzdEJhY2tncm91bmREdXJhdGlvbjogTWlsbGlzZWNvbmQgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9pc0ZvcmVncm91bmQgPSBuZXcgU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgICB0aGlzLl9yZWFkT25seUlzRm9yZWdyb3VuZCA9IG5ldyBSZWFkT25seVN1YmplY3QodGhpcy5faXNGb3JlZ3JvdW5kKTtcbiAgICB0aGlzLmluaXRpYWxpemUoKTtcbiAgfVxuXG4gIGdldCBpc0ZvcmVncm91bmQoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlJc0ZvcmVncm91bmQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0VGltZVNpbmNlTGFzdENoYW5nZSgpOiBudW1iZXIge1xuICAgIHJldHVybiBEYXRlLm5vdygpIC0gdGhpcy5fdGltZU9mTGFzdFRhYkZvY3VzQ2hhbmdlO1xuICB9XG5cbiAgcHVibGljIGdldExhc3RCYWNrZ3JvdW5kRHVyYXRpb24oKTogTWlsbGlzZWNvbmQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fbGFzdEJhY2tncm91bmREdXJhdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICBsZXQgYmFja2dyb3VuZEVudHJ5VGltZTogTWlsbGlzZWNvbmQgfCBudWxsID0gbnVsbDtcbiAgICBjb25zdCBoYW5kbGVWaXNpYmlsaXR5Q2hhbmdlID0gKCkgPT4ge1xuICAgICAgY29uc3QgaXNOb3dGb3JlZ3JvdW5kID0gIUdsb2JhbFNjb3BlLnZhbHVlLmRvY3VtZW50SXNIaWRkZW47XG5cbiAgICAgIGlmICghaXNOb3dGb3JlZ3JvdW5kKSB7XG4gICAgICAgIGJhY2tncm91bmRFbnRyeVRpbWUgPSBEYXRlLm5vdygpO1xuICAgICAgICB0aGlzLl9sYXN0QmFja2dyb3VuZER1cmF0aW9uID0gbnVsbDtcbiAgICAgIH0gZWxzZSBpZiAoYmFja2dyb3VuZEVudHJ5VGltZSkge1xuICAgICAgICB0aGlzLl9sYXN0QmFja2dyb3VuZER1cmF0aW9uID0gRGF0ZS5ub3coKSAtIGJhY2tncm91bmRFbnRyeVRpbWU7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2lzRm9yZWdyb3VuZC52YWx1ZSA9IGlzTm93Rm9yZWdyb3VuZDtcbiAgICB9O1xuXG4gICAgY29uc3QgdXNlRXZlbnRDYXB0dXJlUGhhc2UgPSBmYWxzZTtcblxuICAgIEdsb2JhbFNjb3BlLnZhbHVlLmFkZERvY3VtZW50RXZlbnRMaXN0ZW5lcih2aXNpYmlsaXR5Q2hhbmdlRXZlbnQsIGhhbmRsZVZpc2liaWxpdHlDaGFuZ2UsIHVzZUV2ZW50Q2FwdHVyZVBoYXNlKTtcblxuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiBHbG9iYWxTY29wZS52YWx1ZS5yZW1vdmVEb2N1bWVudEV2ZW50TGlzdGVuZXIodmlzaWJpbGl0eUNoYW5nZUV2ZW50LCBoYW5kbGVWaXNpYmlsaXR5Q2hhbmdlLCB1c2VFdmVudENhcHR1cmVQaGFzZSkpKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnJvd3NlckRldGVjdG9yIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2Jyb3dzZXJOYW1lQW5kVmVyc2lvblJlZ2V4ID0gLyhNU0lFfCg/IUdlY2tvLispRmlyZWZveHwoPyFBcHBsZVdlYktpdC4rQ2hyb21lLispU2FmYXJpfCg/IUFwcGxlV2ViS2l0LispQ2hyb21lfEFwcGxlV2ViS2l0KD8hLitDaHJvbWV8LitTYWZhcmkpfEdlY2tvKD8hLitGaXJlZm94KSkoPzogfFxcLykoW1xcZC5hcHJlXSspL2c7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9icm93c2VyTmFtZUFuZFZlcnNpb24gPSBCcm93c2VyRGV0ZWN0b3IucGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb24oKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2Jyb3dzZXJOYW1lID0gQnJvd3NlckRldGVjdG9yLnBhcnNlQnJvd3Nlck5hbWUoKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2Jyb3dzZXJNYWpvclZlcnNpb24gPSBCcm93c2VyRGV0ZWN0b3IucGFyc2VCcm93c2VyTWFqb3JWZXJzaW9uKCk7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzTW9iaWxlID0gKC9BbmRyb2lkfGlQaG9uZXxpUGFkfGlQb2R8QmxhY2tCZXJyeXxPcGVyYSBNaW5pL2kpLnRlc3QobmF2aWdhdG9yPy51c2VyQWdlbnQpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNBbmRyb2lkID0gKC9BbmRyb2lkL2kpLnRlc3QobmF2aWdhdG9yPy51c2VyQWdlbnQpO1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTY5ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS82OS4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzAgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzcwLicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3MSA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzEuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTcyID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83Mi4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzQgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzc0LicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3NSA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzUuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTc2ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83Ni4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzcgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzc3LicpO1xuXG4gIHN0YXRpYyBnZXQgYnJvd3Nlck5hbWVBbmRWZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uO1xuICB9XG5cbiAgc3RhdGljIGdldCBicm93c2VyTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9icm93c2VyTmFtZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYnJvd3Nlck1ham9yVmVyc2lvbigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9icm93c2VyTWFqb3JWZXJzaW9uO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0FuZHJvaWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNBbmRyb2lkO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTY5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNjk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzAoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3MDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3MSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTcxO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTcyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3NDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3NSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTc1O1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTc2KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzY7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3NztcbiAgfVxuXG4gIHN0YXRpYyBpc01vYmlsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc01vYmlsZTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgaWYgKCFuYXZpZ2F0b3IgfHwgIW5hdmlnYXRvci51c2VyQWdlbnQpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCBicm93c2VyTmFtZUFuZFZlcnNpb24gPSBuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uUmVnZXgpO1xuXG4gICAgaWYgKGJyb3dzZXJOYW1lQW5kVmVyc2lvbiAmJiBicm93c2VyTmFtZUFuZFZlcnNpb25bMF0pIHtcbiAgICAgIHJldHVybiBicm93c2VyTmFtZUFuZFZlcnNpb25bMF07XG4gICAgfVxuXG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5wYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbkZvcklFKCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBwYXJzZUJyb3dzZXJOYW1lKCk6IHN0cmluZyB7XG4gICAgaWYgKCFCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbikge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGJyb3dzZXJOYW1lTGlzdCA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLnNwbGl0KCcvJyk7XG5cbiAgICBpZiAoIWJyb3dzZXJOYW1lTGlzdCB8fCAhYnJvd3Nlck5hbWVMaXN0WzBdKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJyb3dzZXJOYW1lTGlzdFswXTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHBhcnNlQnJvd3Nlck1ham9yVmVyc2lvbigpOiBudW1iZXIge1xuICAgIGlmICghQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24pIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIGNvbnN0IGJyb3dzZXJWZXJzaW9uTGlzdCA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLnNwbGl0KCcvJyk7XG5cbiAgICBpZiAoIWJyb3dzZXJWZXJzaW9uTGlzdCB8fCAhYnJvd3NlclZlcnNpb25MaXN0WzFdKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBjb25zdCBmdWxsVmVyc2lvbiA9IGJyb3dzZXJWZXJzaW9uTGlzdFsxXTtcblxuICAgIGlmICghZnVsbFZlcnNpb24pIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIHJldHVybiBOdW1iZXIoZnVsbFZlcnNpb24uc3BsaXQoJy4nKVswXSkgfHwgMDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uRm9ySUUoKTogc3RyaW5nIHtcbiAgICBpZiAoIW5hdmlnYXRvciB8fCAhbmF2aWdhdG9yLnVzZXJBZ2VudCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IHVzZXJBZ2VudCA9IG5hdmlnYXRvci51c2VyQWdlbnQ7XG4gICAgY29uc3QgbXNpZSA9IHVzZXJBZ2VudC5pbmRleE9mKCdNU0lFICcpO1xuXG4gICAgaWYgKG1zaWUgPiAwKSB7XG4gICAgICAvLyBJRSAxMCBvciBvbGRlciA9PiByZXR1cm4gdmVyc2lvbiBudW1iZXJcbiAgICAgIHJldHVybiBgSUUvJHtwYXJzZUludCh1c2VyQWdlbnQuc3Vic3RyaW5nKG1zaWUgKyA1LCB1c2VyQWdlbnQuaW5kZXhPZignLicsIG1zaWUpKSwgMTApfWA7XG4gICAgfVxuXG4gICAgY29uc3QgdHJpZGVudCA9IHVzZXJBZ2VudC5pbmRleE9mKCdUcmlkZW50LycpO1xuXG4gICAgaWYgKHRyaWRlbnQgPiAwKSB7XG4gICAgICAvLyBJRSAxMSA9PiByZXR1cm4gdmVyc2lvbiBudW1iZXJcbiAgICAgIGNvbnN0IHZlcnNpb24gPSB1c2VyQWdlbnQuaW5kZXhPZigncnY6Jyk7XG5cbiAgICAgIHJldHVybiBgSUUvJHtwYXJzZUludCh1c2VyQWdlbnQuc3Vic3RyaW5nKHZlcnNpb24gKyAzLCB1c2VyQWdlbnQuaW5kZXhPZignLicsIHZlcnNpb24pKSwgMTApfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuICcnO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nIGZyb20gJy4uL21ldHJpY3MvVGVsZW1ldHJpY0xldmVsTWFwcGluZyc7XG5pbXBvcnQgVGVsZW1ldHJ5RGVmYXVsdCBmcm9tICcuLi9tZXRyaWNzL1RlbGVtZXRyeURlZmF1bHQnO1xuaW1wb3J0IExvZ2dpbmdMZXZlbE1hcHBpbmcgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dpbmdMZXZlbE1hcHBpbmcnO1xuaW1wb3J0IExvZ2dlckRlZmF1bHRzIGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJEZWZhdWx0cyc7XG5cbi8vIFRoZSBQbGFpbkNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIgZmlsZSBpcyB1c2VkIGluIHRoZSBzaWxlbnQgYnVpbGRcbi8vIHRvIGNvbnN0cmFpbiB0aGUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIHRvIHRoZSBzcGVjaWZpZWQgdmFsdWVzLlxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGxhaW5Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIHtcbiAgcHVibGljIHN0YXRpYyBnZXRTdHJpbmdWYWx1ZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBQbGFpbkNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZGVmYXVsdFN0cmluZ1ZhbHVlW25hbWVdO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRCb29sZWFuVmFsdWUobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFBsYWluQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5kZWZhdWx0Qm9vbGVhblZhbHVlW25hbWVdO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0IGRlZmF1bHRTdHJpbmdWYWx1ZSgpOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdwaGVuaXgtbWV0cmljcy1sZXZlbCc6IFRlbGVtZXRyeUxldmVsTWFwcGluZy5jb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUb1RlbGVtZXRyeUxldmVsVHlwZShUZWxlbWV0cnlEZWZhdWx0LmRlZmF1bHRUZWxlbWV0cnlMZXZlbCksXG4gICAgICAncGhlbml4LWxvZ2dpbmctbGV2ZWwnOiBMb2dnaW5nTGV2ZWxNYXBwaW5nLmNvbnZlcnRMb2dnaW5nTGV2ZWxUb0xvZ2dpbmdMZXZlbFR5cGUoTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdExvZ2dpbmdMZXZlbCksXG4gICAgICAncGhlbml4LWNvbnNvbGUtbG9nZ2luZy1sZXZlbCc6IExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZShMb2dnZXJEZWZhdWx0cy5kZWZhdWx0Q29uc29sZUxvZ2dpbmdMZXZlbCksXG4gICAgICAncGhlbml4LXRlbGVtZXRyeS1sb2dnaW5nLWxldmVsJzogTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlKExvZ2dlckRlZmF1bHRzLmRlZmF1bHRUZWxlbWV0cnlMb2dnaW5nTGV2ZWwpLFxuICAgICAgJ3BoZW5peC1jaGFubmVsLXRva2VuJzogJycsXG4gICAgICAncGhlbml4LXVyaSc6ICcnLFxuICAgICAgJ3BoZW5peC1iYXNlLXVyaSc6ICcnXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldCBkZWZhdWx0Qm9vbGVhblZhbHVlKCk6IHsgW25hbWU6IHN0cmluZ106IGJvb2xlYW4gfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdwaGVuaXgtYXV0b21hdGljYWxseS1yZXRyeS1vbi1mYWlsdXJlJzogdHJ1ZSxcbiAgICAgICdwaGVuaXgtYXV0b21hdGljYWxseS1yZWNvbm5lY3QtcGVlci1jb25uZWN0aW9uJzogdHJ1ZSxcbiAgICAgICdwaGVuaXgtZm9yY2UtZ2FyYmFnZS1jb2xsZWN0aW9uLW9uLXJlc3RhcnQnOiB0cnVlLFxuICAgICAgJ3BoZW5peC1za2lwLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1tb2JpbGUtZGV2aWNlcyc6IHRydWVcbiAgICB9O1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCBTREsgZnJvbSAnLi4vc2RrL1NESyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyIHtcbiAgc3RhdGljIGZvcmNlR2FyYmFnZUNvbGxlY3Rpb24oKTogdm9pZCB7XG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmlzTW9iaWxlICYmIFNESy5za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuaXNGb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uU3VwcG9ydGVkKSB7XG4gICAgICB0aGlzLmZvcmNlQ2hyb21lR2FyYmFnZUNvbGxlY3Rpb24oKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBmb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uKCk6IHZvaWQge1xuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5pc1F1ZXVlTWljcm90YXNrU3VwcG9ydGVkKSB7XG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5xdWV1ZU1pY3JvdGFzayh0aGlzLm92ZXJsb2FkTWVtb3J5VG9JbnZva2VHYXJiYWdlQ29sbGVjdGlvbi5iaW5kKHRoaXMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCh0aGlzLm92ZXJsb2FkTWVtb3J5VG9JbnZva2VHYXJiYWdlQ29sbGVjdGlvbi5iaW5kKHRoaXMpLCAwKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBvdmVybG9hZE1lbW9yeVRvSW52b2tlR2FyYmFnZUNvbGxlY3Rpb24oKTogdm9pZCB7XG4gICAgbGV0IGltZzogSFRNTEltYWdlRWxlbWVudCB8IG51bGwgPSBHbG9iYWxTY29wZS52YWx1ZS5kb2N1bWVudENyZWF0ZUVsZW1lbnQ8SFRNTEltYWdlRWxlbWVudD4oJ2ltZycpO1xuXG4gICAgaW1nLnNyYyA9IEdsb2JhbFNjb3BlLnZhbHVlLlVSTC5jcmVhdGVPYmplY3RVUkwobmV3IEJsb2IoW25ldyBBcnJheUJ1ZmZlcigxMGUrNyldKSk7IC8vIDEwME1iIG9yIGxlc3Mgb3IgbW9yZSBkZXBlbmRpbmcgb24gYXMgeW91IHdpc2ggdG8gZm9yY2UvaW52b2tlIEdDIGN5Y2xlIHJ1blxuICAgIGltZy5vbmVycm9yID0gZnVuY3Rpb24oKSB7XG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5VUkwucmV2b2tlT2JqZWN0VVJMKHRoaXMuc3JjKTtcblxuICAgICAgaW1nID0gbnVsbDtcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0dhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0lEaXNwb3NhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi9yeC9TdWJqZWN0JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmV0d29ya01vbml0b3IgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc1N1cHBvcnRlZDogYm9vbGVhbiA9IEdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvckNvbm5lY3Rpb24gIT09IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSByZWFkb25seSBfcnR0OiBTdWJqZWN0PG51bWJlciB8IHVuZGVmaW5lZD4gPSBuZXcgU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VmZmVjdGl2ZVR5cGU6IFN1YmplY3Q8c3RyaW5nIHwgdW5kZWZpbmVkPiA9IG5ldyBTdWJqZWN0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHk6IFN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPiA9IG5ldyBTdWJqZWN0PG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBpZiAoIXRoaXMuaXNTdXBwb3J0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNldHVwTmV0d29ya0NoYW5nZUxpc3RlbmVycygpO1xuICAgIHRoaXMudXBkYXRlU3RhdGlzdGljcygpO1xuICB9XG5cbiAgZ2V0IGlzU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc1N1cHBvcnRlZDtcbiAgfVxuXG4gIGdldCBydHQoKTogU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fcnR0O1xuICB9XG5cbiAgZ2V0IGVmZmVjdGl2ZVR5cGUoKTogU3ViamVjdDxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fZWZmZWN0aXZlVHlwZTtcbiAgfVxuXG4gIGdldCBkb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSgpOiBTdWJqZWN0PG51bWJlciB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0aGlzLl9kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eTtcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSgpOiBudW1iZXIge1xuICAgIHJldHVybiBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uPy5kb3dubGluayA/PyBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uPy5kb3dubGlua01heCA/PyAtMTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RWZmZWN0aXZlVHlwZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uPy5lZmZlY3RpdmVUeXBlID8/IEdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvckNvbm5lY3Rpb24/LnR5cGUgPz8gJ1Vua25vd24nO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRSb3VuZFRyaXBUaW1lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIEdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvckNvbm5lY3Rpb24/LnJ0dCA/PyAtMTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBOZXR3b3JrQ2hhbmdlTGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIGNvbnN0IGxpc3RlbmVyID0gKCk6IHZvaWQgPT4gdGhpcy51cGRhdGVTdGF0aXN0aWNzKCk7XG5cbiAgICBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uPy5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBsaXN0ZW5lcik7XG5cbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgbGlzdGVuZXIpKSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVN0YXRpc3RpY3MoKTogdm9pZCB7XG4gICAgdGhpcy5fcnR0LnZhbHVlID0gdGhpcy5nZXRSb3VuZFRyaXBUaW1lKCk7XG4gICAgdGhpcy5fZWZmZWN0aXZlVHlwZS52YWx1ZSA9IHRoaXMuZ2V0RWZmZWN0aXZlVHlwZSgpO1xuICAgIHRoaXMuX2Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5LnZhbHVlID0gdGhpcy5nZXREb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSgpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgTWV0cmljc1R5cGUgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzVHlwZSc7XG5pbXBvcnQgTWV0cmljVHlwZSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY1R5cGUnO1xuaW1wb3J0IER1cmF0aW9ucyBmcm9tICcuLi90aW1lL0R1cmF0aW9uJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL3Nkay9TREsnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuXG5leHBvcnQgY2xhc3MgU3RyZWFtU2V0dXBMaXN0ZW5lciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdTdHJlYW1TZXR1cExpc3RlbmVyJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbWV0cmljc1NlcnZpY2UgPSBTREsubWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BhZ2VMb2FkVGltZTogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdGFydFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSBfbWV0cmljU3VibWl0dGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocGFnZUxvYWRUaW1lOiBudW1iZXIpIHtcbiAgICB0aGlzLl9zdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgIHRoaXMuX3BhZ2VMb2FkVGltZSA9IHBhZ2VMb2FkVGltZTtcbiAgfVxuXG4gIHN1Y2Nlc3Moc3RyZWFtSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMucmVjb3JkU3RyZWFtTWV0cmljKE1ldHJpY3NUeXBlLlNldHVwQ29tcGxldGVkLCBzdHJlYW1JZCk7XG4gIH1cblxuICBmYWlsKCk6IHZvaWQge1xuICAgIHRoaXMucmVjb3JkU3RyZWFtTWV0cmljKE1ldHJpY3NUeXBlLlNldHVwRmFpbGVkKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb3JkU3RyZWFtTWV0cmljKG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLCBzdHJlYW1JZD86IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9tZXRyaWNTdWJtaXR0ZWQpIHtcbiAgICAgIHJldHVybiA7XG4gICAgfVxuXG4gICAgdGhpcy5fbWV0cmljU3VibWl0dGVkID0gdHJ1ZTtcblxuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgc2V0dXBUaW1lID0gbm93IC0gdGhpcy5fc3RhcnRUaW1lO1xuICAgIGNvbnN0IG1ldHJpY05hbWUgPSBuZXcgTWV0cmljVHlwZShtZXRyaWNUeXBlKS5nZXROYW1lKCk7XG5cbiAgICB0aGlzLm1ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZSxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7dWludDY0OiBzZXR1cFRpbWV9LFxuICAgICAgc3RyZWFtSWRcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gWyVzXSBTdHJlYW0gbWV0cmljIFslc10gaW4gWyVzXScsXG4gICAgICBuZXcgRHVyYXRpb25zKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkudG9Jc29TdHJpbmcoKSxcbiAgICAgIHN0cmVhbUlkLFxuICAgICAgbWV0cmljTmFtZSxcbiAgICAgIG5ldyBEdXJhdGlvbnMoc2V0dXBUaW1lKS50b0lzb1N0cmluZygpXG4gICAgKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBFZGdlVG9rZW4gZnJvbSAnLi9FZGdlVG9rZW4nO1xuaW1wb3J0IHtFbmNvZGVkRWRnZVRva2VufSBmcm9tICcuL0VuY29kZWRFZGdlVG9rZW4nO1xuXG5jb25zdCBlZGdlQXV0aFRva2VuUHJlZml4ID0gJ0RJR0VTVDonO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFZGdlQXV0aFBhcnNlciB7XG4gIHByaXZhdGUgc3RhdGljIF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignRWRnZUF1dGhQYXJzZXInKTtcblxuICBzdGF0aWMgcGFyc2VUb2tlbih0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbik6IEVkZ2VUb2tlbiB7XG4gICAgaWYgKCF0aGlzLmlzRW5jb2RlZEVkZ2VUb2tlblZhbGlkKHRva2VuKSkge1xuICAgICAgRWRnZUF1dGhQYXJzZXIuX2xvZ2dlci5lcnJvcignVG9rZW4gaXMgbm90IHZhbGlkIFslc10nLCB0b2tlbik7XG5cbiAgICAgIHJldHVybiBuZXcgRWRnZVRva2VuKG51bGwpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBkZWNvZGVkVG9rZW4gPSBhdG9iKHRva2VuLnN1YnN0cihlZGdlQXV0aFRva2VuUHJlZml4Lmxlbmd0aCkpO1xuICAgICAgY29uc3QgZWRnZVRva2VuID0gSlNPTi5wYXJzZShkZWNvZGVkVG9rZW4pO1xuXG4gICAgICBlZGdlVG9rZW4udG9rZW4gPSBKU09OLnBhcnNlKGVkZ2VUb2tlbi50b2tlbik7XG5cbiAgICAgIHJldHVybiBuZXcgRWRnZVRva2VuKGVkZ2VUb2tlbik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgRWRnZUF1dGhQYXJzZXIuX2xvZ2dlci5lcnJvcignQ2Fubm90IHBhcnNlIHRva2VuIHZhbHVlJywgZSk7XG5cbiAgICAgIHJldHVybiBuZXcgRWRnZVRva2VuKG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBpc0VuY29kZWRFZGdlVG9rZW5WYWxpZCh0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRva2VuICYmIHRva2VuLnN0YXJ0c1dpdGgoZWRnZUF1dGhUb2tlblByZWZpeCk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5cbmludGVyZmFjZSBJVG9rZW4ge1xuICB1cmk6IFVSTCB8IG51bGw7XG4gIGNhcGFiaWxpdGllczogc3RyaW5nW107XG59XG5cbmludGVyZmFjZSBJRWRnZVRva2VuIHtcbiAgYXBwbGljYXRpb25JZDogc3RyaW5nO1xuICB0b2tlbjogSVRva2VuO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFZGdlVG9rZW4ge1xuICBwcml2YXRlIHJlYWRvbmx5IF9hcHBsaWNhdGlvbklkOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Rva2VuOiBJVG9rZW47XG5cbiAgY29uc3RydWN0b3IoZWRnZVRva2VuOiBJRWRnZVRva2VuIHwgbnVsbCkge1xuICAgIHRoaXMuX2FwcGxpY2F0aW9uSWQgPSBlZGdlVG9rZW4/LmFwcGxpY2F0aW9uSWQgfHwgJyc7XG4gICAgdGhpcy5fdG9rZW4gPSB7XG4gICAgICB1cmk6IGVkZ2VUb2tlbj8udG9rZW4/LnVyaSA/IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwoZWRnZVRva2VuLnRva2VuLnVyaSkgOiBudWxsLFxuICAgICAgY2FwYWJpbGl0aWVzOiBlZGdlVG9rZW4/LnRva2VuPy5jYXBhYmlsaXRpZXMgfHwgW11cbiAgICB9O1xuICB9XG5cbiAgZ2V0IHVyaSgpOiBVUkwgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fdG9rZW4udXJpO1xuICB9XG5cbiAgZ2V0IGNhcGFiaWxpdGllcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3Rva2VuLmNhcGFiaWxpdGllcztcbiAgfVxuXG4gIGdldCB0ZW5hbmN5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2FwcGxpY2F0aW9uSWQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7TG9nZ2luZ0xldmVsVHlwZX0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlcic7XG5pbXBvcnQge1RlbGVtZXRyeUxldmVsVHlwZX0gZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5cbmRlY2xhcmUgY29uc3QgX19GRUFUVVJFU19fOiB7XG4gIHNlbmRMb2NhbENhbmRpZGF0ZXM6IGJvb2xlYW47XG4gIHNlbmRMb2dzOiBMb2dnaW5nTGV2ZWxUeXBlO1xuICBzZW5kTWV0cmljczogVGVsZW1ldHJ5TGV2ZWxUeXBlO1xuICBsb2dUb0NvbnNvbGU6IExvZ2dpbmdMZXZlbFR5cGU7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCdWlsZEZlYXR1cmVzIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX3NlbmRMb2NhbENhbmRpZGF0ZXM6IGJvb2xlYW47XG4gIHByaXZhdGUgc3RhdGljIF9zZW5kTG9nczogTG9nZ2luZ0xldmVsVHlwZTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3NlbmRNZXRyaWNzOiBUZWxlbWV0cnlMZXZlbFR5cGU7XG4gIHByaXZhdGUgc3RhdGljIF9sb2dUb0NvbnNvbGU6IExvZ2dpbmdMZXZlbFR5cGU7XG5cbiAgc3RhdGljIGdldCBzZW5kTG9jYWxDYW5kaWRhdGVzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zZW5kTG9jYWxDYW5kaWRhdGVzO1xuICB9XG5cbiAgc3RhdGljIGdldCBzZW5kTG9ncygpOiBMb2dnaW5nTGV2ZWxUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5fc2VuZExvZ3M7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHNlbmRNZXRyaWNzKCk6IFRlbGVtZXRyeUxldmVsVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbmRNZXRyaWNzO1xuICB9XG5cbiAgc3RhdGljIGdldCBsb2dUb0NvbnNvbGUoKTogTG9nZ2luZ0xldmVsVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX2xvZ1RvQ29uc29sZTtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUZlYXR1cmVzKCk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBmZWF0dXJlcyA9IF9fRkVBVFVSRVNfXztcblxuICAgICAgdGhpcy5fc2VuZExvY2FsQ2FuZGlkYXRlcyA9ICdzZW5kTG9jYWxDYW5kaWRhdGVzJyBpbiBmZWF0dXJlcyA/IGZlYXR1cmVzLnNlbmRMb2NhbENhbmRpZGF0ZXMgOiB0cnVlO1xuICAgICAgdGhpcy5fc2VuZExvZ3MgPSAnc2VuZExvZ3MnIGluIGZlYXR1cmVzID8gZmVhdHVyZXMuc2VuZExvZ3MgOiAnQWxsJztcbiAgICAgIHRoaXMuX3NlbmRNZXRyaWNzID0gJ3NlbmRNZXRyaWNzJyBpbiBmZWF0dXJlcyA/IGZlYXR1cmVzLnNlbmRNZXRyaWNzIDogJ0FsbCc7XG4gICAgICB0aGlzLl9sb2dUb0NvbnNvbGUgPSAnbG9nVG9Db25zb2xlJyBpbiBmZWF0dXJlcyA/IGZlYXR1cmVzLmxvZ1RvQ29uc29sZSA6ICdBbGwnO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX3NlbmRMb2NhbENhbmRpZGF0ZXMgPSB0cnVlO1xuICAgICAgdGhpcy5fc2VuZExvZ3MgPSAnQWxsJztcbiAgICAgIHRoaXMuX3NlbmRNZXRyaWNzID0gJ0FsbCc7XG4gICAgICB0aGlzLl9sb2dUb0NvbnNvbGUgPSAnQWxsJztcbiAgICB9XG4gIH1cbn1cblxuQnVpbGRGZWF0dXJlcy5hcHBseUZlYXR1cmVzKCk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IEJyb3dzZXJEZXRlY3RvciBmcm9tICcuLi9kb20vQnJvd3NlckRldGVjdG9yJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRmVhdHVyZUVuYWJsZW1lbnQge1xuICBzdGF0aWMgZ2V0IGNsaWVudE9mZmVyRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgLy8gQ2xpZW50IG9mZmVyIHdvcmtmbG93IGRvZXMgbm90IHdvcmsgY29ycmVjdGx5IGluIHRoZSBmb2xsb3dpbmcgYnJvd3NlcnNcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzQgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTc1IHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3NiB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGdldFRyYW5zY2VpdmVyc0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBGZWF0dXJlRW5hYmxlbWVudC5hZGRUcmFuY2VpdmVyRGlzYWJsZWQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGFkZFRyYW5jZWl2ZXJEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAvLyBDaHJvbWUgNjksIDcwLCA3MSwgNzIgZXhwb3NlcyBgYWRkVHJhbmNlaXZlcmAgYnV0IGl0IGRvZXMgbm90IHdvcmsgY29ycmVjdGx5XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTY5IHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3MCB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzEgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTcyO1xuICB9XG5cbiAgc3RhdGljIGdldCBnZXRTdGF0c1Byb21pc2VCYXNlZERpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDY2O1xuICB9XG5cbiAgc3RhdGljIGdldCBnZXRDdXJyZW50T2ZmZXJEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA2OSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnRmlyZWZveCcgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNTY7XG4gIH1cblxuICBzdGF0aWMgZ2V0IG9uVHJhY2tEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA2MyB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnRmlyZWZveCcgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNTI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA1NTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgcHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0ZpcmVmb3gnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDUyO1xuICB9XG5cbiAgc3RhdGljIGdldCBzaG91bGRVc2VOYXRpdmVIbHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ1NhZmFyaScgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ1NhbXN1bmdCcm93c2VyJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNQcmVjYWNoaW5nRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lICE9PSAnSUUnO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0ZvcmNlQ2hyb21lR2FyYmFnZUNvbGxlY3Rpb25TdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgdHlwZW9mIEdsb2JhbFNjb3BlLnZhbHVlPy5kb2N1bWVudENyZWF0ZUVsZW1lbnQgPT09ICdmdW5jdGlvbic7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzUXVldWVNaWNyb3Rhc2tTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPj0gNzEgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0ZpcmVmb3gnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uID49IDY5IHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdTYWZhcmknO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc01vYmlsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmlzTW9iaWxlKCk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEodHlwZW9mIE1lZGlhU3RyZWFtVHJhY2tQcm9jZXNzb3IgPT09ICd1bmRlZmluZWQnIHx8XG4gICAgICB0eXBlb2YgTWVkaWFTdHJlYW1UcmFja0dlbmVyYXRvciA9PT0gJ3VuZGVmaW5lZCcpO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIFJUQ1J0cFJlY2VpdmVyICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgUlRDUnRwUmVjZWl2ZXIucHJvdG90eXBlLmNyZWF0ZUVuY29kZWRTdHJlYW1zICE9PSAndW5kZWZpbmVkJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNSVENSdHBTY3JpcHRUcmFuc2Zvcm1TdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiBSVENSdHBTY3JpcHRUcmFuc2Zvcm0gIT09ICd1bmRlZmluZWQnO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc1JlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2tTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiBHbG9iYWxTY29wZS52YWx1ZT8uSFRNTFZpZGVvRWxlbWVudC5wcm90b3R5cGUucmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayAhPT0gJ3VuZGVmaW5lZCc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgR2xvYmFsU2NvcGUudmFsdWU/LnJlcXVlc3RBbmltYXRpb25GcmFtZSA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaGFubmVsRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gRmVhdHVyZUVuYWJsZW1lbnQuaXNSZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrU3VwcG9ydGVkXG4gICAgICAmJiAoRmVhdHVyZUVuYWJsZW1lbnQuaXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQgfHwgRmVhdHVyZUVuYWJsZW1lbnQuaXNSVENSdHBTY3JpcHRUcmFuc2Zvcm1TdXBwb3J0ZWQpO1xuICB9XG5cbiAgc3RhdGljIGdldCBlcnJvclN0YWNrQWxzb0hhc0Vycm9yTWVzc2FnZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lICE9PSAnRmlyZWZveCcgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lICE9PSAnU2FmYXJpJztcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZGVjbGFyZSBjb25zdCBfX1BBUkFNRVRFUlNfXzoge1xuICBkaXNjb3Zlcnk6IElEaXNjb3ZlcnlQYXJhbWV0ZXI7XG59O1xuXG5pbnRlcmZhY2UgSURpc2NvdmVyeVBhcmFtZXRlcntcbiAgaW50ZW50aW9uczogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQYXJhbWV0ZXJzIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2Rpc2NvdmVyeVBhcmFtZXRlcnM6IElEaXNjb3ZlcnlQYXJhbWV0ZXIgO1xuXG4gIHN0YXRpYyBnZXQgZGlzY292ZXJ5UGFyYW1ldGVycygpOiBJRGlzY292ZXJ5UGFyYW1ldGVyIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzY292ZXJ5UGFyYW1ldGVycztcbiAgfVxuXG4gIHN0YXRpYyBhcHBseVBhcmFtZXRlcnMoKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBhcmFtZXRlcnMgPSBfX1BBUkFNRVRFUlNfXztcblxuICAgICAgdGhpcy5fZGlzY292ZXJ5UGFyYW1ldGVycyA9ICdkaXNjb3ZlcnknIGluIHBhcmFtZXRlcnMgPyBwYXJhbWV0ZXJzLmRpc2NvdmVyeSA6IHtpbnRlbnRpb25zOiAnJ307XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fZGlzY292ZXJ5UGFyYW1ldGVycyA9IHtpbnRlbnRpb25zOiAnJ307XG4gICAgfVxuICB9XG59XG5cblBhcmFtZXRlcnMuYXBwbHlQYXJhbWV0ZXJzKCk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgSUdsb2JhbFNjb3BlIGZyb20gJy4vSUdsb2JhbFNjb3BlJztcbmltcG9ydCBJRG9jdW1lbnQgZnJvbSAnLi9JRG9jdW1lbnQnO1xuaW1wb3J0IElMb2NhdGlvbiBmcm9tICcuL0lMb2NhdGlvbic7XG5pbXBvcnQgSU5ldHdvcmtJbmZvcm1hdGlvbiBmcm9tICcuL0lOZXR3b3JrSW5mb3JtYXRpb24nO1xuaW1wb3J0IElOYXZpZ2F0b3IgZnJvbSAnLi9JTmF2aWdhdG9yJztcbmltcG9ydCBJV2luZG93IGZyb20gJy4vSVdpbmRvdyc7XG5pbXBvcnQgSVByb3ZpZGVkR2xvYmFsU2NvcGUgZnJvbSAnLi9JUHJvdmlkZWRHbG9iYWxTY29wZSc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi9yeC9TdWJqZWN0JztcbmltcG9ydCBSZWFkT25seVN1YmplY3QgZnJvbSAnLi4vcngvUmVhZE9ubHlTdWJqZWN0JztcblxudHlwZSBCcm93c2VyR2xvYmFsU2NvcGUgPSBJUHJvdmlkZWRHbG9iYWxTY29wZTtcblxuY29uc3QgYnJvd3Nlckdsb2JhbFNjb3BlOiBCcm93c2VyR2xvYmFsU2NvcGUgPSB7XG4gIGRvY3VtZW50LFxuICBsb2NhdGlvbixcbiAgbmF2aWdhdG9yLFxuICB3aW5kb3dcbn07XG5cbmV4cG9ydCBjbGFzcyBHbG9iYWxTY29wZSBpbXBsZW1lbnRzIElHbG9iYWxTY29wZSB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pbnN0YW5jZSA9IG5ldyBTdWJqZWN0PElHbG9iYWxTY29wZT4obmV3IEdsb2JhbFNjb3BlKGJyb3dzZXJHbG9iYWxTY29wZSkpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfcmVhZE9ubHlJbnN0YW5jZTogUmVhZE9ubHlTdWJqZWN0PElHbG9iYWxTY29wZT4gPSBuZXcgUmVhZE9ubHlTdWJqZWN0KEdsb2JhbFNjb3BlLl9pbnN0YW5jZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2RvY3VtZW50OiBJRG9jdW1lbnQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvY2F0aW9uOiBJTG9jYXRpb247XG4gIHByaXZhdGUgcmVhZG9ubHkgX25hdmlnYXRvcjogSU5hdmlnYXRvcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfd2luZG93OiBJV2luZG93O1xuXG4gIGNvbnN0cnVjdG9yKGdsb2JhbFNjb3BlOiBCcm93c2VyR2xvYmFsU2NvcGUpIHtcbiAgICB0aGlzLl9kb2N1bWVudCA9IGdsb2JhbFNjb3BlLmRvY3VtZW50O1xuICAgIHRoaXMuX2xvY2F0aW9uID0gZ2xvYmFsU2NvcGUubG9jYXRpb247XG4gICAgdGhpcy5fbmF2aWdhdG9yID0gZ2xvYmFsU2NvcGUubmF2aWdhdG9yO1xuICAgIHRoaXMuX3dpbmRvdyA9IGdsb2JhbFNjb3BlLndpbmRvdztcbiAgfVxuXG4gIC8vIFRoaXMgbWV0aG9kIGlzIHJlcXVpcmVkIHRvIG1haW50YWluIEFQSSBjb25zaXN0ZW5jeSB3aXRoIFByb3ZpZGVkR2xvYmFsU2NvcGVcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAvLyBAdHMtaWdub3JlXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgcHVibGljIHN0YXRpYyBzZXRJbnN0YW5jZShwcm92aWRlZEdsb2JhbFNjb3BlOiBJUHJvdmlkZWRHbG9iYWxTY29wZSk6IHZvaWQge1xuICAgIHRocm93IG5ldyBFcnJvcignVGhpcyBidWlsZCBkb2VzIG5vdCBzdXBwb3J0IHNldHRpbmcgdGhlIEdsb2JhbFNjb3BlJyk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldEluc3RhbmNlKCk6IFJlYWRPbmx5U3ViamVjdDxJR2xvYmFsU2NvcGU+IHtcbiAgICByZXR1cm4gR2xvYmFsU2NvcGUuX3JlYWRPbmx5SW5zdGFuY2U7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHN1YnNjcmliZShjYWxsYmFjazogKHZhbHVlOiBJR2xvYmFsU2NvcGUgfCBudWxsKSA9PiB2b2lkKTogSURpc3Bvc2FibGUge1xuICAgIHJldHVybiBHbG9iYWxTY29wZS5fcmVhZE9ubHlJbnN0YW5jZS5zdWJzY3JpYmUoY2FsbGJhY2spO1xuICB9XG5cbiAgZ2V0IEFib3J0Q29udHJvbGxlcigpOiB0eXBlb2YgQWJvcnRDb250cm9sbGVyIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LkFib3J0Q29udHJvbGxlcjtcbiAgfVxuXG4gIGdldCBGb3JtRGF0YSgpOiB0eXBlb2YgRm9ybURhdGEge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuRm9ybURhdGE7XG4gIH1cblxuICBnZXQgSFRNTFZpZGVvRWxlbWVudCgpOiB0eXBlb2YgSFRNTFZpZGVvRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5IVE1MVmlkZW9FbGVtZW50O1xuICB9XG5cbiAgZ2V0IE1lZGlhU3RyZWFtKCk6IHR5cGVvZiBNZWRpYVN0cmVhbSB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5NZWRpYVN0cmVhbTtcbiAgfVxuXG4gIGdldCBNZWRpYVN0cmVhbVRyYWNrKCk6IHR5cGVvZiBNZWRpYVN0cmVhbVRyYWNrIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93Lk1lZGlhU3RyZWFtVHJhY2s7XG4gIH1cblxuICBnZXQgTWVkaWFTb3VyY2UoKTogdHlwZW9mIE1lZGlhU291cmNlIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93Lk1lZGlhU291cmNlO1xuICB9XG5cbiAgZ2V0IFJUQ1BlZXJDb25uZWN0aW9uKCk6IHR5cGVvZiBSVENQZWVyQ29ubmVjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5SVENQZWVyQ29ubmVjdGlvbjtcbiAgfVxuXG4gIGdldCBSVENTZXNzaW9uRGVzY3JpcHRpb24oKTogdHlwZW9mIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5SVENTZXNzaW9uRGVzY3JpcHRpb247XG4gIH1cblxuICBnZXQgUlRDSWNlQ2FuZGlkYXRlKCk6IHR5cGVvZiBSVENJY2VDYW5kaWRhdGUge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuUlRDSWNlQ2FuZGlkYXRlO1xuICB9XG5cbiAgZ2V0IFVSTCgpOiB0eXBlb2YgVVJMIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LlVSTDtcbiAgfVxuXG4gIGdldCBVUkxTZWFyY2hQYXJhbXMoKTogdHlwZW9mIFVSTFNlYXJjaFBhcmFtcyB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5VUkxTZWFyY2hQYXJhbXM7XG4gIH1cblxuICBnZXQgYWRkRG9jdW1lbnRFdmVudExpc3RlbmVyKCk6ICh0eXBlOiBzdHJpbmcsIGxpc3RlbmVyOiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkLCBvcHRpb25zPzogYm9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lci5iaW5kKHRoaXMuX2RvY3VtZW50KTtcbiAgfVxuXG4gIGdldCBhZGRXaW5kb3dFdmVudExpc3RlbmVyKCk6ICh0eXBlOiBzdHJpbmcsIGxpc3RlbmVyOiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkLCBvcHRpb25zPzogYm9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LmFkZEV2ZW50TGlzdGVuZXIuYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IGNsZWFySW50ZXJ2YWwoKTogKGlkPzogbnVtYmVyIHwgdW5kZWZpbmVkKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LmNsZWFySW50ZXJ2YWwuYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IGNsZWFyVGltZW91dCgpOiAoaWQ/OiBudW1iZXIgfCB1bmRlZmluZWQpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuY2xlYXJUaW1lb3V0LmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCBkb2N1bWVudENyZWF0ZUVsZW1lbnQoKTogPEVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudD4odGFnOiBzdHJpbmcpID0+IEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50LmJpbmQodGhpcy5fZG9jdW1lbnQpO1xuICB9XG5cbiAgZ2V0IGRvY3VtZW50SGFzRm9jdXMoKTogKCkgPT4gYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2RvY3VtZW50Lmhhc0ZvY3VzLmJpbmQodGhpcy5fZG9jdW1lbnQpO1xuICB9XG5cbiAgZ2V0IGRvY3VtZW50SXNIaWRkZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5fZG9jdW1lbnQuaGlkZGVuO1xuICB9XG5cbiAgZ2V0IGRvY3VtZW50UXVlcnlTZWxlY3RvcigpOiA8RWxlbWVudCBleHRlbmRzIEhUTUxFbGVtZW50Pih0YWc6IHN0cmluZykgPT4gRWxlbWVudCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9kb2N1bWVudC5xdWVyeVNlbGVjdG9yLmJpbmQodGhpcy5fZG9jdW1lbnQpO1xuICB9XG5cbiAgZ2V0IGZldGNoKCk6IChpbnB1dDogc3RyaW5nIHwgVVJMIHwgUmVxdWVzdCwgaW5pdD86IFJlcXVlc3RJbml0KSA9PiBQcm9taXNlPFJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5mZXRjaC5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cblxuICBnZXQgbG9jYXRpb25Ib3N0bmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9sb2NhdGlvbi5ob3N0bmFtZTtcbiAgfVxuXG4gIGdldCBsb2NhdGlvblNlYXJjaCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9sb2NhdGlvbi5zZWFyY2g7XG4gIH1cblxuICBnZXQgbmF2aWdhdG9yQ29ubmVjdGlvbigpOiBJTmV0d29ya0luZm9ybWF0aW9uIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fbmF2aWdhdG9yLmNvbm5lY3Rpb247XG4gIH1cblxuICBnZXQgbmF2aWdhdG9ySXNPbkxpbmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX25hdmlnYXRvci5vbkxpbmU7XG4gIH1cblxuICBnZXQgcGFnZUxvYWRUaW1lKCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvd1snX19waGVuaXhQYWdlTG9hZFRpbWUnXSB8fCB0aGlzLl93aW5kb3dbJ19fcGFnZUxvYWRUaW1lJ107XG4gIH1cblxuICBnZXQgc2VuZEJlYWNvbigpOiAoKHVybDogc3RyaW5nIHwgVVJMLCBkYXRhPzogQm9keUluaXQgfCBudWxsKSA9PiBib29sZWFuKSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX25hdmlnYXRvci5zZW5kQmVhY29uXG4gICAgICA/ICh1cmwsIGRhdGEpID0+IHRoaXMuX25hdmlnYXRvci5zZW5kQmVhY29uISh1cmwsIGRhdGEgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBkYXRhKVxuICAgICAgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgcXVldWVNaWNyb3Rhc2soKTogKG1pY3JvdGFzazogKCkgPT4gdm9pZCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5xdWV1ZU1pY3JvdGFzay5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cblxuICBnZXQgcmVtb3ZlRG9jdW1lbnRFdmVudExpc3RlbmVyKCk6ICh0eXBlOiBzdHJpbmcsIGxpc3RlbmVyOiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkLCBvcHRpb25zPzogYm9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lci5iaW5kKHRoaXMuX2RvY3VtZW50KTtcbiAgfVxuXG4gIGdldCByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKTogKGNhbGxiYWNrOiBGcmFtZVJlcXVlc3RDYWxsYmFjaykgPT4gbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZS5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cblxuICBnZXQgcmVtb3ZlV2luZG93RXZlbnRMaXN0ZW5lcigpOiAodHlwZTogc3RyaW5nLCBsaXN0ZW5lcjogKGV2ZW50OiBFdmVudCkgPT4gdm9pZCwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucykgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyLmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCBzZXRJbnRlcnZhbCgpOiAoaGFuZGxlcjogc3RyaW5nIHwgRnVuY3Rpb24sIHRpbWVvdXQ/OiBudW1iZXIgfCB1bmRlZmluZWQpID0+IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5zZXRJbnRlcnZhbC5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cblxuICBnZXQgc2V0VGltZW91dCgpOiAoaGFuZGxlcjogc3RyaW5nIHwgRnVuY3Rpb24sIHRpbWVvdXQ/OiBudW1iZXIgfCB1bmRlZmluZWQpID0+IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5zZXRUaW1lb3V0LmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBHbG9iYWxTY29wZS5nZXRJbnN0YW5jZSgpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4vSURpc3Bvc2FibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXNwb3NhYmxlIGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIF9kaXNwb3NlZDogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfZGlzcG9zYWJsZTogKCkgPT4gdm9pZDtcblxuICBjb25zdHJ1Y3RvcihkaXNwb3NhYmxlOiAoKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5fZGlzcG9zZWQgPSBmYWxzZTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlID0gZGlzcG9zYWJsZTtcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2Rpc3Bvc2VkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fZGlzcG9zZWQgPSB0cnVlO1xuXG4gICAgcmV0dXJuIHRoaXMuX2Rpc3Bvc2FibGUuY2FsbCh0aGlzKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4vSURpc3Bvc2FibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXNwb3NhYmxlTGlzdCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xpc3Q6IElEaXNwb3NhYmxlW10gPSBbXTtcblxuICBhZGQoZGlzcG9zYWJsZTogSURpc3Bvc2FibGUpOiB2b2lkIHtcbiAgICB0aGlzLl9saXN0LnB1c2goZGlzcG9zYWJsZSk7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2xpc3QuZm9yRWFjaChkaXNwb3NhYmxlID0+IGRpc3Bvc2FibGUuZGlzcG9zZSgpKTtcbiAgICB0aGlzLl9saXN0Lmxlbmd0aCA9IDA7XG4gIH1cblxuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiBgRGlzcG9zYWJsZUxpc3RbZGlzcG9zYWJsZXM9JHt0aGlzLl9saXN0Lmxlbmd0aH1dYDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuLy8gQXMgZmxvYXQgaW4gRUNNQVNjcmlwdCB1c2UgNjQtYml0IGZvcm1hdCBpdCBjYW5ub3QgaGF2ZS9oYW5kbGUgbW9yZSB0aGFuIDE1IHN5bWJvbHMgYWZ0ZXIgZG90LlxuY29uc3QgbWF4RGlnaXRzSW5GbG9hdEFmdGVyRG90ID0gMTU7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE51bWJlcnMge1xuICBzdGF0aWMgY291bnROdW1iZXJMZW5ndGgodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgbGV0IGluY3JlbWVudEZvck5lZ2F0aXZlVmFsdWUgPSAwO1xuICAgIGxldCBudW1iZXIgPSB2YWx1ZTtcblxuICAgIGlmIChudW1iZXIgPCAwKSB7XG4gICAgICBudW1iZXIgKj0gLTE7XG4gICAgICBpbmNyZW1lbnRGb3JOZWdhdGl2ZVZhbHVlKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIE51bWJlcnMuY291bnREaWdpdHNCZWZvcmVEZWNpbWFsKG51bWJlcikgKyBpbmNyZW1lbnRGb3JOZWdhdGl2ZVZhbHVlICsgKG51bWJlciAhPT0gTWF0aC5mbG9vcihudW1iZXIpID8gTnVtYmVycy5jb3VudERpZ2l0c0FmdGVyRGVjaW1hbChudW1iZXIpICsgMSA6IDApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZml4Um91bmRpbmcodmFsdWU6IG51bWJlciwgcHJlY2lzaW9uOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IHBvd2VyID0gTWF0aC5wb3coMTAsIHByZWNpc2lvbik7XG5cbiAgICByZXR1cm4gTWF0aC5yb3VuZCh2YWx1ZSAqIHBvd2VyKSAvIHBvd2VyO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgY291bnREaWdpdHNCZWZvcmVEZWNpbWFsKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGxldCBkaWdpdHNCZWZvcmVEZWNpbWFsID0gMTtcbiAgICBsZXQgbnVtYmVyID0gdmFsdWU7XG5cbiAgICB3aGlsZSAobnVtYmVyID49IDEwKSB7XG4gICAgICBudW1iZXIgPSBudW1iZXIgLyAxMDtcbiAgICAgIGRpZ2l0c0JlZm9yZURlY2ltYWwrKztcbiAgICB9XG5cbiAgICByZXR1cm4gZGlnaXRzQmVmb3JlRGVjaW1hbDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGNvdW50RGlnaXRzQWZ0ZXJEZWNpbWFsKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IG9yaWdpbmFsVmFsdWUgPSB2YWx1ZTtcbiAgICBsZXQgbW9kaWZpZWRWYWx1ZSA9IE1hdGguZmxvb3IodmFsdWUpO1xuICAgIGxldCBjb3VudCA9IDA7XG5cbiAgICB3aGlsZSAobW9kaWZpZWRWYWx1ZSAhPT0gb3JpZ2luYWxWYWx1ZSAmJiBjb3VudCA8IG1heERpZ2l0c0luRmxvYXRBZnRlckRvdCkge1xuICAgICAgY291bnQrKztcbiAgICAgIG1vZGlmaWVkVmFsdWUgPSBOdW1iZXJzLmZpeFJvdW5kaW5nKG9yaWdpbmFsVmFsdWUsIGNvdW50KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY291bnQ7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTnVtYmVycyBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN0cmluZ3Mge1xuICBzdGF0aWMgcmFuZG9tKGxlbmd0aDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCByYW5kb20xM0NoYXJhY3RlcnMgPSAoKTogc3RyaW5nID0+IHtcbiAgICAgIHJldHVybiBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDE2KS5zdWJzdHJpbmcoMiwgMTUpO1xuICAgIH07XG5cbiAgICBjb25zdCBsb29wczogbnVtYmVyID0gTWF0aC5jZWlsKGxlbmd0aCAvIDEzKTtcblxuICAgIHJldHVybiBuZXcgQXJyYXkobG9vcHMpLmZpbGwocmFuZG9tMTNDaGFyYWN0ZXJzKS5yZWR1Y2UoKHN0cmluZywgZnVuYykgPT4ge1xuICAgICAgcmV0dXJuIHN0cmluZyArIGZ1bmMoKTtcbiAgICB9LCAnJykuc3Vic3RyaW5nKDAsIGxlbmd0aCk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignU3RyaW5ncyBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRVbnJlYWNoYWJsZSh4OiBuZXZlcik6IG5ldmVyIHtcbiAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIHZhbHVlIFske3h9XS4gVGhpcyBzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZGApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBhc3NlcnRVbnJlYWNoYWJsZTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7SUFwcGVuZGVyfSBmcm9tICcuL0lBcHBlbmRlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFwcGVuZGVycyB7XG4gIHByaXZhdGUgX2FwcGVuZGVyczogQXJyYXk8SUFwcGVuZGVyPiA9IFtdO1xuXG4gIGdldCB2YWx1ZSgpOiBBcnJheTxJQXBwZW5kZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fYXBwZW5kZXJzO1xuICB9XG5cbiAgYWRkKGFwcGVuZGVyOiBJQXBwZW5kZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9hcHBlbmRlcnMucHVzaChhcHBlbmRlcik7XG4gIH1cblxuICByZW1vdmUoYXBwZW5kZXI6IElBcHBlbmRlcik6IHZvaWQge1xuICAgIHRoaXMuX2FwcGVuZGVycyA9IHRoaXMuX2FwcGVuZGVycy5yZWR1Y2UoKGl0ZW1zLCBpdGVtKSA9PiB7XG4gICAgICBpZiAoIShpdGVtID09PSBhcHBlbmRlcikpIHtcbiAgICAgICAgaXRlbXMucHVzaChpdGVtKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH0sIFtdIGFzIEFycmF5PElBcHBlbmRlcj4pO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge0lBcHBlbmRlcn0gZnJvbSAnLi9JQXBwZW5kZXInO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4vTG9nZ2VyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29uc29sZUFwcGVuZGVyIGltcGxlbWVudHMgSUFwcGVuZGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfdGhyZXNob2xkOiBMb2dnaW5nTGV2ZWw7XG5cbiAgbG9nKGxvZ0xldmVsOiBMb2dnaW5nTGV2ZWwsIG1lc3NhZ2U6IHN0cmluZywgY2F0ZWdvcnk6IHN0cmluZywgZGF0ZTogRGF0ZSk6IHZvaWQge1xuICAgIGlmIChsb2dMZXZlbCA8IHRoaXMuX3RocmVzaG9sZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGZ1bGxNZXNzYWdlID0gYCR7ZGF0ZS50b0lTT1N0cmluZygpfSBbJHtjYXRlZ29yeX1dIFske0xvZ2dpbmdMZXZlbFtsb2dMZXZlbF19XSAke21lc3NhZ2V9YDtcblxuICAgIGlmIChsb2dMZXZlbCA8IExvZ2dpbmdMZXZlbC5XYXJuKSB7XG4gICAgICBjb25zb2xlLmxvZyhmdWxsTWVzc2FnZSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zb2xlLmVycm9yKGZ1bGxNZXNzYWdlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHRocmVzaG9sZDogTG9nZ2luZ0xldmVsKSB7XG4gICAgdGhpcy5fdGhyZXNob2xkID0gdGhyZXNob2xkO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQge0lBcHBlbmRlcn0gZnJvbSAnLi9JQXBwZW5kZXInO1xuaW1wb3J0IEFwcGVuZGVycyBmcm9tICcuL0FwcGVuZGVycyc7XG5pbXBvcnQgTG9nZ2luZ1RocmVzaG9sZCBmcm9tICcuL0xvZ2dpbmdUaHJlc2hvbGQnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcblxuZXhwb3J0IGVudW0gTG9nZ2luZ0xldmVsIHtcbiAgQWxsID0gLTEsXG4gIFRyYWNlID0gMTAsXG4gIERlYnVnID0gMjAsXG4gIEluZm8gPSAzMCxcbiAgV2FybiA9IDQwLFxuICBFcnJvciA9IDUwLFxuICBGYXRhbCA9IDYwLFxuICBPZmYgPSAxMDAsXG59XG5cbmV4cG9ydCB0eXBlIExvZ2dpbmdMZXZlbFR5cGUgPSAnT2ZmJyB8ICdUcmFjZScgfCAnRGVidWcnIHwgJ0luZm8nIHwgJ1dhcm4nIHwgJ0Vycm9yJyB8ICdGYXRhbCcgfCAnQWxsJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2VyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfY2F0ZWdvcnk6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfYXBwZW5kZXJzOiBBcHBlbmRlcnM7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RocmVzaG9sZDogTG9nZ2luZ1RocmVzaG9sZDtcblxuICBnZXQgY2F0ZWdvcnkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fY2F0ZWdvcnk7XG4gIH1cblxuICBnZXQgYXBwZW5kZXJzKCk6IEFwcGVuZGVycyB7XG4gICAgcmV0dXJuIHRoaXMuX2FwcGVuZGVycztcbiAgfVxuXG4gIGdldCB0aHJlc2hvbGQoKTogTG9nZ2luZ1RocmVzaG9sZCB7XG4gICAgcmV0dXJuIHRoaXMuX3RocmVzaG9sZDtcbiAgfVxuXG4gIHRyYWNlKC4uLmFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGhyZXNob2xkLnZhbHVlIHx8IHRoaXMuX3RocmVzaG9sZC52YWx1ZSA+IExvZ2dpbmdMZXZlbC5UcmFjZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nKExvZ2dpbmdMZXZlbC5UcmFjZSwgYXJncyk7XG4gIH1cblxuICBkZWJ1ZyguLi5hcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RocmVzaG9sZC52YWx1ZSB8fCB0aGlzLl90aHJlc2hvbGQudmFsdWUgPiBMb2dnaW5nTGV2ZWwuRGVidWcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuRGVidWcsIGFyZ3MpO1xuICB9XG5cbiAgaW5mbyguLi5hcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RocmVzaG9sZC52YWx1ZSB8fCB0aGlzLl90aHJlc2hvbGQudmFsdWUgPiBMb2dnaW5nTGV2ZWwuSW5mbykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nKExvZ2dpbmdMZXZlbC5JbmZvLCBhcmdzKTtcbiAgfVxuXG4gIHdhcm4oLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLldhcm4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuV2FybiwgYXJncyk7XG4gIH1cblxuICBlcnJvciguLi5hcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RocmVzaG9sZC52YWx1ZSB8fCB0aGlzLl90aHJlc2hvbGQudmFsdWUgPiBMb2dnaW5nTGV2ZWwuRXJyb3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuRXJyb3IsIGFyZ3MpO1xuICB9XG5cbiAgZmF0YWwoLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLkZhdGFsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLkZhdGFsLCBhcmdzKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9nKGxldmVsOiBudW1iZXIsIGFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLnJlcGxhY2VQbGFjZWhvbGRlcnMoYXJncyk7XG5cbiAgICB0aGlzLl9hcHBlbmRlcnMudmFsdWUuZm9yRWFjaCgoYXBwZW5kZXI6IElBcHBlbmRlcikgPT4ge1xuICAgICAgYXBwZW5kZXIubG9nKGxldmVsLCBtZXNzYWdlLCB0aGlzLmNhdGVnb3J5LCBkYXRlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVwbGFjZVBsYWNlaG9sZGVycyhhcmdzOiBhbnkpOiBzdHJpbmcge1xuICAgIGxldCByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nID0gYXJnc1swXTtcbiAgICBsZXQgaW5kZXggPSAwO1xuXG4gICAgd2hpbGUgKHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuaW5kZXhPZiAmJiBhcmdzLmxlbmd0aCA+IDEgJiYgaW5kZXggPj0gMCkge1xuICAgICAgaW5kZXggPSByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLmluZGV4T2YoJyUnLCBpbmRleCk7XG5cbiAgICAgIGlmIChpbmRleCA+IDApIHtcbiAgICAgICAgY29uc3QgdHlwZSA9IHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuc3Vic3RyaW5nKGluZGV4ICsgMSwgaW5kZXggKyAyKTtcblxuICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICBjYXNlICclJzpcbiAgICAgICAgICAgIC8vIEVzY2FwZWQgJyUlJyB0dXJucyBpbnRvICclJ1xuICAgICAgICAgICAgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyA9IHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuc3Vic3RyaW5nKDAsIGluZGV4KSArIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuc3Vic3RyaW5nKGluZGV4ICsgMSk7XG4gICAgICAgICAgICBpbmRleCsrO1xuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgIC8vIFJlcGxhY2UgJyVkJyBvciAnJXMnIHdpdGggdGhlIGFyZ3VtZW50XG4gICAgICAgICAgICBhcmdzWzBdID0gcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyA9IHRoaXMucmVwbGFjZUFyZ3VtZW50KFxuICAgICAgICAgICAgICB0aGlzLnRvU3RyaW5nKGFyZ3NbMV0pLFxuICAgICAgICAgICAgICByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLFxuICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGFyZ3Muc3BsaWNlKDEsIDEpO1xuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdqJzpcbiAgICAgICAgICAgIC8vIFJlcGxhY2UgJWonIHdpdGggdGhlIGFyZ3VtZW50XG4gICAgICAgICAgICBhcmdzWzBdID0gcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyA9IHRoaXMucmVwbGFjZUFyZ3VtZW50KFxuICAgICAgICAgICAgICB0aGlzLnN0cmluZ2lmeShhcmdzWzFdKSxcbiAgICAgICAgICAgICAgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyxcbiAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGFyZ3Muc3BsaWNlKDEsIDEpO1xuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIGFyZ3MudG9TdHJpbmcoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChhcmdzLmxlbmd0aCA+IDEpIHtcbiAgICAgIGFyZ3MgPSBhcmdzLnJlZHVjZSgoYWNjdW11bGF0b3I6IHN0cmluZywgY3VycmVudFZhbHVlOiBzdHJpbmcgfCBFcnJvciwgaW5kZXg6IG51bWJlciwgYXJyYXk6IHN0cmluZ1tdKSA9PiB7XG4gICAgICAgIGlmIChpbmRleCArIDEgPT09IGFycmF5Lmxlbmd0aCAmJiBjdXJyZW50VmFsdWUgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5lcnJvclN0YWNrQWxzb0hhc0Vycm9yTWVzc2FnZSkge1xuICAgICAgICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yICsgJ1xcbicgKyB0aGlzLnRvU3RyaW5nKGN1cnJlbnRWYWx1ZS5zdGFjayk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yICsgJ1xcbicgKyB0aGlzLnRvU3RyaW5nKGN1cnJlbnRWYWx1ZS5tZXNzYWdlKSArICdcXG4nICsgdGhpcy50b1N0cmluZyhjdXJyZW50VmFsdWUuc3RhY2spO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yICsgYFske3RoaXMudG9TdHJpbmcoY3VycmVudFZhbHVlKX1dYDtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBhcmdzLnRvU3RyaW5nKCk7XG4gIH1cblxuICBwcml2YXRlIHN0cmluZ2lmeShhcmc6IGFueSk6IHN0cmluZyB7XG4gICAgY29uc3QgY2FjaGU6IG9iamVjdFtdID0gW107XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KFxuICAgICAgICBhcmcgaW5zdGFuY2VvZiBFcnJvciA/IHRoaXMudG9TdHJpbmcoYXJnKSA6IGFyZyxcbiAgICAgICAgKF8sIHZhbHVlKSA9PiB7XG4gICAgICAgICAgaWYgKCEhdmFsdWUgJiYgdmFsdWUgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICAgICAgICAgIGlmIChjYWNoZS5pbmNsdWRlcyh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuICc8cmVjdXJzaXZlPic7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhY2hlLnB1c2godmFsdWUpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfSxcbiAgICAgICAgMlxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gJ1tvYmplY3QgaW52YWxpZCBKU09OLnN0cmluZ2lmeV0nO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVwbGFjZUFyZ3VtZW50KGFyZ3VtZW50OiBhbnksIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmc6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuc3Vic3RyaW5nKDAsIGluZGV4KSArIHRoaXMudG9TdHJpbmcoYXJndW1lbnQpICsgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5zdWJzdHJpbmcoaW5kZXggKyAyKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9TdHJpbmcoZGF0YTogYW55KTogc3RyaW5nIHtcbiAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdib29sZWFuJykge1xuICAgICAgcmV0dXJuIGRhdGEgPyAndHJ1ZScgOiAnZmFsc2UnO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiBkYXRhLnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgbGV0IHRvU3RyaW5nU3RyID0gJyc7XG5cbiAgICBpZiAoZGF0YSkge1xuICAgICAgaWYgKHR5cGVvZiBkYXRhID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRvU3RyaW5nU3RyID0gZGF0YS50b1N0cmluZygpO1xuICAgICAgfSBlbHNlIGlmIChkYXRhIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdG9TdHJpbmdTdHIgPSBkYXRhLnRvU3RyaW5nKCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICB0b1N0cmluZ1N0ciA9ICdbb2JqZWN0IGludmFsaWQgdG9TdHJpbmcoKV0nO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRvU3RyaW5nU3RyO1xuICB9XG5cbiAgY29uc3RydWN0b3IoY2F0ZWdvcnk6IHN0cmluZywgYXBwZW5kZXJzOiBBcHBlbmRlcnMsIHRocmVzaG9sZDogTG9nZ2luZ1RocmVzaG9sZCkge1xuICAgIHRoaXMuX2NhdGVnb3J5ID0gY2F0ZWdvcnk7XG4gICAgdGhpcy5fYXBwZW5kZXJzID0gYXBwZW5kZXJzO1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRocmVzaG9sZDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEJ1aWxkRmVhdHVyZXMgZnJvbSAnLi4vZW52aXJvbm1lbnQvQnVpbGRGZWF0dXJlcyc7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbH0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvZ2dlckRlZmF1bHRzIHtcbiAgc3RhdGljIGdldCBkZWZhdWx0TG9nZ2luZ0xldmVsKCk6IExvZ2dpbmdMZXZlbCB7XG4gICAgcmV0dXJuIExvZ2dpbmdMZXZlbFtCdWlsZEZlYXR1cmVzLnNlbmRMb2dzXTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZGVmYXVsdENvbnNvbGVMb2dnaW5nTGV2ZWwoKTogTG9nZ2luZ0xldmVsIHtcbiAgICByZXR1cm4gTG9nZ2luZ0xldmVsW0J1aWxkRmVhdHVyZXMubG9nVG9Db25zb2xlXTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZGVmYXVsdFRlbGVtZXRyeUxvZ2dpbmdMZXZlbCgpOiBMb2dnaW5nTGV2ZWwge1xuICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuSW5mbztcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyLCB7TG9nZ2luZ0xldmVsLCBMb2dnaW5nTGV2ZWxUeXBlfSBmcm9tICcuL0xvZ2dlcic7XG5pbXBvcnQgQXBwZW5kZXJzIGZyb20gJy4vQXBwZW5kZXJzJztcbmltcG9ydCBMb2dnaW5nVGhyZXNob2xkIGZyb20gJy4vTG9nZ2luZ1RocmVzaG9sZCc7XG5pbXBvcnQgQ29uc29sZUFwcGVuZGVyIGZyb20gJy4vQ29uc29sZUFwcGVuZGVyJztcbmltcG9ydCBUZWxlbWV0cnlBcHBlbmRlciBmcm9tICcuLi90ZWxlbWV0cnkvVGVsZW1ldHJ5QXBlbmRlcic7XG5pbXBvcnQgVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiBmcm9tICcuLi90ZWxlbWV0cnkvVGVsZW1ldHJ5Q29uZmlndXJhdGlvbic7XG5pbXBvcnQgQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlciBmcm9tICcuLi9kb20vQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlcic7XG5pbXBvcnQgTG9nZ2VyRGVmYXVsdHMgZnJvbSAnLi9Mb2dnZXJEZWZhdWx0cyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvZ2dlckZhY3Rvcnkge1xuICBwcml2YXRlIHN0YXRpYyBfbG9nZ2Vyczoge1tjYXRlZ29yeTogc3RyaW5nXTogSUxvZ2dlcn0gPSB7fTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2FwcGVuZGVyczogQXBwZW5kZXJzID0gbmV3IEFwcGVuZGVycygpO1xuICBwcml2YXRlIHN0YXRpYyBfdGhyZXNob2xkOiBMb2dnaW5nVGhyZXNob2xkID0gbmV3IExvZ2dpbmdUaHJlc2hvbGQoKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb246IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24gPSBuZXcgVGVsZW1ldHJ5Q29uZmlndXJhdGlvbigpO1xuXG4gIHN0YXRpYyBnZXQgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbigpOiBUZWxlbWV0cnlDb25maWd1cmF0aW9uIHtcbiAgICByZXR1cm4gTG9nZ2VyRmFjdG9yeS5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBnZXRMb2dnZXIoY2F0ZWdvcnk6IHN0cmluZyk6IElMb2dnZXIge1xuICAgIGlmICh0eXBlb2YgY2F0ZWdvcnkgIT09ICdzdHJpbmcnKSB7XG4gICAgICBjYXRlZ29yeSA9ICdTREsnO1xuICAgIH1cblxuICAgIGNvbnN0IGxvZ2dlciA9IExvZ2dlckZhY3RvcnkuX2xvZ2dlcnNbY2F0ZWdvcnldO1xuXG4gICAgaWYgKGxvZ2dlcikge1xuICAgICAgcmV0dXJuIGxvZ2dlcjtcbiAgICB9XG5cbiAgICByZXR1cm4gTG9nZ2VyRmFjdG9yeS5fbG9nZ2Vyc1tjYXRlZ29yeV0gPSBuZXcgTG9nZ2VyKGNhdGVnb3J5LCB0aGlzLl9hcHBlbmRlcnMsIHRoaXMuX3RocmVzaG9sZCk7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlMb2dnZXJDb25maWdGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICBMb2dnZXJGYWN0b3J5LmFwcGx5TG9nZ2luZ0xldmVsKCk7XG4gICAgTG9nZ2VyRmFjdG9yeS5hcHBseUFwcGVuZGVyTG9nZ2luZ0xldmVsKCdjb25zb2xlJywgTG9nZ2VyRmFjdG9yeS5hcHBseUNvbnNvbGVMb2dnZXIuYmluZCh0aGlzKSk7XG4gICAgTG9nZ2VyRmFjdG9yeS5hcHBseUFwcGVuZGVyTG9nZ2luZ0xldmVsKCd0ZWxlbWV0cnknLCBMb2dnZXJGYWN0b3J5LmFwcGx5VGVsZW1ldHJ5TG9nZ2VyLmJpbmQodGhpcykpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYXBwbHlMb2dnaW5nTGV2ZWwoKTogdm9pZCB7XG4gICAgY29uc3QgcGFyYW1ldGVyVmFsdWUgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldFN0cmluZ1ZhbHVlKCdwaGVuaXgtbG9nZ2luZy1sZXZlbCcpIGFzIExvZ2dpbmdMZXZlbFR5cGU7XG5cbiAgICBpZiAoTG9nZ2luZ0xldmVsW3BhcmFtZXRlclZhbHVlXSkge1xuICAgICAgdGhpcy5fdGhyZXNob2xkLnNldFRocmVzaG9sZChMb2dnaW5nTGV2ZWxbcGFyYW1ldGVyVmFsdWVdKTtcbiAgICB9XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBhcHBseUFwcGVuZGVyTG9nZ2luZ0xldmVsKG5hbWU6IHN0cmluZywgYXBwbHlBcHBlbmRlcjogKGxldmVsOiBMb2dnaW5nTGV2ZWwpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBjb25zdCBwYXJhbWV0ZXJWYWx1ZSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0U3RyaW5nVmFsdWUoYHBoZW5peC0ke25hbWV9LWxvZ2dpbmctbGV2ZWxgKSBhcyBMb2dnaW5nTGV2ZWxUeXBlO1xuXG4gICAgaWYgKHBhcmFtZXRlclZhbHVlID09PSAnT2ZmJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGFwcGx5QXBwZW5kZXIoTG9nZ2luZ0xldmVsW3BhcmFtZXRlclZhbHVlXSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBhcHBseUNvbnNvbGVMb2dnZXIobGV2ZWw6IExvZ2dpbmdMZXZlbCk6IHZvaWQge1xuICAgIHRoaXMuX2FwcGVuZGVycy5hZGQobmV3IENvbnNvbGVBcHBlbmRlcihsZXZlbCB8fCBMb2dnZXJEZWZhdWx0cy5kZWZhdWx0Q29uc29sZUxvZ2dpbmdMZXZlbCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYXBwbHlUZWxlbWV0cnlMb2dnZXIobGV2ZWw6IExvZ2dpbmdMZXZlbCk6IHZvaWQge1xuICAgIHRoaXMuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24udGhyZXNob2xkID0gbGV2ZWwgfHwgTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdFRlbGVtZXRyeUxvZ2dpbmdMZXZlbDtcblxuICAgIHRoaXMuX2FwcGVuZGVycy5hZGQobmV3IFRlbGVtZXRyeUFwcGVuZGVyKHRoaXMuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24pKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdMb2dnZXJGYWN0b3J5IGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufVxuXG5Mb2dnZXJGYWN0b3J5LmFwcGx5TG9nZ2VyQ29uZmlnRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsLCBMb2dnaW5nTGV2ZWxUeXBlfSBmcm9tICcuL0xvZ2dlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvZ2dpbmdMZXZlbE1hcHBpbmcge1xuICBzdGF0aWMgY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZShsb2dnaW5nTGV2ZWw6IExvZ2dpbmdMZXZlbCk6IExvZ2dpbmdMZXZlbFR5cGUge1xuICAgIHN3aXRjaCAobG9nZ2luZ0xldmVsKSB7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5PZmY6XG4gICAgICAgIHJldHVybiAnT2ZmJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLlRyYWNlOlxuICAgICAgICByZXR1cm4gJ1RyYWNlJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLkRlYnVnOlxuICAgICAgICByZXR1cm4gJ0RlYnVnJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLkluZm86XG4gICAgICAgIHJldHVybiAnSW5mbyc7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5XYXJuOlxuICAgICAgICByZXR1cm4gJ1dhcm4nO1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuRXJyb3I6XG4gICAgICAgIHJldHVybiAnRXJyb3InO1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuRmF0YWw6XG4gICAgICAgIHJldHVybiAnRmF0YWwnO1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuQWxsOlxuICAgICAgICByZXR1cm4gJ0FsbCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShsb2dnaW5nTGV2ZWwpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBjb252ZXJ0TG9nZ2luZ0xldmVsVHlwZVRvTG9nZ2luZ0xldmVsKGxvZ2dpbmdMZXZlbFR5cGU6IExvZ2dpbmdMZXZlbFR5cGUpOiBMb2dnaW5nTGV2ZWwge1xuICAgIHN3aXRjaCAobG9nZ2luZ0xldmVsVHlwZSkge1xuICAgICAgY2FzZSAnT2ZmJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5PZmY7XG4gICAgICBjYXNlICdUcmFjZSc6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuVHJhY2U7XG4gICAgICBjYXNlICdEZWJ1Zyc6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuRGVidWc7XG4gICAgICBjYXNlICdJbmZvJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5JbmZvO1xuICAgICAgY2FzZSAnV2Fybic6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuV2FybjtcbiAgICAgIGNhc2UgJ0Vycm9yJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5FcnJvcjtcbiAgICAgIGNhc2UgJ0ZhdGFsJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5GYXRhbDtcbiAgICAgIGNhc2UgJ0FsbCc6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuQWxsO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUobG9nZ2luZ0xldmVsVHlwZSk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgTG9nZ2VyRGVmYXVsdHMgZnJvbSAnLi9Mb2dnZXJEZWZhdWx0cyc7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbH0gZnJvbSAnLi9Mb2dnZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2dnaW5nVGhyZXNob2xkIHtcbiAgcHJpdmF0ZSBfdGhyZXNob2xkOiBMb2dnaW5nTGV2ZWwgPSBMb2dnZXJEZWZhdWx0cy5kZWZhdWx0TG9nZ2luZ0xldmVsO1xuXG4gIGdldCB2YWx1ZSgpOiBMb2dnaW5nTGV2ZWwge1xuICAgIHJldHVybiB0aGlzLl90aHJlc2hvbGQ7XG4gIH1cblxuICBzZXRUaHJlc2hvbGQodGhyZXNob2xkOiBMb2dnaW5nTGV2ZWwpOiB2b2lkIHtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7VGVsZW1ldHJ5TGV2ZWx9IGZyb20gJy4vTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IE1ldHJpY3NUeXBlIGZyb20gJy4vTWV0cmljc1R5cGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNZXRyaWNUeXBlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWV0cmljczogTWV0cmljc1R5cGU7XG5cbiAgY29uc3RydWN0b3IobWV0cmljczogTWV0cmljc1R5cGUpIHtcbiAgICB0aGlzLl9tZXRyaWNzID0gbWV0cmljcztcbiAgfVxuXG4gIGdldE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gTWV0cmljc1R5cGVbdGhpcy5fbWV0cmljc107XG4gIH1cblxuICBnZXRUZWxlbWV0cnlMZXZlbCgpOiBUZWxlbWV0cnlMZXZlbCB7XG4gICAgc3dpdGNoICh0aGlzLl9tZXRyaWNzKSB7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlRpbWVUb0ZpcnN0RnJhbWU6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5Fc3NlbnRpYWw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLkNoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWU6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5Fc3NlbnRpYWw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlN0YWxsZWQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLkJ1ZmZlcmluZzpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuU2V0dXBDb21wbGV0ZWQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlNldHVwRmFpbGVkOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5Sb3VuZFRyaXBUaW1lOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5Eb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eTpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuTmV0d29ya1R5cGU6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlJlc29sdXRpb25DaGFuZ2VkOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5BcHBsaWNhdGlvbkZvcmVncm91bmQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLkFwcGxpY2F0aW9uQmFja2dyb3VuZDpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRoaXMuX21ldHJpY3MpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBUZWxlbWV0cnlEZWZhdWx0IGZyb20gJy4vVGVsZW1ldHJ5RGVmYXVsdCc7XG5cbmV4cG9ydCBlbnVtIFRlbGVtZXRyeUxldmVsIHtcbiAgT2ZmID0gMTAwLFxuICBFc3NlbnRpYWwgPSAxMCxcbiAgQWxsID0gLTFcbn1cblxuZXhwb3J0IHR5cGUgVGVsZW1ldHJ5TGV2ZWxUeXBlID0gJ09mZicgfCAnRXNzZW50aWFsJyB8ICdBbGwnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNZXRyaWNzQ29uZmlndXJhdGlvbiB7XG4gIHByaXZhdGUgX3VybCA9ICdodHRwczovL3RlbGVtZXRyeS5waGVuaXhydHMuY29tL3RlbGVtZXRyeS9tZXRyaWNzJztcbiAgcHJpdmF0ZSBfdGVuYW5jeTogc3RyaW5nID0gJy0nO1xuICBwcml2YXRlIF9zZXNzaW9uSWQ6IHN0cmluZyA9ICctJztcbiAgcHJpdmF0ZSBfZW52aXJvbm1lbnQ6IHN0cmluZyA9ICctJztcbiAgcHJpdmF0ZSBfdGhyZXNob2xkOiBUZWxlbWV0cnlMZXZlbCA9IFRlbGVtZXRyeURlZmF1bHQuZGVmYXVsdFRlbGVtZXRyeUxldmVsO1xuXG4gIGdldCB1cmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdXJsO1xuICB9XG5cbiAgc2V0IHVybCh1cmw6IHN0cmluZykge1xuICAgIGNvbnN0IG1ldHJpY3NVcmwgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHVybCk7XG5cbiAgICBtZXRyaWNzVXJsLnBhdGhuYW1lID0gbWV0cmljc1VybC5wYXRobmFtZSArICcvbWV0cmljcyc7XG5cbiAgICB0aGlzLl91cmwgPSBtZXRyaWNzVXJsLnRvU3RyaW5nKCk7XG4gIH1cblxuICBnZXQgZW52aXJvbm1lbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZW52aXJvbm1lbnQ7XG4gIH1cblxuICBzZXQgZW52aXJvbm1lbnQoZW52aXJvbm1lbnQ6IHN0cmluZykge1xuICAgIHRoaXMuX2Vudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XG4gIH1cblxuICBnZXQgdGVuYW5jeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl90ZW5hbmN5O1xuICB9XG5cbiAgc2V0IHRlbmFuY3kodGVuYW5jeTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdGVuYW5jeSA9IHRlbmFuY3k7XG4gIH1cblxuICBnZXQgc2Vzc2lvbklkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3Nlc3Npb25JZDtcbiAgfVxuXG4gIHNldCBzZXNzaW9uSWQoc2Vzc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zZXNzaW9uSWQgPSBzZXNzaW9uSWQ7XG4gIH1cblxuICBnZXQgdGhyZXNob2xkKCk6IFRlbGVtZXRyeUxldmVsIHtcbiAgICByZXR1cm4gdGhpcy5fdGhyZXNob2xkO1xuICB9XG5cbiAgc2V0IHRocmVzaG9sZCh0aHJlc2hvbGQ6IFRlbGVtZXRyeUxldmVsKSB7XG4gICAgdGhpcy5fdGhyZXNob2xkID0gdGhyZXNob2xkO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi9NZXRyaWNzU2VydmljZSc7XG5pbXBvcnQgTWV0cmljc0NvbmZpZ3VyYXRpb24sIHtUZWxlbWV0cnlMZXZlbH0gZnJvbSAnLi9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5pbXBvcnQgU0RLIGZyb20gJy4uL3Nkay9TREsnO1xuaW1wb3J0IFRlbGVtZXRyeVVybCBmcm9tICcuLi9zZGsvVGVsZW1ldHJ5VXJsJztcbmltcG9ydCBFbnZpcm9ubWVudCBmcm9tICcuLi9zZGsvRW52aXJvbm1lbnQnO1xuaW1wb3J0IFRlbGVtZXRyeUxldmVsTWFwcGluZyBmcm9tICcuL1RlbGVtZXRyaWNMZXZlbE1hcHBpbmcnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNZXRyaWNzRmFjdG9yeSB7XG4gIHByaXZhdGUgc3RhdGljIF9tZXRyaWNzU2VydmljZXM6IHtbY2F0ZWdvcnk6IHN0cmluZ106IE1ldHJpY3NTZXJ2aWNlfSA9IHt9O1xuXG4gIHN0YXRpYyBnZXRNZXRyaWNzU2VydmljZSh1cmw6IHN0cmluZyk6IE1ldHJpY3NTZXJ2aWNlIHtcbiAgICBpZiAodHlwZW9mIHVybCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgdXJsIG11c3QgYmUgYSBzdHJpbmcgaW5zdGVhZCByZWNlaXZlZCBbJHt0eXBlb2YgdXJsfV1gKTtcbiAgICB9XG5cbiAgICBjb25zdCBtZXRyaWNzU2VydmljZXMgPSBNZXRyaWNzRmFjdG9yeS5fbWV0cmljc1NlcnZpY2VzW3VybF07XG5cbiAgICBpZiAobWV0cmljc1NlcnZpY2VzKSB7XG4gICAgICByZXR1cm4gbWV0cmljc1NlcnZpY2VzO1xuICAgIH1cblxuICAgIGNvbnN0IG1ldHJpY3NDb25maWd1cmF0aW9uID0gbmV3IE1ldHJpY3NDb25maWd1cmF0aW9uKCk7XG5cbiAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi5zZXNzaW9uSWQgPSBTREsuY2xpZW50U2Vzc2lvbklkO1xuICAgIG1ldHJpY3NDb25maWd1cmF0aW9uLnRlbmFuY3kgPSBTREsudGVuYW5jeS52YWx1ZTtcbiAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi51cmwgPSBUZWxlbWV0cnlVcmwuZ2V0VGVsZW1ldHJ5VXJsKHVybCk7XG4gICAgbWV0cmljc0NvbmZpZ3VyYXRpb24uZW52aXJvbm1lbnQgPSBFbnZpcm9ubWVudC5nZXRFbnZpcm9ubWVudEZyb21VcmwodXJsKTtcblxuICAgIG1ldHJpY3NDb25maWd1cmF0aW9uLnRocmVzaG9sZCA9IFRlbGVtZXRyeUxldmVsTWFwcGluZy5jb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUeXBlVG9UZWxlbWV0cnlMZXZlbChTREsudGVsZW1ldHJ5TGV2ZWwpO1xuXG4gICAgcmV0dXJuIE1ldHJpY3NGYWN0b3J5Ll9tZXRyaWNzU2VydmljZXNbdXJsXSA9IG5ldyBNZXRyaWNzU2VydmljZShtZXRyaWNzQ29uZmlndXJhdGlvbik7XG4gIH1cblxuICBzdGF0aWMgc2V0VGVsZW1ldHJ5TGV2ZWwodGVsZW1ldHJ5TGV2ZWw6IFRlbGVtZXRyeUxldmVsKTogdm9pZCB7XG4gICAgY29uc3QgbWV0cmljc1NlcnZpY2VzID0gT2JqZWN0LnZhbHVlcyhNZXRyaWNzRmFjdG9yeS5fbWV0cmljc1NlcnZpY2VzKTtcblxuICAgIGlmIChtZXRyaWNzU2VydmljZXMgJiYgbWV0cmljc1NlcnZpY2VzLmxlbmd0aCkge1xuICAgICAgbWV0cmljc1NlcnZpY2VzLmZvckVhY2gobWV0cmljc1NlcnZpY2UgPT4ge1xuICAgICAgICBjb25zdCBtZXRyaWNzQ29uZmlndXJhdGlvbiA9IG1ldHJpY3NTZXJ2aWNlLm1ldHJpY3NDb25maWd1cmF0aW9uO1xuXG4gICAgICAgIG1ldHJpY3NDb25maWd1cmF0aW9uLnRocmVzaG9sZCA9IHRlbGVtZXRyeUxldmVsO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldHJpY3NGYWN0b3J5IGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgRXhwb25lbnRpYWxCYWNrb2ZmIGZyb20gJy4uL3RpbWUvRXhwb25lbnRpYWxCYWNrb2ZmJztcbmltcG9ydCBWZXJzaW9uTWFuYWdlciBmcm9tICcuLi9zZGsvdmVyc2lvbi9WZXJzaW9uTWFuYWdlcic7XG5pbXBvcnQgTWV0cmljVHlwZSBmcm9tICcuL01ldHJpY1R5cGUnO1xuaW1wb3J0IE1ldHJpY3NUeXBlIGZyb20gJy4vTWV0cmljc1R5cGUnO1xuaW1wb3J0IE1ldHJpY3NDb25maWd1cmF0aW9uIGZyb20gJy4vTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuXG5jb25zdCByZXF1ZXN0U2l6ZUxpbWl0ID0gMTAyNDtcbmNvbnN0IG1heEJ1ZmZlcmVkUmVjb3JkcyA9IDIwNDg7XG5cbmludGVyZmFjZSBJVmFsdWUge1xuICBzdHJpbmc/OiBzdHJpbmc7XG4gIHVpbnQ2ND86IG51bWJlcjtcbiAgZmxvYXQ/OiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBJTWV0cmljUmVjb3JkIHtcbiAgdGltZXN0YW1wOiBzdHJpbmc7XG4gIHRlbmFuY3k6IHN0cmluZztcbiAgc2Vzc2lvbklkOiBzdHJpbmc7XG4gIHN0cmVhbUlkPzogc3RyaW5nO1xuICBtZXRyaWM6IHN0cmluZztcbiAgdmFsdWU/OiBJVmFsdWU7XG4gIHByZXZpb3VzVmFsdWU/OiBJVmFsdWU7XG4gIGZ1bGxRdWFsaWZpZWROYW1lOiBzdHJpbmc7XG4gIGVudmlyb25tZW50OiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbiAgcnVudGltZTogbnVtYmVyO1xuICByZXNvdXJjZT86IHN0cmluZztcbiAga2luZD86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIElNZXRyaWMge1xuICBzdHJlYW1JZD86IHN0cmluZztcbiAgbWV0cmljVHlwZTogTWV0cmljc1R5cGU7XG4gIHZhbHVlPzogSVZhbHVlO1xuICBwcmV2aW91c1ZhbHVlPzogSVZhbHVlO1xuICBydW50aW1lOiBudW1iZXI7XG4gIHJlc291cmNlPzogc3RyaW5nO1xuICBraW5kPzogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNZXRyaWNzU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdNZXRyaWNzU2VydmljZScpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZXRyaWNzQ29uZmlndXJhdGlvbjogTWV0cmljc0NvbmZpZ3VyYXRpb247XG4gIHByaXZhdGUgcmVhZG9ubHkgX2V4cG9uZW50aWFsQmFja29mZjogRXhwb25lbnRpYWxCYWNrb2ZmO1xuICBwcml2YXRlIF9tZXRyaWNzOiBBcnJheTxJTWV0cmljUmVjb3JkPiA9IFtdO1xuICBwcml2YXRlIF9pc1NlbmRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfZmFpbHVyZUNvdW50ID0gMDtcbiAgcHJpdmF0ZSBfZG9tYWluID0gJyc7XG5cbiAgY29uc3RydWN0b3IobWV0cmljc0NvbmZpZ3VyYXRpb246IE1ldHJpY3NDb25maWd1cmF0aW9uKSB7XG4gICAgdGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb24gPSBtZXRyaWNzQ29uZmlndXJhdGlvbjtcbiAgICB0aGlzLl9leHBvbmVudGlhbEJhY2tvZmYgPSBuZXcgRXhwb25lbnRpYWxCYWNrb2ZmKCk7XG4gICAgdGhpcy5nZXRMb2NhdGlvbkhvc3RuYW1lRnJvbUdsb2JhbFNjb3BlKCkudGhlbihsb2NhdGlvbkhvc3RuYW1lID0+IHtcbiAgICAgIHRoaXMuX2RvbWFpbiA9IGxvY2F0aW9uSG9zdG5hbWU7XG4gICAgfSk7XG4gIH1cblxuICBnZXQgbWV0cmljc0NvbmZpZ3VyYXRpb24oKTogTWV0cmljc0NvbmZpZ3VyYXRpb24ge1xuICAgIHJldHVybiB0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbjtcbiAgfVxuXG4gIHB1c2gobWV0cmljOiBJTWV0cmljKTogdm9pZCB7XG4gICAgY29uc3Qge3N0cmVhbUlkLCB2YWx1ZSwgcHJldmlvdXNWYWx1ZSwgcnVudGltZSwgcmVzb3VyY2UsIGtpbmR9ID0gbWV0cmljO1xuICAgIGNvbnN0IG1ldHJpY1R5cGUgPSBuZXcgTWV0cmljVHlwZShtZXRyaWMubWV0cmljVHlwZSk7XG5cbiAgICBpZiAodGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb24udGhyZXNob2xkID4gbWV0cmljVHlwZS5nZXRUZWxlbWV0cnlMZXZlbCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbWV0cmljUmVjb3JkID0ge1xuICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB0ZW5hbmN5OiB0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbi50ZW5hbmN5LFxuICAgICAgc2Vzc2lvbklkOiB0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbi5zZXNzaW9uSWQsXG4gICAgICBzdHJlYW1JZCxcbiAgICAgIG1ldHJpYzogbWV0cmljVHlwZS5nZXROYW1lKCksXG4gICAgICB2YWx1ZSxcbiAgICAgIHByZXZpb3VzVmFsdWUsXG4gICAgICBmdWxsUXVhbGlmaWVkTmFtZTogdGhpcy5fZG9tYWluLFxuICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uLmVudmlyb25tZW50LFxuICAgICAgdmVyc2lvbjogVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbixcbiAgICAgIHJ1bnRpbWUsXG4gICAgICByZXNvdXJjZSxcbiAgICAgIGtpbmRcbiAgICB9O1xuXG4gICAgdGhpcy5fbWV0cmljcy5wdXNoKG1ldHJpY1JlY29yZCk7XG5cbiAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTWV0cmljc0lmQWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMb2NhdGlvbkhvc3RuYW1lRnJvbUdsb2JhbFNjb3BlKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4ocmVzb2x2ZUxvY2F0aW9uSG9zdG5hbWUgPT4ge1xuICAgICAgY29uc3QgZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24gPSBHbG9iYWxTY29wZS5zdWJzY3JpYmUoZ2xvYmFsU2NvcGUgPT4ge1xuICAgICAgICBpZiAoIWdsb2JhbFNjb3BlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzb2x2ZUxvY2F0aW9uSG9zdG5hbWUoZ2xvYmFsU2NvcGUubG9jYXRpb25Ib3N0bmFtZSk7XG4gICAgICAgIGdsb2JhbFNjb3BlLnNldFRpbWVvdXQoKCkgPT4gZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24uZGlzcG9zZSgpLCAwKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kTWV0cmljcyhtZXRyaWNzTWVzc2FnZXM6IEFycmF5PElNZXRyaWNSZWNvcmQ+KTogUHJvbWlzZTxSZXNwb25zZT4ge1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoe3JlY29yZHM6IG1ldHJpY3NNZXNzYWdlc30pKTtcblxuICAgIHJldHVybiBhd2FpdCBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbi51cmwsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogZm9ybURhdGFcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2VuZE1ldHJpY3NJZkFibGUoKTogUHJvbWlzZTxSZXNwb25zZSB8IHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fbWV0cmljcy5sZW5ndGggPD0gMCB8fCB0aGlzLl9pc1NlbmRpbmcgfHwgIUdsb2JhbFNjb3BlLnZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5faXNTZW5kaW5nID0gdHJ1ZTtcblxuICAgIGNvbnN0IG1ldHJpY3NNZXNzYWdlcyA9IHRoaXMuX21ldHJpY3Muc2xpY2UoMCwgcmVxdWVzdFNpemVMaW1pdCk7XG5cbiAgICB0aGlzLl9tZXRyaWNzID0gdGhpcy5fbWV0cmljcy5zbGljZShyZXF1ZXN0U2l6ZUxpbWl0KTtcblxuICAgIHJldHVybiB0aGlzLnNlbmRNZXRyaWNzKG1ldHJpY3NNZXNzYWdlcykudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICBpZiAodGhpcy5pc1Jlc3BvbnNlU3RhdHVzQ29kZVJldHJ5YWJsZShyZXNwb25zZSkpIHtcbiAgICAgICAgaWYgKHRoaXMuX21ldHJpY3MubGVuZ3RoIDw9IG1heEJ1ZmZlcmVkUmVjb3Jkcykge1xuICAgICAgICAgIHRoaXMuX2ZhaWx1cmVDb3VudCsrO1xuXG4gICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9tZXRyaWNzID0gWy4uLm1ldHJpY3NNZXNzYWdlcywgLi4udGhpcy5fbWV0cmljc107XG5cbiAgICAgICAgICAgIHRoaXMuX2lzU2VuZGluZyA9IGZhbHNlO1xuXG4gICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTWV0cmljc0lmQWJsZSgpO1xuICAgICAgICAgIH0sIHRoaXMuX2V4cG9uZW50aWFsQmFja29mZi5nZXRFeHBvbmVudGlhbEJhY2tvZmZJbnRlcnZhbEJ5RmFpbHVyZUNvdW50KHRoaXMuX2ZhaWx1cmVDb3VudCkpO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdUb28gbWFueSBjYWNoZWQgbWV0cmljIHJlY29yZHMgWyVzXSwgZHJvcHBpbmcgWyVzXSByZWNvcmRzJywgdGhpcy5fbWV0cmljcy5sZW5ndGgsIG1ldHJpY3NNZXNzYWdlcy5sZW5ndGgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9pc1NlbmRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2ZhaWx1cmVDb3VudCA9IDA7XG5cbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRNZXRyaWNzSWZBYmxlKCk7XG5cbiAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICB0aGlzLl9pc1NlbmRpbmcgPSBmYWxzZTtcblxuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZE1ldHJpY3NJZkFibGUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaXNSZXNwb25zZVN0YXR1c0NvZGVSZXRyeWFibGUoe3N0YXR1c306IFJlc3BvbnNlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIC9eNVxcZHsyfSQvLnRlc3Qoc3RhdHVzLnRvU3RyaW5nKCkpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5lbnVtIE1ldHJpY3NUeXBlIHtcbiAgVGltZVRvRmlyc3RGcmFtZSxcbiAgQ2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZSxcbiAgU3RhbGxlZCxcbiAgQnVmZmVyaW5nLFxuICBTZXR1cENvbXBsZXRlZCxcbiAgU2V0dXBGYWlsZWQsXG4gIFJvdW5kVHJpcFRpbWUsXG4gIERvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5LFxuICBOZXR3b3JrVHlwZSxcbiAgUmVzb2x1dGlvbkNoYW5nZWQsXG4gIEFwcGxpY2F0aW9uRm9yZWdyb3VuZCxcbiAgQXBwbGljYXRpb25CYWNrZ3JvdW5kXG59XG5cbmV4cG9ydCBkZWZhdWx0IE1ldHJpY3NUeXBlOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtUZWxlbWV0cnlMZXZlbCwgVGVsZW1ldHJ5TGV2ZWxUeXBlfSBmcm9tICcuL01ldHJpY3NDb25maWd1cmF0aW9uJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nIHtcbiAgc3RhdGljIGNvbnZlcnRUZWxlbWV0cnlMZXZlbFRvVGVsZW1ldHJ5TGV2ZWxUeXBlKHRlbGVtZXRyeUxldmVsOiBUZWxlbWV0cnlMZXZlbCk6IFRlbGVtZXRyeUxldmVsVHlwZSB7XG4gICAgc3dpdGNoICh0ZWxlbWV0cnlMZXZlbCkge1xuICAgICAgY2FzZSBUZWxlbWV0cnlMZXZlbC5PZmY6XG4gICAgICAgIHJldHVybiAnT2ZmJztcbiAgICAgIGNhc2UgVGVsZW1ldHJ5TGV2ZWwuRXNzZW50aWFsOlxuICAgICAgICByZXR1cm4gJ0Vzc2VudGlhbCc7XG4gICAgICBjYXNlIFRlbGVtZXRyeUxldmVsLkFsbDpcbiAgICAgICAgcmV0dXJuICdBbGwnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUodGVsZW1ldHJ5TGV2ZWwpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBjb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUeXBlVG9UZWxlbWV0cnlMZXZlbCh0ZWxlbWV0cnlMZXZlbFR5cGU6IFRlbGVtZXRyeUxldmVsVHlwZSk6IFRlbGVtZXRyeUxldmVsIHtcbiAgICBzd2l0Y2ggKHRlbGVtZXRyeUxldmVsVHlwZSkge1xuICAgICAgY2FzZSAnT2ZmJzpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLk9mZjtcbiAgICAgIGNhc2UgJ0Vzc2VudGlhbCc6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5Fc3NlbnRpYWw7XG4gICAgICBjYXNlICdBbGwnOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUodGVsZW1ldHJ5TGV2ZWxUeXBlKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBCdWlsZEZlYXR1cmVzIGZyb20gJy4uL2Vudmlyb25tZW50L0J1aWxkRmVhdHVyZXMnO1xuaW1wb3J0IHtUZWxlbWV0cnlMZXZlbH0gZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeURlZmF1bHQge1xuICBzdGF0aWMgZ2V0IGRlZmF1bHRUZWxlbWV0cnlMZXZlbCgpOiBUZWxlbWV0cnlMZXZlbCB7XG4gICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsW0J1aWxkRmVhdHVyZXMuc2VuZE1ldHJpY3NdO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uRmFjdG9yeSBmcm9tICcuL0lQZWVyQ29ubmVjdGlvbkZhY3RvcnknO1xuaW1wb3J0IFZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3RvcnkgZnJvbSAnLi9WYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5JztcblxuZXhwb3J0IGludGVyZmFjZSBJUGVlckNvbm5lY3Rpb25PZmZlckluaXQge1xuICBhdWRpb1RyYW5zY2VpdmVycz86IFJUQ1J0cFRyYW5zY2VpdmVyW107XG4gIHZpZGVvVHJhbnNjZWl2ZXJzPzogUlRDUnRwVHJhbnNjZWl2ZXJbXTtcbiAgcGVlckNvbm5lY3Rpb246IElQZWVyQ29ubmVjdGlvbjtcbiAgbG9jYWxPZmZlcjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbn1cblxuZXhwb3J0IGVudW0gRW5jb2RlZEluc2VydGFibGVTdHJlYW1zIHtcbiAgRGlzYWJsZWQsXG4gIEVuYWJsZWRcbn1cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRUcmFja0tpbmRzOiAoJ2F1ZGlvJyB8ICd2aWRlbycpW10gPSBbJ2F1ZGlvJywgJ3ZpZGVvJ107XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBlZXJDb25uZWN0aW9uU2VydmljZSB7XG4gIHByaXZhdGUgc3RhdGljIF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignUGVlckNvbm5lY3Rpb25TZXJ2aWNlJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9wZWVyQ29ubmVjdGlvbkZhY3Rvcnk6IFN1YmplY3Q8SVBlZXJDb25uZWN0aW9uRmFjdG9yeT4gPSBuZXcgU3ViamVjdDxJUGVlckNvbm5lY3Rpb25GYWN0b3J5PihuZXcgVmFuaWxsYVBlZXJDb25uZWN0aW9uRmFjdG9yeSgpKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2NhY2hlZDoge1xuICAgIGRpcmVjdGlvbj86IFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uO1xuICAgIHBlZXJDb25uZWN0aW9uOiBQcm9taXNlPElQZWVyQ29ubmVjdGlvbk9mZmVySW5pdD47XG4gIH0gfCBudWxsO1xuXG4gIHN0YXRpYyBnZXQgcGVlckNvbm5lY3Rpb25GYWN0b3J5KCk6IFN1YmplY3Q8SVBlZXJDb25uZWN0aW9uRmFjdG9yeT4ge1xuICAgIHJldHVybiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX3BlZXJDb25uZWN0aW9uRmFjdG9yeTtcbiAgfVxuXG4gIHN0YXRpYyBpbml0aWF0ZUluaXRpYWxQcmVjYWNoaW5nKCk6IHZvaWQge1xuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5pc1ByZWNhY2hpbmdFbmFibGVkKSB7XG4gICAgICBjb25zdCBpZ25vcmVkID0gUGVlckNvbm5lY3Rpb25TZXJ2aWNlLnByZWNhY2hlQ3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcigpXG4gICAgICAgIC5jYXRjaChlID0+IFBlZXJDb25uZWN0aW9uU2VydmljZS5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcHJlLWNhY2hlIHBlZXIgY29ubmVjdGlvbiBvZmZlcicsIGUpKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgcHJlY2FjaGVDcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyKCk6IFByb21pc2U8eyBwZWVyQ29ubmVjdGlvbjogUHJvbWlzZTxJUGVlckNvbm5lY3Rpb25PZmZlckluaXQgfCB2b2lkPjsgZGlyZWN0aW9uOiBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbiB9PiB7XG4gICAgcmV0dXJuIFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkID0ge1xuICAgICAgZGlyZWN0aW9uOiAncmVjdm9ubHknLFxuICAgICAgcGVlckNvbm5lY3Rpb246IFBlZXJDb25uZWN0aW9uU2VydmljZS5jcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyKClcbiAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgIFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkID0gbnVsbDtcblxuICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH0pXG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBjcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyKGRpcmVjdGlvbjogUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24gPSAncmVjdm9ubHknLCB0cmFja0tpbmRzID0gZGVmYXVsdFRyYWNrS2luZHMsIGVuY29kZWRJbnNlcnRhYmxlU3RyZWFtczogRW5jb2RlZEluc2VydGFibGVTdHJlYW1zID0gRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLkRpc2FibGVkKTogUHJvbWlzZTxJUGVlckNvbm5lY3Rpb25PZmZlckluaXQ+IHtcbiAgICBpZiAoUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9jYWNoZWQgJiYgUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9jYWNoZWQuZGlyZWN0aW9uID09PSBkaXJlY3Rpb24gJiYgZW5jb2RlZEluc2VydGFibGVTdHJlYW1zID09PSBFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMuRGlzYWJsZWQgJiYgdGhpcy5pc1RyYWNrc0tpbmRzRXF1aXZhbGVudFRvRGVmYXVsdCh0cmFja0tpbmRzKSkge1xuICAgICAgY29uc3QgdmFsdWUgPSBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZC5wZWVyQ29ubmVjdGlvbjtcblxuICAgICAgUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9jYWNoZWQgPSBudWxsO1xuXG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgY29uc3QgY29uZmlndXJhdGlvbjogUlRDQ29uZmlndXJhdGlvbiB8IHVuZGVmaW5lZCA9IEZlYXR1cmVFbmFibGVtZW50LmlzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkID8ge2VuY29kZWRJbnNlcnRhYmxlU3RyZWFtczogZW5jb2RlZEluc2VydGFibGVTdHJlYW1zID09PSBFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMuRW5hYmxlZH0gOiB1bmRlZmluZWQ7XG5cbiAgICByZXR1cm4gUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9wZWVyQ29ubmVjdGlvbkZhY3RvcnkudmFsdWUuY3JlYXRlUGVlckNvbm5lY3Rpb24oY29uZmlndXJhdGlvbilcbiAgICAgIC50aGVuKGFzeW5jIHBlZXJDb25uZWN0aW9uID0+IHtcbiAgICAgICAgY29uc3Qgc3VwcG9ydHNBZGRUcmFuc2NlaXZlciA9IHBlZXJDb25uZWN0aW9uLnN1cHBvcnRzQWRkVHJhbnNjZWl2ZXI7XG4gICAgICAgIGNvbnN0IGF1ZGlvVHJhbnNjZWl2ZXJzOiBSVENSdHBUcmFuc2NlaXZlcltdID0gW107XG4gICAgICAgIGNvbnN0IHZpZGVvVHJhbnNjZWl2ZXJzOiBSVENSdHBUcmFuc2NlaXZlcltdID0gW107XG5cbiAgICAgICAgaWYgKHN1cHBvcnRzQWRkVHJhbnNjZWl2ZXIpIHtcbiAgICAgICAgICB0cmFja0tpbmRzLmZvckVhY2goa2luZCA9PiB7XG4gICAgICAgICAgICBpZiAoa2luZCA9PT0gJ2F1ZGlvJykge1xuICAgICAgICAgICAgICBhdWRpb1RyYW5zY2VpdmVycy5wdXNoKHBlZXJDb25uZWN0aW9uLmFkZFRyYW5zY2VpdmVyKGtpbmQsIHtkaXJlY3Rpb259KSk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoa2luZCA9PT0gJ3ZpZGVvJykge1xuICAgICAgICAgICAgICB2aWRlb1RyYW5zY2VpdmVycy5wdXNoKHBlZXJDb25uZWN0aW9uLmFkZFRyYW5zY2VpdmVyKGtpbmQsIHtkaXJlY3Rpb259KSk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGF1ZGlvVHJhbnNjZWl2ZXJzLFxuICAgICAgICAgICAgdmlkZW9UcmFuc2NlaXZlcnMsXG4gICAgICAgICAgICBwZWVyQ29ubmVjdGlvbjogcGVlckNvbm5lY3Rpb24sXG4gICAgICAgICAgICBsb2NhbE9mZmVyOiBhd2FpdCBwZWVyQ29ubmVjdGlvbi5jcmVhdGVPZmZlcih1bmRlZmluZWQpXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSBkaXJlY3Rpb24gPT09ICdyZWN2b25seScgPyB7XG4gICAgICAgICAgb2ZmZXJUb1JlY2VpdmVBdWRpbzogdHJ1ZSxcbiAgICAgICAgICBvZmZlclRvUmVjZWl2ZVZpZGVvOiB0cnVlXG4gICAgICAgIH0gOiB7fTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHBlZXJDb25uZWN0aW9uOiBwZWVyQ29ubmVjdGlvbixcbiAgICAgICAgICBsb2NhbE9mZmVyOiBhd2FpdCBwZWVyQ29ubmVjdGlvbi5jcmVhdGVPZmZlcihvcHRpb25zKVxuICAgICAgICB9O1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBpc1RyYWNrc0tpbmRzRXF1aXZhbGVudFRvRGVmYXVsdCh0cmFja3NLaW5kczogKCdhdWRpbycgfCAndmlkZW8nKVtdKTogYm9vbGVhbiB7XG4gICAgaWYgKHRyYWNrc0tpbmRzLmxlbmd0aCAhPT0gZGVmYXVsdFRyYWNrS2luZHMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgY291bnRUcmFja0tpbmRzID0gKGFycmF5OiAoJ2F1ZGlvJyB8ICd2aWRlbycpW10pID0+IGFycmF5LnJlZHVjZSgodHJhY2tLaW5kQ291bnQsIGtpbmQpID0+IHtcbiAgICAgIHRyYWNrS2luZENvdW50W2tpbmRdID0gKHRyYWNrS2luZENvdW50W2tpbmRdIHx8IDApICsgMTtcblxuICAgICAgcmV0dXJuIHRyYWNrS2luZENvdW50O1xuICAgIH0sIHtcbiAgICAgIGF1ZGlvOiAwLFxuICAgICAgdmlkZW86IDBcbiAgICB9KTtcbiAgICBjb25zdCBjb3VudGVkVHJhY2tLaW5kcyA9IGNvdW50VHJhY2tLaW5kcyh0cmFja3NLaW5kcyk7XG4gICAgY29uc3QgY291bnRlZERlZmF1bHRUcmFja0tpbmRzID0gY291bnRUcmFja0tpbmRzKGRlZmF1bHRUcmFja0tpbmRzKTtcblxuICAgIHJldHVybiBjb3VudGVkVHJhY2tLaW5kcy5hdWRpbyA9PT0gY291bnRlZERlZmF1bHRUcmFja0tpbmRzLmF1ZGlvICYmIGNvdW50ZWRUcmFja0tpbmRzLnZpZGVvID09PSBjb3VudGVkRGVmYXVsdFRyYWNrS2luZHMudmlkZW87XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignUGVlckNvbm5lY3Rpb25TZXJ2aWNlIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufVxuXG5QZWVyQ29ubmVjdGlvblNlcnZpY2UuaW5pdGlhdGVJbml0aWFsUHJlY2FjaGluZygpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIge1xuICBzdGF0aWMgdHJ1bmNhdGVJY2VTZXJ2ZXJzKGNvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24pOiBSVENDb25maWd1cmF0aW9uIHtcbiAgICBjb25zdCBpY2VTZXJ2ZXJzOiBSVENJY2VTZXJ2ZXJbXSA9IFtdO1xuXG4gICAgaWYgKCFjb25maWd1cmF0aW9uLmljZVNlcnZlcnMpIHtcbiAgICAgIHJldHVybiBjb25maWd1cmF0aW9uO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCB1cmxzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgMjsgaW5kZXgrKykge1xuICAgICAgICBjb25zdCB1cmwgPSBjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0udXJsc1tpbmRleF07XG5cbiAgICAgICAgaWYgKHVybCkge1xuICAgICAgICAgIHVybHMucHVzaChjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0udXJsc1tpbmRleF0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGljZVNlcnZlcnMucHVzaCh7XG4gICAgICAgIHVybHM6IHVybHMsXG4gICAgICAgIHVzZXJuYW1lOiBjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0udXNlcm5hbWUsXG4gICAgICAgIGNyZWRlbnRpYWw6IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS5jcmVkZW50aWFsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25maWd1cmF0aW9uLmljZVNlcnZlcnMgPSBpY2VTZXJ2ZXJzO1xuXG4gICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0lEaXNwb3NhYmxlJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi9JUGVlckNvbm5lY3Rpb24nO1xuaW1wb3J0IFNkcFBhcnNlciBmcm9tICcuL1NkcFBhcnNlcic7XG5pbXBvcnQgUmVhZE9ubHlTdWJqZWN0IGZyb20gJy4uL3J4L1JlYWRPbmx5U3ViamVjdCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVJ0Y01vbml0b3JTdGF0aXN0aWMge1xuICBba2luZDogc3RyaW5nXTogSVJ0Y1N0YXRpc3RpYztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTGVnYWN5UlRDU3RhdHNSZXBvcnQge1xuICByZXN1bHQ6ICgpID0+IElMZWdhY3lSVENTdGF0c1JlcG9ydEl0ZW1bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTGVnYWN5UlRDU3RhdHNSZXBvcnRJdGVtIGV4dGVuZHMgUlRDU3RhdHNSZXBvcnQge1xuICB0eXBlOiBzdHJpbmc7XG4gIG5hbWVzOiAoKSA9PiBzdHJpbmdbXTtcbiAgc3RhdDogKG5hbWU6IHN0cmluZykgPT4gbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElSdGNTdGF0aXN0aWMge1xuICBzc3JjPzogc3RyaW5nO1xuICBtZWRpYVR5cGU/OiBzdHJpbmc7XG4gIHRpbWVzdGFtcDogbnVtYmVyO1xuICBiaXRyYXRlPzogbnVtYmVyO1xuICBieXRlc1JlY2VpdmVkPzogbnVtYmVyO1xuICBmcmFtZXNEZWNvZGVkPzogbnVtYmVyO1xuICBwYWNrZXRzTG9zdD86IG51bWJlcjtcbiAgcGFja2V0c1JlY2VpdmVkPzogbnVtYmVyO1xuICBjb2RlYz86IHN0cmluZztcbiAgZnBzPzogbnVtYmVyO1xuICByb3VuZFRyaXBUaW1lPzogbnVtYmVyO1xuICBsYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXA/OiBudW1iZXI7XG59XG5cbmNvbnN0IHVwZGF0ZVN0YXRpc3RpY1RpbWVvdXQgPSAxMDAwO1xuY29uc3QgZ2V0U3RhdHNUaW1lb3V0RHVyYXRpb24gPSA1MDAwO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSdGNDb25uZWN0aW9uTW9uaXRvciBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1J0Y0Nvbm5lY3Rpb25Nb25pdG9yJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VzdGltYXRlZFJvdW5kVHJpcFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfZXN0aW1hdGVkVmlkZW9Db2RlYzogc3RyaW5nID0gJ3Vua25vd24nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lc3RpbWF0ZWRBdWRpb0NvZGVjOiBzdHJpbmcgPSAndW5rbm93bic7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3J0Y1N0YXRpc3RpYzogU3ViamVjdDxJUnRjTW9uaXRvclN0YXRpc3RpYyB8IG51bGw+ID0gbmV3IFN1YmplY3Q8SVJ0Y01vbml0b3JTdGF0aXN0aWMgfCBudWxsPih7fSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICBwcml2YXRlIF9wZWVyQ29ubmVjdGlvbjogSVBlZXJDb25uZWN0aW9uIHwgbnVsbDtcbiAgcHJpdmF0ZSBfaXNNb25pdG9yUnVubmluZyA9IHRydWU7XG4gIHByaXZhdGUgX3VwZGF0ZVRpbWVvdXQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF90cmFja3NUb01vbml0b3I6IHN0cmluZ1tdO1xuICBwcml2YXRlIF9tb25pdG9yR2VuZXJhdGlvbiA9IDA7XG5cbiAgY29uc3RydWN0b3IocGVlckNvbm5lY3Rpb246IElQZWVyQ29ubmVjdGlvbiwgbWVkaWFTdHJlYW06IE1lZGlhU3RyZWFtLCBlc3RpbWF0ZWRSb3VuZFRyaXBUaW1lOiBudW1iZXIsIGlzRm9yZWdyb3VuZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KSB7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24gPSBwZWVyQ29ubmVjdGlvbjtcbiAgICB0aGlzLl9lc3RpbWF0ZWRSb3VuZFRyaXBUaW1lID0gZXN0aW1hdGVkUm91bmRUcmlwVGltZTtcbiAgICB0aGlzLl90cmFja3NUb01vbml0b3IgPSBtZWRpYVN0cmVhbS5nZXRUcmFja3MoKS5tYXAodHJhY2sgPT4gdHJhY2sua2luZCkgfHwgW107XG5cbiAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIGlmICghRmVhdHVyZUVuYWJsZW1lbnQuZ2V0Q3VycmVudE9mZmVyRGlzYWJsZWQgJiYgdGhpcy5fcGVlckNvbm5lY3Rpb24/LmN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbj8uc2RwKSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZFNEUCA9IG5ldyBTZHBQYXJzZXIodGhpcy5fcGVlckNvbm5lY3Rpb24uY3VycmVudFJlbW90ZURlc2NyaXB0aW9uLnNkcCk7XG5cbiAgICAgICAgdGhpcy5fZXN0aW1hdGVkQXVkaW9Db2RlYyA9IHBhcnNlZFNEUC5hdWRpb0NvZGVjO1xuICAgICAgICB0aGlzLl9lc3RpbWF0ZWRWaWRlb0NvZGVjID0gcGFyc2VkU0RQLnZpZGVvQ29kZWM7XG4gICAgICB9XG5cbiAgICAgIGxldCBpc0luaXRpYWxTdWJzY3JpcHRpb25DYWxsYmFjayA9IHRydWU7XG5cbiAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChcbiAgICAgICAgaXNGb3JlZ3JvdW5kLnN1YnNjcmliZShmb3JlZ3JvdW5kID0+IHtcbiAgICAgICAgICBpZiAoaXNJbml0aWFsU3Vic2NyaXB0aW9uQ2FsbGJhY2spIHtcbiAgICAgICAgICAgIGlzSW5pdGlhbFN1YnNjcmlwdGlvbkNhbGxiYWNrID0gZmFsc2U7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIWZvcmVncm91bmQgfHwgIXRoaXMuX2lzTW9uaXRvclJ1bm5pbmcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBJbnZhbGlkYXRlIGFueSBpbi1mbGlnaHQgcG9sbCBmcm9tIGJlZm9yZSB0aGUgZnJlZXplXG4gICAgICAgICAgdGhpcy5fbW9uaXRvckdlbmVyYXRpb24rKztcblxuICAgICAgICAgIGlmICh0aGlzLl91cGRhdGVUaW1lb3V0KSB7XG4gICAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGhpcy5fdXBkYXRlVGltZW91dCk7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVUaW1lb3V0ID0gbnVsbDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ1Jlc3RhcnRpbmcgc3RhdHMgcG9sbGluZyBhZnRlciBmb3JlZ3JvdW5kIHRyYW5zaXRpb24nKTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZVN0YXRpc3RpYygpO1xuICAgICAgICB9KVxuICAgICAgKTtcblxuICAgICAgdGhpcy51cGRhdGVTdGF0aXN0aWMoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgcnRjU3RhdGlzdGljKCk6IFN1YmplY3Q8SVJ0Y01vbml0b3JTdGF0aXN0aWMgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3J0Y1N0YXRpc3RpYztcbiAgfVxuXG4gIHB1YmxpYyBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX21vbml0b3JHZW5lcmF0aW9uKys7XG4gICAgdGhpcy5faXNNb25pdG9yUnVubmluZyA9IGZhbHNlO1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uID0gbnVsbDtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG5cbiAgICBpZiAodGhpcy5fdXBkYXRlVGltZW91dCkge1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRoaXMuX3VwZGF0ZVRpbWVvdXQpO1xuICAgICAgdGhpcy5fdXBkYXRlVGltZW91dCA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB1cGRhdGVTdGF0aXN0aWMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmdldFN0YXRzUHJvbWlzZUJhc2VkRGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnVwZGF0ZVN0YXRpc3RpY0xlZ2FjeSgpO1xuICAgIH1cblxuICAgIC8vIFNhZmFyaSAxMSBkb2VzbnQgaGF2ZSBraW5kIG9yIG1lZGlhVHlwZSBzbyB3ZSBuZWVkIHRvIHRha2UgaXQgZnJvbSB0aGUgaW5ib3VuZC1ydHAgb2JqZWN0IGlkXG4gICAgY29uc3QgZ2V0S2luZEZvclNhZmFyaTExID0gKGl0ZW06IHtpZDogc3RyaW5nfSk6IHN0cmluZyA9PiBpdGVtLmlkLmluY2x1ZGVzKCdBdWRpbycpID8gJ2F1ZGlvJyA6IGl0ZW0uaWQuaW5jbHVkZXMoJ1ZpZGVvJykgPyAndmlkZW8nIDogJyc7XG4gICAgY29uc3QgZ2VuZXJhdGlvbiA9IHRoaXMuX21vbml0b3JHZW5lcmF0aW9uO1xuICAgIGxldCB0aW1lb3V0SGFuZGxlOiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qgc3RhdHNQcm9taXNlID0gdGhpcy5fcGVlckNvbm5lY3Rpb24/LmdldFN0YXRzKG51bGwpO1xuXG4gICAgICBpZiAoIXN0YXRzUHJvbWlzZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRpbWVvdXRQcm9taXNlID0gbmV3IFByb21pc2U8bnVsbD4ocmVzb2x2ZSA9PiB7XG4gICAgICAgIHRpbWVvdXRIYW5kbGUgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHJlc29sdmUobnVsbCksIGdldFN0YXRzVGltZW91dER1cmF0aW9uKTtcbiAgICAgIH0pO1xuICAgICAgY29uc3Qgc3RhdHMgPSBhd2FpdCBQcm9taXNlLnJhY2UoW3N0YXRzUHJvbWlzZSwgdGltZW91dFByb21pc2VdKTtcblxuICAgICAgaWYgKGdlbmVyYXRpb24gIT09IHRoaXMuX21vbml0b3JHZW5lcmF0aW9uIHx8ICF0aGlzLl9pc01vbml0b3JSdW5uaW5nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCFzdGF0cykge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ2dldFN0YXRzKCkgdGltZWQgb3V0LCBza2lwcGluZyBzdGF0cyBwcm9jZXNzaW5nJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBydGNTdGF0aXN0aWNzOiBJUnRjTW9uaXRvclN0YXRpc3RpYyA9IHt9O1xuICAgICAgICBsZXQgcm91bmRUcmlwVGltZSA9IHRoaXMuX2VzdGltYXRlZFJvdW5kVHJpcFRpbWU7XG4gICAgICAgIGxldCBsYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXA6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAgICAgICBzdGF0cy5mb3JFYWNoKHJlcG9ydCA9PiB7XG4gICAgICAgICAgaWYgKHJlcG9ydC50eXBlID09PSAnY2FuZGlkYXRlLXBhaXInICYmIHJlcG9ydC5jdXJyZW50Um91bmRUcmlwVGltZSkge1xuICAgICAgICAgICAgcm91bmRUcmlwVGltZSA9IHJlcG9ydC5jdXJyZW50Um91bmRUcmlwVGltZSAqIDEwMDA7XG5cbiAgICAgICAgICAgIGlmIChydGNTdGF0aXN0aWNzWydhdWRpbyddKSB7XG4gICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbJ2F1ZGlvJ10ucm91bmRUcmlwVGltZSA9IHJvdW5kVHJpcFRpbWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChydGNTdGF0aXN0aWNzWyd2aWRlbyddKSB7XG4gICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbJ3ZpZGVvJ10ucm91bmRUcmlwVGltZSA9IHJvdW5kVHJpcFRpbWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHJlcG9ydC50eXBlID09PSAnY2FuZGlkYXRlLXBhaXInICYmIHJlcG9ydC5sYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXApIHtcbiAgICAgICAgICAgIGxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCA9IHJlcG9ydC5sYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXA7XG5cbiAgICAgICAgICAgIGlmIChydGNTdGF0aXN0aWNzWydhdWRpbyddKSB7XG4gICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbJ2F1ZGlvJ10ubGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wID0gbGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocnRjU3RhdGlzdGljc1sndmlkZW8nXSkge1xuICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzWyd2aWRlbyddLmxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCA9IGxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocmVwb3J0LnR5cGUgPT09ICdpbmJvdW5kLXJ0cCcpIHtcbiAgICAgICAgICAgIGNvbnN0IGtpbmQgPSByZXBvcnQua2luZCB8fCByZXBvcnQubWVkaWFUeXBlIHx8IGdldEtpbmRGb3JTYWZhcmkxMShyZXBvcnQpO1xuICAgICAgICAgICAgbGV0IGNvZGVjID0gJyc7XG5cbiAgICAgICAgICAgIHN0YXRzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgIGlmIChpdGVtLmlkID09PSByZXBvcnQuY29kZWNJZCkge1xuICAgICAgICAgICAgICAgIGNvZGVjID0gaXRlbS5taW1lVHlwZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmIChraW5kICYmIHRoaXMuX3RyYWNrc1RvTW9uaXRvci5pbmNsdWRlcyhraW5kKSkge1xuICAgICAgICAgICAgICBjb25zdCBieXRlcyA9IHJlcG9ydC5ieXRlc1JlY2VpdmVkIHx8IDA7XG4gICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzQnl0ZXNSZWNlaXZlZCA9IHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZT8uW2tpbmRdPy5ieXRlc1JlY2VpdmVkID8/IDA7XG4gICAgICAgICAgICAgIGNvbnN0IGJ5dGVzRGVsdGEgPSBieXRlcyAtIHByZXZpb3VzQnl0ZXNSZWNlaXZlZDtcbiAgICAgICAgICAgICAgY29uc3QgdGltZURlbHRhID0gcmVwb3J0LnRpbWVzdGFtcCAtICh0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWU/LltraW5kXT8udGltZXN0YW1wIHx8IDApO1xuICAgICAgICAgICAgICBjb25zdCBiaXRyYXRlID0gYnl0ZXNEZWx0YSAmJiB0aW1lRGVsdGEgPyBNYXRoLmZsb29yKDggKiBieXRlc0RlbHRhIC9cbiAgICAgICAgICAgICAgICB0aW1lRGVsdGEgKiAxMDAwKSA6IDA7XG5cbiAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXSA9IHtcbiAgICAgICAgICAgICAgICBzc3JjOiByZXBvcnQuc3NyYyxcbiAgICAgICAgICAgICAgICBtZWRpYVR5cGU6IGtpbmQsXG4gICAgICAgICAgICAgICAgdGltZXN0YW1wOiByZXBvcnQudGltZXN0YW1wLFxuICAgICAgICAgICAgICAgIGJpdHJhdGUsXG4gICAgICAgICAgICAgICAgYnl0ZXNSZWNlaXZlZDogcmVwb3J0LmJ5dGVzUmVjZWl2ZWQsXG4gICAgICAgICAgICAgICAgcGFja2V0c0xvc3Q6IHJlcG9ydC5wYWNrZXRzTG9zdCxcbiAgICAgICAgICAgICAgICBwYWNrZXRzUmVjZWl2ZWQ6IHJlcG9ydC5wYWNrZXRzUmVjZWl2ZWQsXG4gICAgICAgICAgICAgICAgY29kZWM6IGNvZGVjIHx8IHRoaXMuZ2V0Q29kZWNCeVR5cGUoa2luZCksXG4gICAgICAgICAgICAgICAgcm91bmRUcmlwVGltZVxuICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgIGlmIChyZXBvcnQubGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wIHx8IGxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCkge1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF0ubGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wID0gcmVwb3J0Lmxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCB8fCBsYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXA7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoa2luZCA9PT0gJ3ZpZGVvJyAmJiB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWU/LnZpZGVvPy5mcmFtZXNEZWNvZGVkKSB7XG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsnZnJhbWVzRGVjb2RlZCddID0gcmVwb3J0LmZyYW1lc0RlY29kZWQ7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBmcHMgPSAocmVwb3J0LmZyYW1lc0RlY29kZWQgLSB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWUudmlkZW8uZnJhbWVzRGVjb2RlZCkgL1xuICAgICAgICAgICAgICAgICAgKHJ0Y1N0YXRpc3RpY3Nba2luZF0udGltZXN0YW1wIC0gdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlLnZpZGVvLnRpbWVzdGFtcCkgKlxuICAgICAgICAgICAgICAgICAgMTAwMDtcblxuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ2ZwcyddID0gZnBzID8gTWF0aC5yb3VuZChmcHMgKiAxMDApIC8gMTAwIDogMDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlID0gcnRjU3RhdGlzdGljcztcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGdlbmVyYXRpb24gIT09IHRoaXMuX21vbml0b3JHZW5lcmF0aW9uIHx8ICF0aGlzLl9pc01vbml0b3JSdW5uaW5nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ2dldFN0YXRzKCkgcmVqZWN0ZWQnLCBlcnJvcik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0SGFuZGxlKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5faXNNb25pdG9yUnVubmluZyAmJiBnZW5lcmF0aW9uID09PSB0aGlzLl9tb25pdG9yR2VuZXJhdGlvbikge1xuICAgICAgdGhpcy5fdXBkYXRlVGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoXG4gICAgICAgICgpID0+IHRoaXMudXBkYXRlU3RhdGlzdGljKCksIHVwZGF0ZVN0YXRpc3RpY1RpbWVvdXQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlU3RhdGlzdGljTGVnYWN5KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGdlbmVyYXRpb24gPSB0aGlzLl9tb25pdG9yR2VuZXJhdGlvbjtcbiAgICBsZXQgdGltZW91dEhhbmRsZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0YXRzUHJvbWlzZSA9IHRoaXMuX3BlZXJDb25uZWN0aW9uPy5nZXRTdGF0c0xlZ2FjeSgpO1xuXG4gICAgICBpZiAoIXN0YXRzUHJvbWlzZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRpbWVvdXRQcm9taXNlID0gbmV3IFByb21pc2U8bnVsbD4ocmVzb2x2ZSA9PiB7XG4gICAgICAgIHRpbWVvdXRIYW5kbGUgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHJlc29sdmUobnVsbCksIGdldFN0YXRzVGltZW91dER1cmF0aW9uKTtcbiAgICAgIH0pO1xuICAgICAgY29uc3Qgc3RhdHMgPSBhd2FpdCBQcm9taXNlLnJhY2UoW3N0YXRzUHJvbWlzZSwgdGltZW91dFByb21pc2VdKTtcblxuICAgICAgaWYgKGdlbmVyYXRpb24gIT09IHRoaXMuX21vbml0b3JHZW5lcmF0aW9uIHx8ICF0aGlzLl9pc01vbml0b3JSdW5uaW5nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCFzdGF0cykge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ2dldFN0YXRzTGVnYWN5KCkgdGltZWQgb3V0LCBza2lwcGluZyBzdGF0cyBwcm9jZXNzaW5nJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBydGNTdGF0aXN0aWNzOiBJUnRjTW9uaXRvclN0YXRpc3RpYyA9IHt9O1xuICAgICAgICBsZXQgcm91bmRUcmlwVGltZSA9IHRoaXMuX2VzdGltYXRlZFJvdW5kVHJpcFRpbWU7XG5cbiAgICAgICAgc3RhdHMucmVzdWx0KCkuZm9yRWFjaChyZXBvcnQgPT4ge1xuICAgICAgICAgIHJlcG9ydC5uYW1lcygpLmZvckVhY2gobmFtZSA9PiB7XG4gICAgICAgICAgICBpZiAobmFtZSA9PT0gJ2dvb2dSVFQnKSB7XG4gICAgICAgICAgICAgIHJvdW5kVHJpcFRpbWUgPSByZXBvcnQuc3RhdChuYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGlmIChyZXBvcnQudHlwZSA9PT0gJ3NzcmMnKSB7XG4gICAgICAgICAgICBjb25zdCBtZWRpYVR5cGUgPSByZXBvcnQuc3RhdCgnbWVkaWFUeXBlJykudG9TdHJpbmcoKTtcblxuICAgICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdID0ge3RpbWVzdGFtcDogRGF0ZS5ub3coKX07XG4gICAgICAgICAgICBydGNTdGF0aXN0aWNzW21lZGlhVHlwZV1bJ3NzcmMnXSA9IHJlcG9ydC5zdGF0KCdzc3JjJykudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXVsnbWVkaWFUeXBlJ10gPSBtZWRpYVR5cGU7XG4gICAgICAgICAgICBydGNTdGF0aXN0aWNzW21lZGlhVHlwZV1bJ2J5dGVzUmVjZWl2ZWQnXSA9IHJlcG9ydC5zdGF0KCdieXRlc1JlY2VpdmVkJyk7XG4gICAgICAgICAgICBydGNTdGF0aXN0aWNzW21lZGlhVHlwZV1bJ3BhY2tldHNMb3N0J10gPSByZXBvcnQuc3RhdCgncGFja2V0c0xvc3QnKTtcbiAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXVsncGFja2V0c1JlY2VpdmVkJ10gPSByZXBvcnQuc3RhdCgncGFja2V0c1JlY2VpdmVkJyk7XG4gICAgICAgICAgICBydGNTdGF0aXN0aWNzW21lZGlhVHlwZV1bJ2NvZGVjJ10gPSByZXBvcnQuc3RhdCgnZ29vZ0NvZGVjTmFtZScpLnRvU3RyaW5nKCkgfHwgdGhpcy5nZXRDb2RlY0J5VHlwZShtZWRpYVR5cGUpO1xuICAgICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydyb3VuZFRyaXBUaW1lJ10gPSByb3VuZFRyaXBUaW1lO1xuXG4gICAgICAgICAgICBpZiAobWVkaWFUeXBlID09PSAndmlkZW8nICYmIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZT8udmlkZW8/LmZyYW1lc0RlY29kZWQpIHtcbiAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydmcmFtZXNEZWNvZGVkJ10gPSByZXBvcnQuc3RhdCgnZnJhbWVzRGVjb2RlZCcpO1xuICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW21lZGlhVHlwZV1bJ2ZwcyddID0gKHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXS5mcmFtZXNEZWNvZGVkIC0gdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlLnZpZGVvLmZyYW1lc0RlY29kZWQpIC9cbiAgICAgICAgICAgICAgICAocnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdLnRpbWVzdGFtcCAtIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZS52aWRlby50aW1lc3RhbXApICpcbiAgICAgICAgICAgICAgMTAwMCB8fCAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlID0gcnRjU3RhdGlzdGljcztcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGdlbmVyYXRpb24gIT09IHRoaXMuX21vbml0b3JHZW5lcmF0aW9uIHx8ICF0aGlzLl9pc01vbml0b3JSdW5uaW5nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ2dldFN0YXRzTGVnYWN5KCkgcmVqZWN0ZWQnLCBlcnJvcik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0SGFuZGxlKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5faXNNb25pdG9yUnVubmluZyAmJiBnZW5lcmF0aW9uID09PSB0aGlzLl9tb25pdG9yR2VuZXJhdGlvbikge1xuICAgICAgdGhpcy5fdXBkYXRlVGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoXG4gICAgICAgICgpID0+IHRoaXMudXBkYXRlU3RhdGlzdGljKCksIHVwZGF0ZVN0YXRpc3RpY1RpbWVvdXQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29kZWNCeVR5cGUodHlwZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ2F1ZGlvJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VzdGltYXRlZEF1ZGlvQ29kZWMgfHwgJ3Vua25vd24nO1xuICAgICAgY2FzZSAndmlkZW8nOlxuICAgICAgICByZXR1cm4gdGhpcy5fZXN0aW1hdGVkVmlkZW9Db2RlYyB8fCAndW5rbm93bic7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ3Vua25vd24nO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2RwUGFyc2VyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2RwOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2F1ZGlvQ29kZWM6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfdmlkZW9Db2RlYzogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc0F1ZGlvVHJhY2tFbmFibGVkOiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc1ZpZGVvVHJhY2tFbmFibGVkOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHNkcDogc3RyaW5nKSB7XG4gICAgdGhpcy5fc2RwID0gc2RwO1xuXG4gICAgY29uc3Qgc2RwU3BsaXRCeUxpbmVzID0gdGhpcy5fc2RwLnNwbGl0KC8oXFxyXFxufFxccnxcXG4pLyk7XG4gICAgY29uc3Qgc2RwU3BsaXRCeVRyYWNrcyA9IHRoaXMuX3NkcC5zcGxpdCgvKD86XnxbXFxyXFxuXSltPS8pO1xuXG4gICAgdGhpcy5fYXVkaW9Db2RlYyA9IHRoaXMuYXBwbHlDb2RlYygnYXVkaW8nLCBzZHBTcGxpdEJ5TGluZXMpO1xuICAgIHRoaXMuX3ZpZGVvQ29kZWMgPSB0aGlzLmFwcGx5Q29kZWMoJ3ZpZGVvJywgc2RwU3BsaXRCeUxpbmVzKTtcbiAgICB0aGlzLl9pc0F1ZGlvVHJhY2tFbmFibGVkID0gdGhpcy5pc1RyYWNrQnlUeXBlRW5hYmxlZCgnYXVkaW8nLCBzZHBTcGxpdEJ5VHJhY2tzKTtcbiAgICB0aGlzLl9pc1ZpZGVvVHJhY2tFbmFibGVkID0gdGhpcy5pc1RyYWNrQnlUeXBlRW5hYmxlZCgndmlkZW8nLCBzZHBTcGxpdEJ5VHJhY2tzKTtcbiAgfVxuXG4gIGdldCBhdWRpb0NvZGVjKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2F1ZGlvQ29kZWM7XG4gIH1cblxuICBnZXQgdmlkZW9Db2RlYygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl92aWRlb0NvZGVjO1xuICB9XG5cbiAgZ2V0IGlzQXVkaW9UcmFja0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzQXVkaW9UcmFja0VuYWJsZWQ7XG4gIH1cblxuICBnZXQgaXNWaWRlb1RyYWNrRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNWaWRlb1RyYWNrRW5hYmxlZDtcbiAgfVxuXG4gIHByaXZhdGUgaXNUcmFja0J5VHlwZUVuYWJsZWQodHlwZTogc3RyaW5nLCBzZHBTcGxpdEJ5VHJhY2tzOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHNkcFNlY3Rpb25Gb3JUeXBlID0gc2RwU3BsaXRCeVRyYWNrcy5maW5kKHNkcFRyYWNrID0+IHNkcFRyYWNrLnN0YXJ0c1dpdGgodHlwZSkpO1xuXG4gICAgaWYgKCFzZHBTZWN0aW9uRm9yVHlwZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiAhc2RwU2VjdGlvbkZvclR5cGUuaW5jbHVkZXMoYGE9aW5hY3RpdmVgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlDb2RlYyh0eXBlOiBzdHJpbmcsIHNkcFNwbGl0QnlMaW5lczogc3RyaW5nIFtdKTogc3RyaW5nIHtcbiAgICBjb25zdCBydG1hcCA9IHNkcFNwbGl0QnlMaW5lcy5maW5kKHNkcExpbmUgPT4gc2RwTGluZS5pbmNsdWRlcyhgbT0ke3R5cGV9YCkpPy5zcGxpdCgnICcpWzNdIHx8ICcnO1xuICAgIGNvbnN0IHVzZWRDb2RlY0xpbmUgPSBzZHBTcGxpdEJ5TGluZXMuZmluZChzZHBMaW5lID0+IHNkcExpbmUuaW5jbHVkZXMoYGE9cnRwbWFwOiR7cnRtYXB9YCkpO1xuICAgIGNvbnN0IHVzZWRDb2RlYyA9IHVzZWRDb2RlY0xpbmU/LnNwbGl0KCcgJylbMV0gfHwgJyc7XG4gICAgY29uc3QgY29kZWNOYW1lID0gdXNlZENvZGVjLnNwbGl0KCcvJylbMF07XG5cbiAgICByZXR1cm4gY29kZWNOYW1lO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCB7SUxlZ2FjeVJUQ1N0YXRzUmVwb3J0fSBmcm9tICcuL1J0Y0Nvbm5lY3Rpb25Nb25pdG9yJztcblxuY2xhc3MgVmFuaWxsYVBlZXJDb25uZWN0aW9uIGltcGxlbWVudHMgSVBlZXJDb25uZWN0aW9uIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1ZhbmlsbGFQZWVyQ29ubmVjdGlvbicpO1xuICBwcml2YXRlIF9wZWVyQ29ubmVjdGlvbjogUlRDUGVlckNvbm5lY3Rpb24gfCBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZ3VyYXRpb24/OiBSVENDb25maWd1cmF0aW9uKSB7XG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LndlYmtpdFJUQ1BlZXJDb25uZWN0aW9uRW5hYmxlZCkge1xuICAgICAgLy8gSWdub3JlZCBhcyBsZWdhY3kgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24gY2xhc3MgaXMgZGVwcmVjYXRlZFxuICAgICAgLy8gVGhpcyB3YXMgYSBDaHJvbWUgc3BlY2lmaWMgaW1wbGVtZW50YXRpb25cbiAgICAgIC8vIFJlcXVpcmVzIGEgdHMtaWdub3JlIGRpcmVjdGl2ZSB0byBwcmV2ZW50IHR5cGVzY3JpcHQgZXJyb3JzXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbiA9IG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlJUQ1BlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb24pO1xuICB9XG5cbiAgZ2V0IG5hdGl2ZSgpOiBSVENQZWVyQ29ubmVjdGlvbiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbjtcbiAgfVxuXG4gIGdldCBjdXJyZW50TG9jYWxEZXNjcmlwdGlvbigpOiBSVENTZXNzaW9uRGVzY3JpcHRpb24gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24/LmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uIHx8IG51bGw7XG4gIH1cblxuICBnZXQgY3VycmVudFJlbW90ZURlc2NyaXB0aW9uKCk6IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uY3VycmVudFJlbW90ZURlc2NyaXB0aW9uIHx8IG51bGw7XG4gIH1cblxuICBnZXQgY29ubmVjdGlvblN0YXRlKCk6IFJUQ1BlZXJDb25uZWN0aW9uU3RhdGUgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24/LmNvbm5lY3Rpb25TdGF0ZSB8fCBudWxsO1xuICB9XG5cbiAgZ2V0IGljZUNvbm5lY3Rpb25TdGF0ZSgpOiBSVENJY2VDb25uZWN0aW9uU3RhdGUgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24/LmljZUNvbm5lY3Rpb25TdGF0ZSB8fCBudWxsO1xuICB9XG5cbiAgZ2V0IHN1cHBvcnRzR2V0Q29uZmlndXJhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5nZXRDb25maWd1cmF0aW9uID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgZ2V0IHN1cHBvcnRzU2V0Q29uZmlndXJhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5zZXRDb25maWd1cmF0aW9uID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgZ2V0IHN1cHBvcnRzR2V0VHJhbnNjZWl2ZXJzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhRmVhdHVyZUVuYWJsZW1lbnQuZ2V0VHJhbnNjZWl2ZXJzRGlzYWJsZWQgJiYgdHlwZW9mIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5nZXRUcmFuc2NlaXZlcnMgPT09ICdmdW5jdGlvbic7XG4gIH1cblxuICBnZXQgc3VwcG9ydHNBZGRUcmFuc2NlaXZlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIUZlYXR1cmVFbmFibGVtZW50LmFkZFRyYW5jZWl2ZXJEaXNhYmxlZCAmJiB0eXBlb2YgdGhpcy5fcGVlckNvbm5lY3Rpb24/LmFkZFRyYW5zY2VpdmVyID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlT2ZmZXIob3B0aW9ucz86IFJUQ09mZmVyT3B0aW9ucyk6IFByb21pc2U8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdD4ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQucHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQpIHtcbiAgICAgIC8vIElnbm9yZWQgYXMgbGVnYWN5IGNyZWF0ZU9mZmVyIG1ldGhvZCB3aXRoIGNhbGxiYWNrcyBpcyBkZXByZWNhdGVkXG4gICAgICAvLyBSZXF1aXJlcyBhIHRzLWlnbm9yZSBkaXJlY3RpdmUgdG8gcHJldmVudCB0eXBlc2NyaXB0IGVycm9yc1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHRoaXMuX3BlZXJDb25uZWN0aW9uLmNyZWF0ZU9mZmVyKHJlc29sdmUsIHJlamVjdCwgb3B0aW9ucykpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5jcmVhdGVPZmZlcihvcHRpb25zKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZUFuc3dlcihvcHRpb25zPzogUlRDQW5zd2VyT3B0aW9ucyk6IFByb21pc2U8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdD4ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQucHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQpIHtcbiAgICAgIC8vIElnbm9yZWQgYXMgbGVnYWN5IGNyZWF0ZUFuc3dlciBtZXRob2Qgd2l0aCBjYWxsYmFja3MgaXMgZGVwcmVjYXRlZFxuICAgICAgLy8gUmVxdWlyZXMgYSB0cy1pZ25vcmUgZGlyZWN0aXZlIHRvIHByZXZlbnQgdHlwZXNjcmlwdCBlcnJvcnNcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5jcmVhdGVBbnN3ZXIocmVzb2x2ZSwgcmVqZWN0LCBvcHRpb25zKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmNyZWF0ZUFuc3dlcihvcHRpb25zKTtcbiAgfVxuXG4gIGFzeW5jIHNldExvY2FsRGVzY3JpcHRpb24oZGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24oRmVhdHVyZUVuYWJsZW1lbnQucHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQgP1xuICAgICAgbmV3IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbihkZXNjcmlwdGlvbikgOiBkZXNjcmlwdGlvbik7XG4gIH1cblxuICBhc3luYyBzZXRSZW1vdGVEZXNjcmlwdGlvbihkZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICBjb25zdCBoYXNDcnlwdG8gPSBkZXNjcmlwdGlvbi5zZHA/Lm1hdGNoKC9hPWNyeXB0bzovaSk7XG5cbiAgICBpZiAoaGFzQ3J5cHRvKSB7XG4gICAgICB0aGlzLl9sb2dnZXIud2FybignU0RQIGE9Y3J5cHRvIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uc2V0UmVtb3RlRGVzY3JpcHRpb24oRmVhdHVyZUVuYWJsZW1lbnQucHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQgP1xuICAgICAgbmV3IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbihkZXNjcmlwdGlvbikgOiBkZXNjcmlwdGlvbik7XG4gIH1cblxuICBnZXRTZW5kZXJzKCk6IFJUQ1J0cFNlbmRlcltdIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFNlbmRlcnMoKTtcbiAgfVxuXG4gIGdldFJlY2VpdmVycygpOiBSVENSdHBSZWNlaXZlcltdIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFJlY2VpdmVycygpO1xuICB9XG5cbiAgZ2V0U3RhdHMoc2VsZWN0b3I/OiBNZWRpYVN0cmVhbVRyYWNrIHwgbnVsbCk6IFByb21pc2U8UlRDU3RhdHNSZXBvcnQ+IHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFN0YXRzKHNlbGVjdG9yKTtcbiAgfVxuXG4gIGdldFN0YXRzTGVnYWN5KCk6IFByb21pc2U8SUxlZ2FjeVJUQ1N0YXRzUmVwb3J0PiB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgIC8vIElnbm9yZWQgZHVlIHRvIHR5cGVzY3JpcHQgbm90IGhhdmluZyBsZWdhY3kgJ2dldFN0YXRzJyBtZXRob2QgdHlwZSBkZWZpbml0aW9uXG4gICAgICAvLyBUaGlzIHdhcyBhIENocm9tZSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgJ2dldFN0YXRzJyBtZXRob2QgZm9yXG4gICAgICAvLyBDaHJvbWVAPD0gNjYgZGV0YWlsZWQgaGVyZTogaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NjI3ODE2XG4gICAgICAvLyBSZXF1aXJlcyBhIHRzLWlnbm9yZSBkaXJlY3RpdmUgdG8gcHJldmVudCB0eXBlc2NyaXB0IGVycm9yc1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFN0YXRzKHJlc29sdmUpO1xuICAgIH0pO1xuICB9XG5cbiAgYWRkRXZlbnRMaXN0ZW5lcjxUIGV4dGVuZHMga2V5b2YgUlRDUGVlckNvbm5lY3Rpb25FdmVudE1hcD4odHlwZTogVCwgbGlzdGVuZXI6ICh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IFJUQ1BlZXJDb25uZWN0aW9uRXZlbnRNYXBbVF0pID0+IHVua25vd24sIG9wdGlvbnM/OiBib29sZWFuIHwgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lciwgb3B0aW9ucyk7XG4gIH1cblxuICByZW1vdmVFdmVudExpc3RlbmVyPFQgZXh0ZW5kcyBrZXlvZiBSVENQZWVyQ29ubmVjdGlvbkV2ZW50TWFwPih0eXBlOiBULCBsaXN0ZW5lcjogKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogUlRDUGVlckNvbm5lY3Rpb25FdmVudE1hcFtUXSkgPT4gdW5rbm93biwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyLCBvcHRpb25zKTtcbiAgfVxuXG4gIGdldFRyYW5zY2VpdmVycygpOiBSVENSdHBUcmFuc2NlaXZlcltdIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFRyYW5zY2VpdmVycygpO1xuICB9XG5cbiAgYWRkVHJhbnNjZWl2ZXIobmFtZTogc3RyaW5nLCBvcHRpb25zOiBSVENSdHBUcmFuc2NlaXZlckluaXQpOiBSVENSdHBUcmFuc2NlaXZlciB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcihuYW1lLCBvcHRpb25zKTtcbiAgfVxuXG4gIGFkZFN0cmVhbShtZWRpYVN0cmVhbTogTWVkaWFTdHJlYW0pOiB2b2lkIHtcbiAgICBtZWRpYVN0cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKHRyYWNrID0+IHtcbiAgICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5hZGRUcmFjayh0cmFjayk7XG4gICAgfSk7XG4gIH1cblxuICBnZXRDb25maWd1cmF0aW9uKCk6IFJUQ0NvbmZpZ3VyYXRpb24ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uZ2V0Q29uZmlndXJhdGlvbigpO1xuICB9XG5cbiAgc2V0Q29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLnNldENvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbik7XG4gIH1cblxuICBzZXQgb250cmFjayhoYW5kbGVyOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogUlRDVHJhY2tFdmVudCkgPT4gdW5rbm93bikgfCBudWxsKSB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9udHJhY2sgPSBoYW5kbGVyO1xuICB9XG5cbiAgZ2V0IG9udHJhY2soKTogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IFJUQ1RyYWNrRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbnRyYWNrO1xuICB9XG5cbiAgc2V0IG9uaWNlY2FuZGlkYXRlKGhhbmRsZXI6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwpIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24ub25pY2VjYW5kaWRhdGUgPSBoYW5kbGVyO1xuICB9XG5cbiAgZ2V0IG9uaWNlY2FuZGlkYXRlKCk6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24ub25pY2VjYW5kaWRhdGU7XG4gIH1cblxuICBzZXQgb25jb25uZWN0aW9uc3RhdGVjaGFuZ2UoaGFuZGxlcjogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IEV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwpIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24ub25jb25uZWN0aW9uc3RhdGVjaGFuZ2UgPSBoYW5kbGVyO1xuICB9XG5cbiAgZ2V0IG9uY29ubmVjdGlvbnN0YXRlY2hhbmdlKCk6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBFdmVudCkgPT4gdW5rbm93bikgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uY29ubmVjdGlvbnN0YXRlY2hhbmdlO1xuICB9XG5cbiAgc2V0IG9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlKGhhbmRsZXI6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBFdmVudCkgPT4gdW5rbm93bikgfCBudWxsKSB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlID0gaGFuZGxlcjtcbiAgfVxuXG4gIGdldCBvbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZSgpOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZTtcbiAgfVxuXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5jbG9zZSgpO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbiA9IG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgVmFuaWxsYVBlZXJDb25uZWN0aW9uOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb25GYWN0b3J5IGZyb20gJy4vSVBlZXJDb25uZWN0aW9uRmFjdG9yeSc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4vSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCBWYW5pbGxhUGVlckNvbm5lY3Rpb24gZnJvbSAnLi9WYW5pbGxhUGVlckNvbm5lY3Rpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5IGltcGxlbWVudHMgSVBlZXJDb25uZWN0aW9uRmFjdG9yeSB7XG4gIGFzeW5jIGNyZWF0ZVBlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb24/OiBSVENDb25maWd1cmF0aW9uKTogUHJvbWlzZTxJUGVlckNvbm5lY3Rpb24+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8SVBlZXJDb25uZWN0aW9uPihyZXNvbHZlUGVlckNvbm5lY3Rpb25Qcm9taXNlID0+IHtcbiAgICAgIGNvbnN0IGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uID0gR2xvYmFsU2NvcGUuc3Vic2NyaWJlKGdsb2JhbFNjb3BlID0+IHtcbiAgICAgICAgaWYgKCFnbG9iYWxTY29wZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc29sdmVQZWVyQ29ubmVjdGlvblByb21pc2UobmV3IFZhbmlsbGFQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uKSk7XG4gICAgICAgIGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uLmRpc3Bvc2UoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU3ViamVjdCBmcm9tICcuL1N1YmplY3QnO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZWFkT25seVN1YmplY3Q8VD4ge1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdWJqZWN0OiBTdWJqZWN0PFQ+O1xuXG4gIGNvbnN0cnVjdG9yKHN1YmplY3Q6IFN1YmplY3Q8VD4pIHtcbiAgICB0aGlzLl9zdWJqZWN0ID0gc3ViamVjdDtcbiAgfVxuXG4gIGdldCB2YWx1ZSgpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5fc3ViamVjdC52YWx1ZTtcbiAgfVxuXG4gIHN1YnNjcmliZShsaXN0ZW5lcjogKHZhbHVlOiBUKSA9PiB2b2lkKTogSURpc3Bvc2FibGUge1xuICAgIHJldHVybiB0aGlzLl9zdWJqZWN0LnN1YnNjcmliZShsaXN0ZW5lcik7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0lEaXNwb3NhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQgSUNvbXBhcmFibGUgZnJvbSAnLi4vbGFuZy9JQ29tcGFyYWJsZSc7XG5cbmNsYXNzIERpc3Bvc2FibGVMaXN0ZW5lcjxUPiBleHRlbmRzIERpc3Bvc2FibGUge1xuICBjb25zdHJ1Y3RvcihsaXN0ZW5lcnM6IFRbXSwgbGlzdGVuZXI6IFQpIHtcbiAgICBzdXBlcigoKSA9PiB7XG4gICAgICBjb25zdCBpZHggPSBsaXN0ZW5lcnMuaW5kZXhPZihsaXN0ZW5lcik7XG5cbiAgICAgIGlmIChpZHggPj0gMCkge1xuICAgICAgICBsaXN0ZW5lcnMuc3BsaWNlKGlkeCwgMSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3ViamVjdDxUPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xpc3RlbmVyczogKCh2YWx1ZTogVCkgPT4gdm9pZClbXTtcbiAgcHJpdmF0ZSBfdmFsdWU6IFQ7XG5cbiAgY29uc3RydWN0b3IodmFsdWU6IFQpIHtcbiAgICB0aGlzLl9saXN0ZW5lcnMgPSBbXTtcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgc2V0IHZhbHVlKHZhbHVlOiBUKSB7XG4gICAgbGV0IGNoYW5nZWQgPSB0aGlzLl92YWx1ZSAhPT0gdmFsdWU7XG5cbiAgICBpZiAoY2hhbmdlZCAmJiB2YWx1ZSkge1xuICAgICAgY29uc3QgY29tcGFyYWJsZSA9IHZhbHVlIGFzIHVua25vd24gYXMgSUNvbXBhcmFibGU8VD47XG5cbiAgICAgIGlmICh0eXBlb2YgY29tcGFyYWJsZS5lcXVhbHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgY2hhbmdlZCA9ICFjb21wYXJhYmxlLmVxdWFscyh0aGlzLl92YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFjaGFuZ2VkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcblxuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgWy4uLnRoaXMuX2xpc3RlbmVyc10pIHtcbiAgICAgIGxpc3RlbmVyKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBnZXQgdmFsdWUoKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG5cbiAgc3Vic2NyaWJlKGxpc3RlbmVyOiAodmFsdWU6IFQpID0+IHZvaWQpOiBJRGlzcG9zYWJsZSB7XG4gICAgdGhpcy5fbGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpO1xuXG4gICAgbGlzdGVuZXIodGhpcy5fdmFsdWUpO1xuXG4gICAgcmV0dXJuIG5ldyBEaXNwb3NhYmxlTGlzdGVuZXI8KHZhbHVlOiBUKSA9PiB2b2lkPih0aGlzLl9saXN0ZW5lcnMsIGxpc3RlbmVyKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW52aXJvbm1lbnQge1xuICBzdGF0aWMgZ2V0RW52aXJvbm1lbnRGcm9tVXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYmFzZVVSTCA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodXJsKTtcblxuICAgICAgcmV0dXJuIGJhc2VVUkwub3JpZ2luO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBJR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvSUdsb2JhbFNjb3BlJztcbmltcG9ydCB7R2xvYmFsU2NvcGV9IGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBTdHJpbmdzIGZyb20gJy4uL2xhbmcvU3RyaW5ncyc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi9yeC9TdWJqZWN0JztcbmltcG9ydCBSZWFkT25seVN1YmplY3QgZnJvbSAnLi4vcngvUmVhZE9ubHlTdWJqZWN0JztcbmltcG9ydCBFZGdlQXV0aFBhcnNlciBmcm9tICcuLi9lZGdlQXV0aC9FZGdlQXV0aFBhcnNlcic7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWwsIExvZ2dpbmdMZXZlbFR5cGV9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuaW1wb3J0IENvbnNvbGVBcHBlbmRlciBmcm9tICcuLi9sb2dnZXIvQ29uc29sZUFwcGVuZGVyJztcbmltcG9ydCBUZWxlbWV0cnlBcHBlbmRlciBmcm9tICcuLi90ZWxlbWV0cnkvVGVsZW1ldHJ5QXBlbmRlcic7XG5pbXBvcnQgQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlciBmcm9tICcuLi9kb20vQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlcic7XG5pbXBvcnQgTWV0cmljc0NvbmZpZ3VyYXRpb24sIHtUZWxlbWV0cnlMZXZlbCwgVGVsZW1ldHJ5TGV2ZWxUeXBlfSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NDb25maWd1cmF0aW9uJztcbmltcG9ydCBNZXRyaWNzU2VydmljZSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NTZXJ2aWNlJztcbmltcG9ydCBUZWxlbWV0cnlMZXZlbE1hcHBpbmcgZnJvbSAnLi4vbWV0cmljcy9UZWxlbWV0cmljTGV2ZWxNYXBwaW5nJztcbmltcG9ydCBMb2dnaW5nTGV2ZWxNYXBwaW5nIGZyb20gJy4uL2xvZ2dlci9Mb2dnaW5nTGV2ZWxNYXBwaW5nJztcbmltcG9ydCBCdWlsZEZlYXR1cmVzIGZyb20gJy4uL2Vudmlyb25tZW50L0J1aWxkRmVhdHVyZXMnO1xuaW1wb3J0IEJyb3dzZXJEZXRlY3RvciBmcm9tICcuLi9kb20vQnJvd3NlckRldGVjdG9yJztcbmltcG9ydCBBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciBmcm9tICcuLi9kb20vQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3InO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbkZhY3RvcnkgZnJvbSAnLi4vcnRjL0lQZWVyQ29ubmVjdGlvbkZhY3RvcnknO1xuaW1wb3J0IFBlZXJDb25uZWN0aW9uU2VydmljZSBmcm9tICcuLi9ydGMvUGVlckNvbm5lY3Rpb25TZXJ2aWNlJztcbmltcG9ydCBUZWxlbWV0cnlVcmwgZnJvbSAnLi9UZWxlbWV0cnlVcmwnO1xuaW1wb3J0IEVudmlyb25tZW50IGZyb20gJy4vRW52aXJvbm1lbnQnO1xuaW1wb3J0IERpc2NvdmVyeVVyaSBmcm9tICcuL2Rpc2NvdmVyeS9EaXNjb3ZlcnlVcmknO1xuaW1wb3J0IE1ldHJpY3NGYWN0b3J5IGZyb20gJy4uL21ldHJpY3MvTWV0cmljc0ZhY3RvcnknO1xuaW1wb3J0IFRlbGVtZXRyeURlZmF1bHQgZnJvbSAnLi4vbWV0cmljcy9UZWxlbWV0cnlEZWZhdWx0JztcbmltcG9ydCB7U2hha2FQbGF5ZXJUeXBlfSBmcm9tICcuL3N0cmVhbWluZy9JU2hha2FQbGF5ZXInO1xuaW1wb3J0IHtIbHNQbGF5ZXJUeXBlfSBmcm9tICcuL3N0cmVhbWluZy9JSGxzUGxheWVyJztcbmltcG9ydCB7V2ViUGxheWVyVHlwZX0gZnJvbSAnLi9zdHJlYW1pbmcvSVdlYlBsYXllcic7XG5pbXBvcnQgSVByb3ZpZGVkR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvSVByb3ZpZGVkR2xvYmFsU2NvcGUnO1xuXG5jb25zdCBwYWdlTG9hZFRpbWUgPSBHbG9iYWxTY29wZS5nZXRJbnN0YW5jZSgpLnZhbHVlPy5wYWdlTG9hZFRpbWUgfHwgRGF0ZS5ub3coKTtcblxuaW50ZXJmYWNlIElJbml0T3B0aW9ucyB7XG4gIGRpc2NvdmVyeVVyaT86IHN0cmluZztcbiAgcGVlckNvbm5lY3Rpb25GYWN0b3J5PzogSVBlZXJDb25uZWN0aW9uRmFjdG9yeTtcbiAgdGVsZW1ldHJ5TGV2ZWw/OiBUZWxlbWV0cnlMZXZlbFR5cGU7XG4gIGxvZ2dpbmdMZXZlbD86IExvZ2dpbmdMZXZlbFR5cGU7XG4gIGNvbnNvbGVMb2dnaW5nTGV2ZWw/OiBMb2dnaW5nTGV2ZWxUeXBlO1xuICBhdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtPzogYm9vbGVhbjtcbiAgYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmU/OiBib29sZWFuO1xuICB3ZWJQbGF5ZXJMb2FkZXI/OiAodmFsdWU6IChwbGF5ZXI6IFdlYlBsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQ7XG4gIHNoYWthUGxheWVyTG9hZGVyPzogKHZhbHVlOiAocGxheWVyOiBTaGFrYVBsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQ7XG4gIGhsc0pzTG9hZGVyPzogKHZhbHVlOiAocGxheWVyOiBIbHNQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTREsge1xuICBwcml2YXRlIHN0YXRpYyBfYXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1hdXRvbWF0aWNhbGx5LXJldHJ5LW9uLWZhaWx1cmUnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2F1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbiA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtYXV0b21hdGljYWxseS1yZWNvbm5lY3QtcGVlci1jb25uZWN0aW9uJyk7XG4gIHByaXZhdGUgc3RhdGljIF9hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtID0gdHJ1ZTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2F1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlID0gdHJ1ZTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LWZvcmNlLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1yZXN0YXJ0Jyk7XG4gIHByaXZhdGUgc3RhdGljIF9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LXNraXAtZ2FyYmFnZS1jb2xsZWN0aW9uLW9uLW1vYmlsZS1kZXZpY2VzJyk7XG4gIHByaXZhdGUgc3RhdGljIF93ZWJQbGF5ZXJMb2FkZXI6ICh2YWx1ZTogKHBsYXllcjogV2ViUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBzdGF0aWMgX3NoYWthUGxheWVyTG9hZGVyOiAodmFsdWU6IChwbGF5ZXI6IFNoYWthUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBzdGF0aWMgX2hsc0pzTG9hZGVyOiAodmFsdWU6IChwbGF5ZXI6IEhsc1BsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQ7XG4gIHByaXZhdGUgc3RhdGljIF9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcjogQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IgfCBudWxsO1xuICBwcml2YXRlIHN0YXRpYyBfZW52aXJvbm1lbnQ6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oJycpO1xuICBwcml2YXRlIHN0YXRpYyBfdGVsZW1ldHJ5VXJsOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCdodHRwczovL3RlbGVtZXRyeS5waGVuaXhydHMuY29tL3RlbGVtZXRyeScpO1xuICBwcml2YXRlIHN0YXRpYyBfbWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDg7XG4gIHByaXZhdGUgc3RhdGljIF90ZWxlbWV0cnlMZXZlbDogU3ViamVjdDxUZWxlbWV0cnlMZXZlbD4gPSBuZXcgU3ViamVjdDxUZWxlbWV0cnlMZXZlbD4oVGVsZW1ldHJ5RGVmYXVsdC5kZWZhdWx0VGVsZW1ldHJ5TGV2ZWwpO1xuICBwcml2YXRlIHN0YXRpYyBfbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIHN0YXRpYyBfbWV0cmljc0NvbmZpZ3VyYXRpb246IE1ldHJpY3NDb25maWd1cmF0aW9uO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfc2VuZExvY2FsQ2FuZGlkYXRlczogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0KEJ1aWxkRmVhdHVyZXMuc2VuZExvY2FsQ2FuZGlkYXRlcyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF90ZW5hbmN5OiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2NsaWVudFNlc3Npb25JZDogc3RyaW5nID0gU3RyaW5ncy5yYW5kb20oMzIpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfbG9hZGVkVGltZXN0YW1wOiBEYXRlID0gbmV3IERhdGUoKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdTREsnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2luaXRpYWxpemVkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfcmVhZE9ubHlJbml0aWFsaXplZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPihTREsuX2luaXRpYWxpemVkKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3JlYWRPbmx5RGlzY292ZXJ5VXJpOiBSZWFkT25seVN1YmplY3Q8c3RyaW5nPiA9IG5ldyBSZWFkT25seVN1YmplY3Q8c3RyaW5nPihEaXNjb3ZlcnlVcmkudXJpKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3JlYWRPbmx5UGVlckNvbm5lY3Rpb25GYWN0b3J5OiBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uRmFjdG9yeT4gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+KFBlZXJDb25uZWN0aW9uU2VydmljZS5wZWVyQ29ubmVjdGlvbkZhY3RvcnkpO1xuXG4gIHN0YXRpYyBnZXQgcGFnZUxvYWRUaW1lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHBhZ2VMb2FkVGltZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2VuZExvY2FsQ2FuZGlkYXRlcygpOiBTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VuZExvY2FsQ2FuZGlkYXRlcztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgdGVuYW5jeSgpOiBTdWJqZWN0PHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLl90ZW5hbmN5O1xuICB9XG5cbiAgc3RhdGljIGdldCBjbGllbnRTZXNzaW9uSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gU0RLLl9jbGllbnRTZXNzaW9uSWQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGxvYWRlZFRpbWVzdGFtcCgpOiBEYXRlIHtcbiAgICByZXR1cm4gU0RLLl9sb2FkZWRUaW1lc3RhbXA7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGluaXRpYWxpemVkKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIFNESy5fcmVhZE9ubHlJbml0aWFsaXplZDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZGlzY292ZXJ5VXJpKCk6IFJlYWRPbmx5U3ViamVjdDxzdHJpbmc+IHtcbiAgICByZXR1cm4gU0RLLl9yZWFkT25seURpc2NvdmVyeVVyaTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgcGVlckNvbm5lY3Rpb25GYWN0b3J5KCk6IFJlYWRPbmx5U3ViamVjdDxJUGVlckNvbm5lY3Rpb25GYWN0b3J5PiB7XG4gICAgcmV0dXJuIFNESy5fcmVhZE9ubHlQZWVyQ29ubmVjdGlvbkZhY3Rvcnk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGF1dG9tYXRpY1JldHJ5T25GYWlsdXJlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBTREsuX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBTREsuX2F1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gU0RLLl9hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtO1xuICB9XG5cbiAgc3RhdGljIGdldCBhdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gU0RLLl9hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXM7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHdlYlBsYXllckxvYWRlcigpOiAodmFsdWU6IChwbGF5ZXI6IFdlYlBsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl93ZWJQbGF5ZXJMb2FkZXI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHNoYWthUGxheWVyTG9hZGVyKCk6ICh2YWx1ZTogKHBsYXllcjogU2hha2FQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fc2hha2FQbGF5ZXJMb2FkZXI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGhsc0pzTG9hZGVyKCk6ICh2YWx1ZTogKHBsYXllcjogSGxzUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX2hsc0pzTG9hZGVyO1xuICB9XG5cbiAgc3RhdGljIGdldCBtZXRyaWNzU2VydmljZSgpOiBNZXRyaWNzU2VydmljZSB7XG4gICAgcmV0dXJuIFNESy5fbWV0cmljc1NlcnZpY2U7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yKCk6IEFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yO1xuICB9XG5cbiAgc3RhdGljIGdldCB0ZWxlbWV0cnlVcmwoKTogU3ViamVjdDxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5fdGVsZW1ldHJ5VXJsO1xuICB9XG5cbiAgc3RhdGljIGdldCBtYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX21heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHM7XG4gIH1cblxuICBzdGF0aWMgc2V0IG1heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMocmV0cmllc0Ftb3VudDogbnVtYmVyKSB7XG4gICAgdGhpcy5fbWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IHJldHJpZXNBbW91bnQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGxvZ2dpbmdMZXZlbCgpOiBMb2dnaW5nTGV2ZWxUeXBlIHtcbiAgICByZXR1cm4gTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlKHRoaXMuX2xvZ2dlci50aHJlc2hvbGQudmFsdWUpO1xuICB9XG5cbiAgc3RhdGljIGdldCB0ZWxlbWV0cnlMZXZlbCgpOiBUZWxlbWV0cnlMZXZlbFR5cGUge1xuICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbE1hcHBpbmcuY29udmVydFRlbGVtZXRyeUxldmVsVG9UZWxlbWV0cnlMZXZlbFR5cGUoU0RLLl90ZWxlbWV0cnlMZXZlbC52YWx1ZSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGJyb3dzZXJEZXRlY3RvcigpOiBCcm93c2VyRGV0ZWN0b3Ige1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3I7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlUZWxlbWV0cnlDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24gPSBMb2dnZXJGYWN0b3J5LnRlbGVtZXRyeUNvbmZpZ3VyYXRpb247XG5cbiAgICB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnNlc3Npb25JZCA9IFNESy5jbGllbnRTZXNzaW9uSWQ7XG4gICAgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5wYWdlTG9hZFRpbWUgPSBTREsucGFnZUxvYWRUaW1lO1xuXG4gICAgY29uc3QgaWdub3JlZEVudmlyb25tZW50ID0gU0RLLl9lbnZpcm9ubWVudC5zdWJzY3JpYmUoZW52aXJvbm1lbnQgPT4ge1xuICAgICAgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5lbnZpcm9ubWVudCA9IGVudmlyb25tZW50O1xuICAgIH0pO1xuICAgIGNvbnN0IGlnbm9yZWREaXNjb3ZlcnlVcmkgPSBTREsudGVsZW1ldHJ5VXJsLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBjb25zdCB0ZWxlbWV0cnlBcHBlbmRlciA9IHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMudmFsdWUuZmluZChhcHBlbmRlciA9PiBhcHBlbmRlciBpbnN0YW5jZW9mIFRlbGVtZXRyeUFwcGVuZGVyKTtcblxuICAgICAgaWYgKHRlbGVtZXRyeUFwcGVuZGVyKSB7XG4gICAgICAgIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udXJsID0gdmFsdWU7XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5yZW1vdmUodGVsZW1ldHJ5QXBwZW5kZXIpO1xuICAgICAgICB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLmFkZChuZXcgVGVsZW1ldHJ5QXBwZW5kZXIodGVsZW1ldHJ5Q29uZmlndXJhdGlvbikpO1xuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnVGVsZW1ldHJ5IFVSTCB3YXMgc2V0IHRvIFslc10nLCB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnVybCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgaWdub3JlZFRlbmFuY3kgPSBTREsuX3RlbmFuY3kuc3Vic2NyaWJlKHRlbmFuY3kgPT4ge1xuICAgICAgY29uc3QgdGVsZW1ldHJ5QXBwZW5kZXIgPSB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLnZhbHVlLmZpbmQoYXBwZW5kZXIgPT4gYXBwZW5kZXIgaW5zdGFuY2VvZiBUZWxlbWV0cnlBcHBlbmRlcik7XG5cbiAgICAgIGlmICh0ZWxlbWV0cnlBcHBlbmRlciAmJiB0ZW5hbmN5KSB7XG4gICAgICAgIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udGVuYW5jeSA9IHRlbmFuY3k7XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5yZW1vdmUodGVsZW1ldHJ5QXBwZW5kZXIpO1xuICAgICAgICB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLmFkZChuZXcgVGVsZW1ldHJ5QXBwZW5kZXIodGVsZW1ldHJ5Q29uZmlndXJhdGlvbikpO1xuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnVGVsZW1ldHJ5IHRlbmFuY3kgd2FzIHNldCB0byBbJXNdJywgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50ZW5hbmN5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseU1ldHJpY3NDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIFNESy5fbWV0cmljc1NlcnZpY2UgPSBNZXRyaWNzRmFjdG9yeS5nZXRNZXRyaWNzU2VydmljZShEaXNjb3ZlcnlVcmkudXJpLnZhbHVlKTtcbiAgICBTREsuX21ldHJpY3NDb25maWd1cmF0aW9uID0gU0RLLl9tZXRyaWNzU2VydmljZS5tZXRyaWNzQ29uZmlndXJhdGlvbjtcblxuICAgIFNESy5fbWV0cmljc0NvbmZpZ3VyYXRpb24uc2Vzc2lvbklkID0gU0RLLmNsaWVudFNlc3Npb25JZDtcblxuICAgIGNvbnN0IGlnbm9yZWRFbnZpcm9ubWVudCA9IFNESy5fZW52aXJvbm1lbnQuc3Vic2NyaWJlKGVudmlyb25tZW50ID0+IHtcbiAgICAgIFNESy5fbWV0cmljc0NvbmZpZ3VyYXRpb24uZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgICB9KTtcbiAgICBjb25zdCBpZ25vcmVkRGlzY292ZXJ5VXJpID0gU0RLLnRlbGVtZXRyeVVybC5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgU0RLLl9tZXRyaWNzQ29uZmlndXJhdGlvbi51cmwgPSB2YWx1ZTtcbiAgICB9KTtcbiAgICBjb25zdCBpZ25vcmVkVGVuYW5jeSA9IFNESy5fdGVuYW5jeS5zdWJzY3JpYmUodGVuYW5jeSA9PiB7XG4gICAgICBTREsuX21ldHJpY3NDb25maWd1cmF0aW9uLnRlbmFuY3kgPSB0ZW5hbmN5O1xuICAgIH0pO1xuICAgIGNvbnN0IHZhbHVlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZSgncGhlbml4LW1ldHJpY3MtbGV2ZWwnKSBhcyBUZWxlbWV0cnlMZXZlbFR5cGU7XG5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIE1ldHJpY3NGYWN0b3J5LnNldFRlbGVtZXRyeUxldmVsKFRlbGVtZXRyeUxldmVsW3ZhbHVlXSk7XG4gICAgfVxuXG4gICAgY29uc3QgaWdub3JlZFRlbGVtZXRyeUxldmVsID0gU0RLLl90ZWxlbWV0cnlMZXZlbC5zdWJzY3JpYmUodGVsZW1ldHJ5TGV2ZWwgPT4ge1xuICAgICAgTWV0cmljc0ZhY3Rvcnkuc2V0VGVsZW1ldHJ5TGV2ZWwodGVsZW1ldHJ5TGV2ZWwpO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5QXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fYXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1hdXRvbWF0aWNhbGx5LXJldHJ5LW9uLWZhaWx1cmUnKTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnQXV0b21hdGljYWxseSByZXRyeSBvbiBmYWlsdXJlIGlzIHNldCB0bzogWyVzXScsIHRoaXMuX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZSk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBzdGF0aWMgYXBwbHlBdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb25Gcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24gPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LWF1dG9tYXRpY2FsbHktcmVjb25uZWN0LXBlZXItY29ubmVjdGlvbicpO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdBdXRvbWF0aWNhbGx5IHJlY29ubmVjdCBwZWVyIGNvbm5lY3Rpb24gaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnRGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0ID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1mb3JjZS1nYXJiYWdlLWNvbGxlY3Rpb24tb24tcmVzdGFydCcpO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdGb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24gb24gcmVzdGFydCBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0KTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseVNraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlc0Zyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX3NraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcyA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtc2tpcC1nYXJiYWdlLWNvbGxlY3Rpb24tb24tbW9iaWxlLWRldmljZXMnKTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnU2tpcCBnYXJiYWdlIGNvbGxlY3Rpb24gb24gbW9iaWxlIGRldmljZXMgb24gcmVzdGFydCBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5RGlzY292ZXJ5VXJpRGVmYXVsdEZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIFNESy5kaXNjb3ZlcnlVcmkuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIFNESy50ZWxlbWV0cnlVcmwudmFsdWUgPSBTREsuZ2V0VGVsZW1ldHJ5VXJsKHZhbHVlKTtcbiAgICAgIFNESy5fZW52aXJvbm1lbnQudmFsdWUgPSBFbnZpcm9ubWVudC5nZXRFbnZpcm9ubWVudEZyb21VcmwodmFsdWUpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgY2hhbm5lbFRva2VuID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZSgncGhlbml4LWNoYW5uZWwtdG9rZW4nKTtcblxuICAgIGlmIChjaGFubmVsVG9rZW4pIHtcbiAgICAgIGNvbnN0IGVkZ2VUb2tlbiA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4oY2hhbm5lbFRva2VuKTtcblxuICAgICAgU0RLLl90ZW5hbmN5LnZhbHVlID0gZWRnZVRva2VuLnRlbmFuY3k7XG4gICAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gKGVkZ2VUb2tlbi51cmkgfHwgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSkudG9TdHJpbmcoKTtcblxuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Rpc2NvdmVyeSBVUkkgc2V0IGZyb20gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgdG8gWyVzXScsIFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdXJpVmFsdWUgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldFN0cmluZ1ZhbHVlKCdwaGVuaXgtdXJpJyk7XG5cbiAgICBpZiAodXJpVmFsdWUpIHtcbiAgICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSB1cmlWYWx1ZTtcbiAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdEaXNjb3ZlcnkgVVJJIHNldCBmcm9tIFwicGhlbml4LXVyaVwiIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIHRhZyB0byBbJXNdJywgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBiYXNlVVJJVmFsdWUgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldFN0cmluZ1ZhbHVlKCdwaGVuaXgtYmFzZS11cmknKTtcblxuICAgIGlmIChiYXNlVVJJVmFsdWUpIHtcbiAgICAgIGNvbnN0IGdsb2JhbFNjb3BlID0gR2xvYmFsU2NvcGUuZ2V0SW5zdGFuY2UoKS52YWx1ZTtcbiAgICAgIGNvbnN0IHVyaSA9IG5ldyBnbG9iYWxTY29wZS5VUkwoYmFzZVVSSVZhbHVlKTtcblxuICAgICAgdXJpLnBhdGhuYW1lID0gJy9wY2FzdC9lbmRQb2ludHMnO1xuICAgICAgRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSA9IHVyaS50b1N0cmluZygpO1xuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Rpc2NvdmVyeSBVUkkgc2V0IGZyb20gXCJwaGVuaXgtYmFzZS11cmlcIiBjb25maWd1cmF0aW9uIHBhcmFtZXRlciB0YWcgdG8gWyVzXScsIFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIG9uTG9hZChnbG9iYWxTY29wZTogSUdsb2JhbFNjb3BlIHwgbnVsbCk6IHZvaWQge1xuICAgIGlmICghZ2xvYmFsU2NvcGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5faW5pdGlhbGl6ZWQudmFsdWUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdTREsgaGFzIGFscmVhZHkgYmVlbiBsb2FkZWQnKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGdsb2JhbFNjb3BlLmFkZFdpbmRvd0V2ZW50TGlzdGVuZXIoJ3VubG9hZCcsICgpID0+IHtcbiAgICAgIFNESy5kaXNwb3NlKCk7XG4gICAgfSk7XG5cbiAgICBTREsuYXBwbHlEaXNjb3ZlcnlVcmlEZWZhdWx0RnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTtcbiAgICBTREsuYXBwbHlNZXRyaWNzQ29uZmlndXJhdGlvbigpO1xuICAgIFNESy5hcHBseVRlbGVtZXRyeUNvbmZpZ3VyYXRpb24oKTtcblxuICAgIHRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yID0gbmV3IEFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yKCk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnQXV0b21hdGljYWxseSByZXRyeSBvbiBmYWlsdXJlIGlzIHNldCB0bzogWyVzXScsIHRoaXMuX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZSk7XG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0F1dG9tYXRpY2FsbHkgcmVjb25uZWN0IHBlZXIgY29ubmVjdGlvbiBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24pO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdGb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24gb24gcmVzdGFydCBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0KTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnU2tpcCBnYXJiYWdlIGNvbGxlY3Rpb24gb24gbW9iaWxlIGRldmljZXMgb24gcmVzdGFydCBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMpO1xuXG4gICAgdGhpcy5faW5pdGlhbGl6ZWQudmFsdWUgPSB0cnVlO1xuICB9XG5cbiAgc3RhdGljIGluaXQob3B0aW9ucz86IElJbml0T3B0aW9ucyk6IHZvaWQge1xuICAgIGlmICghb3B0aW9ucykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG9wdGlvbnNXaXRoT3B0aW9uYWxnbG9iYWxTY29wZTogSUluaXRPcHRpb25zICYge2dsb2JhbFNjb3BlPzogSVByb3ZpZGVkR2xvYmFsU2NvcGV9ID0gb3B0aW9ucztcblxuICAgIGlmIChvcHRpb25zV2l0aE9wdGlvbmFsZ2xvYmFsU2NvcGUuZ2xvYmFsU2NvcGUpIHtcbiAgICAgIEdsb2JhbFNjb3BlLnNldEluc3RhbmNlKG9wdGlvbnNXaXRoT3B0aW9uYWxnbG9iYWxTY29wZS5nbG9iYWxTY29wZSk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuZGlzY292ZXJ5VXJpKSB7XG4gICAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gb3B0aW9ucy5kaXNjb3ZlcnlVcmk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMucGVlckNvbm5lY3Rpb25GYWN0b3J5KSB7XG4gICAgICBQZWVyQ29ubmVjdGlvblNlcnZpY2UucGVlckNvbm5lY3Rpb25GYWN0b3J5LnZhbHVlID0gb3B0aW9ucy5wZWVyQ29ubmVjdGlvbkZhY3Rvcnk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMudGVsZW1ldHJ5TGV2ZWwgJiYgVGVsZW1ldHJ5TGV2ZWxbb3B0aW9ucy50ZWxlbWV0cnlMZXZlbF0pIHtcbiAgICAgIFNESy5fdGVsZW1ldHJ5TGV2ZWwudmFsdWUgPSBUZWxlbWV0cnlMZXZlbE1hcHBpbmcuY29udmVydFRlbGVtZXRyeUxldmVsVHlwZVRvVGVsZW1ldHJ5TGV2ZWwob3B0aW9ucy50ZWxlbWV0cnlMZXZlbCk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMubG9nZ2luZ0xldmVsICYmIExvZ2dpbmdMZXZlbFtvcHRpb25zLmxvZ2dpbmdMZXZlbF0pIHtcbiAgICAgIHRoaXMuX2xvZ2dlci50aHJlc2hvbGQuc2V0VGhyZXNob2xkKExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFR5cGVUb0xvZ2dpbmdMZXZlbChvcHRpb25zLmxvZ2dpbmdMZXZlbCkpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmNvbnNvbGVMb2dnaW5nTGV2ZWwgJiYgTG9nZ2luZ0xldmVsW29wdGlvbnMuY29uc29sZUxvZ2dpbmdMZXZlbF0pIHtcbiAgICAgIGNvbnN0IGNvbnNvbGVBcHBlbmRlciA9IHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMudmFsdWUuZmluZChhcHBlbmRlciA9PiBhcHBlbmRlciBpbnN0YW5jZW9mIENvbnNvbGVBcHBlbmRlcik7XG5cbiAgICAgIGlmIChjb25zb2xlQXBwZW5kZXIpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5yZW1vdmUoY29uc29sZUFwcGVuZGVyKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY29uc29sZUxvZ2dpbmdMZXZlbCAhPT0gJ09mZicpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5hZGQobmV3IENvbnNvbGVBcHBlbmRlcihMb2dnaW5nTGV2ZWxNYXBwaW5nLmNvbnZlcnRMb2dnaW5nTGV2ZWxUeXBlVG9Mb2dnaW5nTGV2ZWwob3B0aW9ucy5jb25zb2xlTG9nZ2luZ0xldmVsKSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHRoaXMuX2F1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0gPSBvcHRpb25zLmF1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW07XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHRoaXMuX2F1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlID0gb3B0aW9ucy5hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy53ZWJQbGF5ZXJMb2FkZXIpIHtcbiAgICAgIHRoaXMuX3dlYlBsYXllckxvYWRlciA9IG9wdGlvbnMud2ViUGxheWVyTG9hZGVyO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLnNoYWthUGxheWVyTG9hZGVyKSB7XG4gICAgICB0aGlzLl9zaGFrYVBsYXllckxvYWRlciA9IG9wdGlvbnMuc2hha2FQbGF5ZXJMb2FkZXI7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuaGxzSnNMb2FkZXIpIHtcbiAgICAgIHRoaXMuX2hsc0pzTG9hZGVyID0gb3B0aW9ucy5obHNKc0xvYWRlcjtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICBTREsuX2luaXRpYWxpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3I/LmRpc3Bvc2UoKTtcbiAgICB0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciA9IG51bGw7XG4gIH1cblxuICBzdGF0aWMgZ2V0VGVsZW1ldHJ5VXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gVGVsZW1ldHJ5VXJsLmdldFRlbGVtZXRyeVVybCh1cmwpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1NESyBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn1cblxuR2xvYmFsU2NvcGUuc3Vic2NyaWJlKFNESy5vbkxvYWQuYmluZChTREspKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeVVybCB7XG4gIHN0YXRpYyBnZXRUZWxlbWV0cnlVcmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBiYXNlVVJMID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh1cmwpO1xuICAgICAgY29uc3Qgc2VnbWVudHMgPSBiYXNlVVJMLmhvc3RuYW1lLnNwbGl0KCcuJyk7XG5cbiAgICAgIHN3aXRjaCAoYmFzZVVSTC5wcm90b2NvbCkge1xuICAgICAgICBjYXNlICd3czonOlxuICAgICAgICAgIGJhc2VVUkwucHJvdG9jb2wgPSAnaHR0cDonO1xuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3dzczonOlxuICAgICAgICAgIGJhc2VVUkwucHJvdG9jb2wgPSAnaHR0cHM6JztcblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGlmIChzZWdtZW50cy5sZW5ndGggPT09IDIgfHxcbiAgICAgICAgICAoc2VnbWVudHMubGVuZ3RoID09PSAzICYmIHNlZ21lbnRzW3NlZ21lbnRzLmxlbmd0aCAtIDJdLmxlbmd0aCA8PSAyICYmIHNlZ21lbnRzW3NlZ21lbnRzLmxlbmd0aCAtIDFdLmxlbmd0aCA8PSAzKVxuICAgICAgKSB7XG4gICAgICAgIHNlZ21lbnRzLnVuc2hpZnQoJ3RlbGVtZXRyeScpO1xuICAgICAgfSBlbHNlIGlmIChzZWdtZW50c1swXS5zdGFydHNXaXRoKCdzdGctJykgfHwgc2VnbWVudHNbMF0uZW5kc1dpdGgoJy1zdGcnKSB8fCBzZWdtZW50c1swXS5pbmNsdWRlcygnLXN0Zy0nKSB8fCBzZWdtZW50c1swXSA9PT0gJ3N0ZycpIHtcbiAgICAgICAgc2VnbWVudHNbMF0gPSAndGVsZW1ldHJ5LXN0Zyc7XG4gICAgICB9IGVsc2UgaWYgKHNlZ21lbnRzWzBdLnN0YXJ0c1dpdGgoJ2xvY2FsJykgfHwgc2VnbWVudHNbMF0uZW5kc1dpdGgoJy1sb2NhbCcpKSB7XG4gICAgICAgIC8vIExlYXZlIFVSTCB1bmNoYW5nZWRcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlZ21lbnRzWzBdID0gJ3RlbGVtZXRyeSc7XG4gICAgICB9XG5cbiAgICAgIGJhc2VVUkwuaG9zdG5hbWUgPSBzZWdtZW50cy5qb2luKCcuJyk7XG5cbiAgICAgIHJldHVybiBgJHtiYXNlVVJMLm9yaWdpbn0vdGVsZW1ldHJ5YDtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gdXJsO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IHR5cGUgQml0cmF0ZVN0YXRlVHlwZSA9ICdLZWVwJyB8ICdSZXNldCc7XG5leHBvcnQgdHlwZSBCaXRyYXRlTW9kZVR5cGUgPSAnTm9ybWFsJyB8ICdGb3JjZScgfCAnUmVzZXQnO1xuXG5leHBvcnQgZW51bSBCaXRyYXRlU3RhdGUge1xuICBLZWVwLFxuICBSZXNldFxufVxuXG5leHBvcnQgZW51bSBCaXRyYXRlTW9kZSB7XG4gIE5vcm1hbCxcbiAgRm9yY2UsXG4gIFJlc2V0XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlIHtcbiAgYXBpVmVyc2lvbjogbnVtYmVyO1xuICBzaGFyZWRTZWNyZXQ6IHN0cmluZztcbiAgZWxhcHNlZEluTWlsbGlzZWNvbmRzOiBudW1iZXI7XG4gIGJpdHJhdGVJbkJpdHNQZXJTZWNvbmQ6IG51bWJlcjtcbiAgYml0cmF0ZVN0YXRlOiBCaXRyYXRlU3RhdGVUeXBlO1xuICBiaXRyYXRlTW9kZTogQml0cmF0ZU1vZGVUeXBlO1xufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uLy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBSZWFkT25seVN1YmplY3QgZnJvbSAnLi4vLi4vcngvUmVhZE9ubHlTdWJqZWN0JztcbmltcG9ydCBEaW1lbnNpb24gZnJvbSAnLi4vLi4vdmlkZW8vRGltZW5zaW9uJztcbmltcG9ydCBFeHBvbmVudGlhbEJhY2tvZmYgZnJvbSAnLi4vLi4vdGltZS9FeHBvbmVudGlhbEJhY2tvZmYnO1xuaW1wb3J0IEVuZFBvaW50LCB7SVN0cmVhbX0gZnJvbSAnLi4vZGlzY292ZXJ5L0VuZFBvaW50JztcbmltcG9ydCB7SU9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2t9IGZyb20gJy4vSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2snO1xuaW1wb3J0IHtJT25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2t9IGZyb20gJy4vSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrJztcbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi4vLi4vcnRjL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQge0lDaGFubmVsfSBmcm9tICcuL0lDaGFubmVsJztcbmltcG9ydCBDaGFubmVsU3RhdGUgZnJvbSAnLi9DaGFubmVsU3RhdGUnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgVmlkZW9UZWxlbWV0cnkgZnJvbSAnLi4vLi4vdmlkZW8vVmlkZW9UZWxlbWV0cnknO1xuaW1wb3J0IFNlc3Npb25UZWxlbWV0cnkgZnJvbSAnLi4vLi4vdmlkZW8vU2Vzc2lvblRlbGVtZXRyeSc7XG5pbXBvcnQge0lSdGNNb25pdG9yU3RhdGlzdGljfSBmcm9tICcuLi8uLi9ydGMvUnRjQ29ubmVjdGlvbk1vbml0b3InO1xuaW1wb3J0IHtCaXRyYXRlTW9kZSwgQml0cmF0ZVN0YXRlfSBmcm9tICcuLi9hcGkvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUnO1xuaW1wb3J0IEVkZ2VBdXRoUGFyc2VyIGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VkZ2VBdXRoUGFyc2VyJztcbmltcG9ydCB7RW5jb2RlZEVkZ2VUb2tlbn0gZnJvbSAnLi4vLi4vZWRnZUF1dGgvRW5jb2RlZEVkZ2VUb2tlbic7XG5pbXBvcnQge0JpdHNQZXJTZWNvbmQsIE1pbGxpc2Vjb25kfSBmcm9tICcuLi8uLi91bml0cy9Vbml0cyc7XG5pbXBvcnQgVG9rZW5Db250ZXh0IGZyb20gJy4uL2NvbnRleHQvVG9rZW5Db250ZXh0JztcbmltcG9ydCBDaGFubmVsQ29udGV4dCwge0NoYW5uZWxDb250ZXh0T3B0aW9uc30gZnJvbSAnLi4vY29udGV4dC9DaGFubmVsQ29udGV4dCc7XG5pbXBvcnQgRW5jb2RlZFN0cmVhbVNpbmssIHtJRW5jb2RlZFN0cmVhbVNpbmt9IGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL0VuY29kZWRTdHJlYW1TaW5rJztcbmltcG9ydCBTdHJlYW1UcmFja1RyYW5zZm9ybSwge0lTdHJlYW1UcmFja1RyYW5zZm9ybX0gZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vU3RyZWFtVHJhY2tUcmFuc2Zvcm0nO1xuaW1wb3J0IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQsIHtTdHJlYW1UcmFuc2Zvcm1Db250ZXh0T3B0aW9uc30gZnJvbSAnLi4vY29udGV4dC9TdHJlYW1UcmFuc2Zvcm1Db250ZXh0JztcbmltcG9ydCBQZWVyQ29ubmVjdGlvbkNvbnRleHQsIHtQZWVyQ29ubmVjdGlvbkNvbnRleHRPcHRpb25zfSBmcm9tICcuLi9jb250ZXh0L1BlZXJDb25uZWN0aW9uQ29udGV4dCc7XG5pbXBvcnQgU3RhdGVDb250ZXh0IGZyb20gJy4uL2NvbnRleHQvU3RhdGVDb250ZXh0JztcbmltcG9ydCBGcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L0ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0JztcbmltcG9ydCB7RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24sIFJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbn0gZnJvbSAnLi4vZnJhbWVUaW1pbmcvRnJhbWVUaW1pbmdJbmZvcm1hdGlvbic7XG5pbXBvcnQge0lTdHJlYW1TdWJzY3JpYmVyfSBmcm9tICcuLi9zdHJlYW1pbmcvSVN0cmVhbVN1YnNjcmliZXInO1xuaW1wb3J0IFN0cmVhbVN1YnNjcmliZXJGYWN0b3J5IGZyb20gJy4uL3N0cmVhbWluZy9TdHJlYW1TdWJzY3JpYmVyRmFjdG9yeSc7XG5pbXBvcnQgRGlzY292ZXJ5IGZyb20gJy4uL2Rpc2NvdmVyeS9EaXNjb3ZlcnknO1xuaW1wb3J0IERpc2NvdmVyeVVyaSBmcm9tICcuLi9kaXNjb3ZlcnkvRGlzY292ZXJ5VXJpJztcbmltcG9ydCBNZXRyaWNzRmFjdG9yeSBmcm9tICcuLi8uLi9tZXRyaWNzL01ldHJpY3NGYWN0b3J5JztcbmltcG9ydCBNZXRyaWNzU2VydmljZSBmcm9tICcuLi8uLi9tZXRyaWNzL01ldHJpY3NTZXJ2aWNlJztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi8uLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5cbmNvbnN0IGRlZmF1bHRTdHJlYW1UZXJtaW5hdGlvblJlYXNvbiA9ICdjbGllbnQ6dGVybWluYXRpb24nO1xuY29uc3QgZm9yZWdyb3VuZFJlc3RhcnRSZWFzb25CYWNrZ3JvdW5kVGltZW91dCA9ICdjbGllbnQ6Zm9yZWdyb3VuZGVkOmJhY2tncm91bmQtdGltZW91dCc7XG5jb25zdCBmb3JlZ3JvdW5kUmVzdGFydFJlYXNvblVuaGVhbHRoeSA9ICdjbGllbnQ6Zm9yZWdyb3VuZGVkOnVuaGVhbHRoeSc7XG5jb25zdCBmb3JlZ3JvdW5kUmVzdGFydFJlYXNvblVuaGVhbHRoeUhlYWx0aENoZWNrID0gJ2NsaWVudDpmb3JlZ3JvdW5kZWQ6dW5oZWFsdGh5LWhlYWx0aC1jaGVjayc7XG5jb25zdCBmYWlsdXJlQ291bnRDbGVhblVwSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyA9IDMwMDA7XG5jb25zdCBzdGFuZGJ5UG9sbGluZ0ludGVydmFsSW5NaWxsaXNlY29uZHMgPSAxNTAwMDtcbmNvbnN0IGJhY2tncm91bmRSZWNvdmVyeUZhaWxzYWZlSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyA9IDUwMDA7XG5jb25zdCBzdHJlYW1EZWxldGlvblRocmVzaG9sZEluTWlsbGlzZWNvbmRzID0gMzAwMDA7XG5cbmV4cG9ydCB0eXBlIENoYW5uZWxPcHRpb25zID0ge1xuICB0YXJnZXRMYWc/OiBNaWxsaXNlY29uZDtcbiAgdmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaz86IElTdHJlYW1UcmFja1RyYW5zZm9ybTxWaWRlb0ZyYW1lPjtcbiAgYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaz86IElTdHJlYW1UcmFja1RyYW5zZm9ybTxBdWRpb0RhdGE+O1xuICBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rPzogSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRWaWRlb0ZyYW1lPjtcbiAgZW5jb2RlZEF1ZGlvU3RyZWFtU2luaz86IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkQXVkaW9GcmFtZT47XG4gIG9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s/OiBJT25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaztcbiAgb25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s/OiBJT25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDaGFubmVsIGltcGxlbWVudHMgSUNoYW5uZWwge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignQ2hhbm5lbCcpO1xuICBwcml2YXRlIHJlYWRvbmx5IF90b2tlbkNvbnRleHQ6IFRva2VuQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfY2hhbm5lbENvbnRleHQ6IENoYW5uZWxDb250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9wZWVyQ29ubmVjdGlvbkNvbnRleHQ6IFBlZXJDb25uZWN0aW9uQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RyZWFtVHJhbnNmb3JtQ29udGV4dDogU3RyZWFtVHJhbnNmb3JtQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RhdGVDb250ZXh0OiBTdGF0ZUNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0OiBGcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfZXhwb25lbnRpYWxCYWNrb2ZmOiBFeHBvbmVudGlhbEJhY2tvZmY7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5uZWxTdGFydFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlQZWVyQ29ubmVjdGlvbjogUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbiB8IG51bGw+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVN0YXRlOiBSZWFkT25seVN1YmplY3Q8Q2hhbm5lbFN0YXRlPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlFeGlzdHM6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuIHwgbnVsbD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5QXV0b011dGVkOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5QXV0b1BhdXNlZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVRva2VuRXhwaXJpbmc6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlBdXRob3JpemVkOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5T25saW5lOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5TG9hZGluZzogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVBsYXlpbmc6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlTdGFuZGJ5OiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5U3RvcHBlZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVRhcmdldExhZzogUmVhZE9ubHlTdWJqZWN0PE1pbGxpc2Vjb25kPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlMYWc6IFJlYWRPbmx5U3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUJpdHJhdGVMaW1pdDogUmVhZE9ubHlTdWJqZWN0PEJpdHNQZXJTZWNvbmQ+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVJlc29sdXRpb246IFJlYWRPbmx5U3ViamVjdDxEaW1lbnNpb24+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUZhaWx1cmVDb3VudDogUmVhZE9ubHlTdWJqZWN0PG51bWJlcj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5RW5kUG9pbnQ6IFJlYWRPbmx5U3ViamVjdDxFbmRQb2ludCB8IG51bGw+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVN0cmVhbTogUmVhZE9ubHlTdWJqZWN0PElTdHJlYW0gfCBudWxsPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlSdGNTdGF0aXN0aWNzOiBSZWFkT25seVN1YmplY3Q8SVJ0Y01vbml0b3JTdGF0aXN0aWMgfCBudWxsPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlNZWRpYVN0cmVhbTogUmVhZE9ubHlTdWJqZWN0PE1lZGlhU3RyZWFtIHwgbnVsbD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5SXNGcmFtZVRpbWluZ0luZm9ybWF0aW9uRW5hYmxlZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seURlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uOiBSZWFkT25seVN1YmplY3Q8RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb246IFJlYWRPbmx5U3ViamVjdDxSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPjtcblxuICBwcml2YXRlIF9tZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgX3N0cmVhbVN1YnNjcmliZXI6IElTdHJlYW1TdWJzY3JpYmVyIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Nlc3Npb25UZWxlbWV0cnk6IFNlc3Npb25UZWxlbWV0cnk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZGVvTWV0YURhdGFDaGFuZ2VkSGFuZGxlcjogKCkgPT4gdm9pZDtcblxuICBjb25zdHJ1Y3Rvcih2aWRlb0VsZW1lbnQ6IEhUTUxWaWRlb0VsZW1lbnQsIHRva2VuOiBFbmNvZGVkRWRnZVRva2VuLCBvcHRpb25zPzogQ2hhbm5lbE9wdGlvbnMpIHtcbiAgICBjb25zdCBlZGdlVG9rZW4gPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKHRva2VuKTtcbiAgICBjb25zdCBjaGFubmVsQ29udGV4dE9wdGlvbnM6IENoYW5uZWxDb250ZXh0T3B0aW9ucyA9IHtcbiAgICAgIHRhcmdldExhZzogb3B0aW9ucz8udGFyZ2V0TGFnLFxuICAgICAgb25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjazogb3B0aW9ucz8ub25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayxcbiAgICAgIG9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrOiBvcHRpb25zPy5vblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFja1xuICAgIH07XG4gICAgY29uc3QgcGVlckNvbm5lY3Rpb25Db250ZXh0T3B0aW9uczogUGVlckNvbm5lY3Rpb25Db250ZXh0T3B0aW9ucyA9IHtmb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0OiBTREsuZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydH07XG4gICAgY29uc3Qgc3RyZWFtVHJhbnNmb3JtQ29udGV4dE9wdGlvbnM6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHRPcHRpb25zID0ge1xuICAgICAgaGFzSW5zZXJ0YWJsZVN0cmVhbXM6IGVkZ2VUb2tlbi5jYXBhYmlsaXRpZXMuaW5jbHVkZXMoJ2luc2VydGFibGUtc3RyZWFtcycpLFxuICAgICAgaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zOiBlZGdlVG9rZW4uY2FwYWJpbGl0aWVzLmluY2x1ZGVzKCdlbmNvZGVkLWluc2VydGFibGUtc3RyZWFtcycpLFxuICAgICAgdmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogb3B0aW9ucz8udmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayxcbiAgICAgIGF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IG9wdGlvbnM/LmF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2ssXG4gICAgICBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rOiBvcHRpb25zPy5lbmNvZGVkVmlkZW9TdHJlYW1TaW5rLFxuICAgICAgZW5jb2RlZEF1ZGlvU3RyZWFtU2luazogb3B0aW9ucz8uZW5jb2RlZEF1ZGlvU3RyZWFtU2lua1xuICAgIH07XG5cbiAgICB0aGlzLl90b2tlbkNvbnRleHQgPSBuZXcgVG9rZW5Db250ZXh0KHRva2VuKTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dCA9IG5ldyBDaGFubmVsQ29udGV4dChjaGFubmVsQ29udGV4dE9wdGlvbnMpO1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dCA9IG5ldyBQZWVyQ29ubmVjdGlvbkNvbnRleHQocGVlckNvbm5lY3Rpb25Db250ZXh0T3B0aW9ucyk7XG4gICAgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dCA9IG5ldyBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0KHN0cmVhbVRyYW5zZm9ybUNvbnRleHRPcHRpb25zKTtcbiAgICB0aGlzLl9zdGF0ZUNvbnRleHQgPSBuZXcgU3RhdGVDb250ZXh0KCk7XG4gICAgdGhpcy5fZXhwb25lbnRpYWxCYWNrb2ZmID0gbmV3IEV4cG9uZW50aWFsQmFja29mZigpO1xuICAgIHRoaXMuX2NoYW5uZWxTdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgIHRoaXMuX3JlYWRPbmx5UGVlckNvbm5lY3Rpb24gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbiB8IG51bGw+KHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbik7XG4gICAgdGhpcy5fcmVhZE9ubHlTdGF0ZSA9IG5ldyBSZWFkT25seVN1YmplY3Q8Q2hhbm5lbFN0YXRlPih0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZSk7XG4gICAgdGhpcy5fcmVhZE9ubHlFeGlzdHMgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4gfCBudWxsPih0aGlzLl9jaGFubmVsQ29udGV4dC5leGlzdHMpO1xuICAgIHRoaXMuX3JlYWRPbmx5QXV0b011dGVkID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQpO1xuICAgIHRoaXMuX3JlYWRPbmx5QXV0b1BhdXNlZCA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZCk7XG4gICAgdGhpcy5fcmVhZE9ubHlUb2tlbkV4cGlyaW5nID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl90b2tlbkNvbnRleHQudG9rZW5FeHBpcmluZyk7XG4gICAgdGhpcy5fcmVhZE9ubHlBdXRob3JpemVkID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkKTtcbiAgICB0aGlzLl9yZWFkT25seU9ubGluZSA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fY2hhbm5lbENvbnRleHQub25saW5lKTtcbiAgICB0aGlzLl9yZWFkT25seUxvYWRpbmcgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcpO1xuICAgIHRoaXMuX3JlYWRPbmx5UGxheWluZyA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZyk7XG4gICAgdGhpcy5fcmVhZE9ubHlTdGFuZGJ5ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9jaGFubmVsQ29udGV4dC5zdGFuZGJ5KTtcbiAgICB0aGlzLl9yZWFkT25seVN0b3BwZWQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0b3BwZWQpO1xuICAgIHRoaXMuX3JlYWRPbmx5VGFyZ2V0TGFnID0gbmV3IFJlYWRPbmx5U3ViamVjdDxudW1iZXI+KHRoaXMuX2NoYW5uZWxDb250ZXh0LnRhcmdldExhZyk7XG4gICAgdGhpcy5fcmVhZE9ubHlMYWcgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PG51bWJlciB8IHVuZGVmaW5lZD4odGhpcy5fY2hhbm5lbENvbnRleHQubGFnKTtcbiAgICB0aGlzLl9yZWFkT25seUJpdHJhdGVMaW1pdCA9IG5ldyBSZWFkT25seVN1YmplY3Q8Qml0c1BlclNlY29uZD4odGhpcy5fY2hhbm5lbENvbnRleHQuYml0cmF0ZUxpbWl0KTtcbiAgICB0aGlzLl9yZWFkT25seVJlc29sdXRpb24gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PERpbWVuc2lvbj4odGhpcy5fY2hhbm5lbENvbnRleHQucmVzb2x1dGlvbik7XG4gICAgdGhpcy5fcmVhZE9ubHlGYWlsdXJlQ291bnQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PG51bWJlcj4odGhpcy5fY2hhbm5lbENvbnRleHQuZmFpbHVyZUNvdW50KTtcbiAgICB0aGlzLl9yZWFkT25seUVuZFBvaW50ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxFbmRQb2ludCB8IG51bGw+KHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50KTtcbiAgICB0aGlzLl9yZWFkT25seVN0cmVhbSA9IG5ldyBSZWFkT25seVN1YmplY3Q8SVN0cmVhbSB8IG51bGw+KHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbSk7XG4gICAgdGhpcy5fcmVhZE9ubHlSdGNTdGF0aXN0aWNzID0gbmV3IFJlYWRPbmx5U3ViamVjdDxJUnRjTW9uaXRvclN0YXRpc3RpYyB8IG51bGw+KHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1N0YXRpc3RpY3MpO1xuICAgIHRoaXMuX3JlYWRPbmx5TWVkaWFTdHJlYW0gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PE1lZGlhU3RyZWFtIHwgbnVsbD4odGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtKTtcblxuICAgIGNvbnN0IGRpc2NvdmVyeVVyaSA9IChlZGdlVG9rZW4udXJpIHx8IFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpLnRvU3RyaW5nKCk7XG5cbiAgICBTREsudGVuYW5jeS52YWx1ZSA9IGVkZ2VUb2tlbi50ZW5hbmN5IHx8IFNESy50ZW5hbmN5LnZhbHVlO1xuICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSBkaXNjb3ZlcnlVcmk7XG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UgPSBNZXRyaWNzRmFjdG9yeS5nZXRNZXRyaWNzU2VydmljZShkaXNjb3ZlcnlVcmkpO1xuICAgIHRoaXMuX3Nlc3Npb25UZWxlbWV0cnkgPSBuZXcgU2Vzc2lvblRlbGVtZXRyeShTREsucGFnZUxvYWRUaW1lLCB0aGlzLl9tZXRyaWNzU2VydmljZSk7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuY2hhbm5lbERpc3Bvc2FibGVzLmFkZCh0aGlzLl9zZXNzaW9uVGVsZW1ldHJ5KTtcbiAgICB0aGlzLl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIgPSB0aGlzLmhhbmRsZVZpZGVvTWV0YURhdGFDaGFuZ2VkLmJpbmQodGhpcyk7XG4gICAgdGhpcy52aWRlb0VsZW1lbnQgPSB2aWRlb0VsZW1lbnQ7XG5cbiAgICB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCA9IG5ldyBGcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCgpO1xuICAgIHRoaXMuY29uZmlndXJlRnJhbWVUaW1pbmdJbmZvcm1hdGlvbihlZGdlVG9rZW4uY2FwYWJpbGl0aWVzKTtcbiAgICB0aGlzLl9yZWFkT25seUlzRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkVuYWJsZWQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LmlzRW5hYmxlZCk7XG4gICAgdGhpcy5fcmVhZE9ubHlEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiA9IG5ldyBSZWFkT25seVN1YmplY3Q8RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPih0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5kZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbik7XG4gICAgdGhpcy5fcmVhZE9ubHlSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PFJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+KHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbik7XG5cbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsRGlzcG9zYWJsZXMuYWRkKFxuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnN1YnNjcmliZSh2aWRlb0VsZW1lbnQgPT4ge1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5yZW5kZXJlckRpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcblxuICAgICAgICBpZiAoIXZpZGVvRWxlbWVudCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlbmRlcmVyRGlzcG9zYWJsZXMuYWRkKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS5zdWJzY3JpYmUoc3RyZWFtID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9UZWxlbWV0cnkpIHtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvVGVsZW1ldHJ5LmRpc3Bvc2UoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIXN0cmVhbSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghdGhpcy52aWRlb0VsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodGhpcy52aWRlb0VsZW1lbnQuZGF0YXNldCkge1xuICAgICAgICAgICAgdGhpcy52aWRlb0VsZW1lbnQuZGF0YXNldC5zZXNzaW9uSWQgPSBTREsuY2xpZW50U2Vzc2lvbklkO1xuICAgICAgICAgICAgdGhpcy52aWRlb0VsZW1lbnQuZGF0YXNldC5zdHJlYW1JZCA9IHRoaXMuc3RyZWFtSWQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9UZWxlbWV0cnkgPSBuZXcgVmlkZW9UZWxlbWV0cnkodGhpcy5zdHJlYW1JZCwgU0RLLnBhZ2VMb2FkVGltZSwgdGhpcy5fY2hhbm5lbFN0YXJ0VGltZSwgdGhpcy5fbWV0cmljc1NlcnZpY2UpO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvVGVsZW1ldHJ5LnNldHVwTGlzdGVuZXJGb3JUaW1lVG9GaXJzdFRpbWUodGhpcy52aWRlb0VsZW1lbnQpO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvVGVsZW1ldHJ5LnNldHVwTGlzdGVuZXJGb3JSZWJ1ZmZlcmluZyh0aGlzLnZpZGVvRWxlbWVudCk7XG5cbiAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPT09IENoYW5uZWxTdGF0ZS5TdG9wcGVkKSB7XG4gICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5yZXN0YXJ0QWZ0ZXJTdG9wKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSk7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuY2hhbm5lbERpc3Bvc2FibGVzLmFkZCh0aGlzLl9jaGFubmVsQ29udGV4dC5yZW5kZXJlckRpc3Bvc2FibGVzKTtcbiAgICAgIH0pKTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsRGlzcG9zYWJsZXMuYWRkKFxuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUuc3Vic2NyaWJlKHN0YXRlID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LmNsZWFyRmFpbHVyZUNvdW50VGltZW91dCkge1xuICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aGlzLl9jaGFubmVsQ29udGV4dC5jbGVhckZhaWx1cmVDb3VudFRpbWVvdXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLl9jaGFubmVsQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3RhdGUgIT09IENoYW5uZWxTdGF0ZS5QbGF5aW5nKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZmFpbHVyZUNvdW50LnZhbHVlID0gMDtcbiAgICAgICAgfSwgZmFpbHVyZUNvdW50Q2xlYW5VcEludGVydmFsSW5NaWxsaXNlY29uZHMpO1xuICAgICAgfSkpO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxEaXNwb3NhYmxlcy5hZGQoXG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5yZXNvbHV0aW9uLnN1YnNjcmliZShyZXNvbHV0aW9uID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvVGVsZW1ldHJ5KSB7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9UZWxlbWV0cnkub25WaWRlb1Jlc29sdXRpb25DaGFuZ2VzKHJlc29sdXRpb24udG9TdHJpbmcoKSk7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsRGlzcG9zYWJsZXMuYWRkKFxuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYml0cmF0ZUxpbWl0LnN1YnNjcmliZShiaXRyYXRlTGltaXQgPT4ge1xuICAgICAgICBpZiAoYml0cmF0ZUxpbWl0ICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSkge1xuICAgICAgICAgIGNvbnN0IGVsYXBzZWRJbk1pbGxpc2Vjb25kcyA9IERhdGUubm93KCkgLSB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsSW5pdGlhbGl6YXRpb24uZ2V0VGltZSgpO1xuICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZS5saW1pdEJpdHJhdGUoXG4gICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUsXG4gICAgICAgICAgICBlbGFwc2VkSW5NaWxsaXNlY29uZHMsXG4gICAgICAgICAgICBiaXRyYXRlTGltaXQsXG4gICAgICAgICAgICBCaXRyYXRlU3RhdGUuS2VlcCxcbiAgICAgICAgICAgIEJpdHJhdGVNb2RlLk5vcm1hbFxuICAgICAgICAgIClcbiAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdFcnJvciB3aGlsZSBzZXR0aW5nIGxpbWl0IGJpdHJhdGUnLCBlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICBjb25zdCBkZXN0cm95U3RyZWFtT25Vbm1vdW50ID0gKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSAmJiB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZSkge1xuICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUuZGVzdHJveVN0cmVhbU9uVW5tb3VudCh0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUsICdjbGllbnQ6dGVybWluYXRpb24tb24td2luZG93LXVubG9hZCcpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBHbG9iYWxTY29wZS52YWx1ZS5hZGRXaW5kb3dFdmVudExpc3RlbmVyKCdiZWZvcmV1bmxvYWQnLCBkZXN0cm95U3RyZWFtT25Vbm1vdW50KTtcblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxEaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUucmVtb3ZlV2luZG93RXZlbnRMaXN0ZW5lcignYmVmb3JldW5sb2FkJywgZGVzdHJveVN0cmVhbU9uVW5tb3VudCk7XG4gICAgfSkpO1xuXG4gICAgdGhpcy5zdGFydCgpO1xuXG4gICAgaWYgKFNESy5hdXRvbWF0aWNSZXRyeU9uRmFpbHVyZSkge1xuICAgICAgY29uc3QgdHJ5UmVzdGFydCA9IChyZWFzb246IHN0cmluZykgPT4ge1xuICAgICAgICBpZiAodGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUpIHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ1slc10gU2tpcHBpbmcgZmFpbHVyZUNvdW50IHJlc2V0IGFuZCBDaGFubmVsIHJlc3RhcnQgZHVlIHRvIENoYW5uZWwgYWxyZWFkeSBzdGFydGluZyBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIHJlYXNvbik7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUZXJtaW5hbCBzdGF0ZXMgKFN0b3BwZWQsIFVuYXV0aG9yaXplZCwgR2VvQmxvY2tlZCwgZXRjLikgcmVmbGVjdCBleHBsaWNpdCB1c2VyXG4gICAgICAgIC8vIGludGVudCBvciBwZXJtYW5lbnQgZmFpbHVyZXMgYW5kIG11c3Qgbm90IGJlIG92ZXJyaWRkZW4gYnkgYW4gYXV0b21hdGljIHJlc3RhcnRcbiAgICAgICAgaWYgKHRoaXMuaXNUZXJtaW5hbFN0YXRlKCkpIHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ1slc10gU2tpcHBpbmcgZmFpbHVyZUNvdW50IHJlc2V0IGFuZCBDaGFubmVsIHJlc3RhcnQgZHVlIHRvIHRlcm1pbmFsIENoYW5uZWxTdGF0ZSBbJXNdIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgQ2hhbm5lbFN0YXRlW3RoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlXSwgcmVhc29uKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSA9IDA7XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdbJXNdIFJlc2V0IGZhaWx1cmVDb3VudCB0byAwIGFuZCByZXN0YXJ0aW5nIENoYW5uZWwgZHVlIHRvIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgcmVhc29uKTtcblxuICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zdGFydCgpO1xuICAgICAgfTtcblxuICAgICAgLy8gU0RLLmluaXRpYWxpemUoKSBndWFyYW50ZWVzIGFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIGlzIGNyZWF0ZWQgYmVmb3JlIGFueSBDaGFubmVsIGNhbiBiZSBpbnN0YW50aWF0ZWRcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxEaXNwb3NhYmxlcy5hZGQoXG4gICAgICAgIFNESy5hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciEuaXNGb3JlZ3JvdW5kLnN1YnNjcmliZShpc0ZvcmVncm91bmQgPT4ge1xuICAgICAgICAgIGlmICghaXNGb3JlZ3JvdW5kKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgbGFzdEJhY2tncm91bmREdXJhdGlvbiA9IFNESy5hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciEuZ2V0TGFzdEJhY2tncm91bmREdXJhdGlvbigpO1xuICAgICAgICAgIGNvbnN0IHNob3VsZEZvcmNlUmVzdGFydCA9IEZlYXR1cmVFbmFibGVtZW50LmlzTW9iaWxlXG4gICAgICAgICAgICAmJiBsYXN0QmFja2dyb3VuZER1cmF0aW9uICE9PSBudWxsXG4gICAgICAgICAgICAmJiBsYXN0QmFja2dyb3VuZER1cmF0aW9uID4gYmFja2dyb3VuZFJlY292ZXJ5RmFpbHNhZmVJbnRlcnZhbEluTWlsbGlzZWNvbmRzO1xuICAgICAgICAgIC8vIFBsYXRmb3JtIGRlc3Ryb3lzIHN0cmVhbXMgYWZ0ZXIgMzBzIG9mIG5vIG1lZGlhIGRhdGEuIElmIHRoZSBjaGFubmVsIGlzIGFscmVhZHlcbiAgICAgICAgICAvLyByZWNvbm5lY3RpbmcgYW5kIHRoZSB0YWIgd2FzIGJhY2tncm91bmRlZCBsb25nZXIgdGhhbiB0aGF0IHRocmVzaG9sZCwgdGhlIHNlcnZlci1zaWRlXG4gICAgICAgICAgLy8gc3RyZWFtIGlzIGdvbmUgYW5kIHdlIG11c3QgZG8gYSBmdWxsIHJlc3RhcnQgcmF0aGVyIHRoYW4gd2FpdGluZyBmb3IgdGhlIHJlY29ubmVjdC5cbiAgICAgICAgICBjb25zdCBpc1N0cmVhbURlbGV0ZWRCeVBsYXRmb3JtID0gdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPT09IENoYW5uZWxTdGF0ZS5SZWNvbm5lY3RpbmdcbiAgICAgICAgICAgICYmIGxhc3RCYWNrZ3JvdW5kRHVyYXRpb24gIT09IG51bGxcbiAgICAgICAgICAgICYmIGxhc3RCYWNrZ3JvdW5kRHVyYXRpb24gPiBzdHJlYW1EZWxldGlvblRocmVzaG9sZEluTWlsbGlzZWNvbmRzO1xuXG4gICAgICAgICAgaWYgKHNob3VsZEZvcmNlUmVzdGFydCB8fCBpc1N0cmVhbURlbGV0ZWRCeVBsYXRmb3JtKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGb3JlZ3JvdW5kZWQgYWZ0ZXIgWyVzXSBtcyBpbiBiYWNrZ3JvdW5kLCB0cnlpbmcgcmVzdGFydCcsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBsYXN0QmFja2dyb3VuZER1cmF0aW9uKTtcbiAgICAgICAgICAgIHRyeVJlc3RhcnQoZm9yZWdyb3VuZFJlc3RhcnRSZWFzb25CYWNrZ3JvdW5kVGltZW91dCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodGhpcy5pc1JldHJ5YWJsZVN0YXRlKCkpIHtcbiAgICAgICAgICAgIHRyeVJlc3RhcnQoZm9yZWdyb3VuZFJlc3RhcnRSZWFzb25VbmhlYWx0aHkpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gVGhlIGhlYWx0aCBjaGVjayBjYXRjaGVzIHN0cmVhbXMgdGhhdCBhcmUgdW5oZWFsdGh5IHdoaWxlIHN0aWxsIGluIFBsYXlpbmcgc3RhdGVcbiAgICAgICAgICAvLyAoZS5nLiwgdmlkZW8gc3RhbGxlZCBidXQgbm8gc3RhdGUgdHJhbnNpdGlvbiB5ZXQpXG4gICAgICAgICAgaWYgKCF0aGlzLl9zdHJlYW1TdWJzY3JpYmVyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuaXNTdWJzY3JpYmVySGVhbHRoeSgpXG4gICAgICAgICAgICAudGhlbihpc0hlYWx0aHkgPT4ge1xuICAgICAgICAgICAgICBpZiAoaXNIZWFsdGh5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgLy8gT25seSByZXN0YXJ0IGZyb20gUGxheWluZyBzdGF0ZSDigJQgdGVybWluYWwgc3RhdGVzIChVbmF1dGhvcml6ZWQsIEdlb0Jsb2NrZWQsXG4gICAgICAgICAgICAgIC8vIFN0b3BwZWQsIGV0Yy4pIHNob3VsZCBub3QgdHJpZ2dlciBoZWFsdGgtY2hlY2sgcmVzdGFydHNcbiAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlICE9PSBDaGFubmVsU3RhdGUuUGxheWluZykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRyeVJlc3RhcnQoZm9yZWdyb3VuZFJlc3RhcnRSZWFzb25VbmhlYWx0aHlIZWFsdGhDaGVjayk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ1slc10gVW5leHBlY3RlZCBlcnJvciBvY2N1cnJlZCB3aGVuIGNoZWNraW5nIHN1YnNjcmliZXIgaGVhbHRoIHdoaWxlIGZvcmVncm91bmRpbmcnLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSkpO1xuICAgIH1cbiAgfVxuXG4gIGdldCB2aWRlb0VsZW1lbnQoKTogSFRNTFZpZGVvRWxlbWVudCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWU7XG4gIH1cblxuICBzZXQgdmlkZW9FbGVtZW50KHZpZGVvRWxlbWVudDogSFRNTFZpZGVvRWxlbWVudCkge1xuICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUpIHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdsb2FkZWRkYXRhJywgdGhpcy5fdmlkZW9NZXRhRGF0YUNoYW5nZWRIYW5kbGVyKTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdsb2FkZWRtZXRhZGF0YScsIHRoaXMuX3ZpZGVvTWV0YURhdGFDaGFuZ2VkSGFuZGxlcik7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5fdmlkZW9NZXRhRGF0YUNoYW5nZWRIYW5kbGVyKTtcblxuICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5kYXRhc2V0KSB7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5kYXRhc2V0LnNlc3Npb25JZCA9ICcnO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUuZGF0YXNldC5zdHJlYW1JZCA9ICcnO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5yZW5kZXJlckRpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcblxuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnBhdXNlKCk7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUuc3JjT2JqZWN0ID0gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvUGF1c2VkLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSAhPT0gQ2hhbm5lbFN0YXRlLkluaXRpYWxpemluZykge1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuU3RvcHBlZDtcbiAgICB9XG5cbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUgPSB2aWRlb0VsZW1lbnQ7XG5cbiAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlKSB7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcignbG9hZGVkZGF0YScsIHRoaXMuX3ZpZGVvTWV0YURhdGFDaGFuZ2VkSGFuZGxlcik7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcignbG9hZGVkbWV0YWRhdGEnLCB0aGlzLl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIpO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuX3ZpZGVvTWV0YURhdGFDaGFuZ2VkSGFuZGxlcik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVWaWRlb01ldGFEYXRhQ2hhbmdlZCgpOiB2b2lkIHtcbiAgICBjb25zdCB2aWRlb0VsZW1lbnQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWU7XG5cbiAgICBpZiAodmlkZW9FbGVtZW50KSB7XG4gICAgICBpZiAodGhpcy5yZXNvbHV0aW9uLnZhbHVlLndpZHRoICE9PSB2aWRlb0VsZW1lbnQudmlkZW9XaWR0aCB8fCB0aGlzLnJlc29sdXRpb24udmFsdWUuaGVpZ2h0ICE9PSB2aWRlb0VsZW1lbnQudmlkZW9IZWlnaHQpIHtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucmVzb2x1dGlvbi52YWx1ZSA9IG5ldyBEaW1lbnNpb24odmlkZW9FbGVtZW50LnZpZGVvV2lkdGgsIHZpZGVvRWxlbWVudC52aWRlb0hlaWdodCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlc29sdXRpb24udmFsdWUgPSBEaW1lbnNpb24uZW1wdHk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHRva2VuKCk6IEVuY29kZWRFZGdlVG9rZW4ge1xuICAgIHJldHVybiB0aGlzLl90b2tlbkNvbnRleHQudG9rZW4udmFsdWU7XG4gIH1cblxuICBzZXQgdG9rZW4odG9rZW46IEVuY29kZWRFZGdlVG9rZW4pIHtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG5cbiAgICB0aGlzLl90b2tlbkNvbnRleHQudG9rZW4udmFsdWUgPSB0b2tlbjtcbiAgICB0aGlzLl90b2tlbkNvbnRleHQudG9rZW5FeHBpcmluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgY29uc3QgZWRnZVRva2VuID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0aGlzLl90b2tlbkNvbnRleHQudG9rZW4udmFsdWUpO1xuICAgIGNvbnN0IGRpc2NvdmVyeVVyaSA9IChlZGdlVG9rZW4udXJpIHx8IFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpLnRvU3RyaW5nKCk7XG5cbiAgICBTREsudGVuYW5jeS52YWx1ZSA9IGVkZ2VUb2tlbi50ZW5hbmN5IHx8IFNESy50ZW5hbmN5LnZhbHVlO1xuICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSBkaXNjb3ZlcnlVcmk7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZSA9IE1ldHJpY3NGYWN0b3J5LmdldE1ldHJpY3NTZXJ2aWNlKGRpc2NvdmVyeVVyaSk7XG5cbiAgICB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0Lmhhc0luc2VydGFibGVTdHJlYW1zLnZhbHVlID0gZWRnZVRva2VuLmNhcGFiaWxpdGllcy5pbmNsdWRlcygnaW5zZXJ0YWJsZS1zdHJlYW1zJyk7XG4gICAgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMudmFsdWUgPSBlZGdlVG9rZW4uY2FwYWJpbGl0aWVzLmluY2x1ZGVzKCdlbmNvZGVkLWluc2VydGFibGUtc3RyZWFtcycpO1xuXG4gICAgdGhpcy5jb25maWd1cmVGcmFtZVRpbWluZ0luZm9ybWF0aW9uKGVkZ2VUb2tlbi5jYXBhYmlsaXRpZXMpO1xuXG4gICAgdGhpcy5zdGFydCgpO1xuICB9XG5cbiAgZ2V0IHBlZXJDb25uZWN0aW9uKCk6IFJlYWRPbmx5U3ViamVjdDxJUGVlckNvbm5lY3Rpb24gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5UGVlckNvbm5lY3Rpb247XG4gIH1cblxuICBnZXQgc3RhdGUoKTogUmVhZE9ubHlTdWJqZWN0PENoYW5uZWxTdGF0ZT4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVN0YXRlO1xuICB9XG5cbiAgZ2V0IGV4aXN0cygpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbiB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlFeGlzdHM7XG4gIH1cblxuICBnZXQgYXV0b011dGVkKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5QXV0b011dGVkO1xuICB9XG5cbiAgZ2V0IGF1dG9QYXVzZWQoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlBdXRvUGF1c2VkO1xuICB9XG5cbiAgZ2V0IHRva2VuRXhwaXJpbmcoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlUb2tlbkV4cGlyaW5nO1xuICB9XG5cbiAgZ2V0IGF1dGhvcml6ZWQoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlBdXRob3JpemVkO1xuICB9XG5cbiAgZ2V0IG9ubGluZSgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seU9ubGluZTtcbiAgfVxuXG4gIGdldCBsb2FkaW5nKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5TG9hZGluZztcbiAgfVxuXG4gIGdldCBwbGF5aW5nKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5UGxheWluZztcbiAgfVxuXG4gIGdldCBzdGFuZGJ5KCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5U3RhbmRieTtcbiAgfVxuXG4gIGdldCBzdG9wcGVkKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5U3RvcHBlZDtcbiAgfVxuXG4gIGdldCB0YXJnZXRMYWcoKTogUmVhZE9ubHlTdWJqZWN0PE1pbGxpc2Vjb25kPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5VGFyZ2V0TGFnO1xuICB9XG5cbiAgZ2V0IGxhZygpOiBSZWFkT25seVN1YmplY3Q8TWlsbGlzZWNvbmQgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlMYWc7XG4gIH1cblxuICBnZXQgYml0cmF0ZUxpbWl0KCk6IEJpdHNQZXJTZWNvbmQge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUJpdHJhdGVMaW1pdC52YWx1ZTtcbiAgfVxuXG4gIGdldCByZXNvbHV0aW9uKCk6IFJlYWRPbmx5U3ViamVjdDxEaW1lbnNpb24+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlSZXNvbHV0aW9uO1xuICB9XG5cbiAgZ2V0IGZhaWx1cmVDb3VudCgpOiBSZWFkT25seVN1YmplY3Q8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5RmFpbHVyZUNvdW50O1xuICB9XG5cbiAgZ2V0IGVuZFBvaW50KCk6IFJlYWRPbmx5U3ViamVjdDxFbmRQb2ludCB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlFbmRQb2ludDtcbiAgfVxuXG4gIGdldCBzdHJlYW0oKTogUmVhZE9ubHlTdWJqZWN0PElTdHJlYW0gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5U3RyZWFtO1xuICB9XG5cbiAgZ2V0IHN0cmVhbUlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkO1xuICB9XG5cbiAgZ2V0IHJ0Y1N0YXRpc3RpY3MoKTogUmVhZE9ubHlTdWJqZWN0PElSdGNNb25pdG9yU3RhdGlzdGljIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVJ0Y1N0YXRpc3RpY3M7XG4gIH1cblxuICBnZXQgbWVkaWFTdHJlYW0oKTogUmVhZE9ubHlTdWJqZWN0PE1lZGlhU3RyZWFtIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seU1lZGlhU3RyZWFtO1xuICB9XG5cbiAgZ2V0IGlzRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkVuYWJsZWQoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlJc0ZyYW1lVGltaW5nSW5mb3JtYXRpb25FbmFibGVkO1xuICB9XG5cbiAgZ2V0IGRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uKCk6IFJlYWRPbmx5U3ViamVjdDxEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbjtcbiAgfVxuXG4gIGdldCByZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24oKTogUmVhZE9ubHlTdWJqZWN0PFJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb247XG4gIH1cblxuICBzZXRCaXRyYXRlTGltaXQoYml0cmF0ZUxpbWl0OiBCaXRzUGVyU2Vjb25kKTogdm9pZCB7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYml0cmF0ZUxpbWl0LnZhbHVlID0gYml0cmF0ZUxpbWl0O1xuICB9XG5cbiAgY2xlYXJCaXRyYXRlTGltaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LmJpdHJhdGVMaW1pdC52YWx1ZSAmJiB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZSAmJiB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUpIHtcbiAgICAgIGNvbnN0IGVsYXBzZWRJbk1pbGxpc2Vjb25kcyA9IERhdGUubm93KCkgLSB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsSW5pdGlhbGl6YXRpb24uZ2V0VGltZSgpO1xuICAgICAgY29uc3QgYml0cmF0ZUluQml0c1BlclNlY29uZCA9IDA7XG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUubGltaXRCaXRyYXRlKFxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUsXG4gICAgICAgIGVsYXBzZWRJbk1pbGxpc2Vjb25kcyxcbiAgICAgICAgYml0cmF0ZUluQml0c1BlclNlY29uZCxcbiAgICAgICAgQml0cmF0ZVN0YXRlLktlZXAsXG4gICAgICAgIEJpdHJhdGVNb2RlLlJlc2V0XG4gICAgICApXG4gICAgICAgIC50aGVuKCh7c3RhdHVzfSkgPT4ge1xuICAgICAgICAgIGlmIChzdGF0dXMgPT09ICdvaycpIHtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmJpdHJhdGVMaW1pdC52YWx1ZSA9IDA7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdFcnJvciB3aGlsZSBzZXR0aW5nIGxpbWl0IGJpdHJhdGUnLCBlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlVGFyZ2V0TGFnKGxhZzogTWlsbGlzZWNvbmQpOiB2b2lkIHtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC50YXJnZXRMYWcudmFsdWUgPSBsYWc7XG4gIH1cblxuICBhc3luYyBzdG9wKHJlYXNvbjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgaWYgKCF0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSkge1xuICAgICAgICB0aGlzLnByb2Nlc3NTdG9wKHJlYXNvbik7XG5cbiAgICAgICAgcmVzb2x2ZSgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucmVuZGVyZXJEaXNwb3NhYmxlcy5hZGQodGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcuc3Vic2NyaWJlKGlzU3RhcnRpbmcgPT4ge1xuICAgICAgICBpZiAoIWlzU3RhcnRpbmcpIHtcbiAgICAgICAgICB0aGlzLnByb2Nlc3NTdG9wKHJlYXNvbik7XG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NTdG9wKHJlYXNvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZSkge1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnBhdXNlKCk7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUuc3JjT2JqZWN0ID0gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5yZW5kZXJlckRpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcblxuICAgIHRoaXMuY2xlYW5VcFJlc291cmNlcyhyZWFzb24pO1xuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuU3RvcHBlZDtcbiAgfVxuXG4gIGFzeW5jIHJlc3VtZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlKSB7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvUGF1c2VkLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgIHJldHVybiB0aGlzLnBsYXlNZWRpYVN0cmVhbUluVmlkZW9FbGVtZW50KHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgbXV0ZSgpOiB2b2lkIHtcbiAgICBjb25zdCB2aWRlb0VsZW1lbnQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWU7XG5cbiAgICBpZiAodmlkZW9FbGVtZW50KSB7XG4gICAgICB2aWRlb0VsZW1lbnQubXV0ZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHVubXV0ZSgpOiB2b2lkIHtcbiAgICBjb25zdCB2aWRlb0VsZW1lbnQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWU7XG5cbiAgICBpZiAodmlkZW9FbGVtZW50KSB7XG4gICAgICB2aWRlb0VsZW1lbnQubXV0ZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9NdXRlZC52YWx1ZSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGRpc3Bvc2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcCgnY2xpZW50OmNoYW5uZWwtZGlzcG9zZScpLnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuY2hhbm5lbERpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc0Rpc3Bvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldFVyaSh0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbik6IFVSTCB7XG4gICAgY29uc3QgdXJsID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0b2tlbikudXJpO1xuXG4gICAgaWYgKHVybCkge1xuICAgICAgcmV0dXJuIHVybDtcbiAgICB9XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnRmFsbCBiYWNrIHRvIHRoZSBkZWZhdWx0IGRpc2NvdmVyIFVSSSBbJXNdJywgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSk7XG5cbiAgICByZXR1cm4gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTChTREsuZGlzY292ZXJ5VXJpLnZhbHVlKTtcbiAgfVxuXG4gIGFzeW5jIHN0YXJ0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLl9zdGF0ZUNvbnRleHQuaXNEaXNwb3NlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDaGFubmVsIHdhcyBhbHJlYWR5IGRpc3Bvc2VkJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyBhbHJlYWR5IHN0YXJ0aW5nLCBza2lwcGluZyBzdGFydCcpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSB0cnVlO1xuXG4gICAgcmV0dXJuIHRoaXMucHJvY2Vzc1N0YXJ0KCk7XG4gIH1cblxuICBwcml2YXRlIGlzVGVybWluYWxTdGF0ZSgpOiBib29sZWFuIHtcbiAgICBzd2l0Y2ggKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlKSB7XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5TdG9wcGVkOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuVW5hdXRob3JpemVkOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuR2VvUmVzdHJpY3RlZDpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkdlb0Jsb2NrZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5VbnN1cHBvcnRlZEZlYXR1cmU6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I6XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuSW5pdGlhbGl6aW5nOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuT2ZmbGluZTpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlN0YXJ0aW5nOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuUGF1c2VkOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuUGxheWluZzpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlJlY292ZXJpbmc6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5SZWNvbm5lY3Rpbmc6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5TdGFuZEJ5OlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuQ29ubmVjdGlvbkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuQ2xpZW50U3RhcnRFcnJvcjpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkVycm9yOlxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpc1JldHJ5YWJsZVN0YXRlKCk6IGJvb2xlYW4ge1xuICAgIHN3aXRjaCAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUpIHtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuUmVjb25uZWN0aW5nOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuU3RhbmRCeTpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLk9mZmxpbmU6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5SZWNvdmVyaW5nOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuQ29ubmVjdGlvbkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuQ2xpZW50U3RhcnRFcnJvcjpcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5VbmF1dGhvcml6ZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5HZW9SZXN0cmljdGVkOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuR2VvQmxvY2tlZDpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlN0b3BwZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5QYXVzZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5Jbml0aWFsaXppbmc6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5TdGFydGluZzpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlBsYXlpbmc6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5VbnN1cHBvcnRlZEZlYXR1cmU6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I6XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzU3Vic2NyaWJlckhlYWx0aHkoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKCF0aGlzLl9zdHJlYW1TdWJzY3JpYmVyKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fc3RyZWFtU3Vic2NyaWJlci5pc1N0cmVhbUhlYWx0aHkoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJvY2Vzc1N0YXJ0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGlzUmVjb3ZlcnkgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSAhPT0gQ2hhbm5lbFN0YXRlLkluaXRpYWxpemluZztcblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gaXNSZWNvdmVyeSA/IENoYW5uZWxTdGF0ZS5SZWNvdmVyaW5nIDogQ2hhbm5lbFN0YXRlLlN0YXJ0aW5nO1xuICAgIHRoaXMuY2xlYW5VcFJlc291cmNlcyhpc1JlY292ZXJ5ID8gJ2NsaWVudDpyZWNvdmVyJyA6ICdjbGllbnQ6c3RhcnQnKTtcblxuICAgIGNvbnN0IHRva2VuOiBFbmNvZGVkRWRnZVRva2VuID0gdGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlO1xuICAgIGNvbnN0IGxpc3Rlbk9uU3RyZWFtU2V0dXAgPSB0aGlzLl9zZXNzaW9uVGVsZW1ldHJ5Lmxpc3Rlbk9uU3RyZWFtU2V0dXAoKTtcblxuICAgIGlmICghRWRnZUF1dGhQYXJzZXIuaXNFbmNvZGVkRWRnZVRva2VuVmFsaWQodG9rZW4pKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBwYXJzZSB0b2tlbiBbJXNdJywgdG9rZW4pO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuVW5hdXRob3JpemVkO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2spIHtcbiAgICAgIGNvbnN0IHt2YWxpZCwgdmFsaWRhdGlvblJlc3VsdH0gPSBTdHJlYW1UcmFja1RyYW5zZm9ybS52YWxpZGF0ZU1lZGlhU3RyZWFtVHJhY2tUcmFuc2Zvcm08VmlkZW9GcmFtZT4oJ3ZpZGVvJywgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrKTtcblxuICAgICAgaWYgKCF2YWxpZCkge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IodmFsaWRhdGlvblJlc3VsdCk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5hdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrKSB7XG4gICAgICBjb25zdCB7dmFsaWQsIHZhbGlkYXRpb25SZXN1bHR9ID0gU3RyZWFtVHJhY2tUcmFuc2Zvcm0udmFsaWRhdGVNZWRpYVN0cmVhbVRyYWNrVHJhbnNmb3JtPEF1ZGlvRGF0YT4oJ2F1ZGlvJywgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5hdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrKTtcblxuICAgICAgaWYgKCF2YWxpZCkge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IodmFsaWRhdGlvblJlc3VsdCk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5lbmNvZGVkVmlkZW9TdHJlYW1TaW5rKSB7XG4gICAgICBjb25zdCB7dmFsaWQsIHZhbGlkYXRpb25SZXN1bHR9ID0gRW5jb2RlZFN0cmVhbVNpbmsudmFsaWRhdGVFbmNvZGVkU3RyZWFtU2luaygndmlkZW8nLCB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmVuY29kZWRWaWRlb1N0cmVhbVNpbmspO1xuXG4gICAgICBpZiAoIXZhbGlkKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcih2YWxpZGF0aW9uUmVzdWx0KTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmVuY29kZWRBdWRpb1N0cmVhbVNpbmspIHtcbiAgICAgIGNvbnN0IHt2YWxpZCwgdmFsaWRhdGlvblJlc3VsdH0gPSBFbmNvZGVkU3RyZWFtU2luay52YWxpZGF0ZUVuY29kZWRTdHJlYW1TaW5rKCdhdWRpbycsIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuZW5jb2RlZEF1ZGlvU3RyZWFtU2luayk7XG5cbiAgICAgIGlmICghdmFsaWQpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKHZhbGlkYXRpb25SZXN1bHQpO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzSW5zZXJ0YWJsZVN0cmVhbXMudmFsdWUgJiYgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMudmFsdWUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignQm90aCBpbnNlcnRhYmxlLXN0cmVhbXMgYW5kIGVuY29kZWQtaW5zZXJ0YWJsZS1zdHJlYW1zIGFyZSBlbmFibGVkLCBvbmx5IHVzZSBvbmUgb3IgdGhlIG90aGVyJyk7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaGFzVHJhbnNmb3JtU3RyZWFtQ2FsbGJhY2sgPSB0eXBlb2YgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrID09PSAnZnVuY3Rpb24nIHx8IHR5cGVvZiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2sgPT09ICdmdW5jdGlvbic7XG4gICAgY29uc3QgaGFzRW5jb2RlZFN0cmVhbVNpbmsgPSB0eXBlb2YgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5lbmNvZGVkVmlkZW9TdHJlYW1TaW5rID09PSAnZnVuY3Rpb24nIHx8IHR5cGVvZiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmVuY29kZWRBdWRpb1N0cmVhbVNpbmsgPT09ICdmdW5jdGlvbic7XG5cbiAgICBpZiAoaGFzVHJhbnNmb3JtU3RyZWFtQ2FsbGJhY2sgJiYgaGFzRW5jb2RlZFN0cmVhbVNpbmspIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignQm90aCBNZWRpYSBTdHJlYW0gVHJhY2sgdHJhbnNmb3JtIGNhbGxiYWNrIGFuZCBlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgc2luayBmdW5jdGlvbiBmb3VuZCwgb25seSB1c2Ugb25lIHR5cGUgb3IgdGhlIG90aGVyJyk7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzSW5zZXJ0YWJsZVN0cmVhbXMudmFsdWUpIHtcbiAgICAgIGlmICghRmVhdHVyZUVuYWJsZW1lbnQuaXNJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCkge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0Jyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBNZWRpYSBTdHJlYW0gVHJhY2sgQVBJJyk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlVuc3VwcG9ydGVkRmVhdHVyZTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCFoYXNUcmFuc2Zvcm1TdHJlYW1DYWxsYmFjaykge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0NyZWF0ZUNoYW5uZWxPcHRpb25zIHRyYW5zZm9ybSBjYWxsYmFjayBmdW5jdGlvbiBpcyBtaXNzaW5nOyBob3dldmVyLCBpbnNlcnRhYmxlLXN0cmVhbXMgaXMgZW5hYmxlZCcpO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChoYXNUcmFuc2Zvcm1TdHJlYW1DYWxsYmFjaykge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoYENyZWF0ZUNoYW5uZWxPcHRpb25zIHRyYW5zZm9ybSBjYWxsYmFjayBmdW5jdGlvbiBmb3VuZDsgaG93ZXZlciwgaW5zZXJ0YWJsZS1zdHJlYW1zIGlzIG5vdCBlbmFibGVkYCk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMudmFsdWUpIHtcbiAgICAgIGlmICghKEZlYXR1cmVFbmFibGVtZW50LmlzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkIHx8IEZlYXR1cmVFbmFibGVtZW50LmlzUlRDUnRwU2NyaXB0VHJhbnNmb3JtU3VwcG9ydGVkKSkge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0Jyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgQVBJJyk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlVuc3VwcG9ydGVkRmVhdHVyZTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCFoYXNFbmNvZGVkU3RyZWFtU2luaykge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0NyZWF0ZUNoYW5uZWxPcHRpb25zIHRyYW5zZm9ybSBzaW5rIGZ1bmN0aW9uIGlzIG1pc3Npbmc7IGhvd2V2ZXIsIGVuY29kZWQtaW5zZXJ0YWJsZS1zdHJlYW1zIGlzIGVuYWJsZWQnKTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaGFzRW5jb2RlZFN0cmVhbVNpbmspIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKGBDcmVhdGVDaGFubmVsT3B0aW9ucyB0cmFuc2Zvcm0gc2luayBmdW5jdGlvbiBmb3VuZDsgaG93ZXZlciwgZW5jb2RlZC1pbnNlcnRhYmxlLXN0cmVhbXMgaXMgbm90IGVuYWJsZWRgKTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSB0cnVlO1xuXG4gICAgY29uc3QgdXJpID0gdGhpcy5nZXRVcmkodG9rZW4pO1xuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZGlzcG9zYWJsZXMuYWRkKFxuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUuc3Vic2NyaWJlKHN0YXRlID0+IHtcbiAgICAgICAgaWYgKHN0YXRlID09PSBDaGFubmVsU3RhdGUuRXJyb3IgfHwgc3RhdGUgPT09IENoYW5uZWxTdGF0ZS5SZWNvdmVyaW5nKSB7XG4gICAgICAgICAgRGlzY292ZXJ5LmNsZWFyQ2FjaGVkQ2xvc2VzdEVuZHBvaW50KHVyaSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGNvbnN0IGhhbmRsZVN0cmVhbUZhaWx1cmVDYWxsYmFjazogKCkgPT4gUHJvbWlzZTx2b2lkPiA9ICgpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlKTogdm9pZCA9PiB7XG4gICAgICBpZiAoIXRoaXMuaXNSZXRyeWFibGVTdGF0ZSgpKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygnWyVzXSBJZ25vcmluZyBzdHJlYW0gZmFpbHVyZSBjYWxsYmFjayBkdWUgdG8gQ2hhbm5lbFN0YXRlIGJlaW5nIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgQ2hhbm5lbFN0YXRlW3RoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlXSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbm5lY3Rpb25FcnJvcjtcblxuICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZSkge1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUucGF1c2UoKTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnNyY09iamVjdCA9IG51bGw7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSB0cnVlO1xuXG4gICAgICBpZiAoIVNESy5hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciEuaXNGb3JlZ3JvdW5kLnZhbHVlKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygnWyVzXSBEZWZlcnJpbmcgc3RyZWFtIGZhaWx1cmUgaGFuZGxpbmcgdG8gZm9yZWdyb3VuZCByZWNvdmVyeScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkKTtcblxuICAgICAgICBjb25zdCB0aW1lb3V0SWQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5oYW5kbGVTdHJlYW1GYWlsdXJlKClcbiAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgaGFuZGxpbmcgc3RyZWFtIGZhaWx1cmUnLCBlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LCBiYWNrZ3JvdW5kUmVjb3ZlcnlGYWlsc2FmZUludGVydmFsSW5NaWxsaXNlY29uZHMpO1xuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmRpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgICAgIH0pKTtcblxuICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzb2x2ZSh0aGlzLmhhbmRsZVN0cmVhbUZhaWx1cmUoKSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9zdHJlYW1TdWJzY3JpYmVyID0gU3RyZWFtU3Vic2NyaWJlckZhY3RvcnkuY3JlYXRlKHRva2VuLCB0aGlzLl9jaGFubmVsQ29udGV4dCwgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LCB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LCB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCwgaGFuZGxlU3RyZWFtRmFpbHVyZUNhbGxiYWNrKTtcblxuICAgIGlmICghdGhpcy5fc3RyZWFtU3Vic2NyaWJlcikge1xuICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmRpc3Bvc2FibGVzLmFkZCh0aGlzLl9zdHJlYW1TdWJzY3JpYmVyKTtcblxuICAgIHJldHVybiB0aGlzLl9zdHJlYW1TdWJzY3JpYmVyLnN0YXJ0KFxuICAgICAgdXJpLFxuICAgICAgdG9rZW4sXG4gICAgICBsaXN0ZW5PblN0cmVhbVNldHVwLFxuICAgICAgdGhpcy5wbGF5TWVkaWFTdHJlYW1JblZpZGVvRWxlbWVudC5iaW5kKHRoaXMpKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICBsaXN0ZW5PblN0cmVhbVNldHVwLmZhaWwoKTtcblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUrKztcblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5vbmxpbmUudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLmNsZWFuVXBSZXNvdXJjZXMoJ2NsaWVudDpjbGVhbnVwLWFmdGVyLWZhaWxlZC1zZXR1cCcpO1xuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNsaWVudFN0YXJ0RXJyb3I7XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc3RhcnQgY2hhbm5lbCcsIGUpO1xuICAgICAgfSlcbiAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPT09IENoYW5uZWxTdGF0ZS5QbGF5aW5nIHx8IHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID09PSBDaGFubmVsU3RhdGUuUGF1c2VkIHx8IHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID09PSBDaGFubmVsU3RhdGUuU3RvcHBlZCB8fCAhU0RLLmF1dG9tYXRpY1JldHJ5T25GYWlsdXJlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGltZW91dElkID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuaGFuZGxlU3RyZWFtRmFpbHVyZSgpXG4gICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIGhhbmRsaW5nIHN0cmVhbSBmYWlsdXJlJywgZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgdGhpcy5nZXRSZXRyeUludGVydmFsKCkpO1xuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmRpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgICAgIH0pKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZXN0YXJ0QWZ0ZXJTdG9wKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLl9zdGF0ZUNvbnRleHQuaXNEaXNwb3NlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDaGFubmVsIHdhcyBhbHJlYWR5IGRpc3Bvc2VkJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZSkge1xuICAgICAgcmV0dXJuIHRoaXMucGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlKSB7XG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zdGFydCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwbGF5KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IG1lZGlhU3RyZWFtID0gdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlO1xuXG4gICAgaWYgKCFtZWRpYVN0cmVhbSkge1xuICAgICAgcmV0dXJuIHRoaXMuc3RhcnQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5wbGF5TWVkaWFTdHJlYW1JblZpZGVvRWxlbWVudChtZWRpYVN0cmVhbSk7XG4gIH1cblxuICBwcml2YXRlIGdldFJldHJ5SW50ZXJ2YWwoKTogbnVtYmVyIHtcbiAgICBzd2l0Y2ggKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlKSB7XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5Jbml0aWFsaXppbmc6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5TdGFuZEJ5OlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuT2ZmbGluZTpcbiAgICAgICAgcmV0dXJuIHN0YW5kYnlQb2xsaW5nSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcztcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuUmVjb3ZlcmluZzpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlVuYXV0aG9yaXplZDpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkdlb1Jlc3RyaWN0ZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5HZW9CbG9ja2VkOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuU3RvcHBlZDpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlN0YXJ0aW5nOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuUGxheWluZzpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlBhdXNlZDpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlJlY29ubmVjdGluZzpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlVuc3VwcG9ydGVkRmVhdHVyZTpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlRyYW5zaWVudENvbmZpZ3VyYXRpb25FcnJvcjpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkNvbm5lY3Rpb25FcnJvcjpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkNsaWVudFN0YXJ0RXJyb3I6XG4gICAgICAgIC8vIEZpcnN0IGFuZCBzZWNvbmQgYXR0ZW1wdCBmYXN0LCBhZnRlciB0aGF0IGV4cG9uZW50aWFsIHdpdGggYmFja29mZiBpbnRlcnZhbFxuICAgICAgICByZXR1cm4gdGhpcy5fZXhwb25lbnRpYWxCYWNrb2ZmLmdldEV4cG9uZW50aWFsQmFja29mZkludGVydmFsQnlGYWlsdXJlQ291bnQodGhpcy5fY2hhbm5lbENvbnRleHQuZmFpbHVyZUNvdW50LnZhbHVlKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGhhbmRsZVN0cmVhbUZhaWx1cmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgc3dpdGNoICh0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSkge1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuRXJyb3I6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5SZWNvbm5lY3Rpbmc6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5TdGFuZEJ5OlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuT2ZmbGluZTpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlJlY292ZXJpbmc6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5UcmFuc2llbnRDb25maWd1cmF0aW9uRXJyb3I6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5Db25uZWN0aW9uRXJyb3I6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5DbGllbnRTdGFydEVycm9yOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUmV0cnkgc3RhcnQgd2l0aCBpbml0aWFsIHN0YXRlIFslc10gWyVzXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlLCBDaGFubmVsU3RhdGVbdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWVdKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlVuYXV0aG9yaXplZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgdW5hdXRob3JpemVkLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4gUGxlYXNlIHByb3ZpZGUgYSBuZXcgdG9rZW4gYW5kIGludm9rZSBzdGFydCgpJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuR2VvUmVzdHJpY3RlZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgZ2VvIHJlc3RyaWN0ZWQsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LiBQbGVhc2UgcHJvdmlkZSBhIG5ldyB0b2tlbiBhbmQgaW52b2tlIHN0YXJ0KCknKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5HZW9CbG9ja2VkOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyBnZW8gYmxvY2tlZCwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuIFBsZWFzZSBwcm92aWRlIGEgbmV3IHRva2VuIGFuZCBpbnZva2Ugc3RhcnQoKScpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlN0b3BwZWQ6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIHN0b3BwZWQsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LicpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkluaXRpYWxpemluZzpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgYWxyZWFkeSBpbml0aWFsaXppbmcsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0Jyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuUGxheWluZzpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgcGxheWluZywgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQnKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5QYXVzZWQ6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIHBhdXNlZCwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuIFBsZWFzZSBpbnZva2UgcGxheSgpJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuU3RhcnRpbmc6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIGFscmVhZHkgc3RhcnRpbmcsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0Jyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuVW5zdXBwb3J0ZWRGZWF0dXJlOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyBzdG9wcGVkIGR1ZSB0byB1bnN1cHBvcnRlZCBmZWF0dXJlLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4nKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIHN0b3BwZWQgZHVlIHRvIGNvbmZpZ3VyYXRpb24gZXJyb3IsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LicpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdGFydCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhblVwUmVzb3VyY2VzKHJlYXNvbjogc3RyaW5nID0gZGVmYXVsdFN0cmVhbVRlcm1pbmF0aW9uUmVhc29uKTogdm9pZCB7XG4gICAgdGhpcy5fc3RyZWFtU3Vic2NyaWJlciA9IG51bGw7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5kaXNwb3NlUGVlckNvbm5lY3Rpb24oKTtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQuZGlzcG9zZU1lZGlhU3RyZWFtKCk7XG5cbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvUGF1c2VkLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0b3BwZWQudmFsdWUgPSB0cnVlO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YW5kYnkudmFsdWUgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUpIHtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZS5kZXN0cm95U3RyZWFtKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSwgcmVhc29uKVxuICAgICAgICAudGhlbigoe3N0YXR1c30pID0+IHtcbiAgICAgICAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIud2FybignWyVzXSBGYWlsZWQgdG8gZGVzdHJveSBzdHJlYW0gd2l0aCByZWFzb24gWyVzXScsIHRoaXMuc3RyZWFtSWQsIHN0YXR1cyk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBEZXN0cm95ZWQgc3RyZWFtIHdpdGggcmVhc29uIFslc10nLCB0aGlzLnN0cmVhbUlkLCBzdGF0dXMpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdbJXNdIEZhaWxlZCB0byBkZXN0cm95IHN0cmVhbScsIHRoaXMuc3RyZWFtSWQsIGUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy52aWRlb0VsZW1lbnQgJiYgdGhpcy52aWRlb0VsZW1lbnQuZGF0YXNldCkge1xuICAgICAgdGhpcy52aWRlb0VsZW1lbnQuZGF0YXNldC5zZXNzaW9uSWQgPSAnJztcbiAgICAgIHRoaXMudmlkZW9FbGVtZW50LmRhdGFzZXQuc3RyZWFtSWQgPSAnJztcbiAgICB9XG5cbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUgPSBudWxsO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlID0gbnVsbDtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDA7XG4gIH1cblxuICBwcml2YXRlIGNvbmZpZ3VyZUZyYW1lVGltaW5nSW5mb3JtYXRpb24oY2FwYWJpbGl0aWVzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIGNvbnN0IGZyYW1lVGltaW5nSW5mb3JtYXRpb25DYXBhYmlsaXR5ID0gY2FwYWJpbGl0aWVzLmZpbmQoY2FwYWJpbGl0eSA9PiBjYXBhYmlsaXR5LnN0YXJ0c1dpdGgoJ2ZyYW1lLXRpbWluZy1pbmZvcm1hdGlvbj0nKSk7XG5cbiAgICB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5zaG91bGRFeHRyYWN0VGltZWNvZGUudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5zaG91bGRFeHRyYWN0VGltZXN0YW1wcy52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LmlzRW5hYmxlZC52YWx1ZSA9IGZhbHNlO1xuXG4gICAgaWYgKCFmcmFtZVRpbWluZ0luZm9ybWF0aW9uQ2FwYWJpbGl0eSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Rpc2FibGluZyBmcmFtZSB0aW1pbmcgaW5mb3JtYXRpb24gYXMgbm8gY2FwYWJpbGl0eSB3YXMgZm91bmQnKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghRmVhdHVyZUVuYWJsZW1lbnQuaXNDaGFubmVsRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1cHBvcnRlZCkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Rpc2FibGluZyBmcmFtZSB0aW1pbmcgaW5mb3JtYXRpb24gYXMgdGhlIGVudmlyb25tZW50IGRvZXMgbm90IHN1cHBvcnQgaXQgWyVzXScsIGZyYW1lVGltaW5nSW5mb3JtYXRpb25DYXBhYmlsaXR5KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZyYW1lVGltaW5nSW5mb3JtYXRpb25DYXBhYmlsaXR5LnNwbGl0KCc9JylbMV1cbiAgICAgIC5zcGxpdCgnLCcpXG4gICAgICAubWFwKG9wdGlvbiA9PiBvcHRpb24udHJpbSgpKVxuICAgICAgLmZvckVhY2gob3B0aW9uID0+IHtcbiAgICAgICAgc3dpdGNoIChvcHRpb24pIHtcbiAgICAgICAgICBjYXNlICd0aW1lY29kZSc6XG4gICAgICAgICAgICB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5zaG91bGRFeHRyYWN0VGltZWNvZGUudmFsdWUgPSB0cnVlO1xuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICd0aW1lc3RhbXBzJzpcbiAgICAgICAgICAgIHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnNob3VsZEV4dHJhY3RUaW1lc3RhbXBzLnZhbHVlID0gdHJ1ZTtcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdJZ25vcmluZyB1bmtub3duIGZyYW1lIHRpbWluZyBpbmZvcm1hdGlvbiBvcHRpb24gWyVzXScsIG9wdGlvbik7XG5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdGcmFtZSB0aW1pbmcgaW5mb3JtYXRpb24gY29uZmlndXJhdGlvbiBbKHRpbWVjb2RlIFslc10sIHRpbWVzdGFtcHMgWyVzXSldJywgdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuc2hvdWxkRXh0cmFjdFRpbWVjb2RlLnZhbHVlLCB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5zaG91bGRFeHRyYWN0VGltZXN0YW1wcy52YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHBsYXlNZWRpYVN0cmVhbUluVmlkZW9FbGVtZW50KG1lZGlhU3RyZWFtOiBNZWRpYVN0cmVhbSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHZpZGVvRWxlbWVudCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZTtcblxuICAgIGlmICghdmlkZW9FbGVtZW50KSB7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlN0b3BwZWQ7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLnZhbHVlKSB7XG4gICAgICB2aWRlb0VsZW1lbnQuc3JjT2JqZWN0ID0gbWVkaWFTdHJlYW07XG4gICAgfVxuXG4gICAgY29uc3QgcGxheVByb21pc2UgPSB2aWRlb0VsZW1lbnQucGxheSgpO1xuXG4gICAgaWYgKHBsYXlQcm9taXNlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9NdXRlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IHRydWU7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5QbGF5aW5nO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIHBsYXlQcm9taXNlLnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvUGF1c2VkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlBsYXlpbmc7XG4gICAgfSkuY2F0Y2goZSA9PiB7XG4gICAgICBjb25zdCBoYXNBdWRpb1RyYWNrID0gISFtZWRpYVN0cmVhbS5nZXRUcmFja3MoKS5maWx0ZXIodHJhY2sgPT4ge1xuICAgICAgICByZXR1cm4gdHJhY2sua2luZCA9PT0gJ2F1ZGlvJztcbiAgICAgIH0pLmxlbmd0aDtcbiAgICAgIGNvbnN0IGF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlT2ZmID0gIVNESy5hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZTtcblxuICAgICAgaWYgKGF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlT2ZmIHx8IHZpZGVvRWxlbWVudC5tdXRlZCB8fCAhaGFzQXVkaW9UcmFjaykge1xuICAgICAgICB2aWRlb0VsZW1lbnQuc3JjT2JqZWN0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSB0cnVlO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuUGF1c2VkO1xuXG4gICAgICAgIGlmIChhdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZU9mZikge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFBhdXNlZCB2aWRlbyBhZnRlciBwbGF5IGZhaWxlZC4gTWFudWFsIHVzZXIgYWN0aW9uIHJlcXVpcmVkLicsIHRoaXMuc3RyZWFtSWQsIGUpO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGhhc0F1ZGlvVHJhY2spIHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gcGxheSB2aWRlby4gTWFudWFsIHVzZXIgYWN0aW9uIHJlcXVpcmVkLicsIHRoaXMuc3RyZWFtSWQsIGUpO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRmFpbGVkIHRvIHBsYXkgbXV0ZWQgdmlkZW8uIE1hbnVhbCB1c2VyIGFjdGlvbiByZXF1aXJlZC4nLCB0aGlzLnN0cmVhbUlkLCBlKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZpZGVvRWxlbWVudC5tdXRlZCA9IHRydWU7XG5cbiAgICAgIHJldHVybiB2aWRlb0VsZW1lbnQucGxheSgpXG4gICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBQbGF5ZWQgdmlkZW8gYWZ0ZXIgYXV0byBtdXRpbmcuIE1hbnVhbCB1c2VyIGFjdGlvbiByZXF1aXJlZCB0byB1bm11dGUuJywgdGhpcy5zdHJlYW1JZCk7XG5cbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuUGxheWluZztcbiAgICAgICAgfSkuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgdmlkZW9FbGVtZW50Lm11dGVkID0gZmFsc2U7XG5cbiAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gcGxheSB2aWRlby4gTWFudWFsIHVzZXIgYWN0aW9uIHJlcXVpcmVkLicsIHRoaXMuc3RyZWFtSWQsIGUpO1xuXG4gICAgICAgICAgdmlkZW9FbGVtZW50LnNyY09iamVjdCA9IG51bGw7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5QYXVzZWQ7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5lbnVtIENoYW5uZWxTdGF0ZSB7XG4gIEluaXRpYWxpemluZyA9IDAsXG4gIE9mZmxpbmUgPSAxLFxuICBTdGFydGluZyA9IDIsXG4gIFBhdXNlZCA9IDMsXG4gIFBsYXlpbmcgPSA0LFxuICBSZWNvdmVyaW5nID0gNSxcbiAgUmVjb25uZWN0aW5nID0gNixcbiAgU3RhbmRCeSA9IDcsXG4gIFN0b3BwZWQgPSA4LFxuICBVbmF1dGhvcml6ZWQgPSA5LFxuICBHZW9SZXN0cmljdGVkID0gMTAsXG4gIEdlb0Jsb2NrZWQgPSAxMSxcbiAgVW5zdXBwb3J0ZWRGZWF0dXJlID0gMTIsXG4gIENvbmZpZ3VyYXRpb25FcnJvciA9IDEzLFxuICBUcmFuc2llbnRDb25maWd1cmF0aW9uRXJyb3IgPSAxNCxcbiAgQ29ubmVjdGlvbkVycm9yID0gMTUsXG4gIENsaWVudFN0YXJ0RXJyb3IgPSAxNixcbiAgRXJyb3IgPSAxN1xufVxuXG5leHBvcnQgZGVmYXVsdCBDaGFubmVsU3RhdGU7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge01pbGxpc2Vjb25kfSBmcm9tICcuLi8uLi91bml0cy9Vbml0cyc7XG5pbXBvcnQge0VuY29kZWRFZGdlVG9rZW59IGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VuY29kZWRFZGdlVG9rZW4nO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uLy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcbmltcG9ydCB7SUVuY29kZWRTdHJlYW1TaW5rfSBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi9FbmNvZGVkU3RyZWFtU2luayc7XG5pbXBvcnQge0lTdHJlYW1UcmFja1RyYW5zZm9ybX0gZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vU3RyZWFtVHJhY2tUcmFuc2Zvcm0nO1xuaW1wb3J0IENoYW5uZWwsIHtDaGFubmVsT3B0aW9uc30gZnJvbSAnLi9DaGFubmVsJztcbmltcG9ydCB7SU9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2t9IGZyb20gJy4vSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2snO1xuaW1wb3J0IHtJT25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2t9IGZyb20gJy4vSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrJztcblxuZXhwb3J0IHR5cGUgQ3JlYXRlQ2hhbm5lbE9wdGlvbnMgPSB7XG4gIHZpZGVvRWxlbWVudDogSFRNTFZpZGVvRWxlbWVudDtcbiAgdG9rZW46IEVuY29kZWRFZGdlVG9rZW47XG4gIHRhcmdldExhZz86IE1pbGxpc2Vjb25kO1xuICB2aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrPzogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPFZpZGVvRnJhbWU+O1xuICBhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrPzogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPEF1ZGlvRGF0YT47XG4gIGVuY29kZWRWaWRlb1N0cmVhbVNpbms/OiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZFZpZGVvRnJhbWU+O1xuICBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rPzogSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRBdWRpb0ZyYW1lPjtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENoYW5uZWxzIHtcbiAgc3RhdGljIGNyZWF0ZUNoYW5uZWwob3B0aW9uczogQ3JlYXRlQ2hhbm5lbE9wdGlvbnMpOiBDaGFubmVsIHtcbiAgICBpZiAoIVNESy5pbml0aWFsaXplZC52YWx1ZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTREsgaXMgbm90IGxvYWRlZC4nKTtcbiAgICB9XG5cbiAgICBjb25zdCBjaGFubmVsT3B0aW9uczogQ2hhbm5lbE9wdGlvbnMgPSB7XG4gICAgICB0YXJnZXRMYWc6IG9wdGlvbnMudGFyZ2V0TGFnLFxuICAgICAgdmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogb3B0aW9ucy52aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrLFxuICAgICAgYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogb3B0aW9ucy5hdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrLFxuICAgICAgZW5jb2RlZFZpZGVvU3RyZWFtU2luazogb3B0aW9ucy5lbmNvZGVkVmlkZW9TdHJlYW1TaW5rLFxuICAgICAgZW5jb2RlZEF1ZGlvU3RyZWFtU2luazogb3B0aW9ucy5lbmNvZGVkQXVkaW9TdHJlYW1TaW5rXG4gICAgfTtcbiAgICBjb25zdCBvcHRpb25zV2l0aFJlYWxUaW1lU3Vic2NyaWJlQ2FsbGJhY2tzOiBDaGFubmVsT3B0aW9ucyAmIHtcbiAgICAgIG9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s/OiBJT25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaztcbiAgICAgIG9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrPzogSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrO1xuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKG9wdGlvbnNXaXRoUmVhbFRpbWVTdWJzY3JpYmVDYWxsYmFja3Mub25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaykge1xuICAgICAgY2hhbm5lbE9wdGlvbnMub25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayA9IG9wdGlvbnNXaXRoUmVhbFRpbWVTdWJzY3JpYmVDYWxsYmFja3Mub25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaztcbiAgICB9XG5cbiAgICBpZiAob3B0aW9uc1dpdGhSZWFsVGltZVN1YnNjcmliZUNhbGxiYWNrcy5vblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaykge1xuICAgICAgY2hhbm5lbE9wdGlvbnMub25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2sgPSBvcHRpb25zV2l0aFJlYWxUaW1lU3Vic2NyaWJlQ2FsbGJhY2tzLm9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgQ2hhbm5lbChvcHRpb25zLnZpZGVvRWxlbWVudCwgb3B0aW9ucy50b2tlbiwgY2hhbm5lbE9wdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXQgaXNGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBGZWF0dXJlRW5hYmxlbWVudC5pc0NoYW5uZWxGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3VwcG9ydGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NoYW5uZWxzIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgQ2hhbm5lbFN0YXRlIGZyb20gJy4uL2NoYW5uZWxzL0NoYW5uZWxTdGF0ZSc7XG5pbXBvcnQgRGltZW5zaW9uIGZyb20gJy4uLy4uL3ZpZGVvL0RpbWVuc2lvbic7XG5pbXBvcnQgRW5kUG9pbnQsIHtJU3RyZWFtLCBTdWJzY3JpYmVTdGF0dXN9IGZyb20gJy4uL2Rpc2NvdmVyeS9FbmRQb2ludCc7XG5pbXBvcnQge0lPblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrfSBmcm9tICcuLi9jaGFubmVscy9JT25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayc7XG5pbXBvcnQge0lPblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFja30gZnJvbSAnLi4vY2hhbm5lbHMvSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrJztcbmltcG9ydCBWaWRlb1RlbGVtZXRyeSBmcm9tICcuLi8uLi92aWRlby9WaWRlb1RlbGVtZXRyeSc7XG5pbXBvcnQge0lSdGNNb25pdG9yU3RhdGlzdGljLCBJUnRjU3RhdGlzdGljfSBmcm9tICcuLi8uLi9ydGMvUnRjQ29ubmVjdGlvbk1vbml0b3InO1xuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uLy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IHtCaXRzUGVyU2Vjb25kLCBNaWxsaXNlY29uZH0gZnJvbSAnLi4vLi4vdW5pdHMvVW5pdHMnO1xuXG5jb25zdCBkZWZhdWx0VGFyZ2V0TGFnID0gMDtcblxuZXhwb3J0IHR5cGUgQ2hhbm5lbENvbnRleHRPcHRpb25zID0ge1xuICB0YXJnZXRMYWc/OiBudW1iZXI7XG4gIG9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s/OiBJT25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaztcbiAgb25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s/OiBJT25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDaGFubmVsQ29udGV4dCB7XG4gIGNoYW5uZWxJbml0aWFsaXphdGlvbjogRGF0ZTtcbiAgZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0O1xuICBjaGFubmVsRGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0O1xuICByZW5kZXJlckRpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdDtcbiAgdmlkZW9FbGVtZW50OiBTdWJqZWN0PEhUTUxWaWRlb0VsZW1lbnQgfCBudWxsPjtcbiAgc3RhdGU6IFN1YmplY3Q8Q2hhbm5lbFN0YXRlPjtcbiAgZXhpc3RzOiBTdWJqZWN0PGJvb2xlYW4gfCBudWxsPjtcbiAgYXV0b011dGVkOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBhdXRvUGF1c2VkOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBhdXRob3JpemVkOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBvbmxpbmU6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIGxvYWRpbmc6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHBsYXlpbmc6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHN0YW5kYnk6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHN0b3BwZWQ6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHRhcmdldExhZzogU3ViamVjdDxNaWxsaXNlY29uZD47XG4gIGxhZzogU3ViamVjdDxNaWxsaXNlY29uZCB8IHVuZGVmaW5lZD47XG4gIGJpdHJhdGVMaW1pdDogU3ViamVjdDxCaXRzUGVyU2Vjb25kPjtcbiAgcmVzb2x1dGlvbjogU3ViamVjdDxEaW1lbnNpb24+O1xuICBmYWlsdXJlQ291bnQ6IFN1YmplY3Q8bnVtYmVyPjtcbiAgZW5kUG9pbnQ6IFN1YmplY3Q8RW5kUG9pbnQgfCBudWxsPjtcbiAgb25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjazogSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2sgfCBudWxsO1xuICBvblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjazogSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrIHwgbnVsbDtcbiAgc3RyZWFtOiBTdWJqZWN0PElTdHJlYW0gfCBudWxsPjtcbiAgcnRjU3RhdGlzdGljczogU3ViamVjdDxJUnRjTW9uaXRvclN0YXRpc3RpYyB8IG51bGw+O1xuICB2aWRlb1RlbGVtZXRyeTogVmlkZW9UZWxlbWV0cnkgfCBudWxsO1xuICBydGNBdWRpb1N0YXRpc3RpYzogSVJ0Y1N0YXRpc3RpYyB8IG51bGw7XG4gIHJ0Y1ZpZGVvU3RhdGlzdGljOiBJUnRjU3RhdGlzdGljIHwgbnVsbDtcbiAgY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0OiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9ucz86IENoYW5uZWxDb250ZXh0T3B0aW9ucykge1xuICAgIHRoaXMuZGlzcG9zYWJsZXMgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgICB0aGlzLmNoYW5uZWxEaXNwb3NhYmxlcyA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICAgIHRoaXMucmVuZGVyZXJEaXNwb3NhYmxlcyA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICAgIHRoaXMuY2hhbm5lbEluaXRpYWxpemF0aW9uID0gbmV3IERhdGUoKTtcbiAgICB0aGlzLnZpZGVvRWxlbWVudCA9IG5ldyBTdWJqZWN0PEhUTUxWaWRlb0VsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgICB0aGlzLnN0YXRlID0gbmV3IFN1YmplY3Q8Q2hhbm5lbFN0YXRlPihDaGFubmVsU3RhdGUuSW5pdGlhbGl6aW5nKTtcbiAgICB0aGlzLmV4aXN0cyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4gfCBudWxsPihudWxsKTtcbiAgICB0aGlzLmF1dG9NdXRlZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLmF1dG9QYXVzZWQgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5hdXRob3JpemVkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gICAgdGhpcy5vbmxpbmUgPSBuZXcgU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgICB0aGlzLmxvYWRpbmcgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5wbGF5aW5nID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMuc3RhbmRieSA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLnN0b3BwZWQgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy50YXJnZXRMYWcgPSBuZXcgU3ViamVjdDxNaWxsaXNlY29uZD4ob3B0aW9ucz8udGFyZ2V0TGFnID8/IGRlZmF1bHRUYXJnZXRMYWcpO1xuICAgIHRoaXMubGFnID0gbmV3IFN1YmplY3Q8TWlsbGlzZWNvbmQgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5iaXRyYXRlTGltaXQgPSBuZXcgU3ViamVjdDxCaXRzUGVyU2Vjb25kPigwKTtcbiAgICB0aGlzLnJlc29sdXRpb24gPSBuZXcgU3ViamVjdDxEaW1lbnNpb24+KERpbWVuc2lvbi5lbXB0eSk7XG4gICAgdGhpcy5mYWlsdXJlQ291bnQgPSBuZXcgU3ViamVjdDxudW1iZXI+KDApO1xuICAgIHRoaXMuZW5kUG9pbnQgPSBuZXcgU3ViamVjdDxFbmRQb2ludCB8IG51bGw+KG51bGwpO1xuICAgIHRoaXMub25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayA9IG9wdGlvbnM/Lm9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2sgPz8gbnVsbDtcbiAgICB0aGlzLm9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrID0gb3B0aW9ucz8ub25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2sgPz8gbnVsbDtcbiAgICB0aGlzLnN0cmVhbSA9IG5ldyBTdWJqZWN0PElTdHJlYW0gfCBudWxsPihudWxsKTtcbiAgICB0aGlzLnJ0Y1N0YXRpc3RpY3MgPSBuZXcgU3ViamVjdDxJUnRjTW9uaXRvclN0YXRpc3RpYyB8IG51bGw+KG51bGwpO1xuICAgIHRoaXMudmlkZW9UZWxlbWV0cnkgPSBudWxsO1xuICAgIHRoaXMucnRjQXVkaW9TdGF0aXN0aWMgPSBudWxsO1xuICAgIHRoaXMucnRjVmlkZW9TdGF0aXN0aWMgPSBudWxsO1xuICAgIHRoaXMuY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0ID0gMDtcbiAgfVxuXG4gIGdldCBzdHJlYW1JZCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHN0cmVhbSA9IHRoaXMuc3RyZWFtLnZhbHVlO1xuXG4gICAgaWYgKCFzdHJlYW0pIHtcbiAgICAgIHJldHVybiAnLSc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cmVhbS5zdHJlYW1JZDtcbiAgfVxuXG4gIGFwcGx5U3RhdHVzKHN0YXR1czogU3Vic2NyaWJlU3RhdHVzKTogdm9pZCB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ29rJzpcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd1bmF1dGhvcml6ZWQnOlxuICAgICAgY2FzZSAnZ2VvLXJlc3RyaWN0ZWQnOlxuICAgICAgY2FzZSAnZ2VvLWJsb2NrZWQnOlxuICAgICAgICB0aGlzLmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5mYWlsdXJlQ291bnQudmFsdWUgPSAwO1xuICAgICAgICB0aGlzLnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdGFuZGJ5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zdG9wcGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc3RyZWFtLnZhbHVlID0gbnVsbDtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlICduby1zdHJlYW0nOlxuICAgICAgY2FzZSAnbm90LWZvdW5kJzpcbiAgICAgICAgdGhpcy5mYWlsdXJlQ291bnQudmFsdWUgPSAwO1xuICAgICAgICB0aGlzLnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdGFuZGJ5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zdG9wcGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc3RyZWFtLnZhbHVlID0gbnVsbDtcblxuICAgICAgICByZXR1cm47XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLmZhaWx1cmVDb3VudC52YWx1ZSsrO1xuICAgICAgICB0aGlzLnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdGFuZGJ5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zdG9wcGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc3RyZWFtLnZhbHVlID0gbnVsbDtcblxuICAgICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgYXBwbHlTZXNzaW9uQW5kU3RyZWFtUHJvcGVydGllc1RvVmlkZW9FbGVtZW50KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnZpZGVvRWxlbWVudC52YWx1ZSAmJiB0aGlzLnZpZGVvRWxlbWVudC52YWx1ZS5kYXRhc2V0KSB7XG4gICAgICB0aGlzLnZpZGVvRWxlbWVudC52YWx1ZS5kYXRhc2V0LnNlc3Npb25JZCA9IFNESy5jbGllbnRTZXNzaW9uSWQ7XG4gICAgICB0aGlzLnZpZGVvRWxlbWVudC52YWx1ZS5kYXRhc2V0LnN0cmVhbUlkID0gdGhpcy5zdHJlYW1JZDtcbiAgICB9XG4gIH1cblxuICBtYXBTdWJzY3JpYmVTdGF0dXNUb0NoYW5uZWxTdGF0dXMoc3RhdHVzOiBTdWJzY3JpYmVTdGF0dXMpOiBDaGFubmVsU3RhdGUge1xuICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICBjYXNlICdvayc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuU3RhcnRpbmc7XG4gICAgICBjYXNlICduby1zdHJlYW0nOlxuICAgICAgY2FzZSAnbm90LWZvdW5kJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5TdGFuZEJ5O1xuICAgICAgY2FzZSAnZ2VvLXJlc3RyaWN0ZWQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLkdlb1Jlc3RyaWN0ZWQ7XG4gICAgICBjYXNlICdnZW8tYmxvY2tlZCc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuR2VvQmxvY2tlZDtcbiAgICAgIGNhc2UgJ3VuYXV0aG9yaXplZCc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuVW5hdXRob3JpemVkO1xuICAgICAgY2FzZSAnY2FwYWNpdHknOlxuICAgICAgY2FzZSAncmF0ZS1saW1pdGVkJzpcbiAgICAgIGNhc2UgJ3RpbWVvdXQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLlJlY292ZXJpbmc7XG4gICAgICBjYXNlICdmb3JiaWRkZW4tdGFnJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICBjYXNlICdwb3J0LWluLXJhbmdlLW5vdC1mb3VuZCc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5FcnJvcjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHN0YXR1cyk7XG4gICAgfVxuICB9XG5cbiAgbWFwU3Vic2NyaWJlU3RhdHVzVG9FeGlzdHMoc3RhdHVzOiBTdWJzY3JpYmVTdGF0dXMpOiBib29sZWFuIHwgbnVsbCB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ29rJzpcbiAgICAgIGNhc2UgJ25vLXN0cmVhbSc6XG4gICAgICBjYXNlICdnZW8tcmVzdHJpY3RlZCc6XG4gICAgICBjYXNlICdnZW8tYmxvY2tlZCc6XG4gICAgICBjYXNlICdmb3JiaWRkZW4tdGFnJzpcbiAgICAgIGNhc2UgJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJzpcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBjYXNlICdub3QtZm91bmQnOlxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICBjYXNlICd1bmF1dGhvcml6ZWQnOlxuICAgICAgY2FzZSAndGltZW91dCc6XG4gICAgICBjYXNlICdyYXRlLWxpbWl0ZWQnOlxuICAgICAgY2FzZSAnY2FwYWNpdHknOlxuICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuZXhpc3RzLnZhbHVlO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoc3RhdHVzKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IHtEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiwgUmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9ufSBmcm9tICcuLi9mcmFtZVRpbWluZy9GcmFtZVRpbWluZ0luZm9ybWF0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQge1xuICBwdWJsaWMgcmVhZG9ubHkgc2hvdWxkRXh0cmFjdFRpbWVjb2RlOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBwdWJsaWMgcmVhZG9ubHkgc2hvdWxkRXh0cmFjdFRpbWVzdGFtcHM6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHB1YmxpYyByZWFkb25seSBpc0VuYWJsZWQ6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHB1YmxpYyByZWFkb25seSBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbjogU3ViamVjdDxEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+O1xuICBwdWJsaWMgcmVhZG9ubHkgcmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uOiBTdWJqZWN0PFJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuc2hvdWxkRXh0cmFjdFRpbWVjb2RlID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMuc2hvdWxkRXh0cmFjdFRpbWVzdGFtcHMgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5pc0VuYWJsZWQgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5kZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiA9IG5ldyBTdWJqZWN0PERlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD4obnVsbCk7XG4gICAgdGhpcy5yZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gPSBuZXcgU3ViamVjdDxSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPihudWxsKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4uLy4uL3J0Yy9JUGVlckNvbm5lY3Rpb24nO1xuaW1wb3J0IEdhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyIGZyb20gJy4uLy4uL2RvbS9HYXJiYWdlQ29sbGVjdG9yTWFuYWdlcic7XG5cbmV4cG9ydCB0eXBlIFBlZXJDb25uZWN0aW9uQ29udGV4dE9wdGlvbnMgPSB7XG4gIGZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQ6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQZWVyQ29ubmVjdGlvbkNvbnRleHQge1xuICBwcml2YXRlIHJlYWRvbmx5IF9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0OiBib29sZWFuO1xuICBtZWRpYVN0cmVhbTogU3ViamVjdDxNZWRpYVN0cmVhbSB8IG51bGw+O1xuICBwZWVyQ29ubmVjdGlvbjogU3ViamVjdDxJUGVlckNvbm5lY3Rpb24gfCBudWxsPjtcbiAgcGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0czogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFBlZXJDb25uZWN0aW9uQ29udGV4dE9wdGlvbnMpIHtcbiAgICB0aGlzLl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0ID0gb3B0aW9ucy5mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0O1xuICAgIHRoaXMubWVkaWFTdHJlYW0gPSBuZXcgU3ViamVjdDxNZWRpYVN0cmVhbSB8IG51bGw+KG51bGwpO1xuICAgIHRoaXMucGVlckNvbm5lY3Rpb24gPSBuZXcgU3ViamVjdDxJUGVlckNvbm5lY3Rpb24gfCBudWxsPihudWxsKTtcbiAgICB0aGlzLnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSAwO1xuICB9XG5cbiAgcHVibGljIGRpc3Bvc2VQZWVyQ29ubmVjdGlvbigpOiB2b2lkIHtcbiAgICBjb25zdCBwZWVyQ29ubmVjdGlvbiA9IHRoaXMucGVlckNvbm5lY3Rpb24udmFsdWU7XG5cbiAgICBpZiAoIXBlZXJDb25uZWN0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5wZWVyQ29ubmVjdGlvbi52YWx1ZSA9IG51bGw7XG4gICAgcGVlckNvbm5lY3Rpb24uY2xvc2UoKTtcbiAgICBwZWVyQ29ubmVjdGlvbi5kaXNwb3NlKCk7XG5cbiAgICBpZiAodGhpcy5fZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCkge1xuICAgICAgR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIuZm9yY2VHYXJiYWdlQ29sbGVjdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBkaXNwb3NlTWVkaWFTdHJlYW0oKTogdm9pZCB7XG4gICAgdGhpcy5tZWRpYVN0cmVhbS52YWx1ZT8uZ2V0VHJhY2tzKCkuZm9yRWFjaCh0cmFjayA9PiB0cmFjay5zdG9wKCkpO1xuICAgIHRoaXMubWVkaWFTdHJlYW0udmFsdWUgPSBudWxsO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3RhdGVDb250ZXh0IHtcbiAgaXNTdGFydGluZzogU3ViamVjdDxib29sZWFuPjtcbiAgaXNEaXNwb3NlZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmlzU3RhcnRpbmcgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5pc0Rpc3Bvc2VkID0gZmFsc2U7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IHtWaWRlb0NvZGVjfSBmcm9tICcuLi9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL1ZpZGVvQ29kZWMnO1xuaW1wb3J0IHtBdWRpb0NvZGVjfSBmcm9tICcuLi9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL0F1ZGlvQ29kZWMnO1xuaW1wb3J0IHtJU3RyZWFtVHJhY2tUcmFuc2Zvcm19IGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL1N0cmVhbVRyYWNrVHJhbnNmb3JtJztcbmltcG9ydCB7SUVuY29kZWRTdHJlYW1TaW5rfSBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi9FbmNvZGVkU3RyZWFtU2luayc7XG5pbXBvcnQgVHJhbnNmb3JtTWVzc2FnZVJvdXRlciBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi93b3JrZXIvTWVzc2FnZVJvdXRlcic7XG5cbmV4cG9ydCB0eXBlIFN0cmVhbVRyYW5zZm9ybUNvbnRleHRPcHRpb25zID0ge1xuICBoYXNJbnNlcnRhYmxlU3RyZWFtczogYm9vbGVhbjtcbiAgaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zOiBib29sZWFuO1xuICB2aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08VmlkZW9GcmFtZT4gfCB1bmRlZmluZWQ7XG4gIGF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IElTdHJlYW1UcmFja1RyYW5zZm9ybTxBdWRpb0RhdGE+IHwgdW5kZWZpbmVkO1xuICBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rOiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZFZpZGVvRnJhbWU+IHwgdW5kZWZpbmVkO1xuICBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rOiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+IHwgdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IHR5cGUgU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrID0ge1xuICBtZWRpYVN0cmVhbVRyYWNrOiBNZWRpYVN0cmVhbVRyYWNrIHwgbnVsbDtcbiAgcmVjZWl2ZXI6IFJUQ1J0cFJlY2VpdmVyIHwgbnVsbDtcbiAgbWlkOiBzdHJpbmcgfCBudWxsO1xuICBjb2RlYzogVmlkZW9Db2RlYyB8IEF1ZGlvQ29kZWMgfCBudWxsO1xuICB0cmFuc2Zvcm1QaXBlbGluZVdvcmtlcjogV29ya2VyIHwgbnVsbDtcbiAgdHJhbnNmb3JtTWVzc2FnZVJvdXRlcjogVHJhbnNmb3JtTWVzc2FnZVJvdXRlciB8IG51bGw7XG4gIHRyYW5zZm9ybUZ1bmN0aW9uTmFtZXM6IHN0cmluZ1tdO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3RyZWFtVHJhbnNmb3JtQ29udGV4dCB7XG4gIHJlYWRvbmx5IGhhc0luc2VydGFibGVTdHJlYW1zOiBTdWJqZWN0PGJvb2xlYW4+O1xuICByZWFkb25seSBoYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXM6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHJlYWRvbmx5IHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IElTdHJlYW1UcmFja1RyYW5zZm9ybTxWaWRlb0ZyYW1lPiB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPEF1ZGlvRGF0YT4gfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IGVuY29kZWRWaWRlb1N0cmVhbVNpbms6IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkVmlkZW9GcmFtZT4gfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IGVuY29kZWRBdWRpb1N0cmVhbVNpbms6IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkQXVkaW9GcmFtZT4gfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IGF1ZGlvVHJhY2s6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHRUcmFjaztcbiAgcmVhZG9ubHkgdmlkZW9UcmFjazogU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHRPcHRpb25zKSB7XG4gICAgdGhpcy5oYXNJbnNlcnRhYmxlU3RyZWFtcyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KG9wdGlvbnMuaGFzSW5zZXJ0YWJsZVN0cmVhbXMpO1xuICAgIHRoaXMuaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4ob3B0aW9ucy5oYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMpO1xuICAgIHRoaXMudmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayA9IG9wdGlvbnMudmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaztcbiAgICB0aGlzLmF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2sgPSBvcHRpb25zLmF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s7XG4gICAgdGhpcy5lbmNvZGVkVmlkZW9TdHJlYW1TaW5rID0gb3B0aW9ucy5lbmNvZGVkVmlkZW9TdHJlYW1TaW5rO1xuICAgIHRoaXMuZW5jb2RlZEF1ZGlvU3RyZWFtU2luayA9IG9wdGlvbnMuZW5jb2RlZEF1ZGlvU3RyZWFtU2luaztcbiAgICB0aGlzLmF1ZGlvVHJhY2sgPSB7XG4gICAgICBtZWRpYVN0cmVhbVRyYWNrOiBudWxsLFxuICAgICAgcmVjZWl2ZXI6IG51bGwsXG4gICAgICBtaWQ6IG51bGwsXG4gICAgICBjb2RlYzogbnVsbCxcbiAgICAgIHRyYW5zZm9ybVBpcGVsaW5lV29ya2VyOiBudWxsLFxuICAgICAgdHJhbnNmb3JtTWVzc2FnZVJvdXRlcjogbnVsbCxcbiAgICAgIHRyYW5zZm9ybUZ1bmN0aW9uTmFtZXM6IFtdXG4gICAgfTtcbiAgICB0aGlzLnZpZGVvVHJhY2sgPSB7XG4gICAgICBtZWRpYVN0cmVhbVRyYWNrOiBudWxsLFxuICAgICAgcmVjZWl2ZXI6IG51bGwsXG4gICAgICBtaWQ6IG51bGwsXG4gICAgICBjb2RlYzogbnVsbCxcbiAgICAgIHRyYW5zZm9ybVBpcGVsaW5lV29ya2VyOiBudWxsLFxuICAgICAgdHJhbnNmb3JtTWVzc2FnZVJvdXRlcjogbnVsbCxcbiAgICAgIHRyYW5zZm9ybUZ1bmN0aW9uTmFtZXM6IFtdXG4gICAgfTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQge0VuY29kZWRFZGdlVG9rZW59IGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VuY29kZWRFZGdlVG9rZW4nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUb2tlbkNvbnRleHQge1xuICB0b2tlbjogU3ViamVjdDxFbmNvZGVkRWRnZVRva2VuPjtcbiAgdG9rZW5FeHBpcmluZzogU3ViamVjdDxib29sZWFuPjtcblxuICBjb25zdHJ1Y3Rvcih0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbikge1xuICAgIHRoaXMudG9rZW4gPSBuZXcgU3ViamVjdDxFbmNvZGVkRWRnZVRva2VuPih0b2tlbik7XG4gICAgdGhpcy50b2tlbkV4cGlyaW5nID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZW51bSBBdWRpb0NvZGVjIHtcbiAgT1BVUyA9IDAsXG4gIEFBQyA9IDFcbn1cblxuZXhwb3J0IHR5cGUgQXVkaW9Db2RlY1R5cGUgPSAnT1BVUycgfCAnQUFDJzsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7QXVkaW9Db2RlYywgQXVkaW9Db2RlY1R5cGV9IGZyb20gJy4vQXVkaW9Db2RlYyc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEF1ZGlvQ29kZWNNYXBwaW5nIHtcbiAgcHVibGljIHN0YXRpYyBjb252ZXJ0QXVkaW9Db2RlY1RvQXVkaW9Db2RlY1R5cGUoYXVkaW9Db2RlYzogQXVkaW9Db2RlYyk6IEF1ZGlvQ29kZWNUeXBlIHtcbiAgICBzd2l0Y2ggKGF1ZGlvQ29kZWMpIHtcbiAgICAgIGNhc2UgQXVkaW9Db2RlYy5PUFVTOlxuICAgICAgICByZXR1cm4gJ09QVVMnO1xuICAgICAgY2FzZSBBdWRpb0NvZGVjLkFBQzpcbiAgICAgICAgcmV0dXJuICdBQUMnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoYXVkaW9Db2RlYyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjb252ZXJ0QXVkaW9Db2RlY1R5cGVUb0F1ZGlvQ29kZWMoYXVkaW9Db2RlY1R5cGU6IEF1ZGlvQ29kZWNUeXBlKTogQXVkaW9Db2RlYyB7XG4gICAgY29uc3QgYXVkaW9Db2RlY1N0cmluZyA9IGF1ZGlvQ29kZWNUeXBlLnRvVXBwZXJDYXNlKCkgYXMga2V5b2YgdHlwZW9mIEF1ZGlvQ29kZWM7XG5cbiAgICBzd2l0Y2ggKGF1ZGlvQ29kZWNTdHJpbmcpIHtcbiAgICAgIGNhc2UgJ09QVVMnOlxuICAgICAgICByZXR1cm4gQXVkaW9Db2RlYy5PUFVTO1xuICAgICAgY2FzZSAnQUFDJzpcbiAgICAgICAgcmV0dXJuIEF1ZGlvQ29kZWMuQUFDO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoYXVkaW9Db2RlY1N0cmluZyk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZW51bSBWaWRlb0NvZGVjIHtcbiAgSDI2NCA9IDAsXG4gIFZQOCA9IDEsXG4gIFZQOSA9IDJcbn1cblxuZXhwb3J0IHR5cGUgVmlkZW9Db2RlY1R5cGUgPSAnSDI2NCcgfCAnVlA4JyB8ICdWUDknOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uLy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IHtWaWRlb0NvZGVjLCBWaWRlb0NvZGVjVHlwZX0gZnJvbSAnLi9WaWRlb0NvZGVjJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmlkZW9Db2RlY01hcHBpbmcge1xuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRWaWRlb0NvZGVjVG9WaWRlb0NvZGVjVHlwZSh2aWRlb0NvZGVjOiBWaWRlb0NvZGVjKTogVmlkZW9Db2RlY1R5cGUge1xuICAgIHN3aXRjaCAodmlkZW9Db2RlYykge1xuICAgICAgY2FzZSBWaWRlb0NvZGVjLkgyNjQ6XG4gICAgICAgIHJldHVybiAnSDI2NCc7XG4gICAgICBjYXNlIFZpZGVvQ29kZWMuVlA4OlxuICAgICAgICByZXR1cm4gJ1ZQOCc7XG4gICAgICBjYXNlIFZpZGVvQ29kZWMuVlA5OlxuICAgICAgICByZXR1cm4gJ1ZQOSc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh2aWRlb0NvZGVjKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRWaWRlb0NvZGVjVHlwZVRvVmlkZW9Db2RlYyh2aWRlb0NvZGVjVHlwZTogVmlkZW9Db2RlY1R5cGUpOiBWaWRlb0NvZGVjIHtcbiAgICBjb25zdCB2aWRlb0NvZGVjU3RyaW5nID0gdmlkZW9Db2RlY1R5cGUudG9VcHBlckNhc2UoKSBhcyBrZXlvZiB0eXBlb2YgVmlkZW9Db2RlYztcblxuICAgIHN3aXRjaCAodmlkZW9Db2RlY1N0cmluZykge1xuICAgICAgY2FzZSAnSDI2NCc6XG4gICAgICAgIHJldHVybiBWaWRlb0NvZGVjLkgyNjQ7XG4gICAgICBjYXNlICdWUDgnOlxuICAgICAgICByZXR1cm4gVmlkZW9Db2RlYy5WUDg7XG4gICAgICBjYXNlICdWUDknOlxuICAgICAgICByZXR1cm4gVmlkZW9Db2RlYy5WUDk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh2aWRlb0NvZGVjU3RyaW5nKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IG5ldyBVaW50OEFycmF5KFsweDAwLCAweDAwLCAweDAwLCAweDAxXSk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5jb25zdCBkZWZhdWx0RGlzY292ZXJ5VXJpID0gJ2h0dHBzOi8vcGNhc3QucGhlbml4cnRzLmNvbS9wY2FzdC9lbmRQb2ludHMnO1xuXG5leHBvcnQge2RlZmF1bHREaXNjb3ZlcnlVcml9OyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtCaXRyYXRlTW9kZSwgQml0cmF0ZU1vZGVUeXBlfSBmcm9tICcuLi9hcGkvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCaXRyYXRlTW9kZU1hcHBpbmcge1xuICBzdGF0aWMgY29udmVydEJpdHJhdGVNb2RlVG9CaXRyYXRlTW9kZVR5cGUoYml0cmF0ZU1vZGU6IEJpdHJhdGVNb2RlKTogQml0cmF0ZU1vZGVUeXBlIHtcbiAgICBzd2l0Y2ggKGJpdHJhdGVNb2RlKSB7XG4gICAgICBjYXNlIEJpdHJhdGVNb2RlLk5vcm1hbDpcbiAgICAgICAgcmV0dXJuICdOb3JtYWwnO1xuICAgICAgY2FzZSBCaXRyYXRlTW9kZS5Gb3JjZTpcbiAgICAgICAgcmV0dXJuICdGb3JjZSc7XG4gICAgICBjYXNlIEJpdHJhdGVNb2RlLlJlc2V0OlxuICAgICAgICByZXR1cm4gJ1Jlc2V0JztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGJpdHJhdGVNb2RlKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7Qml0cmF0ZVN0YXRlLCBCaXRyYXRlU3RhdGVUeXBlfSBmcm9tICcuLi9hcGkvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCaXRyYXRlU3RhdGVNYXBwaW5nIHtcbiAgc3RhdGljIGNvbnZlcnRCaXRyYXRlU3RhdGVUb0JpdHJhdGVTdGF0ZVR5cGUoYml0cmF0ZVN0YXRlOiBCaXRyYXRlU3RhdGUpOiBCaXRyYXRlU3RhdGVUeXBlIHtcbiAgICBzd2l0Y2ggKGJpdHJhdGVTdGF0ZSkge1xuICAgICAgY2FzZSBCaXRyYXRlU3RhdGUuS2VlcDpcbiAgICAgICAgcmV0dXJuICdLZWVwJztcbiAgICAgIGNhc2UgQml0cmF0ZVN0YXRlLlJlc2V0OlxuICAgICAgICByZXR1cm4gJ1Jlc2V0JztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGJpdHJhdGVTdGF0ZSk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IERpc2NvdmVyeVNlcnZpY2UgZnJvbSAnLi9EaXNjb3ZlcnlTZXJ2aWNlJztcbmltcG9ydCBFbmRQb2ludCBmcm9tICcuL0VuZFBvaW50JztcbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcblxuY29uc3QgZGlzY292ZXJ5Q2FjaGVJbnRlcnZhbCA9IDYwMDAwO1xuXG5pbnRlcmZhY2UgSVBlclVSSUVuZHBvaW50IHsgW3g6IHN0cmluZ106IFByb21pc2U8RW5kUG9pbnQ+IH1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGlzY292ZXJ5IHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2NhY2hlOiBJUGVyVVJJRW5kcG9pbnQgPSB7fTtcblxuICBzdGF0aWMgYXN5bmMgcHJlY2FjaGVDbG9zZXN0RW5kUG9pbnREaXNjb3ZlcnkoKTogUHJvbWlzZTxFbmRQb2ludD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxFbmRQb2ludD4ocmVzb2x2ZUVuZFBvaW50UHJvbWlzZSA9PiB7XG4gICAgICBjb25zdCBnbG9iYWxTY29wZVN1YnNjcmlwdGlvbiA9IEdsb2JhbFNjb3BlLnN1YnNjcmliZShnbG9iYWxTY29wZSA9PiB7XG4gICAgICAgIGlmICghZ2xvYmFsU2NvcGUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB1cmkgPSBuZXcgZ2xvYmFsU2NvcGUuVVJMKFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuXG4gICAgICAgIHJldHVybiBEaXNjb3ZlcnkuZGlzY292ZXJDbG9zZXN0RW5kUG9pbnRXaXRoQ2FjaGluZyh1cmkpXG4gICAgICAgICAgLnRoZW4ocmVzb2x2ZUVuZFBvaW50UHJvbWlzZSlcbiAgICAgICAgICAudGhlbigoKSA9PiBnbG9iYWxTY29wZVN1YnNjcmlwdGlvbi5kaXNwb3NlKCkpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgZGlzY292ZXJDbG9zZXN0RW5kUG9pbnRXaXRoQ2FjaGluZyh1cmk6IFVSTCk6IFByb21pc2U8RW5kUG9pbnQ+IHtcbiAgICBjb25zdCB1cmwgPSB1cmkudG9TdHJpbmcoKTtcblxuICAgIGlmICh1cmwgaW4gRGlzY292ZXJ5Ll9jYWNoZSkge1xuICAgICAgcmV0dXJuIERpc2NvdmVyeS5fY2FjaGVbdXJsXTtcbiAgICB9XG5cbiAgICBjb25zdCBkaXNjb3ZlcnlTZXJ2aWNlID0gbmV3IERpc2NvdmVyeVNlcnZpY2UodXJpKTtcbiAgICBjb25zdCBjYWNoZWRWYWx1ZSA9IERpc2NvdmVyeS5fY2FjaGVbdXJsXSA9IGRpc2NvdmVyeVNlcnZpY2UuZGlzY292ZXJDbG9zZXN0RW5kUG9pbnQoKTtcbiAgICBjb25zdCBpZ25vcmVkID0gRGlzY292ZXJ5Ll9jYWNoZVt1cmxdLnRoZW4oKCkgPT4ge1xuICAgICAgY29uc3QgaWdub3JlZCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAoRGlzY292ZXJ5Ll9jYWNoZVt1cmxdID09PSBjYWNoZWRWYWx1ZSkge1xuICAgICAgICAgIGRlbGV0ZSBEaXNjb3ZlcnkuX2NhY2hlW3VybF07XG4gICAgICAgIH1cbiAgICAgIH0sIGRpc2NvdmVyeUNhY2hlSW50ZXJ2YWwpO1xuICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgIGRlbGV0ZSBEaXNjb3ZlcnkuX2NhY2hlW3VybF07XG4gICAgfSk7XG5cbiAgICByZXR1cm4gY2FjaGVkVmFsdWU7XG4gIH1cblxuICBzdGF0aWMgY2xlYXJDYWNoZWRDbG9zZXN0RW5kcG9pbnQodXJpOiBVUkwpOiB2b2lkIHtcbiAgICBjb25zdCB1cmwgPSB1cmkudG9TdHJpbmcoKTtcblxuICAgIGlmICh1cmwgaW4gRGlzY292ZXJ5Ll9jYWNoZSkge1xuICAgICAgZGVsZXRlIERpc2NvdmVyeS5fY2FjaGVbdXJsXTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignRGlzY292ZXJ5IGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufVxuXG5jb25zdCBpZ25vcmVkID0gRGlzY292ZXJ5LnByZWNhY2hlQ2xvc2VzdEVuZFBvaW50RGlzY292ZXJ5KCk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBNZXRyaWNzU2VydmljZSBmcm9tICcuLi8uLi9tZXRyaWNzL01ldHJpY3NTZXJ2aWNlJztcbmltcG9ydCBNZXRyaWNzRmFjdG9yeSBmcm9tICcuLi8uLi9tZXRyaWNzL01ldHJpY3NGYWN0b3J5JztcbmltcG9ydCBNZXRyaWNzVHlwZSBmcm9tICcuLi8uLi9tZXRyaWNzL01ldHJpY3NUeXBlJztcbmltcG9ydCBEaXNjb3ZlcnlVcmkgZnJvbSAnLi9EaXNjb3ZlcnlVcmknO1xuaW1wb3J0IEVuZFBvaW50IGZyb20gJy4vRW5kUG9pbnQnO1xuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuXG5jb25zdCBkZWZhdWx0VGltZW91dCA9IDIwMDAwO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXNjb3ZlcnlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ0Rpc2NvdmVyeScpO1xuICBwcml2YXRlIF9tZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgX3VyaTogVVJMO1xuXG4gIGNvbnN0cnVjdG9yKHVyaTogVVJMKSB7XG4gICAgaWYgKCF1cmkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRGlzY292ZXJ5IHJlcXVpcmVzIHVyaScpO1xuICAgIH1cblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlID0gTWV0cmljc0ZhY3RvcnkuZ2V0TWV0cmljc1NlcnZpY2UodXJpLnRvU3RyaW5nKCkpO1xuICAgIHRoaXMuX3VyaSA9IHVyaTtcbiAgfVxuXG4gIGFzeW5jIGRpc2NvdmVyTmVhcmJ5RW5kUG9pbnRzKHVyaTogVVJMLCB0aW1lb3V0OiBudW1iZXIpOiBQcm9taXNlPEVuZFBvaW50W10+IHtcbiAgICBpZiAoIXRpbWVvdXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRGlzY292ZXJ5IHJlcXVpcmVzIHRpbWVvdXQnKTtcbiAgICB9XG5cbiAgICBjb25zdCB1cmwgPSB1cmkudG9TdHJpbmcoKTtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh1cmwsIHtcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgY2FjaGU6ICduby1jYWNoZSdcbiAgICAgIH0pLFxuICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KChfLCByZWplY3QpID0+IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KG5ldyBFcnJvcihgRGlzY292ZXJ5IHRpbWVkIG91dCBbJHt1cmx9XWApKSwgdGltZW91dCkpXG4gICAgXSk7XG5cbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYERpc2NvdmVyeSBmYWlsZWQgWyR7dXJsfV0gWyR7cmVzcG9uc2Uuc3RhdHVzfV1gKTtcbiAgICB9XG5cbiAgICBpZiAocmVzcG9uc2UuYm9keSA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBEaXNjb3ZlcnkgZmFpbGVkIHdpdGggbm8gZGF0YSBbJHt1cmx9XWApO1xuICAgIH1cblxuICAgIGNvbnN0IGFzU3RyaW5nID0gYXdhaXQgcmVzcG9uc2UudGV4dCgpO1xuICAgIGNvbnN0IGVuZFBvaW50cyA9IGFzU3RyaW5nLnNwbGl0KCcsJyk7XG5cbiAgICByZXR1cm4gZW5kUG9pbnRzLm1hcChlbmRQb2ludCA9PiBuZXcgRW5kUG9pbnQoZW5kUG9pbnQsIHRpbWVvdXQpKTtcbiAgfVxuXG4gIGFzeW5jIGRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50KHRpbWVvdXQ6IG51bWJlciA9IGRlZmF1bHRUaW1lb3V0KTogUHJvbWlzZTxFbmRQb2ludD4ge1xuICAgIGNvbnN0IHVybCA9IERpc2NvdmVyeVVyaS5idWlsZERpc2NvdmVyeVVybCh0aGlzLl91cmkpO1xuICAgIGNvbnN0IGVuZFBvaW50cyA9IGF3YWl0IHRoaXMuZGlzY292ZXJOZWFyYnlFbmRQb2ludHMobmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh1cmwpLCB0aW1lb3V0KTtcbiAgICBsZXQgZmFpbGVkUmVxdWVzdHMgPSAwO1xuICAgIGNvbnN0IHByb3BhZ2F0ZUZhaWx1cmVJZkFsbFJlcXVlc3RzRmFpbGVkID0gKCk6IFByb21pc2U8dm9pZD4gPT4gbmV3IFByb21pc2UoKF8sIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKGZhaWxlZFJlcXVlc3RzID49IGVuZFBvaW50cy5sZW5ndGgpIHtcbiAgICAgICAgcmVqZWN0KGBEaXNjb3Zlcnkgb2YgWyR7ZW5kUG9pbnRzLmxlbmd0aH1dIGVuZHBvaW50cyBmcm9tIFske3VybH1dIGZhaWxlZCwgcHJldmVudGluZyBpdCBmcm9tIGNvbXBsZXRpbmdgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBlbmRQb2ludCA9IGF3YWl0IFByb21pc2UucmFjZShlbmRQb2ludHMubWFwKGVuZFBvaW50ID0+IGVuZFBvaW50XG4gICAgICAucGluZygpXG4gICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdGYWlsZWQgdG8gcGluZyBlbmQgcG9pbnQgWyVzXScsIGVuZFBvaW50LCBlKTtcblxuICAgICAgICBmYWlsZWRSZXF1ZXN0cysrO1xuXG4gICAgICAgIHJldHVybiBwcm9wYWdhdGVGYWlsdXJlSWZBbGxSZXF1ZXN0c0ZhaWxlZCgpO1xuICAgICAgfSlcbiAgICAgIC50aGVuKHRpbWUgPT4ge1xuICAgICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdEaXNjb3ZlcmVkIGVuZCBwb2ludCBbJXNdIHdpdGggdGltZSBbJXNdJywgZW5kUG9pbnQudG9TdHJpbmcoKSwgdGltZSk7XG4gICAgICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLlJvdW5kVHJpcFRpbWUsXG4gICAgICAgICAgcnVudGltZTogKG5vdyAtIFNESy5wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgICAgICB2YWx1ZToge3VpbnQ2NDogdGltZSB8fCAwfSxcbiAgICAgICAgICByZXNvdXJjZTogZW5kUG9pbnQudG9TdHJpbmcoKSxcbiAgICAgICAgICBraW5kOiAncGluZydcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGVuZFBvaW50O1xuICAgICAgfSkpKTtcblxuICAgIHJldHVybiBlbmRQb2ludDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uLy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IFZlcnNpb25NYW5hZ2VyIGZyb20gJy4uL3ZlcnNpb24vVmVyc2lvbk1hbmFnZXInO1xuaW1wb3J0IFBhcmFtZXRlcnMgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQvUGFyYW1ldGVycyc7XG5pbXBvcnQge2RlZmF1bHREaXNjb3ZlcnlVcml9IGZyb20gJy4uL2RlZmF1bHRzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGlzY292ZXJ5VXJpIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2Rpc2NvdmVyeVVyaTogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPihkZWZhdWx0RGlzY292ZXJ5VXJpKTtcblxuICBzdGF0aWMgZ2V0IHVyaSgpOiBTdWJqZWN0PHN0cmluZz4ge1xuICAgIHJldHVybiBEaXNjb3ZlcnlVcmkuX2Rpc2NvdmVyeVVyaTtcbiAgfVxuXG4gIHN0YXRpYyBidWlsZERpc2NvdmVyeVVybCh1cmk6IFVSTCk6IHN0cmluZyB7XG4gICAgY29uc3QgdXJsID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh1cmkudG9TdHJpbmcoKSk7XG4gICAgY29uc3Qgc2RrVmVyc2lvbiA9IFZlcnNpb25NYW5hZ2VyLnNka1ZlcnNpb247XG4gICAgY29uc3QgaW50ZW50aW9ucyA9IFBhcmFtZXRlcnMuZGlzY292ZXJ5UGFyYW1ldGVycy5pbnRlbnRpb25zO1xuXG4gICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ3ZlcnNpb24nLCBzZGtWZXJzaW9uKTtcbiAgICB1cmwuc2VhcmNoUGFyYW1zLnNldCgnaW50ZW50aW9ucycsIGludGVudGlvbnMpO1xuICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdfJywgYCR7RGF0ZS5ub3coKX1gKTtcblxuICAgIGlmICh1cmwucGF0aG5hbWUgPT09ICcvJykge1xuICAgICAgdXJsLnBhdGhuYW1lID0gJy9wY2FzdC9lbmRQb2ludHMnO1xuICAgIH1cblxuICAgIHJldHVybiB1cmwudG9TdHJpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdEaXNjb3ZlcnlVcmkgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBFZGdlQXV0aFBhcnNlciBmcm9tICcuLi8uLi9lZGdlQXV0aC9FZGdlQXV0aFBhcnNlcic7XG5pbXBvcnQge0VuY29kZWRFZGdlVG9rZW59IGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VuY29kZWRFZGdlVG9rZW4nO1xuXG5pbXBvcnQge1xuICBJU3Vic2NyaWJlU3VjY2Vzc1Jlc3BvbnNlLFxuICBJU3Vic2NyaWJlV2l0aE9mZmVyUmVxdWVzdCxcbiAgSVN1YnNjcmliZVdpdGhvdXRPZmZlclJlcXVlc3Rcbn0gZnJvbSAnLi4vYXBpL1N1YnNjcmliZSc7XG5pbXBvcnQge0lTZXRSZW1vdGVEZXNjcmlwdGlvblJlcXVlc3QsIElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlfSBmcm9tICcuLi9hcGkvU2V0UmVtb3RlRGVzY3JpcHRpb24nO1xuaW1wb3J0IHtJRGVzdHJveVN0cmVhbVJlcXVlc3QsIElEZXN0cm95U3RyZWFtUmVzcG9uc2V9IGZyb20gJy4uL2FwaS9EZXN0cm95U3RyZWFtJztcbmltcG9ydCB7SUFkZEljZUNhbmRpZGF0ZXNSZXF1ZXN0LCBJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlfSBmcm9tICcuLi9hcGkvQWRkSWNlQ2FuZGlkYXRlcyc7XG5pbXBvcnQgVmVyc2lvbk1hbmFnZXIgZnJvbSAnLi4vdmVyc2lvbi9WZXJzaW9uTWFuYWdlcic7XG5pbXBvcnQgUGFyYW1ldGVycyBmcm9tICcuLi8uLi9lbnZpcm9ubWVudC9QYXJhbWV0ZXJzJztcbmltcG9ydCB7Qml0cmF0ZU1vZGUsIEJpdHJhdGVTdGF0ZSwgSVNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlfSBmcm9tICcuLi9hcGkvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUnO1xuaW1wb3J0IEJpdHJhdGVNb2RlTWFwcGluZyBmcm9tICcuL0JpdHJhdGVNb2RlTWFwcGluZyc7XG5pbXBvcnQgQml0cmF0ZVN0YXRlTWFwcGluZyBmcm9tICcuL0JpdHJhdGVTdGF0ZU1hcHBpbmcnO1xuaW1wb3J0IHtCaXRzUGVyU2Vjb25kLCBNaWxsaXNlY29uZH0gZnJvbSAnLi4vLi4vdW5pdHMvVW5pdHMnO1xuaW1wb3J0IHtcbiAgSVB1Ymxpc2hTdWNjZXNzUmVzcG9uc2UsXG4gIElQdWJsaXNoV2l0aE9mZmVyUmVxdWVzdCxcbiAgSVB1Ymxpc2hXaXRob3V0T2ZmZXJSZXF1ZXN0LFxuICBQdWJsaXNoU3RhdHVzXG59IGZyb20gJy4uL2FwaS9QdWJsaXNoJztcblxuY29uc3QgYXBpVmVyc2lvbiA9IDc7XG5cbmV4cG9ydCB0eXBlIFN1YnNjcmliZVN0YXR1cyA9ICdvaycgfCAnbm8tc3RyZWFtJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAnZ2VvLXJlc3RyaWN0ZWQnIHwgJ2dlby1ibG9ja2VkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmb3JiaWRkZW4tdGFnJyB8ICdwb3J0LWluLXJhbmdlLW5vdC1mb3VuZCcgfCAnZmFpbGVkJztcbmV4cG9ydCB0eXBlIFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzID0gJ29rJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZmFpbGVkJztcbmV4cG9ydCB0eXBlIFNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzID0gJ29rJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZmFpbGVkJztcbmV4cG9ydCB0eXBlIFJlbW92ZVRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzID0gJ29rJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZmFpbGVkJztcbmV4cG9ydCB0eXBlIEFkZEljZUNhbmRpZGF0ZXNTdGF0dXMgPSAnb2snIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgRGVzdHJveVN0cmVhbVN0YXR1cyA9ICdvaycgfCAnbm90LWZvdW5kJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZhaWxlZCc7XG5leHBvcnQgaW50ZXJmYWNlIElTdHJlYW0ge1xuICBzdHJlYW1JZDogc3RyaW5nO1xuICBzaGFyZWRTZWNyZXQ6IHN0cmluZztcbiAgdGVuYW5jeTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2VJbml0IHtcbiAgc3RhdHVzOiAnb2snO1xuICBzdHJlYW06IElTdHJlYW07XG4gIGxhZzogTWlsbGlzZWNvbmQ7XG4gIHJ0Y0NvbmZpZ3VyYXRpb24/OiBSVENDb25maWd1cmF0aW9uO1xuICBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbiAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbiAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZT86IHtcbiAgICBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG4gIH07XG4gIFtrZXk6IHN0cmluZ106IHVua25vd247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN1YnNjcmliZUZhaWx1cmVSZXNwb25zZUluaXQge1xuICBzdGF0dXM6ICduby1zdHJlYW0nIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdnZW8tcmVzdHJpY3RlZCcgfCAnZ2VvLWJsb2NrZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZvcmJpZGRlbi10YWcnIHwgJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJyB8ICdmYWlsZWQnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2sge1xuICAocmVxdWVzdDogSVN1YnNjcmliZVdpdGhPZmZlclJlcXVlc3QgfCBJU3Vic2NyaWJlV2l0aG91dE9mZmVyUmVxdWVzdCk6IFByb21pc2U8dm9pZD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2sge1xuICAocmVzcG9uc2U6IElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2VJbml0IHwgSVN1YnNjcmliZUZhaWx1cmVSZXNwb25zZUluaXQpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG5leHBvcnQgdHlwZSBTdWJzY3JpYmVPcHRpb25zID0ge1xuICBvblN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaz86IElTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s7XG4gIG9uU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaz86IElTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrO1xufTtcblxuZXhwb3J0IHR5cGUgSVB1Ymxpc2hTdWNjZXNzUmVzcG9uc2VJbml0ID0ge1xuICBzdGF0dXM6ICdvayc7XG4gIHN0cmVhbTogSVN0cmVhbTtcbiAgbGFnPzogTWlsbGlzZWNvbmQ7XG4gIHJ0Y0NvbmZpZ3VyYXRpb24/OiBSVENDb25maWd1cmF0aW9uO1xuICBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbiAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbiAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZT86IHtcbiAgICBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBJUHVibGlzaEZhaWx1cmVSZXNwb25zZUluaXQgPSB7XG4gIHN0YXR1czogJ25vdC1mb3VuZCcgfCAnZ2VvLXJlc3RyaWN0ZWQnIHwgJ2dlby1ibG9ja2VkJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZvcmJpZGRlbi10YWcnIHwgJ21pc3NpbmctY2hhbm5lbC1vci1yb29tLWlkJyB8ICdwb3J0LWluLXJhbmdlLW5vdC1mb3VuZCcgfCAnZmFpbGVkJztcbn07XG5cbmludGVyZmFjZSBJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZUluaXQge1xuICBzdGF0dXM6IFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzO1xuICBzZXNzaW9uRGVzY3JpcHRpb24/OiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xufVxuXG5pbnRlcmZhY2UgSUFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZUluaXQge1xuICBzdGF0dXM6IEFkZEljZUNhbmRpZGF0ZXNTdGF0dXM7XG4gIG9wdGlvbnM/OiBzdHJpbmdbXTtcbn1cblxuaW50ZXJmYWNlIElTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVJlc3BvbnNlSW5pdCB7XG4gIHN0YXR1czogU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXM7XG59XG5cbmludGVyZmFjZSBJRGVzdHJveVN0cmVhbVJlc3BvbnNlSW5pdCB7XG4gIHN0YXR1czogRGVzdHJveVN0cmVhbVN0YXR1cztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW5kUG9pbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignRW5kUG9pbnQnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdXJpOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RpbWVvdXQ6IG51bWJlcjtcbiAgcHJpdmF0ZSBfcm91bmRUcmlwVGltZTogbnVtYmVyID0gMDtcblxuICBjb25zdHJ1Y3Rvcih1cmk6IHN0cmluZywgdGltZW91dDogbnVtYmVyKSB7XG4gICAgdGhpcy5fdXJpID0gdXJpO1xuICAgIHRoaXMuX3RpbWVvdXQgPSB0aW1lb3V0O1xuXG4gICAgaWYgKCF0aW1lb3V0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEVuZCBwb2ludCByZXF1aXJlcyBhIHRpbWVvdXRgKTtcbiAgICB9XG4gIH1cblxuICBnZXQgcm91bmRUcmlwVGltZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9yb3VuZFRyaXBUaW1lO1xuICB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYEVuZFBvaW50W3VyaT0ke3RoaXMuX3VyaX1dYDtcbiAgfVxuXG4gIGFzeW5jIHBpbmcoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkUGluZ1VybCgpO1xuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh1cmwsIHtcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgY2FjaGU6ICduby1jYWNoZSdcbiAgICAgIH0pLFxuICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KChfLCByZWplY3QpID0+XG4gICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KG5ldyBFcnJvcihgUGluZyB0aW1lZCBvdXQgWyR7dXJsfV1gKSksIHRoaXMuX3RpbWVvdXQpKVxuICAgIF0pO1xuICAgIGNvbnN0IGZpbmlzaGVkID0gRGF0ZS5ub3coKTtcblxuICAgIGlmICghcmVzcG9uc2Uub2spIHsgLyogSGFuZGxlICovXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFBpbmcgZmFpbGVkIFske3VybH1dIFske3Jlc3BvbnNlLnN0YXR1c31dYCk7XG4gICAgfVxuXG4gICAgdGhpcy5fcm91bmRUcmlwVGltZSA9IGZpbmlzaGVkIC0gc3RhcnQ7XG5cbiAgICByZXR1cm4gdGhpcy5fcm91bmRUcmlwVGltZTtcbiAgfVxuXG4gIGFzeW5jIHN1YnNjcmliZSh0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbiwgbG9jYWxTZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQgfCBudWxsLCBmYWlsdXJlQ291bnQ6IG51bWJlciwgb3B0aW9uczogU3Vic2NyaWJlT3B0aW9ucyA9IHt9KTogUHJvbWlzZTxJU3Vic2NyaWJlU3VjY2Vzc1Jlc3BvbnNlSW5pdCB8IElTdWJzY3JpYmVGYWlsdXJlUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgdGVuYW5jeSA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4odG9rZW4pLnRlbmFuY3k7XG5cbiAgICBpZiAoIXRlbmFuY3kpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHBhcnNlIHRva2VuIFslc10nLCB0b2tlbik7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAndW5hdXRob3JpemVkJ307XG4gICAgfVxuXG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbdGVuYW5jeSwgJ3N0cmVhbScsICdzdWJzY3JpYmUnXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGNsaWVudFZlcnNpb24gPSBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uO1xuICAgIGxldCByZXF1ZXN0Qm9keTogSVN1YnNjcmliZVdpdGhPZmZlclJlcXVlc3QgfCBJU3Vic2NyaWJlV2l0aG91dE9mZmVyUmVxdWVzdDtcblxuICAgIGlmIChmYWlsdXJlQ291bnQgPT09IDAgJiYgbG9jYWxTZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgIHJlcXVlc3RCb2R5ID0ge1xuICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICBjbGllbnRWZXJzaW9uLFxuICAgICAgICBiZWFyZXJUb2tlbjogdG9rZW4sXG4gICAgICAgIGZhaWx1cmVDb3VudCxcbiAgICAgICAgaHR0cFJvdW5kVHJpcFRpbWU6IHRoaXMuX3JvdW5kVHJpcFRpbWUsXG4gICAgICAgIHNldFJlbW90ZURlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgICBzZXNzaW9uRGVzY3JpcHRpb246IHtcbiAgICAgICAgICAgIHR5cGU6IGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uLnR5cGUsXG4gICAgICAgICAgICBzZHA6IGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uLnNkcFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb246IHthcGlWZXJzaW9ufVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVxdWVzdEJvZHkgPSB7XG4gICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgIGNsaWVudFZlcnNpb24sXG4gICAgICAgIGJlYXJlclRva2VuOiB0b2tlbixcbiAgICAgICAgZmFpbHVyZUNvdW50LFxuICAgICAgICBodHRwUm91bmRUcmlwVGltZTogdGhpcy5fcm91bmRUcmlwVGltZSxcbiAgICAgICAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvbjoge2FwaVZlcnNpb259XG4gICAgICB9O1xuICAgIH1cblxuICAgIGF3YWl0IG9wdGlvbnMub25TdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s/LihyZXF1ZXN0Qm9keSk7XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkocmVxdWVzdEJvZHkpKTtcblxuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBsZXQgaHR0cFJlc3BvbnNlOiBSZXNwb25zZTtcblxuICAgIHRyeSB7XG4gICAgICBsZXQgdGltZW91dDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICAgIGh0dHBSZXNwb25zZSA9IGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmZldGNoKHVybCwge1xuICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgIGJvZHk6IGZvcm1EYXRhXG4gICAgICAgIH0pLFxuICAgICAgICBuZXcgUHJvbWlzZTxSZXNwb25zZT4ocmVzb2x2ZSA9PlxuICAgICAgICAgIHRpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHN1YnNjcmliZScsIG5ldyBFcnJvcihgU3Vic2NyaWJlIHRpbWVkIG91dCBbJHt1cmx9XWApKTtcbiAgICAgICAgICAgIHJlc29sdmUoe3N0YXR1czogNDA4fSBhcyBSZXNwb25zZSk7XG4gICAgICAgICAgfSwgdGhpcy5fdGltZW91dCkpXG4gICAgICBdKVxuICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHN1YnNjcmliZScsIGUpO1xuXG4gICAgICByZXR1cm4ge3N0YXR1czogJ2ZhaWxlZCd9O1xuICAgIH1cblxuICAgIGNvbnN0IGpzb25SZXNwb25zZUJvZHkgPSBhd2FpdCB0aGlzLnBhcnNlSnNvbkJvZHk8SVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZT4oaHR0cFJlc3BvbnNlKTtcblxuICAgIHRoaXMuaGFuZGxlU3RyZWFtUmVzcG9uc2VDb250ZXh0KGpzb25SZXNwb25zZUJvZHk/LnN0cmVhbVJlc3BvbnNlQ29udGV4dCk7XG5cbiAgICBjb25zdCBzdGF0dXM6IFN1YnNjcmliZVN0YXR1cyA9IHRoaXMubWFwSHR0cFN0YXR1c1RvU3Vic2NyaWJlU3RhdHVzKGh0dHBSZXNwb25zZSk7XG5cbiAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICBjb25zdCByZXNwb25zZTogSVN1YnNjcmliZUZhaWx1cmVSZXNwb25zZUluaXQgPSB7c3RhdHVzfTtcblxuICAgICAgYXdhaXQgb3B0aW9ucy5vblN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s/LihyZXNwb25zZSk7XG5cbiAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9XG5cbiAgICBpZiAoIWpzb25SZXNwb25zZUJvZHkpIHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlOiBJU3Vic2NyaWJlRmFpbHVyZVJlc3BvbnNlSW5pdCA9IHtzdGF0dXM6ICdmYWlsZWQnfTtcblxuICAgICAgYXdhaXQgb3B0aW9ucy5vblN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s/LihyZXNwb25zZSk7XG5cbiAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgc3Vic2NyaWJlUmVzcG9uc2UgPSB0aGlzLm5vcm1hbGl6ZVN1YnNjcmliZVJlc3BvbnNlKHRlbmFuY3ksIGpzb25SZXNwb25zZUJvZHkpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdHb3Qgc3Vic2NyaWJlIHJlc3BvbnNlIFslal0gaW4gWyVzXSBtcycsIHN1YnNjcmliZVJlc3BvbnNlLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIGF3YWl0IG9wdGlvbnMub25TdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrPy4oc3Vic2NyaWJlUmVzcG9uc2UpO1xuXG4gICAgcmV0dXJuIHN1YnNjcmliZVJlc3BvbnNlO1xuICB9XG5cbiAgYXN5bmMgcHVibGlzaChuYW1lOiBzdHJpbmcsIHRva2VuOiBFbmNvZGVkRWRnZVRva2VuLCBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdCB8IG51bGwsIGZhaWx1cmVDb3VudDogbnVtYmVyKTogUHJvbWlzZTxJUHVibGlzaFN1Y2Nlc3NSZXNwb25zZUluaXQgfCBJUHVibGlzaEZhaWx1cmVSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB0ZW5hbmN5ID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0b2tlbikudGVuYW5jeTtcblxuICAgIGlmICghdGVuYW5jeSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcGFyc2UgdG9rZW4gWyVzXScsIHRva2VuKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICd1bmF1dGhvcml6ZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFt0ZW5hbmN5LCAnc3RyZWFtJywgJ3B1Ymxpc2gnXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGNsaWVudFZlcnNpb24gPSBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uO1xuXG4gICAgaWYgKGZhaWx1cmVDb3VudCA9PT0gMCAmJiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgY29uc3QgYm9keVdpdGhPZmZlcjogSVB1Ymxpc2hXaXRoT2ZmZXJSZXF1ZXN0ID0ge1xuICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICBjbGllbnRWZXJzaW9uLFxuICAgICAgICBiZWFyZXJUb2tlbjogdG9rZW4sXG4gICAgICAgIGZhaWx1cmVDb3VudCxcbiAgICAgICAgaHR0cFJvdW5kVHJpcFRpbWU6IHRoaXMuX3JvdW5kVHJpcFRpbWUsXG4gICAgICAgIG5hbWUsXG4gICAgICAgIHNldFJlbW90ZURlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgICBzZXNzaW9uRGVzY3JpcHRpb246IHtcbiAgICAgICAgICAgIHR5cGU6IGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uLnR5cGUsXG4gICAgICAgICAgICBzZHA6IGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uLnNkcFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb246IHtcbiAgICAgICAgICBzdHJlYW1JZDogJycsXG4gICAgICAgICAgYXBpVmVyc2lvblxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keVdpdGhPZmZlcikpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBib2R5V2l0aG91dE9mZmVyOiBJUHVibGlzaFdpdGhvdXRPZmZlclJlcXVlc3QgPSB7XG4gICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgIGNsaWVudFZlcnNpb24sXG4gICAgICAgIGJlYXJlclRva2VuOiB0b2tlbixcbiAgICAgICAgZmFpbHVyZUNvdW50LFxuICAgICAgICBodHRwUm91bmRUcmlwVGltZTogdGhpcy5fcm91bmRUcmlwVGltZSxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvbjoge1xuICAgICAgICAgIHN0cmVhbUlkOiAnJyxcbiAgICAgICAgICBhcGlWZXJzaW9uXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5V2l0aG91dE9mZmVyKSk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGxldCBodHRwUmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCB0aW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgICAgaHR0cFJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godXJsLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgYm9keTogZm9ybURhdGFcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPihyZXNvbHZlID0+XG4gICAgICAgICAgdGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcHVibGlzaCcsIG5ldyBFcnJvcihgUHVibGlzaCB0aW1lZCBvdXQgWyR7dXJsfV1gKSk7XG4gICAgICAgICAgICByZXNvbHZlKHtzdGF0dXM6IDQwOH0gYXMgUmVzcG9uc2UpO1xuICAgICAgICAgIH0sIHRoaXMuX3RpbWVvdXQpKVxuICAgICAgXSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBwdWJsaXNoJywgZSk7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAnZmFpbGVkJ307XG4gICAgfVxuXG4gICAgY29uc3QganNvblJlc3BvbnNlQm9keSA9IGF3YWl0IHRoaXMucGFyc2VKc29uQm9keTxJUHVibGlzaFN1Y2Nlc3NSZXNwb25zZT4oaHR0cFJlc3BvbnNlKTtcblxuICAgIHRoaXMuaGFuZGxlU3RyZWFtUmVzcG9uc2VDb250ZXh0KGpzb25SZXNwb25zZUJvZHk/LnN0cmVhbVJlc3BvbnNlQ29udGV4dCk7XG5cbiAgICBjb25zdCBzdGF0dXM6IFB1Ymxpc2hTdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb1B1Ymxpc2hTdGF0dXMoaHR0cFJlc3BvbnNlKTtcblxuICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgIHJldHVybiB7c3RhdHVzfTtcbiAgICB9XG5cbiAgICBpZiAoIWpzb25SZXNwb25zZUJvZHkpIHtcbiAgICAgIHJldHVybiB7c3RhdHVzOiAnZmFpbGVkJ307XG4gICAgfVxuXG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHB1Ymxpc2hSZXNwb25zZSA9IHRoaXMubm9ybWFsaXplUHVibGlzaFJlc3BvbnNlKHRlbmFuY3ksIGpzb25SZXNwb25zZUJvZHkpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdHb3QgcHVibGlzaCByZXNwb25zZSBbJWpdIGluIFslc10gbXMnLCBwdWJsaXNoUmVzcG9uc2UsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgcmV0dXJuIHB1Ymxpc2hSZXNwb25zZTtcbiAgfVxuXG4gIGFzeW5jIHNldFJlbW90ZURlc2NyaXB0aW9uKHN0cmVhbTogSVN0cmVhbSwgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0KTogUHJvbWlzZTxJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFtzdHJlYW0udGVuYW5jeSwgJ3N0cmVhbScsIHN0cmVhbS5zdHJlYW1JZCwgJ2Rlc2NyaXB0aW9uJywgJ3JlbW90ZSddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgYm9keTogSVNldFJlbW90ZURlc2NyaXB0aW9uUmVxdWVzdCA9IHtcbiAgICAgIGFwaVZlcnNpb24sXG4gICAgICBzaGFyZWRTZWNyZXQ6IHN0cmVhbT8uc2hhcmVkU2VjcmV0LFxuICAgICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiB7XG4gICAgICAgIHR5cGU6IHNlc3Npb25EZXNjcmlwdGlvbi50eXBlLFxuICAgICAgICBzZHA6IHNlc3Npb25EZXNjcmlwdGlvbi5zZHBcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHkpKTtcblxuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBsZXQgaHR0cFJlc3BvbnNlOiBSZXNwb25zZTtcblxuICAgIHRyeSB7XG4gICAgICBsZXQgdGltZW91dDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICAgIGh0dHBSZXNwb25zZSA9IGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmZldGNoKHVybCwge1xuICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgIGJvZHk6IGZvcm1EYXRhXG4gICAgICAgIH0pLFxuICAgICAgICBuZXcgUHJvbWlzZTxSZXNwb25zZT4ocmVzb2x2ZSA9PlxuICAgICAgICAgIHRpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHNldCByZW1vdGUgZGVzY3JpcHRpb24nLCBuZXcgRXJyb3IoYFNldCByZW1vdGUgZGVzY3JpcHRpb24gdGltZWQgb3V0IFske3VybH1dYCkpO1xuICAgICAgICAgICAgcmVzb2x2ZSh7c3RhdHVzOiA0MDh9IGFzIFJlc3BvbnNlKTtcbiAgICAgICAgICB9LCB0aGlzLl90aW1lb3V0KSlcbiAgICAgIF0pXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICBpZiAodGltZW91dCkge1xuICAgICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc2V0IHJlbW90ZSBkZXNjcmlwdGlvbicsIGUpO1xuXG4gICAgICByZXR1cm4ge3N0YXR1czogJ2ZhaWxlZCd9O1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXR1czogU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb1NldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzKGh0dHBSZXNwb25zZSk7XG5cbiAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICByZXR1cm4ge3N0YXR1c307XG4gICAgfVxuXG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNvbnZlcnRIdHRwUmVzcG9uc2VUb1NldFJlbW90ZURlc2NyaXB0aW9uKGh0dHBSZXNwb25zZSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ0dvdCBzZXQgcmVtb3RlIGRlc2NyaXB0aW9uIHJlc3BvbnNlIFslal0gaW4gWyVzXSBtcycsIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgcmV0dXJuIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U7XG4gIH1cblxuICBhc3luYyBsaW1pdEJpdHJhdGUoXG4gICAgc3RyZWFtOiBJU3RyZWFtLFxuICAgIGVsYXBzZWRJbk1pbGxpc2Vjb25kczogbnVtYmVyLFxuICAgIGJpdHJhdGVJbkJpdHNQZXJTZWNvbmQ6IEJpdHNQZXJTZWNvbmQsXG4gICAgYml0cmF0ZVN0YXRlOiBCaXRyYXRlU3RhdGUsXG4gICAgYml0cmF0ZU1vZGU6IEJpdHJhdGVNb2RlLFxuICApOiBQcm9taXNlPElTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3N0cmVhbS50ZW5hbmN5LCAnc3RyZWFtJywgc3RyZWFtLnN0cmVhbUlkLCAnYml0cmF0ZSddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgYm9keTogSVNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlID0ge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHNoYXJlZFNlY3JldDogc3RyZWFtLnNoYXJlZFNlY3JldCxcbiAgICAgIGVsYXBzZWRJbk1pbGxpc2Vjb25kcyxcbiAgICAgIGJpdHJhdGVJbkJpdHNQZXJTZWNvbmQsXG4gICAgICBiaXRyYXRlU3RhdGU6IEJpdHJhdGVTdGF0ZU1hcHBpbmcuY29udmVydEJpdHJhdGVTdGF0ZVRvQml0cmF0ZVN0YXRlVHlwZShiaXRyYXRlU3RhdGUpLFxuICAgICAgYml0cmF0ZU1vZGU6IEJpdHJhdGVNb2RlTWFwcGluZy5jb252ZXJ0Qml0cmF0ZU1vZGVUb0JpdHJhdGVNb2RlVHlwZShiaXRyYXRlTW9kZSlcbiAgICB9O1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHkpKTtcblxuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBsZXQgaHR0cFJlc3BvbnNlOiBSZXNwb25zZTtcblxuICAgIHRyeSB7XG4gICAgICBsZXQgdGltZW91dDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICAgIGh0dHBSZXNwb25zZSA9IGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmZldGNoKHVybCwge1xuICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgIGJvZHk6IGZvcm1EYXRhXG4gICAgICAgIH0pLFxuICAgICAgICBuZXcgUHJvbWlzZTxSZXNwb25zZT4ocmVzb2x2ZSA9PlxuICAgICAgICAgIHRpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHNldCBsaW1pdCBiaXRyYXRlIHRpbWVkJywgbmV3IEVycm9yKGBTZXQgbGltaXQgYml0cmF0ZSB0aW1lZCBvdXQgWyR7dXJsfV1gKSk7XG4gICAgICAgICAgICByZXNvbHZlKHtzdGF0dXM6IDQwOH0gYXMgUmVzcG9uc2UpO1xuICAgICAgICAgIH0sIHRoaXMuX3RpbWVvdXQpKVxuICAgICAgXSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBzZXQgbGltaXQgYml0cmF0ZSB0aW1lZCcsIGUpO1xuXG4gICAgICByZXR1cm4ge3N0YXR1czogJ2ZhaWxlZCd9O1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXR1czogU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzKGh0dHBSZXNwb25zZSk7XG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0dvdCBzZXQgbGltaXQgYml0cmF0ZSByZXNwb25zZSBbJXNdIGluIFslc10gbXMnLCBzdGF0dXMsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgcmV0dXJuIHtzdGF0dXN9O1xuICB9XG5cbiAgYXN5bmMgYWRkSWNlQ2FuZGlkYXRlcyhzdHJlYW06IElTdHJlYW0sIGNhbmRpZGF0ZXM6IFJUQ0ljZUNhbmRpZGF0ZVtdLCBkaXNjb3ZlcnlDb21wbGV0ZWQ6IGJvb2xlYW4sIG9wdGlvbnM6IHN0cmluZ1tdID0gW10pOiBQcm9taXNlPElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbc3RyZWFtLnRlbmFuY3ksICdzdHJlYW0nLCBzdHJlYW0uc3RyZWFtSWQsICdpY2UnLCAnY2FuZGlkYXRlcyddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgYm9keTogSUFkZEljZUNhbmRpZGF0ZXNSZXF1ZXN0ID0ge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHNoYXJlZFNlY3JldDogc3RyZWFtLnNoYXJlZFNlY3JldCxcbiAgICAgIGNhbmRpZGF0ZXMsXG4gICAgICBkaXNjb3ZlcnlDb21wbGV0ZWQsXG4gICAgICBvcHRpb25zXG4gICAgfTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5KSk7XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgbGV0IGh0dHBSZXNwb25zZTogUmVzcG9uc2U7XG5cbiAgICB0cnkge1xuICAgICAgbGV0IHRpbWVvdXQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgICBodHRwUmVzcG9uc2UgPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh1cmwsIHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICBib2R5OiBmb3JtRGF0YVxuICAgICAgICB9KSxcbiAgICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KHJlc29sdmUgPT5cbiAgICAgICAgICB0aW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBhZGQgaWNlIGNhbmRpZGF0ZXMnLCBuZXcgRXJyb3IoYEFkZCBpY2UgY2FuZGlkYXRlcyB0aW1lZCBvdXQgWyR7dXJsfV1gKSk7XG4gICAgICAgICAgICByZXNvbHZlKHtzdGF0dXM6IDQwOH0gYXMgUmVzcG9uc2UpO1xuICAgICAgICAgIH0sIHRoaXMuX3RpbWVvdXQpKVxuICAgICAgXSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBhZGQgaWNlIGNhbmRpZGF0ZXMnLCBlKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICdmYWlsZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0dXM6IEFkZEljZUNhbmRpZGF0ZXNTdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb0FkZEljZUNhbmRpZGF0ZXNTdGF0dXMoaHR0cFJlc3BvbnNlKTtcblxuICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgIHJldHVybiB7c3RhdHVzfTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG4gICAgY29uc3QgYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlID0gYXdhaXQgdGhpcy5jb252ZXJ0SHR0cFJlc3BvbnNlVG9BZGRJY2VDYW5kaWRhdGVzKGh0dHBSZXNwb25zZSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnR290IGFkZCBJQ0UgY2FuZGlkYXRlcyByZXNwb25zZSBbJWpdIGluIFslc10gbXMnLCBhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2UsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgcmV0dXJuIGFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZTtcbiAgfVxuXG4gIGFzeW5jIGRlc3Ryb3lTdHJlYW0oc3RyZWFtOiBJU3RyZWFtLCByZWFzb246IHN0cmluZyk6IFByb21pc2U8SURlc3Ryb3lTdHJlYW1SZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFtzdHJlYW0udGVuYW5jeSwgJ3N0cmVhbScsIHN0cmVhbS5zdHJlYW1JZCwgJ2Rlc3Ryb3knXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGJvZHk6IElEZXN0cm95U3RyZWFtUmVxdWVzdCA9IHtcbiAgICAgIGFwaVZlcnNpb24sXG4gICAgICBzaGFyZWRTZWNyZXQ6IHN0cmVhbS5zaGFyZWRTZWNyZXQsXG4gICAgICByZWFzb24sXG4gICAgICBvcHRpb25zOiBbXVxuICAgIH07XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGxldCBodHRwUmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCB0aW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgICAgaHR0cFJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godXJsLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgYm9keTogZm9ybURhdGEsXG4gICAgICAgICAgY2FjaGU6ICduby1jYWNoZSdcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPihyZXNvbHZlID0+XG4gICAgICAgICAgdGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc3Vic2NyaWJlJywgbmV3IEVycm9yKGBEZWxldGUgc3RyZWFtIHRpbWVkIG91dCBbJHt1cmx9XWApKTtcbiAgICAgICAgICAgIHJlc29sdmUoe3N0YXR1czogNDA4fSBhcyBSZXNwb25zZSk7XG4gICAgICAgICAgfSwgdGhpcy5fdGltZW91dCkpXG4gICAgICBdKVxuICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIGRlbGV0ZSBzdHJlYW0nLCBlKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICdmYWlsZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0dXM6IERlc3Ryb3lTdHJlYW1TdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb1NldERlc3Ryb3lTdHJlYW1TdGF0dXMoaHR0cFJlc3BvbnNlKTtcblxuICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgIHJldHVybiB7c3RhdHVzfTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG4gICAgY29uc3QgZGVzdHJveVN0cmVhbVJlc3BvbnNlID0gYXdhaXQgdGhpcy5jb252ZXJ0SHR0cFJlc3BvbnNlVG9EZXN0cm95U3RyZWFtKGh0dHBSZXNwb25zZSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnR290IGRlc3Ryb3kgc3RyZWFtIHJlc3BvbnNlIFslal0gaW4gWyVzXSBtcycsIGRlc3Ryb3lTdHJlYW1SZXNwb25zZSwgZmluaXNoZWQgLSBzdGFydCk7XG5cbiAgICByZXR1cm4gZGVzdHJveVN0cmVhbVJlc3BvbnNlO1xuICB9XG5cbiAgYXN5bmMgZGVzdHJveVN0cmVhbU9uVW5tb3VudChzdHJlYW06IElTdHJlYW0sIHJlYXNvbjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgc2VuZEJlYWNvbiA9IEdsb2JhbFNjb3BlLnZhbHVlLnNlbmRCZWFjb247XG5cbiAgICBpZiAoIXNlbmRCZWFjb24pIHtcbiAgICAgIHRoaXMuZGVzdHJveVN0cmVhbShzdHJlYW0sIHJlYXNvbikuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gZGVzdHJveSBzdHJlYW0gb24gdW5tb3VudCcsIGVycik7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3N0cmVhbS50ZW5hbmN5LCAnc3RyZWFtJywgc3RyZWFtLnN0cmVhbUlkLCAnZGVzdHJveSddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgYm9keTogSURlc3Ryb3lTdHJlYW1SZXF1ZXN0ID0ge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHNoYXJlZFNlY3JldDogc3RyZWFtLnNoYXJlZFNlY3JldCxcbiAgICAgIHJlYXNvbixcbiAgICAgIG9wdGlvbnM6IFtdXG4gICAgfTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5KSk7XG5cbiAgICBzZW5kQmVhY29uKHVybCwgZm9ybURhdGEpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFVybChwYXRoOiBzdHJpbmdbXSk6IFVSTCB7XG4gICAgY29uc3QgdXJpID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh0aGlzLl91cmkpO1xuICAgIGNvbnN0IHBhdGhBc0FycmF5ID0gdXJpLnBhdGhuYW1lLnNwbGl0KCcvJyk7XG5cbiAgICBwYXRoQXNBcnJheS5sZW5ndGggPSBwYXRoQXNBcnJheS5sZW5ndGggLSAxO1xuXG4gICAgdXJpLnBhdGhuYW1lID0gcGF0aEFzQXJyYXkuY29uY2F0KC4uLnBhdGgpLmpvaW4oJy8nKTtcblxuICAgIHJldHVybiB1cmk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkUGluZ1VybCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHVyaSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodGhpcy5fdXJpKTtcbiAgICBjb25zdCBzZGtWZXJzaW9uID0gVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbjtcbiAgICBjb25zdCBpbnRlbnRpb25zID0gUGFyYW1ldGVycy5kaXNjb3ZlcnlQYXJhbWV0ZXJzLmludGVudGlvbnM7XG5cbiAgICB1cmkuc2VhcmNoUGFyYW1zLnNldCgndHlwZScsICdodHRwJyk7XG4gICAgdXJpLnNlYXJjaFBhcmFtcy5zZXQoJ3ZlcnNpb24nLCBzZGtWZXJzaW9uKTtcbiAgICB1cmkuc2VhcmNoUGFyYW1zLnNldCgnaW50ZW50aW9ucycsIGludGVudGlvbnMpO1xuICAgIHVyaS5zZWFyY2hQYXJhbXMuc2V0KCdfJywgYCR7RGF0ZS5ub3coKX1gKTtcblxuICAgIHJldHVybiB1cmkudG9TdHJpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcGFyc2VKc29uQm9keTxUPihyZXNwb25zZTogUmVzcG9uc2UpOiBQcm9taXNlPFQgfCB1bmRlZmluZWQ+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIEV4cGVjdGVkIGZvciByZXNwb25zZXMgd2l0aG91dCBhIEpTT04gYm9keSAodGltZW91dCwgZW1wdHkgZXJyb3IgcmVzcG9uc2VzKVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVN0cmVhbVJlc3BvbnNlQ29udGV4dChjb250ZXh0PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB2b2lkIHtcbiAgICBpZiAoIWNvbnRleHQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnc3RyZWFtIHJlc3BvbnNlIGNvbnRleHQgWyVqXScsIGNvbnRleHQpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBIdHRwU3RhdHVzVG9QdWJsaXNoU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IFB1Ymxpc2hTdGF0dXMge1xuICAgIGlmICghcmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDAyOlxuICAgICAgICByZXR1cm4gJ2dlby1yZXN0cmljdGVkJztcbiAgICAgIGNhc2UgNDAzOlxuICAgICAgICByZXR1cm4gJ2dlby1ibG9ja2VkJztcbiAgICAgIGNhc2UgNDA2OlxuICAgICAgICByZXR1cm4gJ21pc3NpbmctY2hhbm5lbC1vci1yb29tLWlkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA0MDk6XG4gICAgICAgIHJldHVybiAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnO1xuICAgICAgY2FzZSA0MTU6XG4gICAgICAgIHJldHVybiAnZm9yYmlkZGVuLXRhZyc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvU3Vic2NyaWJlU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IFN1YnNjcmliZVN0YXR1cyB7XG4gICAgaWYgKCFyZXNwb25zZSkge1xuICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cblxuICAgIHN3aXRjaCAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICBjYXNlIDIwMDpcbiAgICAgICAgcmV0dXJuICdvayc7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnO1xuICAgICAgY2FzZSA0MDI6XG4gICAgICAgIHJldHVybiAnZ2VvLXJlc3RyaWN0ZWQnO1xuICAgICAgY2FzZSA0MDM6XG4gICAgICAgIHJldHVybiAnZ2VvLWJsb2NrZWQnO1xuICAgICAgY2FzZSA0MDg6XG4gICAgICAgIHJldHVybiAndGltZW91dCc7XG4gICAgICBjYXNlIDQwOTpcbiAgICAgICAgcmV0dXJuICdwb3J0LWluLXJhbmdlLW5vdC1mb3VuZCc7XG4gICAgICBjYXNlIDQxNTpcbiAgICAgICAgcmV0dXJuICdmb3JiaWRkZW4tdGFnJztcbiAgICAgIGNhc2UgNTAzOlxuICAgICAgICByZXR1cm4gJ2NhcGFjaXR5JztcbiAgICAgIGNhc2UgNTA0OlxuICAgICAgICByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXBIdHRwU3RhdHVzVG9TZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyhyZXNwb25zZTogUmVzcG9uc2UpOiBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyB7XG4gICAgaWYgKCFyZXNwb25zZSkge1xuICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cblxuICAgIHN3aXRjaCAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICBjYXNlIDIwMDpcbiAgICAgICAgcmV0dXJuICdvayc7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnO1xuICAgICAgY2FzZSA0MDg6XG4gICAgICAgIHJldHVybiAndGltZW91dCc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlKTogU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMge1xuICAgIGlmICghcmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb0FkZEljZUNhbmRpZGF0ZXNTdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlKTogQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyB7XG4gICAgaWYgKCFyZXNwb25zZSkge1xuICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cblxuICAgIHN3aXRjaCAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICBjYXNlIDIwMDpcbiAgICAgICAgcmV0dXJuICdvayc7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnO1xuICAgICAgY2FzZSA0MDg6XG4gICAgICAgIHJldHVybiAndGltZW91dCc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvU2V0RGVzdHJveVN0cmVhbVN0YXR1cyhyZXNwb25zZTogUmVzcG9uc2UpOiBEZXN0cm95U3RyZWFtU3RhdHVzIHtcbiAgICBpZiAoIXJlc3BvbnNlKSB7XG4gICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuXG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgMjAwOlxuICAgICAgICByZXR1cm4gJ29rJztcbiAgICAgIGNhc2UgNDAxOlxuICAgICAgICByZXR1cm4gJ3VuYXV0aG9yaXplZCc7XG4gICAgICBjYXNlIDQwODpcbiAgICAgICAgcmV0dXJuICd0aW1lb3V0JztcbiAgICAgIGNhc2UgNTAzOlxuICAgICAgICByZXR1cm4gJ2NhcGFjaXR5JztcbiAgICAgIGNhc2UgNTA0OlxuICAgICAgICByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBub3JtYWxpemVTdWJzY3JpYmVSZXNwb25zZSh0ZW5hbmN5OiBzdHJpbmcsIGRhdGE6IElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2UpOiBJU3Vic2NyaWJlU3VjY2Vzc1Jlc3BvbnNlSW5pdCB7XG4gICAgY29uc3Qge1xuICAgICAgc3RhdHVzLFxuICAgICAgc3RyZWFtSWQsXG4gICAgICBzaGFyZWRTZWNyZXQsXG4gICAgICBsYWcsXG4gICAgICBydGNDb25maWd1cmF0aW9uLFxuICAgICAgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSxcbiAgICAgIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UsXG4gICAgICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2VcbiAgICB9ID0gZGF0YTtcbiAgICBjb25zdCBzdWJzY3JpYmVSZXNwb25zZTogSVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZUluaXQgPSB7XG4gICAgICBzdGF0dXMsXG4gICAgICBzdHJlYW06IHtcbiAgICAgICAgdGVuYW5jeSxcbiAgICAgICAgc3RyZWFtSWQsXG4gICAgICAgIHNoYXJlZFNlY3JldFxuICAgICAgfSxcbiAgICAgIGxhZ1xuICAgIH07XG5cbiAgICBpZiAocnRjQ29uZmlndXJhdGlvbikge1xuICAgICAgc3Vic2NyaWJlUmVzcG9uc2UucnRjQ29uZmlndXJhdGlvbiA9IHRoaXMuY29udmVydElSdGNDb25maWd1cmF0aW9uVG9SVENDb25maWd1cmF0aW9uKHJ0Y0NvbmZpZ3VyYXRpb24pO1xuICAgIH1cblxuICAgIGlmIChzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlPy5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgIHN1YnNjcmliZVJlc3BvbnNlLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgfVxuXG4gICAgaWYgKGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2U/LnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgc3Vic2NyaWJlUmVzcG9uc2UuY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSA9IHtzZXNzaW9uRGVzY3JpcHRpb246IGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICB9XG5cbiAgICBpZiAoY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlPy5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgIHN1YnNjcmliZVJlc3BvbnNlLmNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSA9IHtzZXNzaW9uRGVzY3JpcHRpb246IGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb259O1xuICAgIH1cblxuICAgIHJldHVybiBzdWJzY3JpYmVSZXNwb25zZTtcbiAgfVxuXG4gIHByaXZhdGUgbm9ybWFsaXplUHVibGlzaFJlc3BvbnNlKHRlbmFuY3k6IHN0cmluZywgZGF0YTogSVB1Ymxpc2hTdWNjZXNzUmVzcG9uc2UpOiBJUHVibGlzaFN1Y2Nlc3NSZXNwb25zZUluaXQge1xuICAgIGNvbnN0IHB1Ymxpc2hSZXNwb25zZTogSVB1Ymxpc2hTdWNjZXNzUmVzcG9uc2VJbml0ID0ge1xuICAgICAgc3RhdHVzOiBkYXRhLnN0YXR1cyxcbiAgICAgIHN0cmVhbToge1xuICAgICAgICB0ZW5hbmN5LFxuICAgICAgICBzdHJlYW1JZDogZGF0YS5zdHJlYW1JZCxcbiAgICAgICAgc2hhcmVkU2VjcmV0OiBkYXRhLnNoYXJlZFNlY3JldFxuICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAoZGF0YS5ydGNDb25maWd1cmF0aW9uKSB7XG4gICAgICBwdWJsaXNoUmVzcG9uc2UucnRjQ29uZmlndXJhdGlvbiA9IHRoaXMuY29udmVydElSdGNDb25maWd1cmF0aW9uVG9SVENDb25maWd1cmF0aW9uKGRhdGEucnRjQ29uZmlndXJhdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKGRhdGEuc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSAmJiBkYXRhLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBwdWJsaXNoUmVzcG9uc2Uuc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSA9IHtzZXNzaW9uRGVzY3JpcHRpb246IGRhdGEuc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb259O1xuICAgIH1cblxuICAgIGlmIChkYXRhLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UgJiYgZGF0YS5jcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgcHVibGlzaFJlc3BvbnNlLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBkYXRhLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICB9XG5cbiAgICBpZiAoZGF0YS5jcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UgJiYgZGF0YS5jcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBwdWJsaXNoUmVzcG9uc2UuY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlID0ge3Nlc3Npb25EZXNjcmlwdGlvbjogZGF0YS5jcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHVibGlzaFJlc3BvbnNlO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0SVJ0Y0NvbmZpZ3VyYXRpb25Ub1JUQ0NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbjogUlRDQ29uZmlndXJhdGlvbik6IFJUQ0NvbmZpZ3VyYXRpb24ge1xuICAgIGNvbnN0IHJ0Y0NvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24gPSB7aWNlU2VydmVyczogW119O1xuXG4gICAgaWYgKGNvbmZpZ3VyYXRpb24uYnVuZGxlUG9saWN5KSB7XG4gICAgICBydGNDb25maWd1cmF0aW9uLmJ1bmRsZVBvbGljeSA9IGNvbmZpZ3VyYXRpb24uYnVuZGxlUG9saWN5O1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgY29uZmlndXJhdGlvbi5pY2VDYW5kaWRhdGVQb29sU2l6ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24uaWNlQ2FuZGlkYXRlUG9vbFNpemUgPSBjb25maWd1cmF0aW9uLmljZUNhbmRpZGF0ZVBvb2xTaXplO1xuICAgIH1cblxuICAgIGlmIChjb25maWd1cmF0aW9uLmljZVNlcnZlcnMpIHtcbiAgICAgIGNvbnN0IGljZVNlcnZlcnM6IFJUQ0ljZVNlcnZlcltdID0gW107XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGljZVNlcnZlcnMucHVzaCh7XG4gICAgICAgICAgdXJsczogY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLnVybHMsXG4gICAgICAgICAgdXNlcm5hbWU6IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS51c2VybmFtZSxcbiAgICAgICAgICBjcmVkZW50aWFsOiBjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0uY3JlZGVudGlhbFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcnRjQ29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzID0gaWNlU2VydmVycztcbiAgICB9XG5cbiAgICBpZiAoY29uZmlndXJhdGlvbi5pY2VUcmFuc3BvcnRQb2xpY3kpIHtcbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24uaWNlVHJhbnNwb3J0UG9saWN5ID0gY29uZmlndXJhdGlvbi5pY2VUcmFuc3BvcnRQb2xpY3k7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZ3VyYXRpb24ucnRjcE11eFBvbGljeSkge1xuICAgICAgcnRjQ29uZmlndXJhdGlvbi5ydGNwTXV4UG9saWN5ID0gY29uZmlndXJhdGlvbi5ydGNwTXV4UG9saWN5O1xuICAgIH1cblxuICAgIHJldHVybiBydGNDb25maWd1cmF0aW9uO1xuICB9XG4gIHByaXZhdGUgYXN5bmMgY29udmVydEh0dHBSZXNwb25zZVRvU2V0UmVtb3RlRGVzY3JpcHRpb24ocmVzcG9uc2U6IFJlc3BvbnNlKTogUHJvbWlzZTxJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpIGFzIElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlO1xuICAgIGNvbnN0IHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U6IElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlSW5pdCA9IHtzdGF0dXM6IGRhdGEuc3RhdHVzfTtcblxuICAgIGlmIChkYXRhICYmIGRhdGEuc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbiA9IGRhdGEuc2Vzc2lvbkRlc2NyaXB0aW9uO1xuICAgIH1cblxuICAgIHJldHVybiBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb252ZXJ0SHR0cFJlc3BvbnNlVG9BZGRJY2VDYW5kaWRhdGVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IFByb21pc2U8SUFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpIGFzIElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2U7XG4gICAgY29uc3QgYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlOiBJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlSW5pdCA9IHtcbiAgICAgIHN0YXR1czogZGF0YS5zdGF0dXMsXG4gICAgICBvcHRpb25zOiBbXVxuICAgIH07XG5cbiAgICBpZiAoZGF0YSkge1xuICAgICAgaWYgKGRhdGEub3B0aW9ucykge1xuICAgICAgICBhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2Uub3B0aW9ucyA9IGRhdGEub3B0aW9ucztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb252ZXJ0SHR0cFJlc3BvbnNlVG9EZXN0cm95U3RyZWFtKHJlc3BvbnNlOiBSZXNwb25zZSk6IFByb21pc2U8SURlc3Ryb3lTdHJlYW1SZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpIGFzIElEZXN0cm95U3RyZWFtUmVzcG9uc2U7XG4gICAgY29uc3QgZGVzdHJveVN0cmVhbTogSURlc3Ryb3lTdHJlYW1SZXNwb25zZUluaXQgPSB7c3RhdHVzOiBkYXRhLnN0YXR1c307XG5cbiAgICByZXR1cm4gZGVzdHJveVN0cmVhbTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uLy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcbmltcG9ydCB7RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24sIFJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiwgUnRwVGltZXN0YW1wfSBmcm9tICcuL0ZyYW1lVGltaW5nSW5mb3JtYXRpb24nO1xuaW1wb3J0IHtWaWRlb0NvZGVjfSBmcm9tICcuLi9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL1ZpZGVvQ29kZWMnO1xuaW1wb3J0IHtNZXRhZGF0YU1lc3NhZ2VQYXlsb2FkLCBUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUsIFRyYW5zZm9ybU1lc3NhZ2VQYXlsb2FkfSBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi93b3JrZXIvVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlJztcbmltcG9ydCBUcmFuc2Zvcm1NZXNzYWdlUm91dGVyIGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL3dvcmtlci9NZXNzYWdlUm91dGVyJztcblxuZXhwb3J0IHR5cGUgRnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXJDb250ZXh0ID0ge1xuICBjb2RlYzogVmlkZW9Db2RlYztcbiAgc3RyZWFtSWQ6IHN0cmluZztcbiAgdmlkZW9FbGVtZW50OiBTdWJqZWN0PEhUTUxWaWRlb0VsZW1lbnQgfCBudWxsPjtcbiAgZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0OiBTdWJqZWN0PERlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD47XG4gIHJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3Q6IFN1YmplY3Q8UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD47XG4gIGlzRW5hYmxlZFN1YmplY3Q6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHJlY2VpdmVyOiBSVENSdHBSZWNlaXZlcjtcbiAgbWlkOiBzdHJpbmc7XG4gIHRyYWNrSWQ6IHN0cmluZztcbiAgdHJhbnNmb3JtRnVuY3Rpb25OYW1lczogc3RyaW5nW107XG4gIHRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXI6IFRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXI7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlciBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3RyYW5zZm9ybU5hbWUgPSAnZnJhbWUtdGltaW5nLWluZm9ybWF0aW9uJztcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ0ZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2RlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uQnlSdHBUaW1lc3RhbXA6IE1hcDxSdHBUaW1lc3RhbXAsIERlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uPiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdmlkZW9FbGVtZW50RGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICBwcml2YXRlIF9jdXJyZW50UGxheWJhY2tTdGF0ZTogJ3BsYXlpbmcnIHwgJ3BhdXNlZCcgfCAnc3RhbGxlZCcgfCAnZW5kZWQnIHwgJ2Vycm9yJyB8ICd3YWl0aW5nJyA9ICd3YWl0aW5nJztcbiAgcHJpdmF0ZSBfYXJtZWRWaWRlb0ZyYW1lQ2FsbGJhY2tJZDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX2Rpc3Bvc2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoY29udGV4dDogRnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXJDb250ZXh0KSB7XG4gICAgdGhpcy5pbml0aWFsaXplKGNvbnRleHQpO1xuICB9XG5cbiAgcHVibGljIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcG9zZWQgPSB0cnVlO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZShjb250ZXh0OiBGcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlckNvbnRleHQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY2FuUHJvY2Vzc0ZyYW1lVGltaW5nSW5mb3JtYXRpb24oY29udGV4dC5zdHJlYW1JZCwgY29udGV4dC5jb2RlYywgY29udGV4dC5yZWNlaXZlciwgY29udGV4dC5taWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZXR1cFZpZGVvRWxlbWVudEhhbmRsaW5nKGNvbnRleHQudmlkZW9FbGVtZW50LCBjb250ZXh0LnJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3QpO1xuICAgIHRoaXMuc2V0dXBGcmFtZVRpbWluZ0luZm9ybWF0aW9uVHJhbnNmb3JtKGNvbnRleHQuY29kZWMsIGNvbnRleHQubWlkLCBjb250ZXh0LnRyYWNrSWQsIGNvbnRleHQudHJhbnNmb3JtTWVzc2FnZVJvdXRlciwgY29udGV4dC50cmFuc2Zvcm1GdW5jdGlvbk5hbWVzLCBjb250ZXh0LmRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdCk7XG4gICAgY29udGV4dC5pc0VuYWJsZWRTdWJqZWN0LnZhbHVlID0gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgY2FuUHJvY2Vzc0ZyYW1lVGltaW5nSW5mb3JtYXRpb24oc3RyZWFtSWQ6IHN0cmluZywgY29kZWM6IFZpZGVvQ29kZWMsIHJlY2VpdmVyOiBSVENSdHBSZWNlaXZlciwgbWlkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoY29kZWMgIT09IFZpZGVvQ29kZWMuSDI2NCkge1xuICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ1slc10gU2tpcHBpbmcgZnJhbWUgdGltaW5nIGluZm9ybWF0aW9uIGZvciB2aWRlbyB0cmFjayBiZWNhdXNlIHZpZGVvIGNvZGVjIGlzIG5vdCBIMjY0Jywgc3RyZWFtSWQpO1xuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCFyZWNlaXZlcikge1xuICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ1slc10gU2tpcHBpbmcgZnJhbWUgdGltaW5nIGluZm9ybWF0aW9uIGZvciB2aWRlbyB0cmFjayBiZWNhdXNlIG5vIHJlY2VpdmVyIHdhcyBmb3VuZCcsIHN0cmVhbUlkKTtcblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghbWlkKSB7XG4gICAgICB0aGlzLl9sb2dnZXIud2FybignWyVzXSBTa2lwcGluZyBmcmFtZSB0aW1pbmcgaW5mb3JtYXRpb24gZm9yIHZpZGVvIHRyYWNrIGJlY2F1c2Ugbm8gbWlkIHdhcyBmb3VuZCcsIHN0cmVhbUlkKTtcblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cEZyYW1lVGltaW5nSW5mb3JtYXRpb25UcmFuc2Zvcm0oY29kZWM6IFZpZGVvQ29kZWMsIG1pZDogc3RyaW5nLCB0cmFja0lkOiBzdHJpbmcsIHRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXI6IFRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXIsIHRyYW5zZm9ybUZ1bmN0aW9uTmFtZXM6IHN0cmluZ1tdLCBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3Q6IFN1YmplY3Q8RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPik6IHZvaWQge1xuICAgIHRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXIucmVnaXN0ZXJSb3V0ZTxUcmFuc2Zvcm1NZXNzYWdlUGF5bG9hZDxNZXRhZGF0YU1lc3NhZ2VQYXlsb2FkPj4oVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlLkZyYW1lVGltaW5nSW5mb3JtYXRpb24sIHRoaXMuaGFuZGxlRnJhbWVUaW1pbmdNZXNzYWdlLmJpbmQodGhpcywgVmlkZW9Db2RlY1tjb2RlY10sIG1pZCEsIHRyYWNrSWQhLCBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3QpKTtcbiAgICB0cmFuc2Zvcm1GdW5jdGlvbk5hbWVzLnB1c2goRnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXIuX3RyYW5zZm9ybU5hbWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVGcmFtZVRpbWluZ01lc3NhZ2UoY29kZWM6IHN0cmluZywgbWlkOiBzdHJpbmcsIHRyYWNrSWQ6IHN0cmluZywgZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0OiBTdWJqZWN0PERlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD4sIG1lc3NhZ2U6IE1ldGFkYXRhTWVzc2FnZVBheWxvYWQpOiB2b2lkIHtcbiAgICBpZiAoIW1lc3NhZ2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IFtydHBUaW1lc3RhbXAsIG1ldGFkYXRhXSBvZiBPYmplY3QuZW50cmllcyhtZXNzYWdlKSkge1xuICAgICAgY29uc3QgcnRwVGltZXN0YW1wTnVtYmVyID0gcGFyc2VJbnQocnRwVGltZXN0YW1wLCAxMCk7XG4gICAgICBjb25zdCBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiA9IG1ldGFkYXRhWydkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiddO1xuXG4gICAgICBpZiAoZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24pIHtcbiAgICAgICAgY29uc3QgZnJhbWVUaW1pbmdJbmZvcm1hdGlvbjogRGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gPSB7XG4gICAgICAgICAgdGltZWNvZGU6IGRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uLnRpbWVjb2RlID8/IG51bGwsXG4gICAgICAgICAgcmVjZWl2ZVRpbWVzdGFtcDogZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24ucmVjZWl2ZVRpbWVzdGFtcCA/PyBudWxsLFxuICAgICAgICAgIGtpbmQ6ICd2aWRlbycsXG4gICAgICAgICAgY29kZWMsXG4gICAgICAgICAgbWlkLFxuICAgICAgICAgIHRyYWNrSWQsXG4gICAgICAgICAgc291cmNlVGltZXN0YW1wOiBudWxsLFxuICAgICAgICAgIGluZ2VzdFRpbWVzdGFtcDogbnVsbCxcbiAgICAgICAgICBlbmNvZGVUaW1lc3RhbXA6IG51bGwsXG4gICAgICAgICAgdHJhbnNjb2RlVGltZXN0YW1wOiBudWxsLFxuICAgICAgICAgIHBsYXliYWNrU3RhdGU6IHRoaXMuX2N1cnJlbnRQbGF5YmFja1N0YXRlXG4gICAgICAgIH07XG5cbiAgICAgICAgZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0LnZhbHVlID0gZnJhbWVUaW1pbmdJbmZvcm1hdGlvbjtcblxuICAgICAgICBpZiAodGhpcy5fY3VycmVudFBsYXliYWNrU3RhdGUgPT09ICdwbGF5aW5nJykge1xuICAgICAgICAgIHRoaXMuX2RlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uQnlSdHBUaW1lc3RhbXAuc2V0KHJ0cFRpbWVzdGFtcE51bWJlciwgZnJhbWVUaW1pbmdJbmZvcm1hdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldHVwVmlkZW9FbGVtZW50SGFuZGxpbmcodmlkZW9FbGVtZW50U3ViamVjdDogU3ViamVjdDxIVE1MVmlkZW9FbGVtZW50IHwgbnVsbD4sIHJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3Q6IFN1YmplY3Q8UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD4pOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gdGhpcy5fZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25CeVJ0cFRpbWVzdGFtcC5jbGVhcigpKSk7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX3ZpZGVvRWxlbWVudERpc3Bvc2FibGVzKTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodmlkZW9FbGVtZW50U3ViamVjdC5zdWJzY3JpYmUodmlkZW9FbGVtZW50ID0+IHtcbiAgICAgIHRoaXMuX3ZpZGVvRWxlbWVudERpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcblxuICAgICAgaWYgKCF2aWRlb0VsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNldHVwVmlkZW9FdmVudExpc3RlbmVycyh2aWRlb0VsZW1lbnQsIHJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3QpO1xuICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlVmlkZW9GcmFtZUNhbGxiYWNrKHZpZGVvRWxlbWVudDogSFRNTFZpZGVvRWxlbWVudCwgcmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdDogU3ViamVjdDxSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPiwgbm93OiBET01IaWdoUmVzVGltZVN0YW1wLCBtZXRhZGF0YTogVmlkZW9GcmFtZUNhbGxiYWNrTWV0YWRhdGEpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZGlzcG9zZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBSZS1yZWdpc3RlciB0aGUgY2FsbGJhY2sgdG8gZW5zdXJlIGl0J3MgY2FsbGVkIGFnYWluXG4gICAgdGhpcy5fYXJtVmlkZW9GcmFtZUNhbGxiYWNrKHZpZGVvRWxlbWVudCwgcmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdCk7XG5cbiAgICBjb25zdCBydHBUaW1lc3RhbXAgPSBtZXRhZGF0YS5ydHBUaW1lc3RhbXA7XG5cbiAgICBpZiAoIXJ0cFRpbWVzdGFtcCkge1xuICAgICAgLy8gVE9ETyAoTkgpOiBBZGQgYSB0aHJvdHRsZWQgbG9nIGluZGljYXRpbmcgdGhhdCBubyBSVFAgdGltZXN0YW1wIHdhcyBmb3VuZFxuICAgICAgLy8gVGhlIHNwZWNpZmljYXRpb24gc2F5cyB0aGF0IGl0J3MgbnVsbGFibGUsIGJ1dCB3ZSBhbHdheXMgaGF2ZSBpdCBpbiBhIFdlYlJUQyBjb250ZXh0XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdGltZXN0YW1wc1RvRGVsZXRlOiBSdHBUaW1lc3RhbXBbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBbdGltZXN0YW1wLCBmcmFtZVRpbWluZ10gb2YgdGhpcy5fZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25CeVJ0cFRpbWVzdGFtcCkge1xuICAgICAgaWYgKHRpbWVzdGFtcCA+IHJ0cFRpbWVzdGFtcCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgcmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdC52YWx1ZSA9IHtcbiAgICAgICAgLi4uZnJhbWVUaW1pbmcsXG4gICAgICAgIHJlbmRlclRpbWVzdGFtcDogbmV3IERhdGUocGVyZm9ybWFuY2UudGltZU9yaWdpbiArIG5vdyksXG4gICAgICAgIHBsYXliYWNrU3RhdGU6ICdwbGF5aW5nJ1xuICAgICAgfTtcblxuICAgICAgdGltZXN0YW1wc1RvRGVsZXRlLnB1c2godGltZXN0YW1wKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHRpbWVzdGFtcCBvZiB0aW1lc3RhbXBzVG9EZWxldGUpIHtcbiAgICAgIHRoaXMuX2RlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uQnlSdHBUaW1lc3RhbXAuZGVsZXRlKHRpbWVzdGFtcCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cFZpZGVvRXZlbnRMaXN0ZW5lcnModmlkZW9FbGVtZW50OiBIVE1MVmlkZW9FbGVtZW50LCByZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0OiBTdWJqZWN0PFJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+KTogdm9pZCB7XG4gICAgY29uc3Qgb25QbGF5aW5nID0gKCkgPT4gdGhpcy5fY3VycmVudFBsYXliYWNrU3RhdGUgPSAncGxheWluZyc7XG5cbiAgICB2aWRlb0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncGxheWluZycsIG9uUGxheWluZyk7XG4gICAgdGhpcy5fdmlkZW9FbGVtZW50RGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHZpZGVvRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdwbGF5aW5nJywgb25QbGF5aW5nKSkpO1xuXG4gICAgY29uc3Qgb25QYXVzZSA9ICgpID0+IHRoaXMuX2N1cnJlbnRQbGF5YmFja1N0YXRlID0gJ3BhdXNlZCc7XG5cbiAgICB2aWRlb0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncGF1c2UnLCBvblBhdXNlKTtcbiAgICB0aGlzLl92aWRlb0VsZW1lbnREaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gdmlkZW9FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BhdXNlJywgb25QYXVzZSkpKTtcblxuICAgIGNvbnN0IG9uU3RhbGxlZCA9ICgpID0+IHRoaXMuX2N1cnJlbnRQbGF5YmFja1N0YXRlID0gJ3N0YWxsZWQnO1xuXG4gICAgdmlkZW9FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3N0YWxsZWQnLCBvblN0YWxsZWQpO1xuICAgIHRoaXMuX3ZpZGVvRWxlbWVudERpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB2aWRlb0VsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc3RhbGxlZCcsIG9uU3RhbGxlZCkpKTtcblxuICAgIGNvbnN0IG9uV2FpdGluZyA9ICgpID0+IHRoaXMuX2N1cnJlbnRQbGF5YmFja1N0YXRlID0gJ3dhaXRpbmcnO1xuXG4gICAgdmlkZW9FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3dhaXRpbmcnLCBvbldhaXRpbmcpO1xuICAgIHRoaXMuX3ZpZGVvRWxlbWVudERpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB2aWRlb0VsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignd2FpdGluZycsIG9uV2FpdGluZykpKTtcblxuICAgIGNvbnN0IG9uRW5kZWQgPSAoKSA9PiB0aGlzLl9jdXJyZW50UGxheWJhY2tTdGF0ZSA9ICdlbmRlZCc7XG5cbiAgICB2aWRlb0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZW5kZWQnLCBvbkVuZGVkKTtcbiAgICB0aGlzLl92aWRlb0VsZW1lbnREaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gdmlkZW9FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2VuZGVkJywgb25FbmRlZCkpKTtcblxuICAgIGNvbnN0IG9uRXJyb3IgPSAoKSA9PiB0aGlzLl9jdXJyZW50UGxheWJhY2tTdGF0ZSA9ICdlcnJvcic7XG5cbiAgICB2aWRlb0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBvbkVycm9yKTtcbiAgICB0aGlzLl92aWRlb0VsZW1lbnREaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gdmlkZW9FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgb25FcnJvcikpKTtcblxuICAgIHRoaXMuX2FybVZpZGVvRnJhbWVDYWxsYmFjayh2aWRlb0VsZW1lbnQsIHJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3QpO1xuICAgIHRoaXMuX3ZpZGVvRWxlbWVudERpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5fYXJtZWRWaWRlb0ZyYW1lQ2FsbGJhY2tJZCkge1xuICAgICAgICB2aWRlb0VsZW1lbnQuY2FuY2VsVmlkZW9GcmFtZUNhbGxiYWNrKHRoaXMuX2FybWVkVmlkZW9GcmFtZUNhbGxiYWNrSWQpO1xuICAgICAgfVxuICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2FybVZpZGVvRnJhbWVDYWxsYmFjayh2aWRlb0VsZW1lbnQ6IEhUTUxWaWRlb0VsZW1lbnQsIHJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3Q6IFN1YmplY3Q8UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD4pOiB2b2lkIHtcbiAgICBpZiAoIXZpZGVvRWxlbWVudC5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fYXJtZWRWaWRlb0ZyYW1lQ2FsbGJhY2tJZCA9IHZpZGVvRWxlbWVudC5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrKHRoaXMuaGFuZGxlVmlkZW9GcmFtZUNhbGxiYWNrLmJpbmQodGhpcywgdmlkZW9FbGVtZW50LCByZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0KSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi8uLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uLy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IHtTdHJlYW1TZXR1cExpc3RlbmVyfSBmcm9tICcuLi8uLi9kb20vU3RyZWFtU2V0dXBMaXN0ZW5lcic7XG5pbXBvcnQgR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIgZnJvbSAnLi4vLi4vZG9tL0dhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyJztcbmltcG9ydCBEdXJhdGlvbnMgZnJvbSAnLi4vLi4vdGltZS9EdXJhdGlvbic7XG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4uLy4uL3J0Yy9JUGVlckNvbm5lY3Rpb24nO1xuaW1wb3J0IFNkcFBhcnNlciBmcm9tICcuLi8uLi9ydGMvU2RwUGFyc2VyJztcbmltcG9ydCBSdGNDb25maWd1cmF0aW9uTWFuYWdlciBmcm9tICcuLi8uLi9ydGMvUnRjQ29uZmlndXJhdGlvbk1hbmFnZXInO1xuaW1wb3J0IFBlZXJDb25uZWN0aW9uU2VydmljZSwge1xuICBkZWZhdWx0VHJhY2tLaW5kcyxcbiAgRW5jb2RlZEluc2VydGFibGVTdHJlYW1zXG59IGZyb20gJy4uLy4uL3J0Yy9QZWVyQ29ubmVjdGlvblNlcnZpY2UnO1xuaW1wb3J0IFJ0Y0Nvbm5lY3Rpb25Nb25pdG9yIGZyb20gJy4uLy4uL3J0Yy9SdGNDb25uZWN0aW9uTW9uaXRvcic7XG5pbXBvcnQgRW5kUG9pbnQsIHtTdWJzY3JpYmVPcHRpb25zLCBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1c30gZnJvbSAnLi4vZGlzY292ZXJ5L0VuZFBvaW50JztcbmltcG9ydCBEaXNjb3ZlcnkgZnJvbSAnLi4vZGlzY292ZXJ5L0Rpc2NvdmVyeSc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuaW1wb3J0IENoYW5uZWxTdGF0ZSBmcm9tICcuLi9jaGFubmVscy9DaGFubmVsU3RhdGUnO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBDaGFubmVsQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L0NoYW5uZWxDb250ZXh0JztcbmltcG9ydCBQZWVyQ29ubmVjdGlvbkNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9QZWVyQ29ubmVjdGlvbkNvbnRleHQnO1xuaW1wb3J0IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9TdHJlYW1UcmFuc2Zvcm1Db250ZXh0JztcbmltcG9ydCBGcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L0ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0JztcbmltcG9ydCBGcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlciwge0ZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyQ29udGV4dH0gZnJvbSAnLi4vZnJhbWVUaW1pbmcvRnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXInO1xuaW1wb3J0IEluc2VydGFibGVTdHJlYW1zIGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL0luc2VydGFibGVTdHJlYW1zJztcbmltcG9ydCB7SVN0cmVhbVN1YnNjcmliZXJ9IGZyb20gJy4vSVN0cmVhbVN1YnNjcmliZXInO1xuaW1wb3J0IFZpZGVvRnJhbWVEZXRlY3RvciBmcm9tICcuL1ZpZGVvRnJhbWVEZXRlY3Rvcic7XG5pbXBvcnQgRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlciwge0VuY29kZWRNZWRpYVRyYW5zZm9ybU1hbmFnZXJDb250ZXh0fSBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi9FbmNvZGVkTWVkaWFUcmFuc2Zvcm1NYW5hZ2VyJztcbmltcG9ydCB7QXVkaW9Db2RlY1R5cGV9IGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvQXVkaW9Db2RlYyc7XG5pbXBvcnQge1ZpZGVvQ29kZWNUeXBlfSBmcm9tICcuLi9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL1ZpZGVvQ29kZWMnO1xuaW1wb3J0IFZpZGVvQ29kZWNNYXBwaW5nIGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvVmlkZW9Db2RlY01hcHBpbmcnO1xuaW1wb3J0IEF1ZGlvQ29kZWNNYXBwaW5nIGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvQXVkaW9Db2RlY01hcHBpbmcnO1xuXG5jb25zdCBpY2VDYW5kaWRhdGVBY2N1bXVsYXRpb25JbnRlcnZhbCA9IDEwMDtcbmNvbnN0IGRlZmF1bHRTdHJlYW1TZXR1cFRpbWVvdXQgPSAzMDAwMDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVhbFRpbWVTdHJlYW1TdWJzY3JpYmVyIGltcGxlbWVudHMgSVN0cmVhbVN1YnNjcmliZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignUmVhbFRpbWVTdHJlYW1TdWJzY3JpYmVyJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jaGFubmVsQ29udGV4dDogQ2hhbm5lbENvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BlZXJDb25uZWN0aW9uQ29udGV4dDogUGVlckNvbm5lY3Rpb25Db250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0OiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dDogRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2hhbmRsZVN0cmVhbUZhaWx1cmU6ICgpID0+IFByb21pc2U8dm9pZD47XG5cbiAgY29uc3RydWN0b3IoY2hhbm5lbENvbnRleHQ6IENoYW5uZWxDb250ZXh0LCBwZWVyQ29ubmVjdGlvbkNvbnRleHQ6IFBlZXJDb25uZWN0aW9uQ29udGV4dCwgc3RyZWFtVHJhbnNmb3JtQ29udGV4dDogU3RyZWFtVHJhbnNmb3JtQ29udGV4dCwgZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQ6IEZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LCBoYW5kbGVTdHJlYW1GYWlsdXJlOiAoKSA9PiBQcm9taXNlPHZvaWQ+KSB7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQgPSBjaGFubmVsQ29udGV4dDtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQgPSBwZWVyQ29ubmVjdGlvbkNvbnRleHQ7XG4gICAgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dCA9IHN0cmVhbVRyYW5zZm9ybUNvbnRleHQ7XG4gICAgdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQgPSBmcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dDtcbiAgICB0aGlzLl9oYW5kbGVTdHJlYW1GYWlsdXJlID0gaGFuZGxlU3RyZWFtRmFpbHVyZTtcbiAgfVxuXG4gIHN0YXJ0KHVyaTogVVJMLCB0b2tlbjogc3RyaW5nLCBsaXN0ZW5PblN0cmVhbVNldHVwOiBTdHJlYW1TZXR1cExpc3RlbmVyLCBwbGF5TWVkaWFTdHJlYW1JblZpZGVvRWxlbWVudDogRnVuY3Rpb24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG5cbiAgICBjb25zdCByZXF1aXJlc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyA9IHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLnZhbHVlXG4gICAgICB8fCB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5zaG91bGRFeHRyYWN0VGltZWNvZGUudmFsdWVcbiAgICAgIHx8IHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnNob3VsZEV4dHJhY3RUaW1lc3RhbXBzLnZhbHVlID8gRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLkVuYWJsZWQgOiBFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMuRGlzYWJsZWQ7XG5cbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoW1xuICAgICAgRGlzY292ZXJ5LmRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50V2l0aENhY2hpbmcodXJpKSxcbiAgICAgIFBlZXJDb25uZWN0aW9uU2VydmljZS5jcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyKCdyZWN2b25seScsIGRlZmF1bHRUcmFja0tpbmRzLCByZXF1aXJlc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcylcbiAgICAgICAgLnRoZW4oKHtsb2NhbE9mZmVyLCBwZWVyQ29ubmVjdGlvbn0pID0+IHtcbiAgICAgICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgPSBwZWVyQ29ubmVjdGlvbjtcblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsb2NhbE9mZmVyLFxuICAgICAgICAgICAgcGVlckNvbm5lY3Rpb25cbiAgICAgICAgICB9O1xuICAgICAgICB9KVxuICAgIF0pXG4gICAgICAudGhlbigoW2VuZFBvaW50LCB7bG9jYWxPZmZlciwgcGVlckNvbm5lY3Rpb259XSkgPT4ge1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5vbmxpbmUudmFsdWUgPSB0cnVlO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZSA9IGVuZFBvaW50O1xuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ29ubmVjdGluZyB0byBbJXNdJywgZW5kUG9pbnQudG9TdHJpbmcoKSk7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdMb2NhbCBvZmZlcjpcXG4nICsgbG9jYWxPZmZlci5zZHApO1xuXG4gICAgICAgIGNvbnN0IHN1YnNjcmliZU9wdGlvbnM6IFN1YnNjcmliZU9wdGlvbnMgPSB7fTtcblxuICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQub25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaykge1xuICAgICAgICAgIHN1YnNjcmliZU9wdGlvbnMub25TdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2sgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5vblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0Lm9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrKSB7XG4gICAgICAgICAgc3Vic2NyaWJlT3B0aW9ucy5vblN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2sgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5vblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5jbGllbnRPZmZlckRpc2FibGVkIHx8ICFwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c1NldENvbmZpZ3VyYXRpb24gfHwgIXBlZXJDb25uZWN0aW9uLnN1cHBvcnRzR2V0Q29uZmlndXJhdGlvbikge1xuICAgICAgICAgIHBlZXJDb25uZWN0aW9uLmNsb3NlKCk7XG4gICAgICAgICAgcGVlckNvbm5lY3Rpb24uZGlzcG9zZSgpO1xuXG4gICAgICAgICAgaWYgKFNESy5mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0ICYmICEoRmVhdHVyZUVuYWJsZW1lbnQuaXNNb2JpbGUgJiYgU0RLLnNraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcykpIHtcbiAgICAgICAgICAgIEdhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyLmZvcmNlR2FyYmFnZUNvbGxlY3Rpb24oKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgPSBudWxsO1xuXG4gICAgICAgICAgcmV0dXJuIGVuZFBvaW50LnN1YnNjcmliZSh0b2tlbiwgbnVsbCwgdGhpcy5fY2hhbm5lbENvbnRleHQuZmFpbHVyZUNvdW50LnZhbHVlLCBzdWJzY3JpYmVPcHRpb25zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBlbmRQb2ludC5zdWJzY3JpYmUodG9rZW4sIGxvY2FsT2ZmZXIsIHRoaXMuX2NoYW5uZWxDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSwgc3Vic2NyaWJlT3B0aW9ucyk7XG4gICAgICB9KVxuICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICBjb25zdCB7c3RhdHVzfSA9IHJlc3BvbnNlO1xuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmV4aXN0cy52YWx1ZSA9IHRoaXMuX2NoYW5uZWxDb250ZXh0Lm1hcFN1YnNjcmliZVN0YXR1c1RvRXhpc3RzKHN0YXR1cyk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gdGhpcy5fY2hhbm5lbENvbnRleHQubWFwU3Vic2NyaWJlU3RhdHVzVG9DaGFubmVsU3RhdHVzKHN0YXR1cyk7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXBwbHlTdGF0dXMoc3RhdHVzKTtcblxuICAgICAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlID0gbnVsbDtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sYWcudmFsdWUgPSB1bmRlZmluZWQgO1xuXG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXBwbHlTZXNzaW9uQW5kU3RyZWFtUHJvcGVydGllc1RvVmlkZW9FbGVtZW50KCk7XG5cbiAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICAgICAgICdbJXNdIFN1YnNjcmliZSBmYWlsZWQgd2l0aCBzdGF0dXMgWyVzXScsXG4gICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICAgIHN0YXR1c1xuICAgICAgICAgICk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7c3RyZWFtLCBydGNDb25maWd1cmF0aW9uLCBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLCBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UsIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UsIGxhZ30gPSByZXNwb25zZTtcblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUgPSBzdHJlYW07XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxhZy52YWx1ZSA9IGxhZztcblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hcHBseVNlc3Npb25BbmRTdHJlYW1Qcm9wZXJ0aWVzVG9WaWRlb0VsZW1lbnQoKTtcblxuICAgICAgICB0aGlzLl9sb2dnZXIuZGVidWcoXG4gICAgICAgICAgJ1slc10gU3Vic2NyaWJlIGNvbXBsZXRlZCBbJXNdIFslal0gWyVqXSBbJWpdIFslal0nLFxuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLFxuICAgICAgICAgIHN0YXR1cyxcbiAgICAgICAgICBydGNDb25maWd1cmF0aW9uLFxuICAgICAgICAgIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UsXG4gICAgICAgICAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLFxuICAgICAgICAgIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2VcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hcHBseVJ0Y0NvbmZpZ3VyYXRpb24odGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlLCBydGNDb25maWd1cmF0aW9uIGFzIFJUQ0NvbmZpZ3VyYXRpb24pXG4gICAgICAgICAgLnRoZW4ocGVlckNvbm5lY3Rpb24gPT4ge1xuICAgICAgICAgICAgbGV0IHN1Ym1pdENhbmRpZGF0ZXNUaW1lb3V0OiB1bmRlZmluZWQgfCBudW1iZXI7XG4gICAgICAgICAgICBsZXQgY2FuY2VsRGlzY292ZXJ5ID0gZmFsc2U7XG4gICAgICAgICAgICBsZXQgZGlzY292ZXJ5Q29tcGxldGVkID0gZmFsc2U7XG4gICAgICAgICAgICBjb25zdCBjYW5kaWRhdGVzOiBSVENJY2VDYW5kaWRhdGVbXSA9IFtdO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSkge1xuICAgICAgICAgICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgPSBwZWVyQ29ubmVjdGlvbjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24ub25pY2VjYW5kaWRhdGUgPSAoZSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlICE9PSBzdHJlYW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlICE9PSBwZWVyQ29ubmVjdGlvbikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChjYW5jZWxEaXNjb3ZlcnkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoIVNESy5zZW5kTG9jYWxDYW5kaWRhdGVzLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKGUuY2FuZGlkYXRlICYmIGUuY2FuZGlkYXRlLmNhbmRpZGF0ZSkge1xuICAgICAgICAgICAgICAgIGNhbmRpZGF0ZXMucHVzaChlLmNhbmRpZGF0ZSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZGlzY292ZXJ5Q29tcGxldGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICghc3VibWl0Q2FuZGlkYXRlc1RpbWVvdXQpIHtcbiAgICAgICAgICAgICAgICBzdWJtaXRDYW5kaWRhdGVzVGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSAhPT0gc3RyZWFtKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgaWYgKGNhbmNlbERpc2NvdmVyeSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZT8uYWRkSWNlQ2FuZGlkYXRlcyhzdHJlYW0sIGNhbmRpZGF0ZXMsIGRpc2NvdmVyeUNvbXBsZXRlZClcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oKHtzdGF0dXMsIG9wdGlvbnN9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ1slc10gRmFpbGVkIHRvIGFkZCBJQ0UgY2FuZGlkYXRlcyB3aXRoIHJlYXNvbiBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIHN0YXR1cyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucz8uaW5jbHVkZXMoJ2NhbmNlbCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYW5jZWxEaXNjb3ZlcnkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEFkZGVkIElDRSBjYW5kaWRhdGVzIHdpdGggcmVhc29uIFslc10gYW5kIG9wdGlvbnMgWyVzXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBzdGF0dXMsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdbJXNdIEZhaWxlZCB0byBhZGQgSUNFIGNhbmRpZGF0ZXMnLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0sIGljZUNhbmRpZGF0ZUFjY3VtdWxhdGlvbkludGVydmFsKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQoc3VibWl0Q2FuZGlkYXRlc1RpbWVvdXQpKSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLm9uaWNlY2FuZGlkYXRlID0gbnVsbDtcbiAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24ub25pY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2UgPSBudWxsO1xuICAgICAgICAgICAgfSkpO1xuXG4gICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5vbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZSA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSAhPT0gc3RyZWFtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSAhPT0gcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjb25zdCByZXRyeUNhbGxiYWNrID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9oYW5kbGVTdHJlYW1GYWlsdXJlKClcbiAgICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICdbJXNdIEZhaWxlZCBoYW5kbGluZyBzdHJlYW0gZmFpbHVyZSBhZnRlciBwZWVyIGNvbm5lY3Rpb24gc3RvcHBlZCB3aXRoIHN0YXRlIFslc10nLFxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLFxuICAgICAgICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICBlXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICBzd2l0Y2ggKHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2NoZWNraW5nJzpcbiAgICAgICAgICAgICAgICBjYXNlICdjb21wbGV0ZWQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2Nvbm5lY3RlZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnbmV3JzpcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2Rpc2Nvbm5lY3RlZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgICAgICAgICAgIGlmIChHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JJc09uTGluZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBJQ0UgY29ubmVjdGlvbiBzdGF0ZSBjaGFuZ2VkIHRvIFslc10sIHRyeWluZyB0byByZWNvbm5lY3QnLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgcGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWNvbm5lY3RQZWVyQ29ubmVjdGlvbih0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgcGVlckNvbm5lY3Rpb24sIHJldHJ5Q2FsbGJhY2spO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgY2FzZSAnY2xvc2VkJzpcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIElDRSBjb25uZWN0aW9uIHN0YXRlIGNoYW5nZWQgdG8gWyVzXSwgcmV0cnlpbmcgdG8gY29ubmVjdCcsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUpO1xuXG4gICAgICAgICAgICAgICAgICByZXRyeUNhbGxiYWNrKCk7XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUocGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlIGFzIG5ldmVyKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY29uc3QgbWVkaWFTdHJlYW1Qcm9taXNlID0gbmV3IFByb21pc2U8TWVkaWFTdHJlYW0+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFGZWF0dXJlRW5hYmxlbWVudC5vblRyYWNrRGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aW1lb3V0SWQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHJlamVjdChuZXcgRXJyb3IoJ1N0cmVhbSBzZXR1cCB0aW1lZCBvdXQnKSksIGRlZmF1bHRTdHJlYW1TZXR1cFRpbWVvdXQpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0SWQpKSk7XG5cbiAgICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5vbnRyYWNrID0gKGUpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICAgICAgICAgICAgcmVzb2x2ZShlLnN0cmVhbXNbMF0pO1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjb25zdCB0cmFja0xpc3RlbmVyID0gKGU6IFJUQ1BlZXJDb25uZWN0aW9uRXZlbnRNYXBbJ3RyYWNrJyB8ICdhZGRzdHJlYW0nXSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgICAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5yZW1vdmVFdmVudExpc3RlbmVyKCd0cmFjaycsIHRyYWNrTGlzdGVuZXIpO1xuICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FkZHN0cmVhbScsIHRyYWNrTGlzdGVuZXIpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCdzdHJlYW1zJyBpbiBlKSB7XG4gICAgICAgICAgICAgICAgICByZXNvbHZlKGUuc3RyZWFtc1swXSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHJlc29sdmUoZS5zdHJlYW0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICBjb25zdCB0aW1lb3V0SWQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5yZW1vdmVFdmVudExpc3RlbmVyKCd0cmFjaycsIHRyYWNrTGlzdGVuZXIpO1xuICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FkZHN0cmVhbScsIHRyYWNrTGlzdGVuZXIpO1xuICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ1N0cmVhbSBzZXR1cCB0aW1lZCBvdXQnKSk7XG4gICAgICAgICAgICAgIH0sIGRlZmF1bHRTdHJlYW1TZXR1cFRpbWVvdXQpO1xuXG4gICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLmFkZEV2ZW50TGlzdGVuZXIoJ3RyYWNrJywgdHJhY2tMaXN0ZW5lcik7XG4gICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLmFkZEV2ZW50TGlzdGVuZXIoJ2FkZHN0cmVhbScsIHRyYWNrTGlzdGVuZXIpO1xuICAgICAgICAgICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCkpKTtcblxuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gU2V0IGxvY2FsIFNEUCBvZmZlciBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uLnNkcCk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24oc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRmFpbGVkIHRvIHNldCBsb2NhbCBkZXNjcmlwdGlvbiBbJWpdIHdpdGggbWVzc2FnZSBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uLCBlLm1lc3NhZ2UpO1xuXG4gICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFNldCByZW1vdGUgU0RQIGFuc3dlciBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uLnNkcCk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldFJlbW90ZURlc2NyaXB0aW9uKGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKVxuICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBzZXQgcmVtb3RlIGRlc2NyaXB0aW9uIFslal0gd2l0aCBtZXNzYWdlIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24sIGUubWVzc2FnZSk7XG5cbiAgICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBTZXQgcmVtb3RlIFNEUCBvZmZlciBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24uc2RwKTtcblxuICAgICAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0UmVtb3RlRGVzY3JpcHRpb24oY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbilcbiAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gc2V0IHJlbW90ZSBkZXNjcmlwdGlvbiBbJWpdIHdpdGggbWVzc2FnZSBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24sIGUubWVzc2FnZSk7XG5cbiAgICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uY3JlYXRlQW5zd2VyKHtcbiAgICAgICAgICAgICAgICAgICAgb2ZmZXJUb1JlY2VpdmVBdWRpbzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgb2ZmZXJUb1JlY2VpdmVWaWRlbzogdHJ1ZVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSkudGhlbihhbnN3ZXIgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gU2V0IGxvY2FsIFNEUCBhbnN3ZXIgWyVqXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBhbnN3ZXIpO1xuXG4gICAgICAgICAgICAgICAgICBjb25zdCBlbmRQb2ludCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlIGFzIEVuZFBvaW50O1xuXG4gICAgICAgICAgICAgICAgICByZXR1cm4gZW5kUG9pbnQuc2V0UmVtb3RlRGVzY3JpcHRpb24oc3RyZWFtLCBhbnN3ZXIpO1xuICAgICAgICAgICAgICAgIH0pLnRoZW4oKHtzdGF0dXMsIHNlc3Npb25EZXNjcmlwdGlvbn0pID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gdGhpcy5tYXBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1c1RvQ2hhbm5lbFN0YXR1cyhzdGF0dXMpO1xuXG4gICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhbmRieS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0b3BwZWQudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRMb2NhbERlc2NyaXB0aW9uKHNlc3Npb25EZXNjcmlwdGlvbiBhcyBSVENTZXNzaW9uRGVzY3JpcHRpb24pXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gc2V0IGxvY2FsIGRlc2NyaXB0aW9uIFslal0gd2l0aCBtZXNzYWdlIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgc2Vzc2lvbkRlc2NyaXB0aW9uLCBlLm1lc3NhZ2UpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgbGlzdGVuT25TdHJlYW1TZXR1cC5zdWNjZXNzKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkKTtcblxuICAgICAgICAgICAgICByZXR1cm4gbWVkaWFTdHJlYW1Qcm9taXNlO1xuICAgICAgICAgICAgfSkudGhlbihtZWRpYVN0cmVhbSA9PiB7XG4gICAgICAgICAgICAgIGlmIChyZXF1aXJlc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyAmJiBwZWVyQ29ubmVjdGlvbj8uY3VycmVudFJlbW90ZURlc2NyaXB0aW9uPy5zZHApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbiA9IG5ldyBTZHBQYXJzZXIocGVlckNvbm5lY3Rpb24uY3VycmVudFJlbW90ZURlc2NyaXB0aW9uLnNkcCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvVHJhY2suY29kZWMgPSBWaWRlb0NvZGVjTWFwcGluZy5jb252ZXJ0VmlkZW9Db2RlY1R5cGVUb1ZpZGVvQ29kZWMocGFyc2VkUmVtb3RlRGVzY3JpcHRpb24udmlkZW9Db2RlYyBhcyBWaWRlb0NvZGVjVHlwZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5hdWRpb1RyYWNrLmNvZGVjID0gQXVkaW9Db2RlY01hcHBpbmcuY29udmVydEF1ZGlvQ29kZWNUeXBlVG9BdWRpb0NvZGVjKHBhcnNlZFJlbW90ZURlc2NyaXB0aW9uLmF1ZGlvQ29kZWMgYXMgQXVkaW9Db2RlY1R5cGUpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgcmVjZWl2ZXJzID0gcGVlckNvbm5lY3Rpb24uZ2V0UmVjZWl2ZXJzKCk7XG4gICAgICAgICAgICAgICAgLy8gTm90ZTogVGhpcyBhc3N1bWVzIHRoYXQgdGhlcmUgaXMgb25seSBvbmUgdmlkZW8gTWVkaWFTdHJlYW1UcmFjayBhbmQgb25lIGF1ZGlvIE1lZGlhU3RyZWFtVHJhY2tcbiAgICAgICAgICAgICAgICBjb25zdCB2aWRlb1RyYWNrID0gdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1RyYWNrLm1lZGlhU3RyZWFtVHJhY2sgPSBtZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdO1xuICAgICAgICAgICAgICAgIC8vIEJvdGggYXJlIGV4cGVjdGVkIHRvIGJlIHByZXNlbnQsIGJ1dCB0aGUgdHlwZSBzeXN0ZW0gbWFrZXMgdGhlbSBudWxsYWJsZSwgc28gd2UgaGF2ZSB0byBhc3NlcnQgdGhlIHByZXNlbmNlXG4gICAgICAgICAgICAgICAgY29uc3QgdmlkZW9UcmFja1JlY2VpdmVyID0gdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1RyYWNrLnJlY2VpdmVyID0gcmVjZWl2ZXJzLmZpbHRlcihyZWNlaXZlciA9PiByZWNlaXZlci50cmFjayA9PT0gdmlkZW9UcmFjaylbMF07XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvVHJhY2subWlkID0gcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNHZXRUcmFuc2NlaXZlcnNcbiAgICAgICAgICAgICAgICAgID8gcGVlckNvbm5lY3Rpb24uZ2V0VHJhbnNjZWl2ZXJzKCkuZmlsdGVyKHRyYW5zY2VpdmVyID0+IHRyYW5zY2VpdmVyLnJlY2VpdmVyID09PSB2aWRlb1RyYWNrUmVjZWl2ZXIpWzBdPy5taWRcbiAgICAgICAgICAgICAgICAgIDogbnVsbDtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGF1ZGlvVHJhY2sgPSB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmF1ZGlvVHJhY2subWVkaWFTdHJlYW1UcmFjayA9IG1lZGlhU3RyZWFtLmdldEF1ZGlvVHJhY2tzKClbMF07XG4gICAgICAgICAgICAgICAgY29uc3QgYXVkaW9UcmFja1JlY2VpdmVyID0gdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5hdWRpb1RyYWNrLnJlY2VpdmVyID0gcmVjZWl2ZXJzLmZpbHRlcihyZWNlaXZlciA9PiByZWNlaXZlci50cmFjayA9PT0gYXVkaW9UcmFjaylbMF07XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmF1ZGlvVHJhY2subWlkID0gcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNHZXRUcmFuc2NlaXZlcnNcbiAgICAgICAgICAgICAgICAgID8gcGVlckNvbm5lY3Rpb24uZ2V0VHJhbnNjZWl2ZXJzKCkuZmlsdGVyKHRyYW5zY2VpdmVyID0+IHRyYW5zY2VpdmVyLnJlY2VpdmVyID09PSBhdWRpb1RyYWNrUmVjZWl2ZXIpWzBdPy5taWRcbiAgICAgICAgICAgICAgICAgIDogbnVsbDtcblxuICAgICAgICAgICAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChJbnNlcnRhYmxlU3RyZWFtcy5jcmVhdGVFbmNvZGVkU3RyZWFtUGlwZWxpbmUodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dCkpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgcmVxdWlyZXNGcmFtZVRpbWluZ0luZm9ybWF0aW9uID0gdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuc2hvdWxkRXh0cmFjdFRpbWVjb2RlLnZhbHVlIHx8IHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnNob3VsZEV4dHJhY3RUaW1lc3RhbXBzLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgaWYgKHJlcXVpcmVzRnJhbWVUaW1pbmdJbmZvcm1hdGlvbikge1xuICAgICAgICAgICAgICAgICAgY29uc3QgZnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXJDb250ZXh0OiBGcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlckNvbnRleHQgPSB7XG4gICAgICAgICAgICAgICAgICAgIHN0cmVhbUlkOiB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICAgICAgICAgICAgY29kZWM6IHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9UcmFjay5jb2RlYyxcbiAgICAgICAgICAgICAgICAgICAgdmlkZW9FbGVtZW50OiB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgIGRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdDogdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24sXG4gICAgICAgICAgICAgICAgICAgIHJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3Q6IHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbixcbiAgICAgICAgICAgICAgICAgICAgaXNFbmFibGVkU3ViamVjdDogdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuaXNFbmFibGVkLFxuICAgICAgICAgICAgICAgICAgICByZWNlaXZlcjogdmlkZW9UcmFja1JlY2VpdmVyLFxuICAgICAgICAgICAgICAgICAgICBtaWQ6IHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9UcmFjay5taWQhLFxuICAgICAgICAgICAgICAgICAgICB0cmFja0lkOiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvVHJhY2subWVkaWFTdHJlYW1UcmFjay5pZCEsXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXI6IHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9UcmFjay50cmFuc2Zvcm1NZXNzYWdlUm91dGVyISxcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtRnVuY3Rpb25OYW1lczogdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1RyYWNrLnRyYW5zZm9ybUZ1bmN0aW9uTmFtZXNcbiAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChuZXcgRnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXIoZnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXJDb250ZXh0KSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgcmVxdWlyZXNFbmNvZGVkTWVkaWFUcmFuc2Zvcm0gPSB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0Lmhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZTtcblxuICAgICAgICAgICAgICAgIGlmIChyZXF1aXJlc0VuY29kZWRNZWRpYVRyYW5zZm9ybSkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgZW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlckNvbnRleHQ6IEVuY29kZWRNZWRpYVRyYW5zZm9ybU1hbmFnZXJDb250ZXh0ID0ge1xuICAgICAgICAgICAgICAgICAgICB2aWRlb1RyYWNrOiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvVHJhY2ssXG4gICAgICAgICAgICAgICAgICAgIGF1ZGlvVHJhY2s6IHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuYXVkaW9UcmFjayxcbiAgICAgICAgICAgICAgICAgICAgZW5jb2RlZFZpZGVvU3RyZWFtU2luazogdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5lbmNvZGVkVmlkZW9TdHJlYW1TaW5rISxcbiAgICAgICAgICAgICAgICAgICAgZW5jb2RlZEF1ZGlvU3RyZWFtU2luazogdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5lbmNvZGVkQXVkaW9TdHJlYW1TaW5rIVxuICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKG5ldyBFbmNvZGVkTWVkaWFUcmFuc2Zvcm1NYW5hZ2VyKGVuY29kZWRNZWRpYVRyYW5zZm9ybU1hbmFnZXJDb250ZXh0KSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgSW5zZXJ0YWJsZVN0cmVhbXMuY29uZmlndXJlRW5jb2RlZFN0cmVhbVBpcGVsaW5lKHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQpO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzSW5zZXJ0YWJsZVN0cmVhbXMudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7dHJhbnNmb3JtZWRTdHJlYW0sIGRpc3Bvc2FibGVzfSA9IEluc2VydGFibGVTdHJlYW1zLmNvbmZpZ3VyZUluc2VydGFibGVTdHJlYW1UcmFuc2Zvcm1hdGlvbihtZWRpYVN0cmVhbSwgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrLCB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2spO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKGRpc3Bvc2FibGVzKTtcbiAgICAgICAgICAgICAgICBtZWRpYVN0cmVhbSA9IHRyYW5zZm9ybWVkU3RyZWFtO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlID0gbWVkaWFTdHJlYW07XG5cbiAgICAgICAgICAgICAgY29uc3QgcnRjQ29ubmVjdGlvbk1vbml0b3IgPSBuZXcgUnRjQ29ubmVjdGlvbk1vbml0b3IoXG4gICAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24sIG1lZGlhU3RyZWFtLFxuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlPy5yb3VuZFRyaXBUaW1lID8gdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUucm91bmRUcmlwVGltZSAvIDQgOiAwLFxuICAgICAgICAgICAgICAgIFNESy5hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciEuaXNGb3JlZ3JvdW5kXG4gICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHJ0Y0Nvbm5lY3Rpb25Nb25pdG9yKTtcblxuICAgICAgICAgICAgICBjb25zdCBydGNDb25uZWN0aW9uTW9uaXRvclN0YXRpc3RpY1N1YnNjcmlwdGlvbiA9IHJ0Y0Nvbm5lY3Rpb25Nb25pdG9yLnJ0Y1N0YXRpc3RpYy5zdWJzY3JpYmUoc3RhdGlzdGljcyA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjU3RhdGlzdGljcy52YWx1ZSA9IHN0YXRpc3RpY3M7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXN0YXRpc3RpY3MpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljICYmICF0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNBdWRpb1N0YXRpc3RpYykge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjQXVkaW9TdGF0aXN0aWMgPSBzdGF0aXN0aWNzLmF1ZGlvO1xuICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjVmlkZW9TdGF0aXN0aWMgPSBzdGF0aXN0aWNzLnZpZGVvO1xuXG4gICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFTREsuYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IhLmlzRm9yZWdyb3VuZC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjQXVkaW9TdGF0aXN0aWMgPSBzdGF0aXN0aWNzLmF1ZGlvO1xuICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjVmlkZW9TdGF0aXN0aWMgPSBzdGF0aXN0aWNzLnZpZGVvO1xuXG4gICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbGV0IGF1ZGlvVHJhY2tGYWlsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBsZXQgdmlkZW9UcmFja0ZhaWxlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgaWYgKHN0YXRpc3RpY3MuYXVkaW8pIHtcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNBdWRpb1N0YXRpc3RpYyAmJiB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNBdWRpb1N0YXRpc3RpYy50aW1lc3RhbXAgIT09IHN0YXRpc3RpY3MuYXVkaW8udGltZXN0YW1wKSB7XG4gICAgICAgICAgICAgICAgICAgIGF1ZGlvVHJhY2tGYWlsZWQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNBdWRpb1N0YXRpc3RpYyAmJiB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNBdWRpb1N0YXRpc3RpYy5ieXRlc1JlY2VpdmVkID09PSBzdGF0aXN0aWNzLmF1ZGlvLmJ5dGVzUmVjZWl2ZWQ7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGF1ZGlvVHJhY2tGYWlsZWQgJiYgR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9ySXNPbkxpbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICAgICAgICAgICAgICAgICAgICdbJXNdIEF1ZGlvIHRyYWNrIGZhaWxlZCB3aXRoIGxhc3QgYnl0ZXNSZWNlaXZlZCBbJXNdIGlzIGVxdWFsIHRvIHByZXZpb3VzIGJ5dGVzUmVjZWl2ZWQgWyVzXSB3aXRoaW4gWyVzXScsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpc3RpY3MuYXVkaW8uYnl0ZXNSZWNlaXZlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljLmJ5dGVzUmVjZWl2ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXcgRHVyYXRpb25zKHN0YXRpc3RpY3MuYXVkaW8udGltZXN0YW1wIC0gdGhpcy5fY2hhbm5lbENvbnRleHQucnRjQXVkaW9TdGF0aXN0aWMudGltZXN0YW1wKS50b0lzb1N0cmluZygpXG4gICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljID0gc3RhdGlzdGljcy5hdWRpbztcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoc3RhdGlzdGljcy52aWRlbykge1xuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljLnRpbWVzdGFtcCAhPT0gc3RhdGlzdGljcy52aWRlby50aW1lc3RhbXApIHtcbiAgICAgICAgICAgICAgICAgICAgdmlkZW9UcmFja0ZhaWxlZCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljLmJ5dGVzUmVjZWl2ZWQgPT09IHN0YXRpc3RpY3MudmlkZW8uYnl0ZXNSZWNlaXZlZDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodmlkZW9UcmFja0ZhaWxlZCAmJiBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JJc09uTGluZSkge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ1slc10gVmlkZW8gdHJhY2sgZmFpbGVkIHdpdGggbGFzdCBieXRlc1JlY2VpdmVkIFslc10gaXMgZXF1YWwgdG8gcHJldmlvdXMgYnl0ZXNSZWNlaXZlZCBbJXNdIHdpdGhpbiBbJXNdJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGlzdGljcy52aWRlby5ieXRlc1JlY2VpdmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjVmlkZW9TdGF0aXN0aWMuYnl0ZXNSZWNlaXZlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEdXJhdGlvbnMoc3RhdGlzdGljcy52aWRlby50aW1lc3RhbXAgLSB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNWaWRlb1N0YXRpc3RpYy50aW1lc3RhbXApLnRvSXNvU3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjVmlkZW9TdGF0aXN0aWMgPSBzdGF0aXN0aWNzLnZpZGVvO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9ySXNPbkxpbmUpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLk9mZmxpbmU7XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodmlkZW9UcmFja0ZhaWxlZCB8fCBhdWRpb1RyYWNrRmFpbGVkKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCByZXRyeUNhbGxiYWNrID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBydGNDb25uZWN0aW9uTW9uaXRvci5kaXNwb3NlKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX2hhbmRsZVN0cmVhbUZhaWx1cmUoKVxuICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1slc10gRmFpbGVkIGhhbmRsaW5nIHN0cmVhbSBmYWlsdXJlIGFmdGVyIHRyYWNrIHN0b3BwZWQgd2l0aCBzdGF0ZSBbJXNdJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgIHRoaXMucmVjb25uZWN0UGVlckNvbm5lY3Rpb24odGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIHBlZXJDb25uZWN0aW9uLCByZXRyeUNhbGxiYWNrKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSAwO1xuXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgIT09IENoYW5uZWxTdGF0ZS5SZWNvbm5lY3RpbmcgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgIT09IENoYW5uZWxTdGF0ZS5PZmZsaW5lKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID8gQ2hhbm5lbFN0YXRlLlBsYXlpbmcgOiBDaGFubmVsU3RhdGUuUGF1c2VkO1xuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgc3RhdGUgcmVzdG9yZWQgdG8gWyVzXSBhZnRlciByZWNvbm5lY3RpbmcnLCBDaGFubmVsU3RhdGVbdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWVdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChydGNDb25uZWN0aW9uTW9uaXRvclN0YXRpc3RpY1N1YnNjcmlwdGlvbik7XG5cbiAgICAgICAgICAgICAgaWYgKCFTREsuYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9NdXRlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuUGF1c2VkO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHBsYXlNZWRpYVN0cmVhbUluVmlkZW9FbGVtZW50KG1lZGlhU3RyZWFtKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGFwcGx5UnRjQ29uZmlndXJhdGlvbihcbiAgICBvcHRpb25hbFBlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb24gfCBudWxsLFxuICAgIHJ0Y0NvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24pOiBQcm9taXNlPElQZWVyQ29ubmVjdGlvbj4ge1xuICAgIGlmICghb3B0aW9uYWxQZWVyQ29ubmVjdGlvbikge1xuICAgICAgcnRjQ29uZmlndXJhdGlvbiA9IFJ0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyLnRydW5jYXRlSWNlU2VydmVycyhydGNDb25maWd1cmF0aW9uKTtcblxuICAgICAgcmV0dXJuIFNESy5wZWVyQ29ubmVjdGlvbkZhY3RvcnkudmFsdWUuY3JlYXRlUGVlckNvbm5lY3Rpb24ocnRjQ29uZmlndXJhdGlvbik7XG4gICAgfVxuXG4gICAgY29uc3QgbmV3UnRjQ29uZmlndXJhdGlvbiA9IHtcbiAgICAgIC4uLm9wdGlvbmFsUGVlckNvbm5lY3Rpb24uZ2V0Q29uZmlndXJhdGlvbigpLFxuICAgICAgLi4ucnRjQ29uZmlndXJhdGlvblxuICAgIH07XG5cbiAgICBvcHRpb25hbFBlZXJDb25uZWN0aW9uLnNldENvbmZpZ3VyYXRpb24obmV3UnRjQ29uZmlndXJhdGlvbik7XG5cbiAgICByZXR1cm4gb3B0aW9uYWxQZWVyQ29ubmVjdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb25uZWN0UGVlckNvbm5lY3Rpb24oc3RyZWFtSWQ6IHN0cmluZywgcGVlckNvbm5lY3Rpb246IElQZWVyQ29ubmVjdGlvbiwgcmV0cnlDYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIGlmICghU0RLLmFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIS5pc0ZvcmVncm91bmQudmFsdWUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygnWyVzXSBTa2lwcGluZyBwZWVyQ29ubmVjdGlvbiByZWNvbm5lY3Rpb24gYXR0ZW1wdCB3aGlsZSBub3QgaW4gZm9yZWdyb3VuZCAocGVlckNvbm5lY3Rpb24gc3RhdGUgWyVzXSknLCBzdHJlYW1JZCwgcGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUgPT09ICdjbG9zZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3dpdGNoICh0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSkge1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuUGF1c2VkOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuU3RvcHBlZDpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlVuYXV0aG9yaXplZDpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkdlb1Jlc3RyaWN0ZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5HZW9CbG9ja2VkOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuVW5zdXBwb3J0ZWRGZWF0dXJlOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yOlxuICAgICAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ1slc10gU2tpcHBpbmcgcGVlckNvbm5lY3Rpb24gcmVjb25uZWN0aW9uIGluIGRlbGliZXJhdGVseS10ZXJtaW5hbCBzdGF0ZSBbJXNdJywgc3RyZWFtSWQsIENoYW5uZWxTdGF0ZVt0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZV0pO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlJlY29ubmVjdGluZztcblxuICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA8IFNESy5tYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzIHx8ICFTREsuYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cysrO1xuXG4gICAgICBjb25zdCBpc0NsaWVudE9mZmVyRmxvdyA9IHBlZXJDb25uZWN0aW9uLmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uPy50eXBlID09PSAnb2ZmZXInO1xuXG4gICAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuY2xpZW50T2ZmZXJEaXNhYmxlZCB8fFxuICAgICAgICAhcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNTZXRDb25maWd1cmF0aW9uIHx8XG4gICAgICAgICFwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c0dldENvbmZpZ3VyYXRpb24gfHxcbiAgICAgICAgIWlzQ2xpZW50T2ZmZXJGbG93XG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUmVjb25uZWN0aW5nIHBlZXIgY29ubmVjdGlvbiBieSByZXN0YXJ0aW5nIElDRScpO1xuXG4gICAgICBjb25zdCBjdXJyZW50TG9jYWxEZXNjcmlwdGlvbiA9IHBlZXJDb25uZWN0aW9uLmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uO1xuICAgICAgY29uc3QgaWdub3JlZCA9IHBlZXJDb25uZWN0aW9uLmNyZWF0ZU9mZmVyKHtpY2VSZXN0YXJ0OiB0cnVlfSkudGhlbihvZmZlciA9PiB7XG4gICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKS50aGVuKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihjdXJyZW50TG9jYWxEZXNjcmlwdGlvbik7XG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHJlY29ubmVjdCBwZWVyIGNvbm5lY3Rpb24nLCBlKTtcbiAgICAgICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDA7XG4gICAgICAgICAgcmV0cnlDYWxsYmFjaygpO1xuICAgICAgICB9KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdGYWlsZWQgdG8gcmVjb25uZWN0IHBlZXIgY29ubmVjdGlvbiBhZnRlciBbJXNdIGF0dGVtcHRzLCBwZXJmb3JtaW5nIGZ1bGwgcmVjb3ZlcnknLCB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyk7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSAwO1xuICAgIHJldHJ5Q2FsbGJhY2soKTtcbiAgfVxuXG4gIGlzU3RyZWFtSGVhbHRoeSgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB2aWRlb0VsZW1lbnQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWU7XG5cbiAgICBpZiAoIXZpZGVvRWxlbWVudCkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShmYWxzZSk7XG4gICAgfVxuXG4gICAgY29uc3QgbWVkaWFTdHJlYW0gPSB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWU7XG4gICAgY29uc3QgaGFzQWN0aXZlVHJhY2tzID0gbWVkaWFTdHJlYW0/LmdldFRyYWNrcygpLnNvbWUodHJhY2sgPT4gdHJhY2sucmVhZHlTdGF0ZSA9PT0gJ2xpdmUnKSA/PyBmYWxzZTtcblxuICAgIGlmICh2aWRlb0VsZW1lbnQucGF1c2VkIHx8ICFoYXNBY3RpdmVUcmFja3MpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZmFsc2UpO1xuICAgIH1cblxuICAgIHJldHVybiBWaWRlb0ZyYW1lRGV0ZWN0b3IuaXNSZW5kZXJpbmdGcmFtZXModmlkZW9FbGVtZW50KTtcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1c1RvQ2hhbm5lbFN0YXR1cyhzdGF0dXM6IFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzKTogQ2hhbm5lbFN0YXRlIHtcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSAnb2snOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLlN0YXJ0aW5nO1xuICAgICAgY2FzZSAndW5hdXRob3JpemVkJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5VbmF1dGhvcml6ZWQ7XG4gICAgICBjYXNlICdub3QtZm91bmQnOlxuICAgICAgY2FzZSAnY2FwYWNpdHknOlxuICAgICAgY2FzZSAncmF0ZS1saW1pdGVkJzpcbiAgICAgIGNhc2UgJ3RpbWVvdXQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLlJlY292ZXJpbmc7XG4gICAgICBjYXNlICdmYWlsZWQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLkVycm9yO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoc3RhdHVzKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7SVN0cmVhbVN1YnNjcmliZXJ9IGZyb20gJy4vSVN0cmVhbVN1YnNjcmliZXInO1xuaW1wb3J0IEVkZ2VBdXRoUGFyc2VyIGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VkZ2VBdXRoUGFyc2VyJztcbmltcG9ydCBSZWFsVGltZVN0cmVhbVN1YnNjcmliZXIgZnJvbSAnLi9SZWFsVGltZVN0cmVhbVN1YnNjcmliZXInO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBDaGFubmVsU3RhdGUgZnJvbSAnLi4vY2hhbm5lbHMvQ2hhbm5lbFN0YXRlJztcbmltcG9ydCBDaGFubmVsQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L0NoYW5uZWxDb250ZXh0JztcbmltcG9ydCBQZWVyQ29ubmVjdGlvbkNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9QZWVyQ29ubmVjdGlvbkNvbnRleHQnO1xuaW1wb3J0IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9TdHJlYW1UcmFuc2Zvcm1Db250ZXh0JztcbmltcG9ydCBGcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L0ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVhbFRpbWVTdHJlYW1TdWJzY3JpYmVyRmFjdG9yeSB7XG4gIHByaXZhdGUgc3RhdGljIF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignU3RyZWFtaW5nJyk7XG5cbiAgc3RhdGljIGNyZWF0ZSh0b2tlbjogc3RyaW5nLCBjaGFubmVsQ29udGV4dDogQ2hhbm5lbENvbnRleHQsIHBlZXJDb25uZWN0aW9uQ29udGV4dDogUGVlckNvbm5lY3Rpb25Db250ZXh0LCBzdHJlYW1UcmFuc2Zvcm1Db250ZXh0OiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0LCBmcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dDogRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQsIGhhbmRsZVN0cmVhbUZhaWx1cmU6ICgpID0+IFByb21pc2U8dm9pZD4pOiBJU3RyZWFtU3Vic2NyaWJlciB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgdG9rZW5DYXBhYmlsaXRpZXMgPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKHRva2VuKS5jYXBhYmlsaXRpZXM7XG5cbiAgICBpZiAodG9rZW5DYXBhYmlsaXRpZXMuaW5jbHVkZXMoJ29uLWRlbWFuZCcpKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ1RoaXMgYnVpbGQgZG9lcyBub3Qgc3VwcG9ydCBPbi1EZW1hbmQgU3RyZWFtIHBsYXliYWNrLicpO1xuICAgICAgY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuVW5zdXBwb3J0ZWRGZWF0dXJlO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRva2VuQ2FwYWJpbGl0aWVzLmluY2x1ZGVzKCdzdHJlYW1pbmcnKSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdUaGlzIGJ1aWxkIGRvZXMgbm90IHN1cHBvcnQgTGl2ZSBTdHJlYW0gcGxheWJhY2suJyk7XG4gICAgICBjaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5VbnN1cHBvcnRlZEZlYXR1cmU7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFJlYWxUaW1lU3RyZWFtU3Vic2NyaWJlcihjaGFubmVsQ29udGV4dCwgcGVlckNvbm5lY3Rpb25Db250ZXh0LCBzdHJlYW1UcmFuc2Zvcm1Db250ZXh0LCBmcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCwgaGFuZGxlU3RyZWFtRmFpbHVyZSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlYWxUaW1lU3RyZWFtU3Vic2NyaWJlckZhY3RvcnkgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi8uLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5cbmNvbnN0IGRldGVjdGlvblRpbWVvdXRJbk1pbGxpc2Vjb25kcyA9IDEwMDA7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZpZGVvRnJhbWVEZXRlY3RvciB7XG4gIHByaXZhdGUgc3RhdGljIF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignVmlkZW9GcmFtZURldGVjdG9yJyk7XG5cbiAgcHVibGljIHN0YXRpYyBpc1JlbmRlcmluZ0ZyYW1lcyh2aWRlb0VsZW1lbnQ6IEhUTUxWaWRlb0VsZW1lbnQpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAoIUZlYXR1cmVFbmFibGVtZW50LmlzUmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFja1N1cHBvcnRlZCkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdyZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrIG5vdCBzdXBwb3J0ZWQsIGFzc3VtaW5nIHJlbmRlcmluZycpO1xuXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRydWUpO1xuICAgIH1cblxuICAgIGlmICghRmVhdHVyZUVuYWJsZW1lbnQuaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVTdXBwb3J0ZWQpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygncmVxdWVzdEFuaW1hdGlvbkZyYW1lIG5vdCBzdXBwb3J0ZWQsIGFzc3VtaW5nIHJlbmRlcmluZycpO1xuXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRydWUpO1xuICAgIH1cblxuICAgIC8vIE9uIGRlc2t0b3AgYnJvd3NlcnMsIHRoZSByZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrIHZzIHJlcXVlc3RBbmltYXRpb25GcmFtZSByYWNlXG4gICAgLy8gcHJvZHVjZXMgZmFsc2UgbmVnYXRpdmVzIGFmdGVyIHJldHVybmluZyBmcm9tIGEgYmFja2dyb3VuZCB0YWIuIFRoZSB2aWRlbyBjb21wb3NpdG9yXG4gICAgLy8gaXMgaW5hY3RpdmUgd2hpbGUgdGhlIHRhYiBpcyBoaWRkZW4sIHNvIHJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2sgZG9lcyBub3QgZmlyZVxuICAgIC8vIHByb21wdGx5IGFmdGVyIGZvcmVncm91bmRpbmcg4oCUIHJlcXVlc3RBbmltYXRpb25GcmFtZSB3aW5zIHRoZSByYWNlIGV2ZW4gd2hlbiB0aGVcbiAgICAvLyBzdHJlYW0gaXMgaGVhbHRoeS4gVGhpcyBjYXVzZXMgdGhlIGZvcmVncm91bmQgaGVhbHRoIGNoZWNrIHRvIHRyaWdnZXIgdW5uZWNlc3NhcnlcbiAgICAvLyBSZWNvdmVyaW5nIHRyYW5zaXRpb25zLiBPbiBtb2JpbGUsIGJyb3dzZXJzIGFyZSBtb3JlIGFnZ3Jlc3NpdmUgYWJvdXQgcGF1c2luZyBvclxuICAgIC8vIGRlc3Ryb3lpbmcgYmFja2dyb3VuZCBtZWRpYSBwaXBlbGluZXMsIG1ha2luZyBmcmFtZS1sZXZlbCBzdGFsbCBkZXRlY3Rpb24gdmFsdWFibGVcbiAgICAvLyBkZXNwaXRlIHRoZSByYWNlIHJpc2suIERlc2t0b3Agc3RyZWFtcyByZWx5IG9uIHRoZSBSVEMgY29ubmVjdGlvbiBtb25pdG9yJ3NcbiAgICAvLyBieXRlcy1yZWNlaXZlZCBzdGF0cyB0byBkZXRlY3QgZ2VudWluZSBzdGFsbHMgaW5zdGVhZC5cbiAgICBpZiAoIUZlYXR1cmVFbmFibGVtZW50LmlzTW9iaWxlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ1NraXBwaW5nIGZyYW1lIGRldGVjdGlvbiBvbiBkZXNrdG9wLCBhc3N1bWluZyByZW5kZXJpbmcnKTtcblxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuXG4gICAgLy8gRGV0ZWN0IHdoZXRoZXIgdGhlIHZpZGVvIGVsZW1lbnQgaXMgYWN0aXZlbHkgcmVuZGVyaW5nIGRlY29kZWQgZnJhbWVzIGJ5IHJlcXVlc3RpbmdcbiAgICAvLyBib3RoIGEgdmlkZW8gZnJhbWUgY2FsbGJhY2sgYW5kIGFuIGFuaW1hdGlvbiBmcmFtZSBjYWxsYmFjayBzaW11bHRhbmVvdXNseS5cbiAgICAvLyBXaGVuIHRoZSBzdHJlYW0gaXMgaGVhbHRoeSwgcmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayBmaXJlcyBmaXJzdCBiZWNhdXNlIGEgZGVjb2RlZFxuICAgIC8vIGZyYW1lIGlzIGF2YWlsYWJsZSBmb3IgcHJlc2VudGF0aW9uLiBXaGVuIHRoZSBzdHJlYW0gaXMgc3RhbGxlZCwgb25seVxuICAgIC8vIHJlcXVlc3RBbmltYXRpb25GcmFtZSBmaXJlcyBwcm9tcHRseSBiZWNhdXNlIGl0IGlzIGRyaXZlbiBieSB0aGUgZGlzcGxheSByZWZyZXNoXG4gICAgLy8gY3ljbGUgcmVnYXJkbGVzcyBvZiB2aWRlbyBzdGF0ZS5cbiAgICAvLyBBIGZhbHNlIG5lZ2F0aXZlIChyZXF1ZXN0QW5pbWF0aW9uRnJhbWUgd2lubmluZyBkZXNwaXRlIGFjdGl2ZSByZW5kZXJpbmcpIGlzIHBvc3NpYmxlXG4gICAgLy8gd2hlbiBib3RoIGNhbGxiYWNrcyBsYW5kIG9uIHRoZSBzYW1lIGZyYW1lLCBidXQgaXMgYm91bmRlZCB0byBhIHNpbmdsZSB1bm5lY2Vzc2FyeVxuICAgIC8vIHJlc3RhcnQuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPGJvb2xlYW4+KHJlc29sdmUgPT4ge1xuICAgICAgbGV0IHJlc29sdmVkID0gZmFsc2U7XG4gICAgICBjb25zdCB0aW1lb3V0SWQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKCFyZXNvbHZlZCkge1xuICAgICAgICAgIHJlc29sdmVkID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnRnJhbWUgZGV0ZWN0aW9uIHRpbWVkIG91dCBhZnRlciBbJXNdIG1zLCBhc3N1bWluZyByZW5kZXJpbmcnLCBkZXRlY3Rpb25UaW1lb3V0SW5NaWxsaXNlY29uZHMpO1xuXG4gICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSwgZGV0ZWN0aW9uVGltZW91dEluTWlsbGlzZWNvbmRzKTtcblxuICAgICAgdmlkZW9FbGVtZW50LnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgICBpZiAoIXJlc29sdmVkKSB7XG4gICAgICAgICAgcmVzb2x2ZWQgPSB0cnVlO1xuICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygnVmlkZW8gZnJhbWUgcmVuZGVyZWQgd2l0aGluIFslc10gbXMg4oCUIHN0cmVhbSBpcyBoZWFsdGh5JywgRGF0ZS5ub3coKSAtIHN0YXJ0VGltZSk7XG5cbiAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgLy8gSWYgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGZpcmVzIGJlZm9yZSByZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrLCBubyB2aWRlbyBmcmFtZXNcbiAgICAgIC8vIGFyZSBiZWluZyBkZWNvZGVkIOKAlCB0aGUgc3RyZWFtIGlzIHN0YWxsZWQuXG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBpZiAoIXJlc29sdmVkKSB7XG4gICAgICAgICAgcmVzb2x2ZWQgPSB0cnVlO1xuICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygnTm8gdmlkZW8gZnJhbWUgcmVuZGVyZWQgd2l0aGluIFslc10gbXMg4oCUIHN0cmVhbSBpcyBzdGFsbGVkJywgRGF0ZS5ub3coKSAtIHN0YXJ0VGltZSk7XG5cbiAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZpZGVvRnJhbWVEZXRlY3RvciBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi8uLi9sYW5nL0lEaXNwb3NhYmxlJztcbmltcG9ydCB7QXVkaW9Db2RlY30gZnJvbSAnLi4vZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9BdWRpb0NvZGVjJztcbmltcG9ydCB7VmlkZW9Db2RlY30gZnJvbSAnLi4vZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9WaWRlb0NvZGVjJztcbmltcG9ydCB7SUVuY29kZWRTdHJlYW1TaW5rfSBmcm9tICcuL0VuY29kZWRTdHJlYW1TaW5rJztcbmltcG9ydCB7U3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrfSBmcm9tICcuLi9jb250ZXh0L1N0cmVhbVRyYW5zZm9ybUNvbnRleHQnO1xuaW1wb3J0IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIsIHtTdXJyb2dhdGVGcmFtZVR5cGUsIFNraXBGcmFtZX0gZnJvbSAnLi9TdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyJztcbmltcG9ydCB7VHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlfSBmcm9tICcuL3dvcmtlci9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2UnO1xuaW1wb3J0IENodW5rIGZyb20gJy4vQ2h1bmsnO1xuXG5leHBvcnQgdHlwZSBFbmNvZGVkTWVkaWFUcmFuc2Zvcm1NYW5hZ2VyQ29udGV4dCA9IHtcbiAgdmlkZW9UcmFjazogU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrO1xuICBhdWRpb1RyYWNrOiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0VHJhY2s7XG4gIGVuY29kZWRWaWRlb1N0cmVhbVNpbms6IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkVmlkZW9GcmFtZT47XG4gIGVuY29kZWRBdWRpb1N0cmVhbVNpbms6IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkQXVkaW9GcmFtZT47XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFbmNvZGVkTWVkaWFUcmFuc2Zvcm1NYW5hZ2VyIGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcblxuICBjb25zdHJ1Y3Rvcihjb250ZXh0OiBFbmNvZGVkTWVkaWFUcmFuc2Zvcm1NYW5hZ2VyQ29udGV4dCkge1xuICAgIHRoaXMuaW5pdGlhbGl6ZShjb250ZXh0KTtcbiAgfVxuXG4gIHB1YmxpYyBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZShjb250ZXh0OiBFbmNvZGVkTWVkaWFUcmFuc2Zvcm1NYW5hZ2VyQ29udGV4dCk6IHZvaWQge1xuICAgIGlmIChjb250ZXh0LnZpZGVvVHJhY2subWVkaWFTdHJlYW1UcmFjaykge1xuICAgICAgY29udGV4dC52aWRlb1RyYWNrLnRyYW5zZm9ybUZ1bmN0aW9uTmFtZXMucHVzaCgncHJvdGVjdGVkLXZpZGVvJyk7XG5cbiAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChjb250ZXh0LnZpZGVvVHJhY2sudHJhbnNmb3JtTWVzc2FnZVJvdXRlciEucmVnaXN0ZXJSb3V0ZShUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUuRW5jb2RlZFZpZGVvQ2h1bmssIChjaHVuazogUlRDRW5jb2RlZFZpZGVvRnJhbWUpID0+IHRoaXMuZW5jb2RlZFZpZGVvU3RyZWFtQ2FsbGJhY2soY29udGV4dC52aWRlb1RyYWNrLCBjb250ZXh0LmVuY29kZWRWaWRlb1N0cmVhbVNpbmsgYXMgSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRWaWRlb0ZyYW1lPiwgY2h1bmspKSk7XG4gICAgfVxuXG4gICAgaWYgKGNvbnRleHQuYXVkaW9UcmFjay5tZWRpYVN0cmVhbVRyYWNrKSB7XG4gICAgICBjb250ZXh0LmF1ZGlvVHJhY2sudHJhbnNmb3JtRnVuY3Rpb25OYW1lcy5wdXNoKCdwcm90ZWN0ZWQtYXVkaW8nKTtcblxuICAgICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKGNvbnRleHQuYXVkaW9UcmFjay50cmFuc2Zvcm1NZXNzYWdlUm91dGVyIS5yZWdpc3RlclJvdXRlKFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZS5FbmNvZGVkQXVkaW9DaHVuaywgKGNodW5rOiBSVENFbmNvZGVkQXVkaW9GcmFtZSkgPT4gdGhpcy5lbmNvZGVkQXVkaW9TdHJlYW1DYWxsYmFjayhjb250ZXh0LmF1ZGlvVHJhY2ssIGNvbnRleHQuZW5jb2RlZEF1ZGlvU3RyZWFtU2luayBhcyBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+LCBjaHVuaykpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGVuY29kZWRBdWRpb1N0cmVhbUNhbGxiYWNrKHRyYWNrOiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0VHJhY2ssIGVuY29kZWRBdWRpb1N0cmVhbVNpbms6IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkQXVkaW9GcmFtZT4sIGNodW5rOiBSVENFbmNvZGVkQXVkaW9GcmFtZSk6IFByb21pc2U8Q2h1bms+IHtcbiAgICBpZiAoIWF3YWl0IGVuY29kZWRBdWRpb1N0cmVhbVNpbmsodHJhY2subWVkaWFTdHJlYW1UcmFjayEsIGNodW5rKSkge1xuICAgICAgY2h1bmsuZGF0YSA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuZ2V0SW52YWxpZFN1cnJvZ2F0ZUF1ZGlvRGF0YSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjaHVuay5kYXRhID0gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5nZXRTdXJyb2dhdGVBdWRpb1NpbGVudFBlckNvZGVjKHRyYWNrLmNvZGVjIGFzIEF1ZGlvQ29kZWMpIHx8IGNodW5rLmRhdGE7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNodW5rIGFzIHVua25vd24gYXMgQ2h1bms7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGVuY29kZWRWaWRlb1N0cmVhbUNhbGxiYWNrKHRyYWNrOiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0VHJhY2ssIGVuY29kZWRWaWRlb1N0cmVhbVNpbms6IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkVmlkZW9GcmFtZT4sIGNodW5rOiBSVENFbmNvZGVkVmlkZW9GcmFtZSk6IFByb21pc2U8Q2h1bmsgfCB1bmRlZmluZWQ+IHtcbiAgICBpZiAoIWF3YWl0IGVuY29kZWRWaWRlb1N0cmVhbVNpbmsodHJhY2subWVkaWFTdHJlYW1UcmFjayEsIGNodW5rKSkge1xuICAgICAgbGV0IHN1cnJvZ2F0ZTogU3Vycm9nYXRlRnJhbWVUeXBlO1xuXG4gICAgICBpZiAoY2h1bmsudHlwZSA9PT0gJ2tleScpIHtcbiAgICAgICAgc3Vycm9nYXRlID0gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5nZXRJbnZhbGlkU3Vycm9nYXRlVmlkZW9JRnJhbWUodHJhY2suY29kZWMgYXMgVmlkZW9Db2RlYyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdXJyb2dhdGUgPSBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLmdldEludmFsaWRTdXJyb2dhdGVWaWRlb1BGcmFtZSgpO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3Vycm9nYXRlID09PSBTa2lwRnJhbWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjaHVuay5kYXRhID0gc3Vycm9nYXRlIHx8IGNodW5rLmRhdGE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChjaHVuay50eXBlID09PSAna2V5Jykge1xuICAgICAgICBjaHVuay5kYXRhID0gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5nZXRTdXJyb2dhdGVWaWRlb0lGcmFtZVBlckNvZGVjKHRyYWNrLmNvZGVjIGFzIFZpZGVvQ29kZWMpIHx8IGNodW5rLmRhdGE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjaHVuay5kYXRhID0gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5nZXRTdXJyb2dhdGVWaWRlb1BGcmFtZVBlckNvZGVjKHRyYWNrLmNvZGVjIGFzIFZpZGVvQ29kZWMpIHx8IGNodW5rLmRhdGE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNodW5rO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIElFbmNvZGVkU3RyZWFtU2luazxUIGV4dGVuZHMgUlRDRW5jb2RlZEF1ZGlvRnJhbWUgfCBSVENFbmNvZGVkVmlkZW9GcmFtZT4ge1xuICAgICh0cmFjazogTWVkaWFTdHJlYW1UcmFjaywgY2h1bms6IFQpOiBib29sZWFuIHwgUHJvbWlzZUxpa2U8Ym9vbGVhbj47XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVuY29kZWRTdHJlYW1TaW5rIHtcbiAgc3RhdGljIHZhbGlkYXRlRW5jb2RlZFN0cmVhbVNpbms8VCBleHRlbmRzIFJUQ0VuY29kZWRBdWRpb0ZyYW1lIHwgUlRDRW5jb2RlZFZpZGVvRnJhbWU+KG1vZGU6ICdhdWRpbycgfCAndmlkZW8nLCBpdGVtOiBJRW5jb2RlZFN0cmVhbVNpbms8VD4pIHtcbiAgICBpZiAodHlwZW9mIGl0ZW0gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgdmFsaWRhdGlvblJlc3VsdDogYFVuZXhwZWN0ZWQgJHttb2RlfSBFbmNvZGVkIFN0cmVhbSBTaW5rIGZ1bmN0aW9uIHR5cGUuIEZvdW5kIFske3R5cGVvZiBpdGVtfV1gXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChpdGVtLmxlbmd0aCAhPT0gMikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICB2YWxpZGF0aW9uUmVzdWx0OiBgVW5leHBlY3RlZCAke21vZGV9IEVuY29kZWQgU3RyZWFtIFNpbmsgZnVuY3Rpb24gcGFyYW1ldGVyIGxlbmd0aC4gRXhwZWN0ZWQgMi4gRm91bmQgWyR7aXRlbS5sZW5ndGh9XWBcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgdmFsaWRhdGlvblJlc3VsdDogJ29rJ1xuICAgIH07XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0VuY29kZWRTdHJlYW1TaW5rIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi8uLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5pbXBvcnQge0lTdHJlYW1UcmFja1RyYW5zZm9ybX0gZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vU3RyZWFtVHJhY2tUcmFuc2Zvcm0nO1xuaW1wb3J0IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQsIHtTdHJlYW1UcmFuc2Zvcm1Db250ZXh0VHJhY2t9IGZyb20gJy4uL2NvbnRleHQvU3RyZWFtVHJhbnNmb3JtQ29udGV4dCc7XG5pbXBvcnQgVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIgZnJvbSAnLi93b3JrZXIvVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmUud29ya2VyJztcbmltcG9ydCB7VHJhbnNmb3JtTWVzc2FnZVR5cGV9IGZyb20gJy4vd29ya2VyL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZSc7XG5pbXBvcnQgVHJhbnNmb3JtTWVzc2FnZVJvdXRlciBmcm9tICcuL3dvcmtlci9NZXNzYWdlUm91dGVyJztcblxudHlwZSBNZWRpYVN0cmVhbVRyYWNrS2luZCA9ICd2aWRlbycgfCAnYXVkaW8nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJbnNlcnRhYmxlU3RyZWFtcyB7XG4gIHN0YXRpYyBjcmVhdGVFbmNvZGVkU3RyZWFtUGlwZWxpbmUoc3RyZWFtVHJhbnNmb3JtQ29udGV4dDogU3RyZWFtVHJhbnNmb3JtQ29udGV4dCk6IERpc3Bvc2FibGVMaXN0IHtcbiAgICBjb25zdCBkaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgICBjb25zdCB7dmlkZW9UcmFjaywgYXVkaW9UcmFja30gPSBzdHJlYW1UcmFuc2Zvcm1Db250ZXh0O1xuICAgIGNvbnN0IGNyZWF0ZVRyYW5zZm9ybVBpcGVsaW5lV29ya2VyRm9yVHJhY2sgPSAoY29udGV4dDogU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrKSA9PiB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAvLyBAdHMtaWdub3JlIC0gVXNpbmcgV2VicGFjaydzIHdvcmtlciBsb2FkZXIgdG8gaW5saW5lIHdvcmtlclxuICAgICAgY29uc3Qgd29ya2VyID0gY29udGV4dC50cmFuc2Zvcm1QaXBlbGluZVdvcmtlciA9IG5ldyBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlcigpO1xuXG4gICAgICBkaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gd29ya2VyLnRlcm1pbmF0ZSgpKSk7XG4gICAgICBkaXNwb3NhYmxlcy5hZGQoY29udGV4dC50cmFuc2Zvcm1NZXNzYWdlUm91dGVyID0gbmV3IFRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXIod29ya2VyKSk7XG4gICAgfTtcblxuICAgIGNvbnN0IHtyZWNlaXZlcjogdmlkZW9UcmFja1JlY2VpdmVyLCBtZWRpYVN0cmVhbVRyYWNrOiB2aWRlb1RyYWNrTWVkaWFTdHJlYW1UcmFja30gPSB2aWRlb1RyYWNrO1xuXG4gICAgaWYgKHZpZGVvVHJhY2tSZWNlaXZlciAmJiB2aWRlb1RyYWNrTWVkaWFTdHJlYW1UcmFjaykge1xuICAgICAgY3JlYXRlVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXJGb3JUcmFjayh2aWRlb1RyYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCB7cmVjZWl2ZXI6IGF1ZGlvVHJhY2tSZWNlaXZlciwgbWVkaWFTdHJlYW1UcmFjazogYXVkaW9UcmFja01lZGlhU3RyZWFtVHJhY2t9ID0gYXVkaW9UcmFjaztcblxuICAgIGlmIChhdWRpb1RyYWNrUmVjZWl2ZXIgJiYgYXVkaW9UcmFja01lZGlhU3RyZWFtVHJhY2spIHtcbiAgICAgIGNyZWF0ZVRyYW5zZm9ybVBpcGVsaW5lV29ya2VyRm9yVHJhY2soYXVkaW9UcmFjayk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRpc3Bvc2FibGVzO1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGNvbmZpZ3VyZUVuY29kZWRTdHJlYW1QaXBlbGluZShzdHJlYW1UcmFuc2Zvcm1Db250ZXh0OiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qge3ZpZGVvVHJhY2ssIGF1ZGlvVHJhY2t9ID0gc3RyZWFtVHJhbnNmb3JtQ29udGV4dDtcbiAgICBjb25zdCBhZGRUcmFja1RyYW5zZm9ybXMgPSAodHJhY2s6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHRUcmFjaykgPT4ge1xuICAgICAgaWYgKHRyYWNrLnRyYW5zZm9ybVBpcGVsaW5lV29ya2VyKSB7XG4gICAgICAgIGlmICh0cmFjay50cmFuc2Zvcm1GdW5jdGlvbk5hbWVzLmxlbmd0aCkge1xuICAgICAgICAgIGZvciAoY29uc3QgdHJhbnNmb3JtRnVuY3Rpb25OYW1lIG9mIHRyYWNrLnRyYW5zZm9ybUZ1bmN0aW9uTmFtZXMpIHtcbiAgICAgICAgICAgIHRyYWNrLnRyYW5zZm9ybVBpcGVsaW5lV29ya2VyLnBvc3RNZXNzYWdlKHtcbiAgICAgICAgICAgICAgdHlwZTogVHJhbnNmb3JtTWVzc2FnZVR5cGUuQWRkVHJhbnNmb3JtLFxuICAgICAgICAgICAgICBkYXRhOiB0cmFuc2Zvcm1GdW5jdGlvbk5hbWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBSZXF1aXJlZCBmb3Igc2FmYXJpIHRvIHByb3Blcmx5IHdvcmsgd2hlbiBvbmx5IHZpZGVvIHRyYW5zZm9ybWF0aW9uIGlzIGFkZGVkIChpLmUuIEZyYW1lVGltaW5nSW5mb3JtYXRpb24pXG4gICAgICAgICAgdHJhY2sudHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIucG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgdHlwZTogVHJhbnNmb3JtTWVzc2FnZVR5cGUuQWRkVHJhbnNmb3JtLFxuICAgICAgICAgICAgZGF0YTogJ3Bhc3MtdGhyb3VnaCdcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBhZGRUcmFja1RyYW5zZm9ybXModmlkZW9UcmFjayk7XG4gICAgYWRkVHJhY2tUcmFuc2Zvcm1zKGF1ZGlvVHJhY2spO1xuXG4gICAgY29uc3QgY29uZmlndXJlUlRDUnRwU2NyaXB0VHJhbnNmb3JtID0gYXN5bmMoc3RyZWFtVHJhbnNmb3JtQ29udGV4dDogU3RyZWFtVHJhbnNmb3JtQ29udGV4dCkgPT4ge1xuICAgICAgLy8gU2FmYXJpIGFuZCBGaXJlZm94IC4uLlxuICAgICAgY29uc3QgY29uZmlndXJlUlRDUnRwU2NyaXB0VHJhbnNmb3JtRm9yVHJhY2sgPSBhc3luYyhjb250ZXh0OiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0VHJhY2spID0+IHtcbiAgICAgICAgY29uc3Qge3JlY2VpdmVyOiB0cmFja1JlY2VpdmVyLCBtZWRpYVN0cmVhbVRyYWNrOiB0cmFja01lZGlhU3RyZWFtVHJhY2ssIHRyYW5zZm9ybVBpcGVsaW5lV29ya2VyOiB0cmFja1RyYW5zZm9ybVBpcGVsaW5lV29ya2VyfSA9IGNvbnRleHQ7XG5cbiAgICAgICAgaWYgKHRyYWNrUmVjZWl2ZXIgJiYgdHJhY2tNZWRpYVN0cmVhbVRyYWNrICYmIHRyYWNrVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIpIHtcbiAgICAgICAgICB0cmFja1JlY2VpdmVyLnRyYW5zZm9ybSA9IG5ldyBSVENSdHBTY3JpcHRUcmFuc2Zvcm0odHJhY2tUcmFuc2Zvcm1QaXBlbGluZVdvcmtlciwge25hbWU6IGAke3RyYWNrTWVkaWFTdHJlYW1UcmFjay5raW5kfS10cmFuc2Zvcm0tcGlwZWxpbmVgfSk7XG5cbiAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4ocmVzb2x2ZSA9PiB7XG4gICAgICAgICAgICB0cmFja1RyYW5zZm9ybVBpcGVsaW5lV29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCAoe2RhdGE6IG1lc3NhZ2V9OiBNZXNzYWdlRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgaWYgKG1lc3NhZ2UudHlwZSA9PT0gVHJhbnNmb3JtTWVzc2FnZVR5cGUuUGlwZWxpbmVDb25maWd1cmVkKSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCB7b25jZTogdHJ1ZX0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgfTtcblxuICAgICAgY29uc3Qge3ZpZGVvVHJhY2ssIGF1ZGlvVHJhY2t9ID0gc3RyZWFtVHJhbnNmb3JtQ29udGV4dDtcblxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoW2NvbmZpZ3VyZVJUQ1J0cFNjcmlwdFRyYW5zZm9ybUZvclRyYWNrKHZpZGVvVHJhY2spLCBjb25maWd1cmVSVENSdHBTY3JpcHRUcmFuc2Zvcm1Gb3JUcmFjayhhdWRpb1RyYWNrKV0pO1xuICAgIH07XG5cbiAgICBjb25zdCBjb25maWd1cmVFbmNvZGVkU3RyZWFtcyA9IGFzeW5jKHN0cmVhbVRyYW5zZm9ybUNvbnRleHQ6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IGNvbmZpZ3VyZUVuY29kZWRTdHJlYW1zRm9yVHJhY2sgPSAoY29udGV4dDogU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrKSA9PiB7XG4gICAgICAgIGNvbnN0IHtyZWNlaXZlcjogdHJhY2tSZWNlaXZlciwgbWVkaWFTdHJlYW1UcmFjazogdHJhY2tNZWRpYVN0cmVhbVRyYWNrLCB0cmFuc2Zvcm1QaXBlbGluZVdvcmtlcjogdHJhY2tUcmFuc2Zvcm1QaXBlbGluZVdvcmtlcn0gPSBjb250ZXh0O1xuXG4gICAgICAgIGlmICh0cmFja1JlY2VpdmVyICYmIHRyYWNrTWVkaWFTdHJlYW1UcmFjayAmJiB0cmFja1RyYW5zZm9ybVBpcGVsaW5lV29ya2VyKSB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgICAgIC8vIEB0cy1pZ25vcmUgLSBjcmVhdGVFbmNvZGVkU3RyZWFtcyBtZXRob2QgaXMgbm90IGRlZmluZWQgaW4gbGliLmRvbS5kLnRzXG4gICAgICAgICAgY29uc3QgZW5jb2RlZFJlY2VpdmVyU3RyZWFtcyA9IHRyYWNrUmVjZWl2ZXIuY3JlYXRlRW5jb2RlZFN0cmVhbXMoKTtcblxuICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPihyZXNvbHZlID0+IHtcbiAgICAgICAgICAgIHRyYWNrVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsICh7ZGF0YTogbWVzc2FnZX06IE1lc3NhZ2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgICBpZiAobWVzc2FnZS50eXBlID09PSBUcmFuc2Zvcm1NZXNzYWdlVHlwZS5QaXBlbGluZUNvbmZpZ3VyZWQpIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIHtvbmNlOiB0cnVlfSk7XG5cbiAgICAgICAgICAgIHRyYWNrVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIucG9zdE1lc3NhZ2UoXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBUcmFuc2Zvcm1NZXNzYWdlVHlwZS5Db25maWd1cmVQaXBlbGluZSxcbiAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICBzb3VyY2U6IGVuY29kZWRSZWNlaXZlclN0cmVhbXMucmVhZGFibGUsXG4gICAgICAgICAgICAgICAgICBzaW5rOiBlbmNvZGVkUmVjZWl2ZXJTdHJlYW1zLndyaXRhYmxlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7dHJhbnNmZXI6IFtlbmNvZGVkUmVjZWl2ZXJTdHJlYW1zLnJlYWRhYmxlLCBlbmNvZGVkUmVjZWl2ZXJTdHJlYW1zLndyaXRhYmxlXX1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCB7dmlkZW9UcmFjaywgYXVkaW9UcmFja30gPSBzdHJlYW1UcmFuc2Zvcm1Db250ZXh0O1xuICAgICAgY29uc3QgYWN0aW9uczogUHJvbWlzZTx2b2lkPltdID0gW107XG5cbiAgICAgIGlmICh2aWRlb1RyYWNrLnJlY2VpdmVyICYmIHZpZGVvVHJhY2sudHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIpIHtcbiAgICAgICAgYWN0aW9ucy5wdXNoKGNvbmZpZ3VyZUVuY29kZWRTdHJlYW1zRm9yVHJhY2sodmlkZW9UcmFjaykpO1xuICAgICAgfVxuXG4gICAgICBpZiAoYXVkaW9UcmFjay5yZWNlaXZlciAmJiBhdWRpb1RyYWNrLnRyYW5zZm9ybVBpcGVsaW5lV29ya2VyKSB7XG4gICAgICAgIGFjdGlvbnMucHVzaChjb25maWd1cmVFbmNvZGVkU3RyZWFtc0ZvclRyYWNrKGF1ZGlvVHJhY2spKTtcbiAgICAgIH1cblxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoYWN0aW9ucyk7XG4gICAgfTtcblxuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5pc1JUQ1J0cFNjcmlwdFRyYW5zZm9ybVN1cHBvcnRlZCkge1xuICAgICAgLy8gU2FmYXJpIGFuZCBGaXJlZm94Li4uXG4gICAgICBhd2FpdCBjb25maWd1cmVSVENSdHBTY3JpcHRUcmFuc2Zvcm0oc3RyZWFtVHJhbnNmb3JtQ29udGV4dCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBDaHJvbWUsIENocm9taXVtLi4uXG4gICAgYXdhaXQgY29uZmlndXJlRW5jb2RlZFN0cmVhbXMoc3RyZWFtVHJhbnNmb3JtQ29udGV4dCk7XG4gIH1cblxuICBzdGF0aWMgY29uZmlndXJlSW5zZXJ0YWJsZVN0cmVhbVRyYW5zZm9ybWF0aW9uKFxuICAgIHN0cmVhbTogTWVkaWFTdHJlYW0sXG4gICAgdmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPFZpZGVvRnJhbWU+IHwgdW5kZWZpbmVkLFxuICAgIGF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IElTdHJlYW1UcmFja1RyYW5zZm9ybTxBdWRpb0RhdGE+IHwgdW5kZWZpbmVkXG4gICk6IHt0cmFuc2Zvcm1lZFN0cmVhbTogTWVkaWFTdHJlYW07IGRpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdH0ge1xuICAgIGNvbnN0IHRyYW5zZm9ybWVkU3RyZWFtID0gbmV3IE1lZGlhU3RyZWFtKCk7XG4gICAgY29uc3QgZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG5cbiAgICBzdHJlYW0uZ2V0VHJhY2tzKCkuZm9yRWFjaCh0cmFjayA9PiB7XG4gICAgICBjb25zdCBraW5kOiBNZWRpYVN0cmVhbVRyYWNrS2luZCA9IHRyYWNrLmtpbmQgYXMgTWVkaWFTdHJlYW1UcmFja0tpbmQ7XG5cbiAgICAgIHN3aXRjaCAoa2luZCkge1xuICAgICAgICBjYXNlICd2aWRlbyc6IHtcbiAgICAgICAgICBpZiAodmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaykge1xuICAgICAgICAgICAgY29uc3QgaW5zZXJ0YWJsZVN0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBUcmFuc2Zvcm1lclRyYW5zZm9ybUNhbGxiYWNrPFZpZGVvRnJhbWUsIFZpZGVvRnJhbWU+ID0gKGNodW5rLCBjb250cm9sbGVyKSA9PiB7XG4gICAgICAgICAgICAgIHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2sodHJhY2ssIGNodW5rLCBjb250cm9sbGVyKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IHZpZGVvVHJhY2sgPSB0cmFjayBhcyBNZWRpYVN0cmVhbVZpZGVvVHJhY2s7XG4gICAgICAgICAgICBjb25zdCB0cmFuc2Zvcm1lciA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oe3RyYW5zZm9ybTogaW5zZXJ0YWJsZVN0cmVhbVRyYW5zZm9ybUNhbGxiYWNrfSk7XG4gICAgICAgICAgICBjb25zdCBwcm9jZXNzb3IgPSBuZXcgTWVkaWFTdHJlYW1UcmFja1Byb2Nlc3Nvcih7dHJhY2s6IHZpZGVvVHJhY2t9KTtcbiAgICAgICAgICAgIGNvbnN0IGdlbmVyYXRvciA9IG5ldyBNZWRpYVN0cmVhbVRyYWNrR2VuZXJhdG9yKHtraW5kOiB2aWRlb1RyYWNrLmtpbmR9KTtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IHByb2Nlc3Nvci5yZWFkYWJsZTtcbiAgICAgICAgICAgIGNvbnN0IHNpbmsgPSBnZW5lcmF0b3Iud3JpdGFibGU7XG5cbiAgICAgICAgICAgIHNvdXJjZS5waXBlVGhyb3VnaCh0cmFuc2Zvcm1lcikucGlwZVRvKHNpbmspO1xuXG4gICAgICAgICAgICB0cmFuc2Zvcm1lZFN0cmVhbS5hZGRUcmFjayhnZW5lcmF0b3IpO1xuICAgICAgICAgICAgZGlzcG9zYWJsZXMuYWRkKFxuICAgICAgICAgICAgICBuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtZWRTdHJlYW0ucmVtb3ZlVHJhY2soZ2VuZXJhdG9yKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybWVkU3RyZWFtLmFkZFRyYWNrKHRyYWNrKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgJ2F1ZGlvJzoge1xuICAgICAgICAgIGlmIChhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrKSB7XG4gICAgICAgICAgICBjb25zdCBpbnNlcnRhYmxlU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IFRyYW5zZm9ybWVyVHJhbnNmb3JtQ2FsbGJhY2s8QXVkaW9EYXRhLCBBdWRpb0RhdGE+ID0gKGNodW5rLCBjb250cm9sbGVyKSA9PiB7XG4gICAgICAgICAgICAgIGF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2sodHJhY2ssIGNodW5rLCBjb250cm9sbGVyKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IGF1ZGlvVHJhY2sgPSB0cmFjayBhcyBNZWRpYVN0cmVhbUF1ZGlvVHJhY2s7XG4gICAgICAgICAgICBjb25zdCB0cmFuc2Zvcm1lciA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oe3RyYW5zZm9ybTogaW5zZXJ0YWJsZVN0cmVhbVRyYW5zZm9ybUNhbGxiYWNrfSk7XG4gICAgICAgICAgICBjb25zdCBwcm9jZXNzb3IgPSBuZXcgTWVkaWFTdHJlYW1UcmFja1Byb2Nlc3Nvcih7dHJhY2s6IGF1ZGlvVHJhY2t9KTtcbiAgICAgICAgICAgIGNvbnN0IGdlbmVyYXRvciA9IG5ldyBNZWRpYVN0cmVhbVRyYWNrR2VuZXJhdG9yKHtraW5kOiBhdWRpb1RyYWNrLmtpbmR9KTtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IHByb2Nlc3Nvci5yZWFkYWJsZTtcbiAgICAgICAgICAgIGNvbnN0IHNpbmsgPSBnZW5lcmF0b3Iud3JpdGFibGU7XG5cbiAgICAgICAgICAgIHNvdXJjZS5waXBlVGhyb3VnaCh0cmFuc2Zvcm1lcikucGlwZVRvKHNpbmspO1xuXG4gICAgICAgICAgICB0cmFuc2Zvcm1lZFN0cmVhbS5hZGRUcmFjayhnZW5lcmF0b3IpO1xuXG4gICAgICAgICAgICBjb25zdCBtZWRpYVN0cmVhbSA9IG5ldyBNZWRpYVN0cmVhbSgpO1xuICAgICAgICAgICAgY29uc3QgYXVkaW9QdW1wZXIgPSBuZXcgQXVkaW8oKTtcblxuICAgICAgICAgICAgbWVkaWFTdHJlYW0uYWRkVHJhY2sodHJhY2spO1xuICAgICAgICAgICAgYXVkaW9QdW1wZXIuc3JjT2JqZWN0ID0gbWVkaWFTdHJlYW07XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGF1ZGlvUHVtcGVyKTtcbiAgICAgICAgICAgIGRpc3Bvc2FibGVzLmFkZChcbiAgICAgICAgICAgICAgbmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybWVkU3RyZWFtLnJlbW92ZVRyYWNrKGdlbmVyYXRvcik7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChhdWRpb1B1bXBlcik7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm1lZFN0cmVhbS5hZGRUcmFjayh0cmFjayk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGtpbmQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRyYW5zZm9ybWVkU3RyZWFtLFxuICAgICAgZGlzcG9zYWJsZXNcbiAgICB9O1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnNlcnRhYmxlU3RyZWFtcyBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN0cmVhbVRyYWNrVHJhbnNmb3JtPFQgZXh0ZW5kcyBBdWRpb0RhdGEgfCBWaWRlb0ZyYW1lPiB7XG4gICAgKHRyYWNrOiBNZWRpYVN0cmVhbVRyYWNrLCBjaHVuazogVCwgY29udHJvbGxlcjogVHJhbnNmb3JtU3RyZWFtRGVmYXVsdENvbnRyb2xsZXI8VD4pOiB2b2lkIHwgUHJvbWlzZUxpa2U8dm9pZD47XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN0cmVhbVRyYWNrVHJhbnNmb3JtIHtcbiAgc3RhdGljIHZhbGlkYXRlTWVkaWFTdHJlYW1UcmFja1RyYW5zZm9ybTxUIGV4dGVuZHMgQXVkaW9EYXRhIHwgVmlkZW9GcmFtZT4obW9kZTogJ2F1ZGlvJyB8ICd2aWRlbycsIGl0ZW06IElTdHJlYW1UcmFja1RyYW5zZm9ybTxUPikge1xuICAgIGlmICh0eXBlb2YgaXRlbSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICB2YWxpZGF0aW9uUmVzdWx0OiBgVW5leHBlY3RlZCAke21vZGV9IE1lZGlhIFN0cmVhbSBUcmFjayB0cmFuc2Zvcm0gZnVuY3Rpb24gdHlwZS4gRm91bmQgWyR7dHlwZW9mIGl0ZW19XWBcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKGl0ZW0ubGVuZ3RoICE9PSAzKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgIHZhbGlkYXRpb25SZXN1bHQ6IGBVbmV4cGVjdGVkICR7bW9kZX0gTWVkaWEgU3RyZWFtIFRyYWNrIHRyYW5zZm9ybSBmdW5jdGlvbiBwYXJhbWV0ZXIgbGVuZ3RoLiBFeHBlY3RlZCAzLiBGb3VuZCBbJHtpdGVtLmxlbmd0aH1dYFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICB2YWxpZGF0aW9uUmVzdWx0OiAnb2snXG4gICAgfTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEJyb3dzZXJEZXRlY3RvciBmcm9tICcuLi8uLi9kb20vQnJvd3NlckRldGVjdG9yJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCB7QXVkaW9Db2RlY30gZnJvbSAnLi4vZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9BdWRpb0NvZGVjJztcbmltcG9ydCB7VmlkZW9Db2RlY30gZnJvbSAnLi4vZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9WaWRlb0NvZGVjJztcbmltcG9ydCBhbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSBmcm9tICcuLi9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL2gyNjQvbmFsVW5pdC9Bbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSc7XG5pbXBvcnQgc3Vycm9nYXRlSDI2NDI4eDE2SUZyYW1lIGZyb20gJy4vc3Vycm9nYXRlRnJhbWVzL2gyNjQvc3Vycm9nYXRlMjh4MTZJRnJhbWUnO1xuaW1wb3J0IHN1cnJvZ2F0ZUgyNjQyOHgxNlBGcmFtZSBmcm9tICcuL3N1cnJvZ2F0ZUZyYW1lcy9oMjY0L3N1cnJvZ2F0ZTI4eDE2UEZyYW1lJztcblxuZXhwb3J0IGNvbnN0IFNraXBGcmFtZSA9IFN5bWJvbCgpO1xuXG5leHBvcnQgdHlwZSBTdXJyb2dhdGVGcmFtZVR5cGUgPSBBcnJheUJ1ZmZlciB8IHVuZGVmaW5lZCB8IHR5cGVvZiBTa2lwRnJhbWU7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNTYWZhcmkgPSBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdTYWZhcmknO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNBbmRyb2lkQ2hyb21lID0gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuaXNBbmRyb2lkO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfc2luZ2xlWmVyb0J5dGUgPSBuZXcgVWludDhBcnJheShbMHgwMF0pO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZHVtbXlBdWRpb1NpbGVudFBlckNvZGVjID0ge09QVVM6IG5ldyBVaW50OEFycmF5KFsweDY4LCAweDA3LCAweGQ5LCAweGFiLCAweGJjLCAweDc5LCAweDg3LCAweGFiLCAweDhlLCAweDRhLCAweDE0LCAweGYzLCAweGE3LCAweDFjLCAweGYyLCAweDlhLCAweDdhLCAweDQ1LCAweGE3LCAweDJkLCAweDQ0LCAweDI1LCAweDc0LCAweDRjLCAweGFkLCAweDE2LCAweGIzLCAweDBlLCAweDUxLCAweDU3LCAweGVhLCAweGU3LCAweGFkLCAweDJhLCAweDM4LCAweGNlLCAweDMzXSl9O1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZHVtbXkyeDJWaWRlb0lGcmFtZVBlckNvZGVjID0ge1xuICAgIEgyNjQ6IG5ldyBVaW50OEFycmF5KFtcbiAgICAgIC4uLmFubmV4QkZvdXJCeXRlU3RhcnRDb2RlLCAweDA5LCAweGYwLCAvLyBBY2Nlc3MgdW5pdCBkZWxpbWl0ZXJcbiAgICAgIC4uLmFubmV4QkZvdXJCeXRlU3RhcnRDb2RlLCAweDY3LCAweGY0LCAweDAwLCAweDBhLCAweDkxLCAweDliLCAweDJiLCAweGYxLCAweGYxLCAweGY4LCAweDA4LCAweDgwLCAweDAwLCAweDAwLCAweDAzLCAweDAwLCAweDgwLCAweDAwLCAweDAwLCAweDE5LCAweDA3LCAweDg5LCAweDEyLCAweGNiLCAvLyBTZXF1ZW5jZSBwYXJhbWV0ZXIgc2V0XG4gICAgICAuLi5hbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSwgMHg2OCwgMHhlYiwgMHhlMywgMHhjNCwgMHg0OCwgMHg0NCwgLy8gUGljdHVyZSBwYXJhbXRlciBzZXRcbiAgICAgIC8qICovIDB4MDAsIDB4MDAsIDB4MDEsIDB4NjUsIDB4ODgsIDB4ODIsIDB4MDAsIDB4M2YsIDB4NzAsIDB4MjMsIDB4ODYsIDB4ZTYsIDB4ZDEsIDB4ODAsIDB4MDksIDB4YWYsIDB4MGEsIDB4NDEsIDB4NjYsIDB4NmIsIDB4NTQsIDB4NDYsIDB4ZmIsIDB4NzEsIDB4ZDksIDB4N2YsIDB4ZmYsIDB4ZmYsIDB4ZjldKSwgLy8gU2xpY2UgbGF5ZXI6IGlkciBkYXRhXG4gICAgVlA4OiBuZXcgVWludDhBcnJheShbMHhiMCwgMHgwMiwgMHgwMCwgMHg5ZCwgMHgwMSwgMHgyYSwgMHgwMSwgMHgwMCwgMHgwMSwgMHgwMCwgMHgzOSwgMHg2YiwgMHgwMCwgMHgyNywgMHgxYywgMHgyNCwgMHgwYywgMHgyYywgMHgyYywgMHg0NCwgMHhjYywgMHgyNCwgMHg0MSwgMHhhOCwgMHgwMCwgMHgxMywgMHhhNywgMHhhMywgMHg3YSwgMHg1MCwgMHgwMCwgMHhmZSwgMHhlYiwgMHhkZSwgMHgyZiwgMHg4YSwgMHgxZSwgMHg2YiwgMHg3YiwgMHgwNywgMHg3MiwgMHg2MywgMHgwOSwgMHhhNCwgMHg4ZSwgMHhjMF0pLFxuICAgIFZQOTogbmV3IFVpbnQ4QXJyYXkoWzB4ODIsIDB4NDksIDB4ODMsIDB4NDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDYsIDB4NzYsIDB4MzgsIDB4MjQsIDB4MWMsIDB4MTksIDB4YTAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4NDAsIDB4MDAsIDB4MTEsIDB4YmYsIDB4ZGQsIDB4NzcsIDB4ZmYsIDB4NDAsIDB4N2YsIDB4YjEsIDB4MDBdKVxuICB9O1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZHVtbXkyeDJWaWRlb1BGcmFtZVBlckNvZGVjID0ge1xuICAgIEgyNjQ6IG5ldyBVaW50OEFycmF5KFtcbiAgICAgIC4uLmFubmV4QkZvdXJCeXRlU3RhcnRDb2RlLCAweDA5LCAweGYwLCAvLyBBY2Nlc3MgdW5pdCBkZWxpbWl0ZXJcbiAgICAgIC4uLmFubmV4QkZvdXJCeXRlU3RhcnRDb2RlLCAweDQxLCAweDlhLCAweDY4LCAweDQ5LCAweGE4LCAweDQxLCAweDY4LCAweDk5LCAweDRjLCAweDBmLCAweGZmLCAweDkyLCAweDgxXSksIC8vIFNsaWNlIGxheWVyOiBub24gaWRyIGRhdGFcbiAgICBWUDg6IG5ldyBVaW50OEFycmF5KFsweDMxLCAweDAzLCAweDAwLCAweGU0LCAweGUwLCAweGE4LCAweDliLCAweDM3LCAweGFmLCAweDEwLCAweDRmLCAweDRmLCAweGIxLCAweDBhLCAweDJmLCAweGU0LCAweDkyLCAweGMwLCAweDFmLCAweGU3LCAweDRmLCAweDQ2LCAweGZmLCAweGVlLCAweDUxLCAweGMxLCAweDVkLCAweDAwLCAweGZlLCAweGViLCAweGRlLCAweDJmLCAweDhhLCAweDFlLCAweDZiLCAweDdiLCAweDA3LCAweDcyLCAweDYzLCAweDA5LCAweGE0LCAweDhlLCAweGMwXSksXG4gICAgVlA5OiBuZXcgVWludDhBcnJheShbMHg4NiwgMHgwMCwgMHg0MCwgMHg5MiwgMHg5YywgMHgyNCwgMHg0OCwgMHgwMCwgMHgwMCwgMHgwMywgMHg3MCwgMHgwMCwgMHgwMCwgMHg0YiwgMHg0MF0pXG4gIH07XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9zdXJyb2dhdGUyOHgxNkgyNjRJRnJhbWUgPSBzdXJyb2dhdGVIMjY0Mjh4MTZJRnJhbWU7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9zdXJyb2dhdGUyOHgxNkgyNjRQRnJhbWUgPSBzdXJyb2dhdGVIMjY0Mjh4MTZQRnJhbWU7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9zdXJyb2dhdGUyOHgxNlBGcmFtZUZyYW1lTnVtYmVyUmVzZXQgPSAxO1xuICBwcml2YXRlIHN0YXRpYyBfc3Vycm9nYXRlMjh4MTZQRnJhbWVGcmFtZU51bWJlciA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3N1cnJvZ2F0ZTI4eDE2UEZyYW1lRnJhbWVOdW1iZXJSZXNldDtcblxuICBzdGF0aWMgZ2V0U3Vycm9nYXRlQXVkaW9TaWxlbnRQZXJDb2RlYyhjb2RlYzogQXVkaW9Db2RlYyk6IEFycmF5QnVmZmVyIHwgdW5kZWZpbmVkIHtcbiAgICBzd2l0Y2ggKGNvZGVjKSB7XG4gICAgICBjYXNlIEF1ZGlvQ29kZWMuT1BVUzpcbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15QXVkaW9TaWxlbnRQZXJDb2RlYy5PUFVTLmJ1ZmZlcjtcblxuICAgICAgLy8gVE9ETyAoQVopOiBBZGQgYSBkdW1teSBBQUMgc2lsZW50IGZyYW1lIHdoZW4gQUFDIHN1cHBvcnQgaXMgYWRkZWRcbiAgICAgIGNhc2UgQXVkaW9Db2RlYy5BQUM6XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGNvZGVjKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZ2V0SW52YWxpZFN1cnJvZ2F0ZUF1ZGlvRGF0YSgpOiBBcnJheUJ1ZmZlciB7XG4gICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3NpbmdsZVplcm9CeXRlLmJ1ZmZlcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXRTdXJyb2dhdGVWaWRlb0lGcmFtZVBlckNvZGVjKGNvZGVjOiBWaWRlb0NvZGVjKTogQXJyYXlCdWZmZXIgfCB1bmRlZmluZWQge1xuICAgIHN3aXRjaCAoY29kZWMpIHtcbiAgICAgIGNhc2UgVmlkZW9Db2RlYy5IMjY0OlxuICAgICAgICBpZiAoU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5faXNTYWZhcmkpIHtcbiAgICAgICAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc3Vycm9nYXRlMjh4MTZIMjY0SUZyYW1lLmJ1ZmZlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9kdW1teTJ4MlZpZGVvSUZyYW1lUGVyQ29kZWMuSDI2NC5idWZmZXI7XG5cbiAgICAgIGNhc2UgVmlkZW9Db2RlYy5WUDg6XG4gICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9kdW1teTJ4MlZpZGVvSUZyYW1lUGVyQ29kZWMuVlA4LmJ1ZmZlcjtcblxuICAgICAgY2FzZSBWaWRlb0NvZGVjLlZQOTpcbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15MngyVmlkZW9JRnJhbWVQZXJDb2RlYy5WUDkuYnVmZmVyO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShjb2RlYyk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGdldEludmFsaWRTdXJyb2dhdGVWaWRlb0lGcmFtZShjb2RlYzogVmlkZW9Db2RlYyk6IFN1cnJvZ2F0ZUZyYW1lVHlwZSB7XG4gICAgaWYgKChjb2RlYyA9PT0gVmlkZW9Db2RlYy5IMjY0KSAmJiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9pc0FuZHJvaWRDaHJvbWUpIHtcbiAgICAgIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3N1cnJvZ2F0ZTI4eDE2UEZyYW1lRnJhbWVOdW1iZXIgPSBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zdXJyb2dhdGUyOHgxNlBGcmFtZUZyYW1lTnVtYmVyUmVzZXQ7XG5cbiAgICAgIHJldHVybiBTa2lwRnJhbWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3NpbmdsZVplcm9CeXRlLmJ1ZmZlcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXRTdXJyb2dhdGVWaWRlb1BGcmFtZVBlckNvZGVjKGNvZGVjOiBWaWRlb0NvZGVjKTogQXJyYXlCdWZmZXIgfCB1bmRlZmluZWQge1xuICAgIHN3aXRjaCAoY29kZWMpIHtcbiAgICAgIGNhc2UgVmlkZW9Db2RlYy5IMjY0OiB7XG4gICAgICAgIGlmIChTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9pc1NhZmFyaSkge1xuICAgICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zdXJyb2dhdGUyOHgxNkgyNjRQRnJhbWUuYnVmZmVyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15MngyVmlkZW9QRnJhbWVQZXJDb2RlYy5IMjY0LmJ1ZmZlcjtcbiAgICAgIH1cblxuICAgICAgY2FzZSBWaWRlb0NvZGVjLlZQODpcbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15MngyVmlkZW9QRnJhbWVQZXJDb2RlYy5WUDguYnVmZmVyO1xuXG4gICAgICBjYXNlIFZpZGVvQ29kZWMuVlA5OlxuICAgICAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fZHVtbXkyeDJWaWRlb1BGcmFtZVBlckNvZGVjLlZQOS5idWZmZXI7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGNvZGVjKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZ2V0SW52YWxpZFN1cnJvZ2F0ZVZpZGVvUEZyYW1lKCk6IFN1cnJvZ2F0ZUZyYW1lVHlwZSB7XG4gICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3NpbmdsZVplcm9CeXRlLmJ1ZmZlcjtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IGFubmV4QkZvdXJCeXRlU3RhcnRDb2RlIGZyb20gJy4uLy4uLy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvaDI2NC9uYWxVbml0L0FubmV4QkZvdXJCeXRlU3RhcnRDb2RlJztcblxuZXhwb3J0IGRlZmF1bHQgbmV3IFVpbnQ4QXJyYXkoW1xuICAuLi5hbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSwgMTAzLCA2NiwgMTkyLCA0MiwgMjE4LCA0LCA0LCAyMzIsIDY0LCAwLCAwLCAzLCAwLCA2NCwgMCwgMCwgMTUsIDM1LCAxOTgsIDEyLCAxNjgsXG4gIC4uLmFubmV4QkZvdXJCeXRlU3RhcnRDb2RlLCAxMDQsIDIwNiwgNjAsIDEyOCxcbiAgLi4uYW5uZXhCRm91ckJ5dGVTdGFydENvZGUsIDYsIDMsIDE2NywgLi4ubmV3IFVpbnQ4QXJyYXkoMTUwKS5maWxsKDI1NSksIDEyOCxcbiAgLi4uYW5uZXhCRm91ckJ5dGVTdGFydENvZGUsIDEwMSwgMTM2LCAxMzIsIDYsIDE5MSwgMjU1LCAyNTUsIDE1LCA2OSwgMCwgMSwgODcsIDE1OSwgLi4ubmV3IFVpbnQ4QXJyYXkoMTUpLmZpbGwoMzkpLCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgMTI4XG5dKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBhbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSBmcm9tICcuLi8uLi8uLi9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL2gyNjQvbmFsVW5pdC9Bbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSc7XG5cbmV4cG9ydCBkZWZhdWx0IG5ldyBVaW50OEFycmF5KFtcbiAgLi4uYW5uZXhCRm91ckJ5dGVTdGFydENvZGUsIDYsIDMsIDI1NSwgNjEsIC4uLm5ldyBVaW50OEFycmF5KDMxNikuZmlsbCgyNTUpLCAxMjgsXG4gIC4uLmFubmV4QkZvdXJCeXRlU3RhcnRDb2RlLCA2NSwgMTU0LCAzMiwgMjYsIDI0MCwgMTgsIDQ4XG5dKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi8uLi8uLi9sYW5nL0lEaXNwb3NhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uLy4uLy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQge1RyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZSwgVHJhbnNmb3JtTWVzc2FnZSwgVHJhbnNmb3JtTWVzc2FnZVBheWxvYWQsIFRyYW5zZm9ybU1lc3NhZ2VUeXBlfSBmcm9tICcuL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRyYW5zZm9ybVBpcGVsaW5lTWVzc2FnZVJvdXRlciBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWVzc2FnZVJvdXRlczogTWFwPFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZSwgPFQ+KG1lc3NhZ2U6IFQpID0+IHZvaWQ+ID0gbmV3IE1hcCgpO1xuXG4gIGNvbnN0cnVjdG9yKHdvcmtlcjogV29ya2VyKSB7XG4gICAgdGhpcy5pbml0aWFsaXplKHdvcmtlcik7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJSb3V0ZTxUPihtZXNzYWdlVHlwZTogVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlLCByb3V0ZU1lc3NhZ2U6IChtZXNzYWdlOiBUKSA9PiB2b2lkKTogRGlzcG9zYWJsZSB7XG4gICAgdGhpcy5fbWVzc2FnZVJvdXRlcy5zZXQobWVzc2FnZVR5cGUsIHJvdXRlTWVzc2FnZSBhcyA8VD4obWVzc2FnZTogVCkgPT4gdm9pZCk7XG5cbiAgICByZXR1cm4gbmV3IERpc3Bvc2FibGUoKCkgPT4gdGhpcy5fbWVzc2FnZVJvdXRlcy5kZWxldGUobWVzc2FnZVR5cGUpKTtcbiAgfVxuXG4gIHB1YmxpYyBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX21lc3NhZ2VSb3V0ZXMuY2xlYXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZSh3b3JrZXI6IFdvcmtlcik6IHZvaWQge1xuICAgIHdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgKHtkYXRhOiBtZXNzYWdlfTogTWVzc2FnZUV2ZW50PFRyYW5zZm9ybU1lc3NhZ2U+KSA9PiB7XG4gICAgICBjb25zdCByb3V0ZU1lc3NhZ2VEYXRhID0gPFQ+KHt0eXBlLCBkYXRhfTogVHJhbnNmb3JtTWVzc2FnZVBheWxvYWQ8VD4pID0+IHtcbiAgICAgICAgY29uc3Qgcm91dGVNZXNzYWdlID0gdGhpcy5fbWVzc2FnZVJvdXRlcy5nZXQodHlwZSk7XG5cbiAgICAgICAgaWYgKCFyb3V0ZU1lc3NhZ2UpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByb3V0ZU1lc3NhZ2UoZGF0YSk7XG4gICAgICB9O1xuXG4gICAgICBzd2l0Y2ggKG1lc3NhZ2UudHlwZSkge1xuICAgICAgICBjYXNlIFRyYW5zZm9ybU1lc3NhZ2VUeXBlLkNodW5rOlxuICAgICAgICBjYXNlIFRyYW5zZm9ybU1lc3NhZ2VUeXBlLk1ldGFkYXRhOlxuICAgICAgICAgIHJvdXRlTWVzc2FnZURhdGEobWVzc2FnZS5kYXRhKTtcblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICB9XG4gICAgfSwge29uY2U6IGZhbHNlfSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBDaHVuayBmcm9tICcuLi9DaHVuayc7XG5pbXBvcnQge1J0cFRpbWVzdGFtcH0gZnJvbSAnLi4vLi4vZnJhbWVUaW1pbmcvRnJhbWVUaW1pbmdJbmZvcm1hdGlvbic7XG5pbXBvcnQge0RlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uUGF5bG9hZH0gZnJvbSAnLi90cmFuc2Zvcm1zL2ZyYW1lVGltaW5nSW5mb3JtYXRpb24nO1xuXG5leHBvcnQgZW51bSBUcmFuc2Zvcm1NZXNzYWdlVHlwZSB7XG4gIEVycm9yID0gLTEsXG4gIEFkZFRyYW5zZm9ybSA9IDAsXG4gIENvbmZpZ3VyZVBpcGVsaW5lID0gMSxcbiAgTWV0YWRhdGEgPSAyLFxuICBDaHVuayA9IDMsXG4gIFBpcGVsaW5lQ29uZmlndXJlZCA9IDRcbn1cblxuZXhwb3J0IGVudW0gVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlIHtcbiAgRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiA9IDAsXG4gIEVuY29kZWRWaWRlb0NodW5rID0gMSxcbiAgRW5jb2RlZEF1ZGlvQ2h1bmsgPSAyLFxuICBTdXJyb2dhdGVWaWRlb0NodW5rID0gMyxcbiAgU3Vycm9nYXRlQXVkaW9DaHVuayA9IDRcbn1cblxuZXhwb3J0IHR5cGUgVHJhbnNmb3JtTWVzc2FnZVBheWxvYWQ8VD4gPSB7XG4gIHR5cGU6IFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZTtcbiAgZGF0YTogVDtcbn07XG5cbnR5cGUgV2ViUlRDSW5zZXJ0YWJsZVN0cmVhbXMgPSB7XG4gIHNvdXJjZTogUmVhZGFibGVTdHJlYW07XG4gIHNpbms6IFdyaXRhYmxlU3RyZWFtO1xufTtcblxuZXhwb3J0IHR5cGUgVHJhbnNmb3JtU3RyZWFtTWV0YWRhdGEgPSBEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblBheWxvYWQ7XG5leHBvcnQgdHlwZSBNZXRhZGF0YU1lc3NhZ2VQYXlsb2FkID0ge1t0aW1lc3RhbXA6IFJ0cFRpbWVzdGFtcF06IHtkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbjogVHJhbnNmb3JtU3RyZWFtTWV0YWRhdGF9fTtcblxudHlwZSBUcmFuc2Zvcm1OYW1lID0gc3RyaW5nO1xuZXhwb3J0IHR5cGUgVHJhbnNmb3JtTWVzc2FnZSA9XG4gIHwge1xuICAgICAgdHlwZTogVHJhbnNmb3JtTWVzc2FnZVR5cGUuQWRkVHJhbnNmb3JtO1xuICAgICAgZGF0YTogVHJhbnNmb3JtTmFtZTtcbiAgICB9XG4gIHwge1xuICAgICAgdHlwZTogVHJhbnNmb3JtTWVzc2FnZVR5cGUuQ29uZmlndXJlUGlwZWxpbmU7XG4gICAgICBkYXRhOiBXZWJSVENJbnNlcnRhYmxlU3RyZWFtcztcbiAgICB9XG4gIHwge1xuICAgICAgdHlwZTogVHJhbnNmb3JtTWVzc2FnZVR5cGUuTWV0YWRhdGE7XG4gICAgICBkYXRhOiBUcmFuc2Zvcm1NZXNzYWdlUGF5bG9hZDxNZXRhZGF0YU1lc3NhZ2VQYXlsb2FkPjtcbiAgICB9XG4gIHwge1xuICAgICAgdHlwZTogVHJhbnNmb3JtTWVzc2FnZVR5cGUuQ2h1bms7XG4gICAgICBkYXRhOiBUcmFuc2Zvcm1NZXNzYWdlUGF5bG9hZDxDaHVuaz47XG4gICAgfTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmRlY2xhcmUgY29uc3QgX19CVUlMRF9WRVJTSU9OX186IHN0cmluZztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVyc2lvbk1hbmFnZXIge1xuICBwcml2YXRlIHN0YXRpYyBfZGVmYXVsdFZlcnNpb24gPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG5cbiAgc3RhdGljIGdldCBzZGtWZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBfX0JVSUxEX1ZFUlNJT05fXztcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZGVmYXVsdFZlcnNpb247XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgVGVsZW1ldHJ5U2VydmljZSBmcm9tICcuL1RlbGVtZXRyeVNlcnZpY2UnO1xuaW1wb3J0IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24gZnJvbSAnLi9UZWxlbWV0cnlDb25maWd1cmF0aW9uJztcbmltcG9ydCB7SUFwcGVuZGVyfSBmcm9tICcuLi9sb2dnZXIvSUFwcGVuZGVyJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVsZW1ldHJ5QXBwZW5kZXIgaW1wbGVtZW50cyBJQXBwZW5kZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF90ZWxlbWV0cnlTZXJ2aWNlOiBUZWxlbWV0cnlTZXJ2aWNlO1xuICBwcml2YXRlIHJlYWRvbmx5IF90ZW5hbmN5OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Nlc3Npb25JZDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF90aHJlc2hvbGQ6IExvZ2dpbmdMZXZlbDtcblxuICBjb25zdHJ1Y3Rvcih0ZWxlbWV0cnlDb25maWd1cmF0aW9uOiBUZWxlbWV0cnlDb25maWd1cmF0aW9uKSB7XG4gICAgdGhpcy5fdGVuYW5jeSA9IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udGVuYW5jeTtcbiAgICB0aGlzLl9zZXNzaW9uSWQgPSB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnNlc3Npb25JZDtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnRocmVzaG9sZDtcbiAgICB0aGlzLl90ZWxlbWV0cnlTZXJ2aWNlID0gbmV3IFRlbGVtZXRyeVNlcnZpY2UodGVsZW1ldHJ5Q29uZmlndXJhdGlvbik7XG4gIH1cblxuICBsb2cobG9nTGV2ZWw6IExvZ2dpbmdMZXZlbCwgbWVzc2FnZTogc3RyaW5nLCBjYXRlZ29yeTogc3RyaW5nLCBkYXRlOiBEYXRlKTogdm9pZCB7XG4gICAgaWYgKGxvZ0xldmVsIDwgdGhpcy5fdGhyZXNob2xkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fdGVsZW1ldHJ5U2VydmljZS5wdXNoKGxvZ0xldmVsLCBtZXNzYWdlLCBjYXRlZ29yeSwgZGF0ZSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbH0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlcic7XG5pbXBvcnQgTG9nZ2VyRGVmYXVsdHMgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckRlZmF1bHRzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiB7XG4gIHByaXZhdGUgX3VybCA9ICdodHRwczovL3RlbGVtZXRyeS5waGVuaXhydHMuY29tL3RlbGVtZXRyeS9sb2dzJztcbiAgcHJpdmF0ZSBfdGVuYW5jeTogc3RyaW5nID0gJy0nO1xuICBwcml2YXRlIF9zZXNzaW9uSWQ6IHN0cmluZyA9ICctJztcbiAgcHJpdmF0ZSBfZW52aXJvbm1lbnQ6IHN0cmluZyA9ICctJztcbiAgcHJpdmF0ZSBfcGFnZUxvYWRUaW1lOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIF90aHJlc2hvbGQgPSBMb2dnZXJEZWZhdWx0cy5kZWZhdWx0VGVsZW1ldHJ5TG9nZ2luZ0xldmVsO1xuXG4gIGdldCB1cmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdXJsO1xuICB9XG5cbiAgc2V0IHVybCh1cmw6IHN0cmluZykge1xuICAgIGNvbnN0IHRlbGVtZXRyeVVybCA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodXJsKTtcblxuICAgIHRlbGVtZXRyeVVybC5wYXRobmFtZSA9IHRlbGVtZXRyeVVybC5wYXRobmFtZSArICcvbG9ncyc7XG5cbiAgICB0aGlzLl91cmwgPSB0ZWxlbWV0cnlVcmwudG9TdHJpbmcoKTtcbiAgfVxuXG4gIGdldCBlbnZpcm9ubWVudCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9lbnZpcm9ubWVudDtcbiAgfVxuXG4gIHNldCBlbnZpcm9ubWVudChlbnZpcm9ubWVudDogc3RyaW5nKSB7XG4gICAgdGhpcy5fZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgfVxuXG4gIGdldCB0ZW5hbmN5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3RlbmFuY3k7XG4gIH1cblxuICBzZXQgdGVuYW5jeSh0ZW5hbmN5OiBzdHJpbmcpIHtcbiAgICB0aGlzLl90ZW5hbmN5ID0gdGVuYW5jeTtcbiAgfVxuXG4gIGdldCBzZXNzaW9uSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc2Vzc2lvbklkO1xuICB9XG5cbiAgc2V0IHNlc3Npb25JZChzZXNzaW9uSWQ6IHN0cmluZykge1xuICAgIHRoaXMuX3Nlc3Npb25JZCA9IHNlc3Npb25JZDtcbiAgfVxuXG4gIGdldCBwYWdlTG9hZFRpbWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcGFnZUxvYWRUaW1lO1xuICB9XG5cbiAgc2V0IHBhZ2VMb2FkVGltZShwYWdlTG9hZFRpbWU6IG51bWJlcikge1xuICAgIHRoaXMuX3BhZ2VMb2FkVGltZSA9IHBhZ2VMb2FkVGltZTtcbiAgfVxuXG4gIGdldCB0aHJlc2hvbGQoKTogTG9nZ2luZ0xldmVsIHtcbiAgICByZXR1cm4gdGhpcy5fdGhyZXNob2xkO1xuICB9XG5cbiAgc2V0IHRocmVzaG9sZCh0aHJlc2hvbGQ6IExvZ2dpbmdMZXZlbCkge1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRocmVzaG9sZDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBOdW1iZXJzIGZyb20gJy4uL2xhbmcvTnVtYmVycyc7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbH0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlcic7XG5pbXBvcnQgVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiBmcm9tICcuL1RlbGVtZXRyeUNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IFZlcnNpb25NYW5hZ2VyIGZyb20gJy4uL3Nkay92ZXJzaW9uL1ZlcnNpb25NYW5hZ2VyJztcblxuY29uc3QgcmVxdWVzdFNpemVMaW1pdCA9IDgxOTI7XG5cbmludGVyZmFjZSBJTG9nSXRlbSB7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xuICB0ZW5hbmN5OiBzdHJpbmc7XG4gIGxldmVsOiBzdHJpbmc7XG4gIGNhdGVnb3J5OiBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgc2Vzc2lvbklkOiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbiAgZW52aXJvbm1lbnQ6IHN0cmluZztcbiAgZnVsbFF1YWxpZmllZE5hbWU6IHN0cmluZztcbiAgcnVudGltZTogbnVtYmVyO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfdGVsZW1ldHJ5Q29uZmlndXJhdGlvbjogVGVsZW1ldHJ5Q29uZmlndXJhdGlvbjtcblxuICBwcml2YXRlIF9sb2dzOiBBcnJheTxJTG9nSXRlbT4gPSBbXTtcbiAgcHJpdmF0ZSBfaXNTZW5kaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2RvbWFpbiA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKHRlbGVtZXRyeUNvbmZpZ3VyYXRpb246IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24pIHtcbiAgICB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uID0gdGVsZW1ldHJ5Q29uZmlndXJhdGlvbjtcbiAgICB0aGlzLmdldExvY2F0aW9uSG9zdG5hbWVGcm9tR2xvYmFsU2NvcGUoKS50aGVuKGxvY2F0aW9uSG9zdG5hbWUgPT4ge1xuICAgICAgdGhpcy5fZG9tYWluID0gbG9jYXRpb25Ib3N0bmFtZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1c2gobG9nTGV2ZWw6IExvZ2dpbmdMZXZlbCwgbWVzc2FnZTogc3RyaW5nLCBjYXRlZ29yeTogc3RyaW5nLCB0aW1lc3RhbXA6IERhdGUpOiB2b2lkIHtcbiAgICBjb25zdCBydW50aW1lID0gKHRpbWVzdGFtcC52YWx1ZU9mKCkgLSB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnBhZ2VMb2FkVGltZSkgLyAxMDAwO1xuICAgIGNvbnN0IGxvZ1JlY29yZCA9IHtcbiAgICAgIHRpbWVzdGFtcDogdGltZXN0YW1wLnRvSVNPU3RyaW5nKCksXG4gICAgICB0ZW5hbmN5OiB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnRlbmFuY3ksXG4gICAgICBsZXZlbDogTG9nZ2luZ0xldmVsW2xvZ0xldmVsXSxcbiAgICAgIGNhdGVnb3J5LFxuICAgICAgbWVzc2FnZSxcbiAgICAgIHNlc3Npb25JZDogdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5zZXNzaW9uSWQsXG4gICAgICB2ZXJzaW9uOiBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uLFxuICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24uZW52aXJvbm1lbnQsXG4gICAgICBmdWxsUXVhbGlmaWVkTmFtZTogdGhpcy5fZG9tYWluLFxuICAgICAgcnVudGltZVxuICAgIH07XG5cbiAgICBpZiAobG9nTGV2ZWwgPCBMb2dnaW5nTGV2ZWwuRXJyb3IpIHtcbiAgICAgIHRoaXMuX2xvZ3MucHVzaChsb2dSZWNvcmQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9sb2dzLnVuc2hpZnQobG9nUmVjb3JkKTtcbiAgICB9XG5cbiAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTG9nc0lmQWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMb2NhdGlvbkhvc3RuYW1lRnJvbUdsb2JhbFNjb3BlKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4ocmVzb2x2ZUxvY2F0aW9uSG9zdG5hbWUgPT4ge1xuICAgICAgY29uc3QgZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24gPSBHbG9iYWxTY29wZS5zdWJzY3JpYmUoZ2xvYmFsU2NvcGUgPT4ge1xuICAgICAgICBpZiAoIWdsb2JhbFNjb3BlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzb2x2ZUxvY2F0aW9uSG9zdG5hbWUoZ2xvYmFsU2NvcGUubG9jYXRpb25Ib3N0bmFtZSk7XG4gICAgICAgIGdsb2JhbFNjb3BlLnNldFRpbWVvdXQoKCkgPT4gZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24uZGlzcG9zZSgpLCAwKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kTG9ncyhsb2dNZXNzYWdlczogQXJyYXk8SUxvZ0l0ZW0+KTogUHJvbWlzZTxSZXNwb25zZSB8IHZvaWQ+IHtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KHtyZWNvcmRzOiBsb2dNZXNzYWdlc30pKTtcblxuICAgIHJldHVybiBhd2FpdCBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnVybCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBmb3JtRGF0YVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kTG9nc0lmQWJsZSgpOiBQcm9taXNlPFJlc3BvbnNlIHwgdm9pZD4ge1xuICAgIGlmICh0aGlzLl9sb2dzLmxlbmd0aCA8PSAwIHx8IHRoaXMuX2lzU2VuZGluZyB8fCAhR2xvYmFsU2NvcGUudmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgbnVtYmVyT2ZMb2dzVG9TZW5kID0gMDtcbiAgICBsZXQgc2l6ZU9mTG9nc1RvU2VuZCA9IDA7XG5cbiAgICB0aGlzLl9pc1NlbmRpbmcgPSB0cnVlO1xuXG4gICAgY29uc3QgZ2V0SXRlbVNpemUgPSAoaXRlbTogbnVtYmVyIHwgc3RyaW5nKSA9PiB0eXBlb2YgaXRlbSA9PT0gJ251bWJlcicgPyBOdW1iZXJzLmNvdW50TnVtYmVyTGVuZ3RoKGl0ZW0pIDogaXRlbS5sZW5ndGg7XG4gICAgY29uc3QgZ2V0TG9nU2l6ZSA9IChsb2c6IElMb2dJdGVtKTogbnVtYmVyID0+IE9iamVjdC52YWx1ZXMobG9nKVxuICAgICAgLnJlZHVjZSgoc3VtLCBpdGVtKSA9PiBzdW0gKyAoaXRlbSA/IGdldEl0ZW1TaXplKGl0ZW0pIDogMCksIDApO1xuXG4gICAgd2hpbGUgKHRoaXMuX2xvZ3MubGVuZ3RoID4gbnVtYmVyT2ZMb2dzVG9TZW5kICYmIGdldExvZ1NpemUodGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdKSArIHNpemVPZkxvZ3NUb1NlbmQgPCByZXF1ZXN0U2l6ZUxpbWl0KSB7XG4gICAgICBzaXplT2ZMb2dzVG9TZW5kICs9IGdldExvZ1NpemUodGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdKTtcbiAgICAgIG51bWJlck9mTG9nc1RvU2VuZCsrO1xuICAgIH1cblxuICAgIGlmICghbnVtYmVyT2ZMb2dzVG9TZW5kKSB7XG4gICAgICB0aGlzLl9sb2dzW251bWJlck9mTG9nc1RvU2VuZF0ubWVzc2FnZSA9IHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXS5tZXNzYWdlLnN1YnN0cmluZygwLFxuICAgICAgICBnZXRMb2dTaXplKHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXSkgKyAocmVxdWVzdFNpemVMaW1pdCAtIGdldExvZ1NpemUodGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdKSkpO1xuICAgICAgbnVtYmVyT2ZMb2dzVG9TZW5kID0gMTtcbiAgICB9XG5cbiAgICBjb25zdCBsb2dNZXNzYWdlcyA9IHRoaXMuX2xvZ3Muc2xpY2UoMCwgbnVtYmVyT2ZMb2dzVG9TZW5kKTtcblxuICAgIHRoaXMuX2xvZ3MgPSB0aGlzLl9sb2dzLnNsaWNlKG51bWJlck9mTG9nc1RvU2VuZCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZW5kTG9ncyhsb2dNZXNzYWdlcykudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICB0aGlzLl9pc1NlbmRpbmcgPSBmYWxzZTtcblxuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZExvZ3NJZkFibGUoKTtcblxuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgIHRoaXMuX2lzU2VuZGluZyA9IGZhbHNlO1xuXG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTG9nc0lmQWJsZSgpO1xuICAgIH0pO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEdXJhdGlvbnMge1xuICBwcml2YXRlIHJlYWRvbmx5IF9kdXJhdGlvbjogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKGR1cmF0aW9uID0gMCkge1xuICAgIHRoaXMuX2R1cmF0aW9uID0gZHVyYXRpb247XG4gIH1cblxuICB0b0lzb1N0cmluZygpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLl9kdXJhdGlvbiA9PT0gMCkge1xuICAgICAgcmV0dXJuICdQMFMnO1xuICAgIH1cblxuICAgIGNvbnN0IGlzTmVnYXRpdmUgPSB0aGlzLl9kdXJhdGlvbiA8IDA7XG4gICAgY29uc3QgZHVyYXRpb24gPSBpc05lZ2F0aXZlID8gTWF0aC5hYnModGhpcy5fZHVyYXRpb24pIDogdGhpcy5fZHVyYXRpb247XG4gICAgbGV0IG9mZnNldCA9IE1hdGguZmxvb3IoZHVyYXRpb24pO1xuICAgIGNvbnN0IG1pbGxpc2Vjb25kcyA9IG9mZnNldCAlIDEwMDA7XG5cbiAgICBvZmZzZXQgPSBNYXRoLmZsb29yKG9mZnNldCAvIDEwMDApO1xuXG4gICAgY29uc3Qgc2Vjb25kcyA9IG9mZnNldCAlIDYwO1xuXG4gICAgb2Zmc2V0ID0gTWF0aC5mbG9vcihvZmZzZXQgLyA2MCk7XG5cbiAgICBjb25zdCBtaW51dGVzID0gb2Zmc2V0ICUgNjA7XG5cbiAgICBvZmZzZXQgPSBNYXRoLmZsb29yKG9mZnNldCAvIDYwKTtcblxuICAgIGNvbnN0IGhvdXJzID0gb2Zmc2V0ICUgMjQ7XG4gICAgY29uc3QgcGFydHMgPSBbJ1BUJ107XG5cbiAgICBpZiAoaXNOZWdhdGl2ZSkge1xuICAgICAgcGFydHMudW5zaGlmdCgnLScpO1xuICAgIH1cblxuICAgIGlmIChob3Vycykge1xuICAgICAgcGFydHMucHVzaChob3VycyArICdIJyk7XG4gICAgfVxuXG4gICAgaWYgKG1pbnV0ZXMpIHtcbiAgICAgIHBhcnRzLnB1c2gobWludXRlcyArICdNJyk7XG4gICAgfVxuXG4gICAgaWYgKHNlY29uZHMgfHwgbWlsbGlzZWNvbmRzKSB7XG4gICAgICBwYXJ0cy5wdXNoKFN0cmluZyhzZWNvbmRzKSk7XG5cbiAgICAgIGlmIChtaWxsaXNlY29uZHMpIHtcbiAgICAgICAgcGFydHMucHVzaCgnLicgKyB0aGlzLnBhZFN0YXJ0KG1pbGxpc2Vjb25kcy50b1N0cmluZygpLCAzLCAnMCcpKTtcbiAgICAgIH1cblxuICAgICAgcGFydHMucHVzaCgnUycpO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJ0cy5qb2luKCcnKTtcbiAgfVxuXG4gIHBhZFN0YXJ0KGl0ZW06IHN0cmluZywgdGFyZ2V0TGVuZ3RoOiBudW1iZXIsIHBhZFN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0YXJnZXRMZW5ndGggPSB0YXJnZXRMZW5ndGggPj4gMDtcbiAgICBwYWRTdHJpbmcgPSBTdHJpbmcoKHR5cGVvZiBwYWRTdHJpbmcgIT09ICd1bmRlZmluZWQnID8gcGFkU3RyaW5nIDogJyAnKSk7XG5cbiAgICBpZiAoaXRlbS5sZW5ndGggPiB0YXJnZXRMZW5ndGgpIHtcbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cblxuICAgIHRhcmdldExlbmd0aCA9IHRhcmdldExlbmd0aCAtIGl0ZW0ubGVuZ3RoO1xuXG4gICAgaWYgKHRhcmdldExlbmd0aCA+IHBhZFN0cmluZy5sZW5ndGgpIHtcbiAgICAgIHBhZFN0cmluZyArPSBwYWRTdHJpbmcucmVwZWF0KHRhcmdldExlbmd0aCAvIHBhZFN0cmluZy5sZW5ndGgpO1xuICAgIH1cblxuICAgIHJldHVybiBwYWRTdHJpbmcuc2xpY2UoMCwgdGFyZ2V0TGVuZ3RoKSArIGl0ZW07XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmNvbnN0IGRlZmF1bHRCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gMjAwMDtcbmNvbnN0IGRlZmF1bHRNaW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gMTtcbmNvbnN0IGRlZmF1bHRNYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gMzAwMDAwO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFeHBvbmVudGlhbEJhY2tvZmYge1xuICBwcml2YXRlIHJlYWRvbmx5IF9iYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ6IG51bWJlciA9IGRlZmF1bHRCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kLFxuICAgIG1pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ6IG51bWJlciA9IGRlZmF1bHRNaW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kLFxuICAgIG1heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ6IG51bWJlciA9IGRlZmF1bHRNYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kXG4gICkge1xuICAgIHRoaXMuX2JhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgPSBiYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kO1xuICAgIHRoaXMuX21pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgPSBtaW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kO1xuICAgIHRoaXMuX21heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgPSBtYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kO1xuICB9XG5cbiAgZ2V0RXhwb25lbnRpYWxCYWNrb2ZmSW50ZXJ2YWxCeUZhaWx1cmVDb3VudChmYWlsdXJlQ291bnQ6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgYmFja29mZkludGVydmFsSW5TZWNvbmRzID0gdGhpcy5fYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCAvIDEwMDA7XG4gICAgY29uc3QgcmFuZG9taXphdGlvbiA9IDAuNSArICgwLjUgKiBNYXRoLnJhbmRvbSgpKTsgLy8gWzAuNSwgMSlcbiAgICBjb25zdCBleHBvbmVudGlhbEJhY2tvZmYgPSBNYXRoLnBvdyhiYWNrb2ZmSW50ZXJ2YWxJblNlY29uZHMsIGZhaWx1cmVDb3VudCAtIDIpOyAvLyAgWzEvNCAxLzIgMSAyIDQgOCAuLi4uXVxuICAgIGNvbnN0IGV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uID0gTWF0aC5mbG9vcihleHBvbmVudGlhbEJhY2tvZmYpICogcmFuZG9taXphdGlvbjtcbiAgICBjb25zdCBleHBvbmVudGlhbEJhY2tvZmZXaXRoUmFuZG9taXphdGlvbkluTWlsbGlzZWNvbmQgPSBNYXRoLmNlaWwoTWF0aC5tYXgoZXhwb25lbnRpYWxCYWNrb2ZmV2l0aFJhbmRvbWl6YXRpb24gKiAxMDAwLCB0aGlzLl9taW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kKSk7XG5cbiAgICByZXR1cm4gTWF0aC5taW4oZXhwb25lbnRpYWxCYWNrb2ZmV2l0aFJhbmRvbWl6YXRpb25Jbk1pbGxpc2Vjb25kLCB0aGlzLl9tYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IElDb21wYXJhYmxlIGZyb20gJy4uL2xhbmcvSUNvbXBhcmFibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaW1lbnNpb24gaW1wbGVtZW50cyBJQ29tcGFyYWJsZTxEaW1lbnNpb24+IHtcbiAgcmVhZG9ubHkgd2lkdGg6IG51bWJlcjtcbiAgcmVhZG9ubHkgaGVpZ2h0OiBudW1iZXI7XG5cbiAgc3RhdGljIGdldCBlbXB0eSgpOiBEaW1lbnNpb24ge1xuICAgIHJldHVybiBuZXcgRGltZW5zaW9uKDAsIDApO1xuICB9XG5cbiAgY29uc3RydWN0b3Iod2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpIHtcbiAgICB0aGlzLndpZHRoID0gd2lkdGg7XG4gICAgdGhpcy5oZWlnaHQgPSBoZWlnaHQ7XG4gIH1cblxuICBlcXVhbHMob3RoZXI6IERpbWVuc2lvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBvdGhlciAmJiB0aGlzLndpZHRoID09PSBvdGhlci53aWR0aCAmJiB0aGlzLmhlaWdodCA9PT0gb3RoZXIuaGVpZ2h0O1xuICB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy53aWR0aH14JHt0aGlzLmhlaWdodH1gO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge1N0cmVhbVNldHVwTGlzdGVuZXJ9IGZyb20gJy4uL2RvbS9TdHJlYW1TZXR1cExpc3RlbmVyJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgTmV0d29ya01vbml0b3IgZnJvbSAnLi4vZG9tL05ldHdvcmtNb25pdG9yJztcbmltcG9ydCBTREsgZnJvbSAnLi4vc2RrL1NESyc7XG5pbXBvcnQgTWV0cmljc1R5cGUgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzVHlwZSc7XG5pbXBvcnQgRHVyYXRpb25zIGZyb20gJy4uL3RpbWUvRHVyYXRpb24nO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IE1ldHJpY3NTZXJ2aWNlIGZyb20gJy4uL21ldHJpY3MvTWV0cmljc1NlcnZpY2UnO1xuXG5pbnRlcmZhY2UgSU5ldHdvcmtTdGF0aXN0aWNzIHtcbiAgcnR0PzogbnVtYmVyO1xuICBlZmZlY3RpdmVUeXBlPzogc3RyaW5nO1xuICBkb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2Vzc2lvblRlbGVtZXRyeSBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1Nlc3Npb25UZWxlbWV0cnknKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciA9IFNESy5hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbmV0d29ya01vbml0b3I6IE5ldHdvcmtNb25pdG9yID0gbmV3IE5ldHdvcmtNb25pdG9yKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BhZ2VMb2FkVGltZTogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSBfbGFzdE5ldHdvcmtTdGF0aXN0aWNzOiBJTmV0d29ya1N0YXRpc3RpY3MgPSB7fTtcblxuICBjb25zdHJ1Y3RvcihwYWdlTG9hZFRpbWU6IG51bWJlciwgbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlKSB7XG4gICAgdGhpcy5fcGFnZUxvYWRUaW1lID0gcGFnZUxvYWRUaW1lO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh0aGlzLl9uZXR3b3JrTW9uaXRvcik7XG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UgPSBtZXRyaWNzU2VydmljZTtcblxuICAgIGlmICghdGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU2Vzc2lvblRlbGVtZXRyeSBGYWlsZWQ6IE5vIGFwcGxpY2F0aW9uIG1vbml0b3IgaW5pdGlhbGl6ZWQuJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLl9uZXR3b3JrTW9uaXRvci5pc1N1cHBvcnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvci5pc0ZvcmVncm91bmQuc3Vic2NyaWJlKGlzRm9yZWdyb3VuZCA9PiB7XG4gICAgICB0aGlzLnJlY29yZEZvcmVncm91bmRDaGFuZ2UoaXNGb3JlZ3JvdW5kKTtcbiAgICB9KSk7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX25ldHdvcmtNb25pdG9yLnJ0dC5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMucmVjb3JkTmV0d29ya1JUVFVwZGF0ZSh2YWx1ZSk7XG4gICAgfSkpO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh0aGlzLl9uZXR3b3JrTW9uaXRvci5lZmZlY3RpdmVUeXBlLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5yZWNvcmROZXR3b3JrVHlwZUNoYW5nZVVwZGF0ZSh2YWx1ZSk7XG4gICAgfSkpO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh0aGlzLl9uZXR3b3JrTW9uaXRvci5kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMucmVjb3JkTmV0d29ya0Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5VXBkYXRlKHZhbHVlKTtcbiAgICB9KSk7XG4gIH1cblxuICBsaXN0ZW5PblN0cmVhbVNldHVwKCk6IFN0cmVhbVNldHVwTGlzdGVuZXIge1xuICAgIHJldHVybiBuZXcgU3RyZWFtU2V0dXBMaXN0ZW5lcih0aGlzLl9wYWdlTG9hZFRpbWUpO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZEZvcmVncm91bmRDaGFuZ2UoaXNGb3JlZ3JvdW5kOiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCB0aW1lU2luY2VMYXN0Q2hhbmdlID0gdGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3I/LmdldFRpbWVTaW5jZUxhc3RDaGFuZ2UoKTtcblxuICAgIGlmICghdGltZVNpbmNlTGFzdENoYW5nZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogaXNGb3JlZ3JvdW5kID8gTWV0cmljc1R5cGUuQXBwbGljYXRpb25Gb3JlZ3JvdW5kIDogTWV0cmljc1R5cGUuQXBwbGljYXRpb25CYWNrZ3JvdW5kLFxuICAgICAgcnVudGltZTogKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgdmFsdWU6IHt1aW50NjQ6IHRpbWVTaW5jZUxhc3RDaGFuZ2V9XG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdBcHBsaWNhdGlvbiBoYXMgZ29uZSBpbnRvIHRoZSBbJXNdIGFmdGVyIFslc10gbXMnLFxuICAgICAgaXNGb3JlZ3JvdW5kID8gJ2ZvcmVncm91bmQnIDogJ2JhY2tncm91bmQnLFxuICAgICAgbmV3IER1cmF0aW9ucyh0aW1lU2luY2VMYXN0Q2hhbmdlKS50b0lzb1N0cmluZygpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZE5ldHdvcmtSVFRVcGRhdGUobmV3UlRUOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IG9sZFJ0dCA9IHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5ydHQ7XG5cbiAgICB0aGlzLl9sYXN0TmV0d29ya1N0YXRpc3RpY3MucnR0ID0gbmV3UlRUO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5Sb3VuZFRyaXBUaW1lLFxuICAgICAgcnVudGltZTogKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgdmFsdWU6IHt1aW50NjQ6IG5ld1JUVH0sXG4gICAgICBwcmV2aW91c1ZhbHVlOiBvbGRSdHQgPyB7dWludDY0OiBvbGRSdHR9IDogdW5kZWZpbmVkLFxuICAgICAgcmVzb3VyY2U6ICduYXZpZ2F0b3InXG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdbJXNdIE5ldHdvcmsgUlRUIGNoYW5nZWQgdG8gWyVzXSBmcm9tIFslc10nLFxuICAgICAgbmV3IER1cmF0aW9ucyhub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpLnRvSXNvU3RyaW5nKCksXG4gICAgICBuZXdSVFQsXG4gICAgICBvbGRSdHRcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSByZWNvcmROZXR3b3JrVHlwZUNoYW5nZVVwZGF0ZShuZXdOZXR3b3JrVHlwZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBvbGROZXR3b3JrVHlwZSA9IHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5lZmZlY3RpdmVUeXBlO1xuXG4gICAgdGhpcy5fbGFzdE5ldHdvcmtTdGF0aXN0aWNzLmVmZmVjdGl2ZVR5cGUgPSBuZXdOZXR3b3JrVHlwZTtcblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuTmV0d29ya1R5cGUsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3N0cmluZzogbmV3TmV0d29ya1R5cGV9LFxuICAgICAgcHJldmlvdXNWYWx1ZTogb2xkTmV0d29ya1R5cGUgPyB7c3RyaW5nOiBvbGROZXR3b3JrVHlwZX0gOiB1bmRlZmluZWRcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gTmV0d29yayBlZmZlY3RpdmUgdHlwZSBoYXMgY2hhbmdlZCB0byBbJXNdIGZyb20gWyVzXScsXG4gICAgICBuZXcgRHVyYXRpb25zKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkudG9Jc29TdHJpbmcoKSxcbiAgICAgIG5ld05ldHdvcmtUeXBlLFxuICAgICAgb2xkTmV0d29ya1R5cGVcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSByZWNvcmROZXR3b3JrRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHlVcGRhdGUobmV3Q2FwYWNpdHk6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgb2xkQ2FwYWNpdHkgPSB0aGlzLl9sYXN0TmV0d29ya1N0YXRpc3RpY3MuZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHk7XG5cbiAgICB0aGlzLl9sYXN0TmV0d29ya1N0YXRpc3RpY3MuZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkgPSBuZXdDYXBhY2l0eTtcblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHksXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge2Zsb2F0OiBuZXdDYXBhY2l0eX0sXG4gICAgICBwcmV2aW91c1ZhbHVlOiBvbGRDYXBhY2l0eSA/IHtmbG9hdDogb2xkQ2FwYWNpdHl9IDogdW5kZWZpbmVkXG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdbJXNdIE5ldHdvcmsgZG93bmxpbmsgdGhyb3VnaHB1dCBjYXBhY2l0eSBjaGFuZ2VkIHRvIFslc10gZnJvbSBbJXNdJyxcbiAgICAgIG5ldyBEdXJhdGlvbnMobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKS50b0lzb1N0cmluZygpLFxuICAgICAgbmV3Q2FwYWNpdHksXG4gICAgICBvbGRDYXBhY2l0eVxuICAgICk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgRHVyYXRpb25zIGZyb20gJy4uL3RpbWUvRHVyYXRpb24nO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0lEaXNwb3NhYmxlJztcbmltcG9ydCBNZXRyaWNzVHlwZSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NUeXBlJztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCBNZXRyaWNzU2VydmljZSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NTZXJ2aWNlJztcblxudHlwZSBDb250aW51YXRpb25FdmVudCA9IEhUTUxWaWRlb0VsZW1lbnRFdmVudE1hcFsncGxheScgfCAncGxheWluZycgfCAncHJvZ3Jlc3MnIHwgJ3RpbWV1cGRhdGUnXTtcbmNvbnN0IG5vb3AgPSAoKTogdm9pZCA9PiB1bmRlZmluZWQ7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZpZGVvVGVsZW1ldHJ5IGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9wYWdlTG9hZFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfY2hhbm5lbFN0YXJ0VGltZTogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignU3RyZWFtVGVsZW1ldHJ5Jyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdHJlYW1JZDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgX2xpc3RlblRvRmlyc3RUaW1lOiAoKSA9PiB2b2lkID0gbm9vcDtcbiAgcHJpdmF0ZSBfbGlzdGVuRm9yU3RhbGw6ICgpID0+IHZvaWQgPSBub29wO1xuICBwcml2YXRlIF9saXN0ZW5Gb3JDb250aW51YXRpb246IChldmVudDogQ29udGludWF0aW9uRXZlbnQpID0+IHZvaWQgPSBub29wO1xuICBwcml2YXRlIF90aW1lVG9GaXJzdEZyYW1lOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIF9jaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIF9zdGFydFJlY29yZGluZ0ZpcnN0RnJhbWU6IG51bWJlciA9IDA7XG4gIHByaXZhdGUgX3ZpZGVvU3RhbGxlZDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX2xhc3RQcm9ncmVzczogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBfdmlkZW9SZXNvbHV0aW9uOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBfY2xlYXJUaW1lVG9GaXJzdEZyYW1lTGlzdGVuZXI6IERpc3Bvc2FibGUgPSBuZXcgRGlzcG9zYWJsZSgoKSA9PiBudWxsKTtcbiAgcHJpdmF0ZSBfY2xlYXJSZWJ1ZmZlcmluZ0xpc3RlbmVyOiBEaXNwb3NhYmxlID0gbmV3IERpc3Bvc2FibGUoKCkgPT4gbnVsbCk7XG5cbiAgY29uc3RydWN0b3Ioc3RyZWFtSWQ6IHN0cmluZywgcGFnZUxvYWRUaW1lOiBudW1iZXIsIGNoYW5uZWxTdGFydFRpbWU6IG51bWJlciwgbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlKSB7XG4gICAgdGhpcy5fc3RyZWFtSWQgPSBzdHJlYW1JZDtcbiAgICB0aGlzLl9wYWdlTG9hZFRpbWUgPSBwYWdlTG9hZFRpbWU7XG4gICAgdGhpcy5fY2hhbm5lbFN0YXJ0VGltZSA9IGNoYW5uZWxTdGFydFRpbWU7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZSA9IG1ldHJpY3NTZXJ2aWNlO1xuICB9XG5cbiAgc2V0dXBMaXN0ZW5lckZvclRpbWVUb0ZpcnN0VGltZSh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCk6IHZvaWQge1xuICAgIHRoaXMuX3N0YXJ0UmVjb3JkaW5nRmlyc3RGcmFtZSA9IERhdGUubm93KCk7XG5cbiAgICB0aGlzLl9saXN0ZW5Ub0ZpcnN0VGltZSA9ICgpOiB2b2lkID0+IHRoaXMuY2FsbFRpbWVUb0ZpcnN0RnJhbWUoKTtcblxuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRlZGRhdGEnLCB0aGlzLl9saXN0ZW5Ub0ZpcnN0VGltZSk7XG4gICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcignbG9hZGVkbWV0YWRhdGEnLCB0aGlzLl9saXN0ZW5Ub0ZpcnN0VGltZSk7XG5cbiAgICB0aGlzLl9jbGVhclRpbWVUb0ZpcnN0RnJhbWVMaXN0ZW5lciA9IG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICAgIHZpZGVvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2xvYWRlZGRhdGEnLCB0aGlzLl9saXN0ZW5Ub0ZpcnN0VGltZSk7XG4gICAgICB2aWRlby5yZW1vdmVFdmVudExpc3RlbmVyKCdsb2FkZWRtZXRhZGF0YScsIHRoaXMuX2xpc3RlblRvRmlyc3RUaW1lKTtcbiAgICB9KTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodGhpcy5fY2xlYXJUaW1lVG9GaXJzdEZyYW1lTGlzdGVuZXIpO1xuICB9XG5cbiAgc2V0dXBMaXN0ZW5lckZvclJlYnVmZmVyaW5nKHZpZGVvOiBIVE1MVmlkZW9FbGVtZW50KTogdm9pZCB7XG4gICAgdGhpcy5fbGlzdGVuRm9yU3RhbGwgPSAoKTogdm9pZCA9PiB0aGlzLm9uU3RhbGwoKTtcblxuICAgIHRoaXMuX2xpc3RlbkZvckNvbnRpbnVhdGlvbiA9IChldmVudDogQ29udGludWF0aW9uRXZlbnQpOiB2b2lkID0+IHRoaXMub25Db250aW51YXRpb24oZXZlbnQsIHZpZGVvKTtcblxuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3N0YWxsZWQnLCB0aGlzLl9saXN0ZW5Gb3JTdGFsbCk7XG4gICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcigncGF1c2UnLCB0aGlzLl9saXN0ZW5Gb3JTdGFsbCk7XG4gICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcignc3VzcGVuZCcsIHRoaXMuX2xpc3RlbkZvclN0YWxsKTtcbiAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdwbGF5JywgdGhpcy5fbGlzdGVuRm9yQ29udGludWF0aW9uKTtcbiAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdwbGF5aW5nJywgdGhpcy5fbGlzdGVuRm9yQ29udGludWF0aW9uKTtcbiAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdwcm9ncmVzcycsIHRoaXMuX2xpc3RlbkZvckNvbnRpbnVhdGlvbik7XG4gICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcigndGltZXVwZGF0ZScsIHRoaXMuX2xpc3RlbkZvckNvbnRpbnVhdGlvbik7XG5cbiAgICB0aGlzLl9jbGVhclJlYnVmZmVyaW5nTGlzdGVuZXIgPSBuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICB2aWRlby5yZW1vdmVFdmVudExpc3RlbmVyKCdzdGFsbGVkJywgdGhpcy5fbGlzdGVuRm9yU3RhbGwpO1xuICAgICAgdmlkZW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigncGF1c2UnLCB0aGlzLl9saXN0ZW5Gb3JTdGFsbCk7XG4gICAgICB2aWRlby5yZW1vdmVFdmVudExpc3RlbmVyKCdzdXNwZW5kJywgdGhpcy5fbGlzdGVuRm9yU3RhbGwpO1xuICAgICAgdmlkZW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigncGxheScsIHRoaXMuX2xpc3RlbkZvckNvbnRpbnVhdGlvbik7XG4gICAgICB2aWRlby5yZW1vdmVFdmVudExpc3RlbmVyKCdwbGF5aW5nJywgdGhpcy5fbGlzdGVuRm9yQ29udGludWF0aW9uKTtcbiAgICAgIHZpZGVvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Byb2dyZXNzJywgdGhpcy5fbGlzdGVuRm9yQ29udGludWF0aW9uKTtcbiAgICAgIHZpZGVvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RpbWV1cGRhdGUnLCB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24pO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX2NsZWFyUmVidWZmZXJpbmdMaXN0ZW5lcik7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGR1cmF0aW9uU2luY2VQYWdlTG9hZCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG5cbiAgICByZXR1cm4gbmV3IER1cmF0aW9ucyhub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpLnRvSXNvU3RyaW5nKCk7XG4gIH1cblxuICBwcml2YXRlIGNhbGxUaW1lVG9GaXJzdEZyYW1lKCk6IHZvaWQge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG5cbiAgICB0aGlzLnB1c2hUaW1lVG9GaXJzdEZyYW1lKG5vdyk7XG4gICAgdGhpcy5wdXNoQ2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZShub3cpO1xuXG4gICAgdGhpcy5fY2xlYXJUaW1lVG9GaXJzdEZyYW1lTGlzdGVuZXIuZGlzcG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBwdXNoVGltZVRvRmlyc3RGcmFtZShub3c6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX3RpbWVUb0ZpcnN0RnJhbWUgPSBub3cgLSB0aGlzLl9zdGFydFJlY29yZGluZ0ZpcnN0RnJhbWU7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLlRpbWVUb0ZpcnN0RnJhbWUsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogdGhpcy5fdGltZVRvRmlyc3RGcmFtZX0sXG4gICAgICBzdHJlYW1JZDogdGhpcy5fc3RyZWFtSWRcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gWyVzXSBGaXJzdCBmcmFtZSBbJXNdJyxcbiAgICAgIHRoaXMuZHVyYXRpb25TaW5jZVBhZ2VMb2FkLFxuICAgICAgdGhpcy5fc3RyZWFtSWQsXG4gICAgICBuZXcgRHVyYXRpb25zKHRoaXMuX3RpbWVUb0ZpcnN0RnJhbWUpLnRvSXNvU3RyaW5nKClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBwdXNoQ2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZShub3c6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX2NoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUgPSBub3cgLSB0aGlzLl9jaGFubmVsU3RhcnRUaW1lO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5DaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lLFxuICAgICAgcnVudGltZTogKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgdmFsdWU6IHt1aW50NjQ6IHRoaXMuX2NoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWV9LFxuICAgICAgc3RyZWFtSWQ6IHRoaXMuX3N0cmVhbUlkXG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdbJXNdIFslc10gQ2hhbm5lbCBjcmVhdGlvbiB0byBmaXJzdCBmcmFtZSBbJXNdJyxcbiAgICAgIHRoaXMuZHVyYXRpb25TaW5jZVBhZ2VMb2FkLFxuICAgICAgdGhpcy5fc3RyZWFtSWQsXG4gICAgICBuZXcgRHVyYXRpb25zKHRoaXMuX2NoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUpLnRvSXNvU3RyaW5nKClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBvblN0YWxsKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl92aWRlb1N0YWxsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLlN0YWxsZWQsXG4gICAgICBydW50aW1lOiAoRGF0ZS5ub3coKSAtIHRoaXMuX3BhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgc3RyZWFtSWQ6IHRoaXMuX3N0cmVhbUlkXG4gICAgfSk7XG5cbiAgICB0aGlzLl92aWRlb1N0YWxsZWQgPSBEYXRlLm5vdygpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnWyVzXSBbJXNdIFtidWZmZXJpbmddIFN0cmVhbSBoYXMgc3RhbGxlZCcsXG4gICAgICB0aGlzLmR1cmF0aW9uU2luY2VQYWdlTG9hZCxcbiAgICAgIHRoaXMuX3N0cmVhbUlkXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgb25Db250aW51YXRpb24oZXZlbnQ6IENvbnRpbnVhdGlvbkV2ZW50LCB2aWRlbzogSFRNTFZpZGVvRWxlbWVudCk6IHZvaWQge1xuICAgIGlmICghdmlkZW8uYnVmZmVyZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBidWZmZXJMZW5ndGggPSB2aWRlby5idWZmZXJlZC5sZW5ndGg7XG4gICAgY29uc3QgaGFzTm90UHJvZ3Jlc3NlZFNpbmNlTGFzdFByb2dyZXNzRXZlbnQgPSBldmVudC50eXBlID09PSAncGxheWluZydcbiAgICB8fCBidWZmZXJMZW5ndGggPiAwID8gKGV2ZW50LnR5cGUgPT09ICdwcm9ncmVzcydcbiAgICAgIHx8IGV2ZW50LnR5cGUgPT09ICd0aW1ldXBkYXRlJylcbiAgICAgICYmIHZpZGVvLmJ1ZmZlcmVkLmVuZChidWZmZXJMZW5ndGggLSAxKSA9PT0gdGhpcy5fbGFzdFByb2dyZXNzIDogdHJ1ZTtcblxuICAgIGlmICghdGhpcy5fdmlkZW9TdGFsbGVkIHx8IGhhc05vdFByb2dyZXNzZWRTaW5jZUxhc3RQcm9ncmVzc0V2ZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICdwcm9ncmVzcycpIHtcbiAgICAgIHRoaXMuX2xhc3RQcm9ncmVzcyA9IHZpZGVvLmJ1ZmZlcmVkLmVuZChidWZmZXJMZW5ndGggLSAxKTtcbiAgICB9XG5cbiAgICBjb25zdCB0aW1lU2luY2VTdG9wID0gRGF0ZS5ub3coKSAtIHRoaXMuX3ZpZGVvU3RhbGxlZDtcblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuQnVmZmVyaW5nLFxuICAgICAgcnVudGltZTogKERhdGUubm93KCkgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7dWludDY0OiB0aW1lU2luY2VTdG9wfSxcbiAgICAgIHN0cmVhbUlkOiB0aGlzLl9zdHJlYW1JZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnWyVzXSBbJXNdIFtidWZmZXJpbmddIFN0cmVhbSBoYXMgcmVjb3ZlcmVkIGZyb20gc3RhbGwgYWZ0ZXIgWyVzXScsXG4gICAgICB0aGlzLmR1cmF0aW9uU2luY2VQYWdlTG9hZCxcbiAgICAgIHRoaXMuX3N0cmVhbUlkLFxuICAgICAgbmV3IER1cmF0aW9ucyh0aW1lU2luY2VTdG9wKS50b0lzb1N0cmluZygpXG4gICAgKTtcbiAgICB0aGlzLl92aWRlb1N0YWxsZWQgPSBudWxsO1xuICB9XG5cbiAgb25WaWRlb1Jlc29sdXRpb25DaGFuZ2VzKG5ld1Jlc29sdXRpb246IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuUmVzb2x1dGlvbkNoYW5nZWQsXG4gICAgICBydW50aW1lOiAoRGF0ZS5ub3coKSAtIHRoaXMuX3BhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgdmFsdWU6IHtzdHJpbmc6IG5ld1Jlc29sdXRpb259LFxuICAgICAgcHJldmlvdXNWYWx1ZTogdGhpcy5fdmlkZW9SZXNvbHV0aW9uID8ge3N0cmluZzogdGhpcy5fdmlkZW9SZXNvbHV0aW9ufSA6IHVuZGVmaW5lZCxcbiAgICAgIHN0cmVhbUlkOiB0aGlzLl9zdHJlYW1JZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fdmlkZW9SZXNvbHV0aW9uID0gbmV3UmVzb2x1dGlvbjtcbiAgfVxufSIsIlxuaW1wb3J0IHdvcmtlciBmcm9tIFwiISEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvd29ya2VyLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5saW5lLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFdvcmtlcl9mbigpIHtcbiAgcmV0dXJuIHdvcmtlcihcIi8qKioqKiovIChmdW5jdGlvbigpIHsgLy8gd2VicGFja0Jvb3RzdHJhcFxcbi8qKioqKiovIFxcdFxcXCJ1c2Ugc3RyaWN0XFxcIjtcXG4vKioqKioqLyBcXHR2YXIgX193ZWJwYWNrX21vZHVsZXNfXyA9ICh7XFxuXFxuLyoqKi8gXFxcIi4vc3JjL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUudHNcXFwiOlxcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL3NyYy9sYW5nL2Fzc2VydFVucmVhY2hhYmxlLnRzICoqKiFcXG4gIFxcXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLyoqKi8gKGZ1bmN0aW9uKF9fdW51c2VkX3dlYnBhY2tfbW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XFxuXFxuLyogdW51c2VkIGhhcm1vbnkgZXhwb3J0IGFzc2VydFVucmVhY2hhYmxlICovXFxuLyoqXFxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXFxuICovXFxuXFxuZnVuY3Rpb24gYXNzZXJ0VW5yZWFjaGFibGUoeCkge1xcbiAgdGhyb3cgbmV3IEVycm9yKFxcXCJVbmV4cGVjdGVkIHZhbHVlIFtcXFwiLmNvbmNhdCh4LCBcXFwiXS4gVGhpcyBzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZFxcXCIpKTtcXG59XFxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1xcXCJkZWZhdWx0XFxcIl0gPSAoYXNzZXJ0VW5yZWFjaGFibGUpO1xcblxcbi8qKiovIH0pLFxcblxcbi8qKiovIFxcXCIuL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZS50c1xcXCI6XFxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZS50cyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqLyAoZnVuY3Rpb24oX191bnVzZWRfd2VicGFja19tb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcXG5cXG4vKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywge1xcbi8qIGhhcm1vbnkgZXhwb3J0ICovICAgVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlOiBmdW5jdGlvbigpIHsgcmV0dXJuIC8qIGJpbmRpbmcgKi8gVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlOyB9LFxcbi8qIGhhcm1vbnkgZXhwb3J0ICovICAgVHJhbnNmb3JtTWVzc2FnZVR5cGU6IGZ1bmN0aW9uKCkgeyByZXR1cm4gLyogYmluZGluZyAqLyBUcmFuc2Zvcm1NZXNzYWdlVHlwZTsgfVxcbi8qIGhhcm1vbnkgZXhwb3J0ICovIH0pO1xcbi8qKlxcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxcbiAqL1xcblxcbnZhciBUcmFuc2Zvcm1NZXNzYWdlVHlwZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoVHJhbnNmb3JtTWVzc2FnZVR5cGUpIHtcXG4gIFRyYW5zZm9ybU1lc3NhZ2VUeXBlW1RyYW5zZm9ybU1lc3NhZ2VUeXBlW1xcXCJFcnJvclxcXCJdID0gLTFdID0gXFxcIkVycm9yXFxcIjtcXG4gIFRyYW5zZm9ybU1lc3NhZ2VUeXBlW1RyYW5zZm9ybU1lc3NhZ2VUeXBlW1xcXCJBZGRUcmFuc2Zvcm1cXFwiXSA9IDBdID0gXFxcIkFkZFRyYW5zZm9ybVxcXCI7XFxuICBUcmFuc2Zvcm1NZXNzYWdlVHlwZVtUcmFuc2Zvcm1NZXNzYWdlVHlwZVtcXFwiQ29uZmlndXJlUGlwZWxpbmVcXFwiXSA9IDFdID0gXFxcIkNvbmZpZ3VyZVBpcGVsaW5lXFxcIjtcXG4gIFRyYW5zZm9ybU1lc3NhZ2VUeXBlW1RyYW5zZm9ybU1lc3NhZ2VUeXBlW1xcXCJNZXRhZGF0YVxcXCJdID0gMl0gPSBcXFwiTWV0YWRhdGFcXFwiO1xcbiAgVHJhbnNmb3JtTWVzc2FnZVR5cGVbVHJhbnNmb3JtTWVzc2FnZVR5cGVbXFxcIkNodW5rXFxcIl0gPSAzXSA9IFxcXCJDaHVua1xcXCI7XFxuICBUcmFuc2Zvcm1NZXNzYWdlVHlwZVtUcmFuc2Zvcm1NZXNzYWdlVHlwZVtcXFwiUGlwZWxpbmVDb25maWd1cmVkXFxcIl0gPSA0XSA9IFxcXCJQaXBlbGluZUNvbmZpZ3VyZWRcXFwiO1xcbiAgcmV0dXJuIFRyYW5zZm9ybU1lc3NhZ2VUeXBlO1xcbn0oe30pO1xcbnZhciBUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZSkge1xcbiAgVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlW1RyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZVtcXFwiRnJhbWVUaW1pbmdJbmZvcm1hdGlvblxcXCJdID0gMF0gPSBcXFwiRnJhbWVUaW1pbmdJbmZvcm1hdGlvblxcXCI7XFxuICBUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGVbVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlW1xcXCJFbmNvZGVkVmlkZW9DaHVua1xcXCJdID0gMV0gPSBcXFwiRW5jb2RlZFZpZGVvQ2h1bmtcXFwiO1xcbiAgVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlW1RyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZVtcXFwiRW5jb2RlZEF1ZGlvQ2h1bmtcXFwiXSA9IDJdID0gXFxcIkVuY29kZWRBdWRpb0NodW5rXFxcIjtcXG4gIFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZVtUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGVbXFxcIlN1cnJvZ2F0ZVZpZGVvQ2h1bmtcXFwiXSA9IDNdID0gXFxcIlN1cnJvZ2F0ZVZpZGVvQ2h1bmtcXFwiO1xcbiAgVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlW1RyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZVtcXFwiU3Vycm9nYXRlQXVkaW9DaHVua1xcXCJdID0gNF0gPSBcXFwiU3Vycm9nYXRlQXVkaW9DaHVua1xcXCI7XFxuICByZXR1cm4gVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlO1xcbn0oe30pO1xcblxcbi8qKiovIH0pLFxcblxcbi8qKiovIFxcXCIuL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL3RyYW5zZm9ybXMvV29ya2VyVHJhbnNmb3Jtcy50c1xcXCI6XFxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL3RyYW5zZm9ybXMvV29ya2VyVHJhbnNmb3Jtcy50cyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqLyAoZnVuY3Rpb24oX191bnVzZWRfd2VicGFja19tb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcXG5cXG4vKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywge1xcbi8qIGhhcm1vbnkgZXhwb3J0ICovICAgXFxcImRlZmF1bHRcXFwiOiBmdW5jdGlvbigpIHsgcmV0dXJuIC8qIGJpbmRpbmcgKi8gV29ya2VyVHJhbnNmb3JtczsgfVxcbi8qIGhhcm1vbnkgZXhwb3J0ICovIH0pO1xcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NsYXNzQ2FsbENoZWNrX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrICovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVjay5qc1xcXCIpO1xcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NyZWF0ZUNsYXNzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzICovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzcy5qc1xcXCIpO1xcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2UgKi8gXFxcIi4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi93b3JrZXIvVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlLnRzXFxcIik7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9mcmFtZVRpbWluZ0luZm9ybWF0aW9uX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL2ZyYW1lVGltaW5nSW5mb3JtYXRpb24gKi8gXFxcIi4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi93b3JrZXIvdHJhbnNmb3Jtcy9mcmFtZVRpbWluZ0luZm9ybWF0aW9uLnRzXFxcIik7XFxuXFxuXFxuLyoqXFxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXFxuICovXFxuXFxuXFxuXFxudmFyIFdvcmtlclRyYW5zZm9ybXMgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xcbiAgZnVuY3Rpb24gV29ya2VyVHJhbnNmb3JtcygpIHtcXG4gICAgKDAsX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fW1xcXCJkZWZhdWx0XFxcIl0pKHRoaXMsIFdvcmtlclRyYW5zZm9ybXMpO1xcbiAgfVxcbiAgcmV0dXJuICgwLF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfY3JlYXRlQ2xhc3NfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX1tcXFwiZGVmYXVsdFxcXCJdKShXb3JrZXJUcmFuc2Zvcm1zLCBudWxsLCBbe1xcbiAgICBrZXk6IFxcXCJjcmVhdGVGcmFtZVRpbWluZ0luZm9ybWF0aW9uVHJhbnNmb3JtXFxcIixcXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZUZyYW1lVGltaW5nSW5mb3JtYXRpb25UcmFuc2Zvcm0oKSB7XFxuICAgICAgcmV0dXJuIG5ldyBUcmFuc2Zvcm1TdHJlYW0oe1xcbiAgICAgICAgdHJhbnNmb3JtOiBmdW5jdGlvbiB0cmFuc2Zvcm0oY2h1bmssIGNvbnRyb2xsZXIpIHtcXG4gICAgICAgICAgKDAsX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25fX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX1tcXFwiZGVmYXVsdFxcXCJdKShjaHVuayk7XFxuICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShjaHVuayk7XFxuICAgICAgICB9XFxuICAgICAgfSk7XFxuICAgIH1cXG4gIH0sIHtcXG4gICAga2V5OiBcXFwiY3JlYXRlRW5jb2RlZFZpZGVvU3RyZWFtVHJhbnNmb3JtXFxcIixcXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZUVuY29kZWRWaWRlb1N0cmVhbVRyYW5zZm9ybSh3b3JrZXIpIHtcXG4gICAgICB2YXIgY2h1bmtzUGVuZGluZ0VucXVldWVCeVJ0cFRpbWVzdG1hcCA9IG5ldyBNYXAoKTtcXG4gICAgICB2YXIgc3Vycm9nYXRlRnJhbWVNZXNzYWdlSGFuZGxlciA9IGZ1bmN0aW9uIHN1cnJvZ2F0ZUZyYW1lTWVzc2FnZUhhbmRsZXIoY2h1bmtzUGVuZGluZ0VucXVldWVCeVJ0cFRpbWVzdG1hcCwgY29udHJvbGxlciwgX3JlZikge1xcbiAgICAgICAgdmFyIG1lc3NhZ2UgPSBfcmVmLmRhdGE7XFxuICAgICAgICBpZiAobWVzc2FnZS50eXBlICE9PSBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18uVHJhbnNmb3JtTWVzc2FnZVR5cGUuQ2h1bmsgfHwgbWVzc2FnZS5kYXRhLnR5cGUgIT09IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXy5UcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUuU3Vycm9nYXRlVmlkZW9DaHVuaykge1xcbiAgICAgICAgICByZXR1cm47XFxuICAgICAgICB9XFxuICAgICAgICB2YXIgbWVzc2FnZURhdGEgPSBtZXNzYWdlLmRhdGE7XFxuICAgICAgICB2YXIgX21lc3NhZ2VEYXRhJGRhdGEgPSBtZXNzYWdlRGF0YS5kYXRhLFxcbiAgICAgICAgICBzdXJyb2dhdGUgPSBfbWVzc2FnZURhdGEkZGF0YS5zdXJyb2dhdGUsXFxuICAgICAgICAgIHRpbWVzdGFtcCA9IF9tZXNzYWdlRGF0YSRkYXRhLnRpbWVzdGFtcDtcXG4gICAgICAgIHZhciBjaHVua1BlbmRpbmdFbnF1ZXVlID0gY2h1bmtzUGVuZGluZ0VucXVldWVCeVJ0cFRpbWVzdG1hcC5nZXQodGltZXN0YW1wKTtcXG4gICAgICAgIGlmICghY2h1bmtQZW5kaW5nRW5xdWV1ZSkge1xcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ1tXb3JrZXJUcmFuc2Zvcm1zXSBTdXJyb2dhdGUgdmlkZW8gY2h1bmsgbm90IGZvdW5kIGZvciB0aW1lc3RhbXAnLCB0aW1lc3RhbXApO1xcbiAgICAgICAgICByZXR1cm47XFxuICAgICAgICB9XFxuICAgICAgICBjaHVua1BlbmRpbmdFbnF1ZXVlLmRhdGEgPSBzdXJyb2dhdGU7XFxuICAgICAgICBjb250cm9sbGVyLmVucXVldWUoY2h1bmtQZW5kaW5nRW5xdWV1ZSk7XFxuICAgICAgICBjaHVua3NQZW5kaW5nRW5xdWV1ZUJ5UnRwVGltZXN0bWFwW1xcXCJkZWxldGVcXFwiXSh0aW1lc3RhbXApO1xcbiAgICAgIH07XFxuICAgICAgcmV0dXJuIG5ldyBUcmFuc2Zvcm1TdHJlYW0oe1xcbiAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uIHN0YXJ0KGNvbnRyb2xsZXIpIHtcXG4gICAgICAgICAgd29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBzdXJyb2dhdGVGcmFtZU1lc3NhZ2VIYW5kbGVyLmJpbmQobnVsbCwgY2h1bmtzUGVuZGluZ0VucXVldWVCeVJ0cFRpbWVzdG1hcCwgY29udHJvbGxlciksIHtcXG4gICAgICAgICAgICBvbmNlOiBmYWxzZVxcbiAgICAgICAgICB9KTtcXG4gICAgICAgIH0sXFxuICAgICAgICB0cmFuc2Zvcm06IGZ1bmN0aW9uIHRyYW5zZm9ybShjaHVuaykge1xcbiAgICAgICAgICBjaHVua3NQZW5kaW5nRW5xdWV1ZUJ5UnRwVGltZXN0bWFwLnNldChjaHVuay50aW1lc3RhbXAsIGNodW5rKTtcXG4gICAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSh7XFxuICAgICAgICAgICAgdHlwZTogX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLlRyYW5zZm9ybU1lc3NhZ2VUeXBlLk1ldGFkYXRhLFxcbiAgICAgICAgICAgIGRhdGE6IHtcXG4gICAgICAgICAgICAgIHR5cGU6IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXy5UcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUuRW5jb2RlZFZpZGVvQ2h1bmssXFxuICAgICAgICAgICAgICBkYXRhOiB7XFxuICAgICAgICAgICAgICAgIHRpbWVzdGFtcDogY2h1bmsudGltZXN0YW1wLFxcbiAgICAgICAgICAgICAgICBkYXRhOiBuZXcgVWludDhBcnJheShjaHVuay5kYXRhKSxcXG4gICAgICAgICAgICAgICAgdHlwZTogY2h1bmsudHlwZVxcbiAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgfSwge1xcbiAgICAgICAgICAgIHRyYW5zZmVyOiBbY2h1bmsuZGF0YV1cXG4gICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgICAgfSk7XFxuICAgIH1cXG4gIH0sIHtcXG4gICAga2V5OiBcXFwiY3JlYXRlRW5jb2RlZEF1ZGlvU3RyZWFtVHJhbnNmb3JtXFxcIixcXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZUVuY29kZWRBdWRpb1N0cmVhbVRyYW5zZm9ybSh3b3JrZXIpIHtcXG4gICAgICB2YXIgY2h1bmtzUGVuZGluZ0VucXVldWVCeVJ0cFRpbWVzdG1hcCA9IG5ldyBNYXAoKTtcXG4gICAgICB2YXIgc3Vycm9nYXRlRnJhbWVNZXNzYWdlSGFuZGxlciA9IGZ1bmN0aW9uIHN1cnJvZ2F0ZUZyYW1lTWVzc2FnZUhhbmRsZXIoY2h1bmtzUGVuZGluZ0VucXVldWVCeVJ0cFRpbWVzdG1hcCwgY29udHJvbGxlciwgX3JlZjIpIHtcXG4gICAgICAgIHZhciBtZXNzYWdlID0gX3JlZjIuZGF0YTtcXG4gICAgICAgIGlmIChtZXNzYWdlLnR5cGUgIT09IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXy5UcmFuc2Zvcm1NZXNzYWdlVHlwZS5DaHVuayB8fCBtZXNzYWdlLmRhdGEudHlwZSAhPT0gX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLlRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZS5TdXJyb2dhdGVBdWRpb0NodW5rKSB7XFxuICAgICAgICAgIHJldHVybjtcXG4gICAgICAgIH1cXG4gICAgICAgIHZhciBtZXNzYWdlRGF0YSA9IG1lc3NhZ2UuZGF0YTtcXG4gICAgICAgIHZhciBfbWVzc2FnZURhdGEkZGF0YTIgPSBtZXNzYWdlRGF0YS5kYXRhLFxcbiAgICAgICAgICBzdXJyb2dhdGUgPSBfbWVzc2FnZURhdGEkZGF0YTIuc3Vycm9nYXRlLFxcbiAgICAgICAgICB0aW1lc3RhbXAgPSBfbWVzc2FnZURhdGEkZGF0YTIudGltZXN0YW1wO1xcbiAgICAgICAgdmFyIGNodW5rUGVuZGluZ0VucXVldWUgPSBjaHVua3NQZW5kaW5nRW5xdWV1ZUJ5UnRwVGltZXN0bWFwLmdldCh0aW1lc3RhbXApO1xcbiAgICAgICAgaWYgKCFjaHVua1BlbmRpbmdFbnF1ZXVlKSB7XFxuICAgICAgICAgIGNvbnNvbGUud2FybignW1dvcmtlclRyYW5zZm9ybXNdIFN1cnJvZ2F0ZSBhdWRpbyBjaHVuayBub3QgZm91bmQgZm9yIHRpbWVzdGFtcCcsIHRpbWVzdGFtcCk7XFxuICAgICAgICAgIHJldHVybjtcXG4gICAgICAgIH1cXG4gICAgICAgIGNodW5rUGVuZGluZ0VucXVldWUuZGF0YSA9IHN1cnJvZ2F0ZTtcXG4gICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShjaHVua1BlbmRpbmdFbnF1ZXVlKTtcXG4gICAgICAgIGNodW5rc1BlbmRpbmdFbnF1ZXVlQnlSdHBUaW1lc3RtYXBbXFxcImRlbGV0ZVxcXCJdKHRpbWVzdGFtcCk7XFxuICAgICAgfTtcXG4gICAgICByZXR1cm4gbmV3IFRyYW5zZm9ybVN0cmVhbSh7XFxuICAgICAgICBzdGFydDogZnVuY3Rpb24gc3RhcnQoY29udHJvbGxlcikge1xcbiAgICAgICAgICB3b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIHN1cnJvZ2F0ZUZyYW1lTWVzc2FnZUhhbmRsZXIuYmluZChudWxsLCBjaHVua3NQZW5kaW5nRW5xdWV1ZUJ5UnRwVGltZXN0bWFwLCBjb250cm9sbGVyKSwge1xcbiAgICAgICAgICAgIG9uY2U6IGZhbHNlXFxuICAgICAgICAgIH0pO1xcbiAgICAgICAgfSxcXG4gICAgICAgIHRyYW5zZm9ybTogZnVuY3Rpb24gdHJhbnNmb3JtKGNodW5rKSB7XFxuICAgICAgICAgIGNodW5rc1BlbmRpbmdFbnF1ZXVlQnlSdHBUaW1lc3RtYXAuc2V0KGNodW5rLnRpbWVzdGFtcCwgY2h1bmspO1xcbiAgICAgICAgICBzZWxmLnBvc3RNZXNzYWdlKHtcXG4gICAgICAgICAgICB0eXBlOiBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18uVHJhbnNmb3JtTWVzc2FnZVR5cGUuTWV0YWRhdGEsXFxuICAgICAgICAgICAgZGF0YToge1xcbiAgICAgICAgICAgICAgdHlwZTogX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLlRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZS5FbmNvZGVkQXVkaW9DaHVuayxcXG4gICAgICAgICAgICAgIGRhdGE6IHtcXG4gICAgICAgICAgICAgICAgdGltZXN0YW1wOiBjaHVuay50aW1lc3RhbXAsXFxuICAgICAgICAgICAgICAgIGRhdGE6IG5ldyBVaW50OEFycmF5KGNodW5rLmRhdGEpLFxcbiAgICAgICAgICAgICAgICB0eXBlOiBjaHVuay50eXBlXFxuICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgdHJhbnNmZXI6IFtjaHVuay5kYXRhXVxcbiAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgICB9KTtcXG4gICAgfVxcbiAgfSwge1xcbiAgICBrZXk6IFxcXCJjcmVhdGVQYXNzVGhyb3VnaFRyYW5zZm9ybVxcXCIsXFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVQYXNzVGhyb3VnaFRyYW5zZm9ybSgpIHtcXG4gICAgICByZXR1cm4gbmV3IFRyYW5zZm9ybVN0cmVhbSh7XFxuICAgICAgICB0cmFuc2Zvcm06IGZ1bmN0aW9uIHRyYW5zZm9ybShjaHVuaywgY29udHJvbGxlcikge1xcbiAgICAgICAgICByZXR1cm4gY29udHJvbGxlci5lbnF1ZXVlKGNodW5rKTtcXG4gICAgICAgIH1cXG4gICAgICB9KTtcXG4gICAgfVxcbiAgfV0pO1xcbn0oKTtcXG5cXG5cXG4vKioqLyB9KSxcXG5cXG4vKioqLyBcXFwiLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci90cmFuc2Zvcm1zL2ZyYW1lVGltaW5nSW5mb3JtYXRpb24udHNcXFwiOlxcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci90cmFuc2Zvcm1zL2ZyYW1lVGltaW5nSW5mb3JtYXRpb24udHMgKioqIVxcbiAgXFxcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLyoqKi8gKGZ1bmN0aW9uKF9fdW51c2VkX3dlYnBhY2tfbW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XFxuXFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfZGVmaW5lUHJvcGVydHlfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIEBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHkgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5LmpzXFxcIik7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZSAqLyBcXFwiLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2UudHNcXFwiKTtcXG5cXG5mdW5jdGlvbiBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcihyLCBlKSB7IHZhciB0ID0gXFxcInVuZGVmaW5lZFxcXCIgIT0gdHlwZW9mIFN5bWJvbCAmJiByW1N5bWJvbC5pdGVyYXRvcl0gfHwgcltcXFwiQEBpdGVyYXRvclxcXCJdOyBpZiAoIXQpIHsgaWYgKEFycmF5LmlzQXJyYXkocikgfHwgKHQgPSBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkocikpIHx8IGUgJiYgciAmJiBcXFwibnVtYmVyXFxcIiA9PSB0eXBlb2Ygci5sZW5ndGgpIHsgdCAmJiAociA9IHQpOyB2YXIgX24gPSAwLCBGID0gZnVuY3Rpb24gRigpIHt9OyByZXR1cm4geyBzOiBGLCBuOiBmdW5jdGlvbiBuKCkgeyByZXR1cm4gX24gPj0gci5sZW5ndGggPyB7IGRvbmU6ICEwIH0gOiB7IGRvbmU6ICExLCB2YWx1ZTogcltfbisrXSB9OyB9LCBlOiBmdW5jdGlvbiBlKHIpIHsgdGhyb3cgcjsgfSwgZjogRiB9OyB9IHRocm93IG5ldyBUeXBlRXJyb3IoXFxcIkludmFsaWQgYXR0ZW1wdCB0byBpdGVyYXRlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXFxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cXFwiKTsgfSB2YXIgbywgYSA9ICEwLCB1ID0gITE7IHJldHVybiB7IHM6IGZ1bmN0aW9uIHMoKSB7IHQgPSB0LmNhbGwocik7IH0sIG46IGZ1bmN0aW9uIG4oKSB7IHZhciByID0gdC5uZXh0KCk7IHJldHVybiBhID0gci5kb25lLCByOyB9LCBlOiBmdW5jdGlvbiBlKHIpIHsgdSA9ICEwLCBvID0gcjsgfSwgZjogZnVuY3Rpb24gZigpIHsgdHJ5IHsgYSB8fCBudWxsID09IHRbXFxcInJldHVyblxcXCJdIHx8IHRbXFxcInJldHVyblxcXCJdKCk7IH0gZmluYWxseSB7IGlmICh1KSB0aHJvdyBvOyB9IH0gfTsgfVxcbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyLCBhKSB7IGlmIChyKSB7IGlmIChcXFwic3RyaW5nXFxcIiA9PSB0eXBlb2YgcikgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KHIsIGEpOyB2YXIgdCA9IHt9LnRvU3RyaW5nLmNhbGwocikuc2xpY2UoOCwgLTEpOyByZXR1cm4gXFxcIk9iamVjdFxcXCIgPT09IHQgJiYgci5jb25zdHJ1Y3RvciAmJiAodCA9IHIuY29uc3RydWN0b3IubmFtZSksIFxcXCJNYXBcXFwiID09PSB0IHx8IFxcXCJTZXRcXFwiID09PSB0ID8gQXJyYXkuZnJvbShyKSA6IFxcXCJBcmd1bWVudHNcXFwiID09PSB0IHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHQpID8gX2FycmF5TGlrZVRvQXJyYXkociwgYSkgOiB2b2lkIDA7IH0gfVxcbmZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KHIsIGEpIHsgKG51bGwgPT0gYSB8fCBhID4gci5sZW5ndGgpICYmIChhID0gci5sZW5ndGgpOyBmb3IgKHZhciBlID0gMCwgbiA9IEFycmF5KGEpOyBlIDwgYTsgZSsrKSBuW2VdID0gcltlXTsgcmV0dXJuIG47IH1cXG4vKipcXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cXG4gKi9cXG5cXG5cXG52YXIgSDI2NF9DT05TVEFOVFMgPSB7XFxuICBOQUxfVU5JVF9UWVBFX1NFSTogNixcXG4gIE5BTF9VTklUX0hFQURFUl9TSVpFOiAxLFxcbiAgU0VJX1BBWUxPQURfVFlQRV9QSUNfVElNSU5HOiAxLFxcbiAgRU1VTEFUSU9OX1BSRVZFTlRJT05fQllURTogMHgwMyxcXG4gIFNUQVJUX0NPREVfUFJFRklYXzNCOiBbMHgwMCwgMHgwMCwgMHgwMV0sXFxuICBTVEFSVF9DT0RFX1BSRUZJWF80QjogWzB4MDAsIDB4MDAsIDB4MDAsIDB4MDFdXFxufTtcXG52YXIgQklUU1RSRUFNX0NPTlNUQU5UUyA9IHtcXG4gIE1JTl9CSVRTX0ZPUl9DTE9DS19USU1FU1RBTVA6IDEwLFxcbiAgTUlOX0JJVFNfRk9SX0ZVTExfVElNRVNUQU1QOiAxNyxcXG4gIE1JTl9CSVRTX0ZPUl9USU1FX09GRlNFVDogMjRcXG59O1xcbmZ1bmN0aW9uIGZpbmROZXh0TmFsU3RhcnQoZGF0YSwgcG9zaXRpb24pIHtcXG4gIHZhciBkYXRhTGVuZ3RoID0gZGF0YS5sZW5ndGg7XFxuICBmb3IgKHZhciBpID0gcG9zaXRpb247IGkgPCBkYXRhTGVuZ3RoIC0gMzsgaSsrKSB7XFxuICAgIGlmIChkYXRhW2ldID09PSAweDAwICYmIGRhdGFbaSArIDFdID09PSAweDAwKSB7XFxuICAgICAgaWYgKGRhdGFbaSArIDJdID09PSAweDAxKSB7XFxuICAgICAgICByZXR1cm4gaTtcXG4gICAgICB9XFxuICAgICAgaWYgKGkgKyAzIDwgZGF0YUxlbmd0aCAmJiBkYXRhW2kgKyAyXSA9PT0gMHgwMCAmJiBkYXRhW2kgKyAzXSA9PT0gMHgwMSkge1xcbiAgICAgICAgcmV0dXJuIGk7XFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxuICByZXR1cm4gLTE7XFxufVxcbmZ1bmN0aW9uIGV4dHJhY3RTZWlQYXlsb2FkKGRhdGEsIHN0YXJ0SW5kZXgpIHtcXG4gIHZhciBpbmRleCA9IHN0YXJ0SW5kZXg7XFxuICB2YXIgZmZDb3VudCA9IDA7XFxuICB3aGlsZSAoZGF0YVtpbmRleF0gPT09IDB4ZmYpIHtcXG4gICAgZmZDb3VudCsrO1xcbiAgICBpbmRleCsrO1xcbiAgfVxcbiAgdmFyIHBheWxvYWRUeXBlID0gZmZDb3VudCAqIDI1NSArIGRhdGFbaW5kZXgrK107XFxuXFxuICAvLyBQYXJzZSBwYXlsb2FkIHNpemVcXG4gIGZmQ291bnQgPSAwO1xcbiAgd2hpbGUgKGRhdGFbaW5kZXhdID09PSAweGZmKSB7XFxuICAgIGZmQ291bnQrKztcXG4gICAgaW5kZXgrKztcXG4gIH1cXG4gIHZhciBwYXlsb2FkU2l6ZSA9IGZmQ291bnQgKiAyNTUgKyBkYXRhW2luZGV4KytdO1xcbiAgcmV0dXJuIHtcXG4gICAgdHlwZTogcGF5bG9hZFR5cGUsXFxuICAgIHBheWxvYWQ6IGRhdGEuc3ViYXJyYXkoaW5kZXgsIGluZGV4ICsgcGF5bG9hZFNpemUpLFxcbiAgICBsZW5ndGg6IGluZGV4ICsgcGF5bG9hZFNpemUgLSBzdGFydEluZGV4XFxuICB9O1xcbn1cXG5mdW5jdGlvbiByZW1vdmVFbXVsYXRpb25QcmV2ZW50aW9uQnl0ZXMoZGF0YSkge1xcbiAgdmFyIHJlc3VsdCA9IFtdO1xcbiAgdmFyIHplcm9Db3VudCA9IDA7XFxuICB2YXIgX2l0ZXJhdG9yID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIoZGF0YSksXFxuICAgIF9zdGVwO1xcbiAgdHJ5IHtcXG4gICAgZm9yIChfaXRlcmF0b3IucygpOyAhKF9zdGVwID0gX2l0ZXJhdG9yLm4oKSkuZG9uZTspIHtcXG4gICAgICB2YXIgX2J5dGUgPSBfc3RlcC52YWx1ZTtcXG4gICAgICBpZiAoemVyb0NvdW50ID09PSAyICYmIF9ieXRlID09PSBIMjY0X0NPTlNUQU5UUy5FTVVMQVRJT05fUFJFVkVOVElPTl9CWVRFKSB7XFxuICAgICAgICB6ZXJvQ291bnQgPSAwOyAvLyBSZXNldCBhZnRlciBmaW5kaW5nIGVtdWxhdGlvbiBwcmV2ZW50aW9uIGJ5dGUuXFxuICAgICAgfSBlbHNlIHtcXG4gICAgICAgIGlmIChfYnl0ZSA9PT0gMHgwMCkge1xcbiAgICAgICAgICB6ZXJvQ291bnQrKztcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgIHplcm9Db3VudCA9IDA7XFxuICAgICAgICB9XFxuICAgICAgICByZXN1bHQucHVzaChfYnl0ZSk7XFxuICAgICAgfVxcbiAgICB9XFxuICB9IGNhdGNoIChlcnIpIHtcXG4gICAgX2l0ZXJhdG9yLmUoZXJyKTtcXG4gIH0gZmluYWxseSB7XFxuICAgIF9pdGVyYXRvci5mKCk7XFxuICB9XFxuICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkocmVzdWx0KTtcXG59XFxuZnVuY3Rpb24gY29udmVydFBpY1N0cnVjdFRvTnVtQ2xvY2tUUyhwaWNTdHJ1Y3QpIHtcXG4gIHN3aXRjaCAocGljU3RydWN0KSB7XFxuICAgIGNhc2UgMDpcXG4gICAgY2FzZSAxOlxcbiAgICBjYXNlIDI6XFxuICAgICAgcmV0dXJuIDE7XFxuICAgIGNhc2UgMzpcXG4gICAgY2FzZSA0OlxcbiAgICBjYXNlIDc6XFxuICAgICAgcmV0dXJuIDI7XFxuICAgIGNhc2UgNTpcXG4gICAgY2FzZSA2OlxcbiAgICBjYXNlIDg6XFxuICAgICAgcmV0dXJuIDM7XFxuICAgIGRlZmF1bHQ6XFxuICAgICAgcmV0dXJuIDA7XFxuICB9XFxufVxcbmZ1bmN0aW9uIGNyZWF0ZUJpdHN0cmVhbVJlYWRlcihidWZmZXIpIHtcXG4gIHZhciBiaXRPZmZzZXQgPSAwO1xcbiAgZnVuY3Rpb24gcmVhZEJpdHMoYml0c1RvUmVhZCkge1xcbiAgICBpZiAoYml0T2Zmc2V0ICsgYml0c1RvUmVhZCA+IGJ1ZmZlci5sZW5ndGggKiA4KSB7XFxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxcXCJDYW5ub3QgcmVhZCBbXFxcIi5jb25jYXQoYml0c1RvUmVhZCwgXFxcIl0gYml0cyAtIG91dCBvZiBib3VuZHNcXFwiKSk7XFxuICAgIH1cXG4gICAgdmFyIHZhbHVlID0gMDtcXG4gICAgdmFyIGJpdHNSZW1haW5pbmcgPSBiaXRzVG9SZWFkO1xcbiAgICB3aGlsZSAoYml0c1JlbWFpbmluZyA+IDApIHtcXG4gICAgICB2YXIgYnl0ZU9mZnNldCA9IE1hdGguZmxvb3IoYml0T2Zmc2V0IC8gOCk7XFxuICAgICAgdmFyIGJpdEluQnl0ZSA9IGJpdE9mZnNldCAlIDg7XFxuICAgICAgdmFyIGJpdHNMZWZ0SW5CeXRlID0gOCAtIGJpdEluQnl0ZTtcXG4gICAgICB2YXIgcmVhZE5vdyA9IE1hdGgubWluKGJpdHNSZW1haW5pbmcsIGJpdHNMZWZ0SW5CeXRlKTtcXG4gICAgICB2YXIgbWFzayA9ICgxIDw8IHJlYWROb3cpIC0gMTtcXG4gICAgICB2YXIgYnl0ZVZhbCA9IGJ1ZmZlcltieXRlT2Zmc2V0XSA+PiBiaXRzTGVmdEluQnl0ZSAtIHJlYWROb3c7XFxuICAgICAgdmFyIGJpdHMgPSBieXRlVmFsICYgbWFzaztcXG4gICAgICB2YWx1ZSA9IHZhbHVlIDw8IHJlYWROb3cgfCBiaXRzO1xcbiAgICAgIGJpdE9mZnNldCArPSByZWFkTm93O1xcbiAgICAgIGJpdHNSZW1haW5pbmcgLT0gcmVhZE5vdztcXG4gICAgfVxcbiAgICByZXR1cm4gdmFsdWU7XFxuICB9XFxuICBmdW5jdGlvbiBza2lwQml0cyhuKSB7XFxuICAgIGlmIChiaXRPZmZzZXQgKyBuID4gYnVmZmVyLmxlbmd0aCAqIDgpIHtcXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXFxcIkNhbm5vdCBza2lwIFtcXFwiLmNvbmNhdChuLCBcXFwiXSBiaXRzIC0gb3V0IG9mIGJvdW5kc1xcXCIpKTtcXG4gICAgfVxcbiAgICBiaXRPZmZzZXQgKz0gbjtcXG4gIH1cXG4gIGZ1bmN0aW9uIGdldFJlbWFpbmluZ0JpdHMoKSB7XFxuICAgIHJldHVybiBidWZmZXIubGVuZ3RoICogOCAtIGJpdE9mZnNldDtcXG4gIH1cXG4gIHJldHVybiB7XFxuICAgIHJlYWRCaXRzOiByZWFkQml0cyxcXG4gICAgc2tpcEJpdHM6IHNraXBCaXRzLFxcbiAgICBnZXRSZW1haW5pbmdCaXRzOiBnZXRSZW1haW5pbmdCaXRzXFxuICB9O1xcbn1cXG5mdW5jdGlvbiByZWFkT3B0aW9uYWxUaW1lc3RhbXBGaWVsZHMocmVhZGVyLCB0cykge1xcbiAgaWYgKHJlYWRlci5nZXRSZW1haW5pbmdCaXRzKCkgPCAxIHx8IHJlYWRlci5yZWFkQml0cygxKSA9PT0gMCkge1xcbiAgICByZXR1cm4gdHJ1ZTsgLy8gTm8gc2Vjb25kc19mbGFnLCB3ZSBhcmUgZG9uZS5cXG4gIH1cXG4gIGlmIChyZWFkZXIuZ2V0UmVtYWluaW5nQml0cygpIDwgNikge1xcbiAgICByZXR1cm4gZmFsc2U7XFxuICB9XFxuICB0cy5zZWNvbmRzID0gcmVhZGVyLnJlYWRCaXRzKDYpO1xcbiAgaWYgKHJlYWRlci5nZXRSZW1haW5pbmdCaXRzKCkgPCAxIHx8IHJlYWRlci5yZWFkQml0cygxKSA9PT0gMCkge1xcbiAgICByZXR1cm4gdHJ1ZTsgLy8gTm8gbWludXRlc19mbGFnLCB3ZSBhcmUgZG9uZS5cXG4gIH1cXG4gIGlmIChyZWFkZXIuZ2V0UmVtYWluaW5nQml0cygpIDwgNikge1xcbiAgICByZXR1cm4gZmFsc2U7XFxuICB9XFxuICB0cy5taW51dGVzID0gcmVhZGVyLnJlYWRCaXRzKDYpO1xcbiAgaWYgKHJlYWRlci5nZXRSZW1haW5pbmdCaXRzKCkgPCAxIHx8IHJlYWRlci5yZWFkQml0cygxKSA9PT0gMCkge1xcbiAgICByZXR1cm4gdHJ1ZTsgLy8gTm8gaG91cnNfZmxhZywgd2UgYXJlIGRvbmUuXFxuICB9XFxuICBpZiAocmVhZGVyLmdldFJlbWFpbmluZ0JpdHMoKSA8IDUpIHtcXG4gICAgcmV0dXJuIGZhbHNlO1xcbiAgfVxcbiAgdHMuaG91cnMgPSByZWFkZXIucmVhZEJpdHMoNSk7XFxuICByZXR1cm4gdHJ1ZTtcXG59XFxuZnVuY3Rpb24gcGFyc2VDbG9ja1RpbWVzdGFtcChyZWFkZXIpIHtcXG4gIGlmIChyZWFkZXIuZ2V0UmVtYWluaW5nQml0cygpIDwgQklUU1RSRUFNX0NPTlNUQU5UUy5NSU5fQklUU19GT1JfQ0xPQ0tfVElNRVNUQU1QKSB7XFxuICAgIHJldHVybiBudWxsO1xcbiAgfVxcbiAgdmFyIHRzID0ge1xcbiAgICBjdFR5cGU6IHJlYWRlci5yZWFkQml0cygyKSxcXG4gICAgbnVpdEZpZWxkQmFzZWRGbGFnOiByZWFkZXIucmVhZEJpdHMoMSkgPT09IDEsXFxuICAgIGNvdW50aW5nVHlwZTogcmVhZGVyLnJlYWRCaXRzKDUpLFxcbiAgICBmdWxsVGltZXN0YW1wRmxhZzogcmVhZGVyLnJlYWRCaXRzKDEpID09PSAxLFxcbiAgICBkaXNjb250aW51aXR5RmxhZzogcmVhZGVyLnJlYWRCaXRzKDEpID09PSAxLFxcbiAgICBjbnREcm9wcGVkRmxhZzogcmVhZGVyLnJlYWRCaXRzKDEpID09PSAxLFxcbiAgICBuRnJhbWVzOiByZWFkZXIucmVhZEJpdHMoOClcXG4gIH07XFxuICBpZiAodHMuZnVsbFRpbWVzdGFtcEZsYWcpIHtcXG4gICAgaWYgKHJlYWRlci5nZXRSZW1haW5pbmdCaXRzKCkgPCBCSVRTVFJFQU1fQ09OU1RBTlRTLk1JTl9CSVRTX0ZPUl9GVUxMX1RJTUVTVEFNUCkge1xcbiAgICAgIHJldHVybiBudWxsO1xcbiAgICB9XFxuICAgIHRzLnNlY29uZHMgPSByZWFkZXIucmVhZEJpdHMoNik7XFxuICAgIHRzLm1pbnV0ZXMgPSByZWFkZXIucmVhZEJpdHMoNik7XFxuICAgIHRzLmhvdXJzID0gcmVhZGVyLnJlYWRCaXRzKDUpO1xcbiAgfSBlbHNlIHtcXG4gICAgaWYgKCFyZWFkT3B0aW9uYWxUaW1lc3RhbXBGaWVsZHMocmVhZGVyLCB0cykpIHtcXG4gICAgICByZXR1cm4gbnVsbDtcXG4gICAgfVxcbiAgfVxcbiAgaWYgKHJlYWRlci5nZXRSZW1haW5pbmdCaXRzKCkgPCBCSVRTVFJFQU1fQ09OU1RBTlRTLk1JTl9CSVRTX0ZPUl9USU1FX09GRlNFVCkge1xcbiAgICByZXR1cm4gbnVsbDtcXG4gIH1cXG4gIHRzLnRpbWVPZmZzZXQgPSByZWFkZXIucmVhZEJpdHMoMjQpO1xcbiAgcmV0dXJuIHRzO1xcbn1cXG5mdW5jdGlvbiBwYXJzZVBpY3R1cmVUaW1pbmcoZGF0YSwgY29uZmlnKSB7XFxuICB2YXIgcmVhZGVyID0gY3JlYXRlQml0c3RyZWFtUmVhZGVyKHJlbW92ZUVtdWxhdGlvblByZXZlbnRpb25CeXRlcyhkYXRhKSk7XFxuICB2YXIgcmVzdWx0ID0ge1xcbiAgICBwaWNTdHJ1Y3Q6IHVuZGVmaW5lZFxcbiAgfTtcXG4gIGlmIChjb25maWcuY3BiRHBiRGVsYXlzUHJlc2VudEZsYWcgJiYgY29uZmlnLmNwYlJlbW92YWxEZWxheUxlbmd0aE1pbnVzMSAhPT0gdW5kZWZpbmVkICYmIGNvbmZpZy5kcGJPdXRwdXREZWxheUxlbmd0aE1pbnVzMSAhPT0gdW5kZWZpbmVkKSB7XFxuICAgIHJlYWRlci5za2lwQml0cyhjb25maWcuY3BiUmVtb3ZhbERlbGF5TGVuZ3RoTWludXMxICsgMSk7XFxuICAgIHJlYWRlci5za2lwQml0cyhjb25maWcuZHBiT3V0cHV0RGVsYXlMZW5ndGhNaW51czEgKyAxKTtcXG4gIH1cXG4gIGlmIChjb25maWcucGljU3RydWN0UHJlc2VudEZsYWcpIHtcXG4gICAgdmFyIHBpY1N0cnVjdCA9IHJlYWRlci5yZWFkQml0cyg0KTtcXG4gICAgdmFyIG51bUNsb2NrVFMgPSBjb252ZXJ0UGljU3RydWN0VG9OdW1DbG9ja1RTKHBpY1N0cnVjdCk7XFxuICAgIHZhciBjbG9ja1RpbWVzdGFtcHMgPSBbXTtcXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1DbG9ja1RTOyBpKyspIHtcXG4gICAgICBpZiAocmVhZGVyLmdldFJlbWFpbmluZ0JpdHMoKSA8IDEpIHtcXG4gICAgICAgIGJyZWFrO1xcbiAgICAgIH1cXG4gICAgICB2YXIgY2xvY2tUaW1lc3RhbXBGbGFnID0gcmVhZGVyLnJlYWRCaXRzKDEpID09PSAxO1xcbiAgICAgIGlmICghY2xvY2tUaW1lc3RhbXBGbGFnKSB7XFxuICAgICAgICBjbG9ja1RpbWVzdGFtcHMucHVzaCh7XFxuICAgICAgICAgIGNsb2NrVGltZXN0YW1wRmxhZzogZmFsc2VcXG4gICAgICAgIH0pO1xcbiAgICAgICAgY29udGludWU7XFxuICAgICAgfVxcbiAgICAgIHZhciB0cyA9IHBhcnNlQ2xvY2tUaW1lc3RhbXAocmVhZGVyKTtcXG4gICAgICBpZiAodHMpIHtcXG4gICAgICAgIGNsb2NrVGltZXN0YW1wcy5wdXNoKHtcXG4gICAgICAgICAgY2xvY2tUaW1lc3RhbXBGbGFnOiB0cnVlLFxcbiAgICAgICAgICBjbG9ja1RpbWVzdGFtcDogdHNcXG4gICAgICAgIH0pO1xcbiAgICAgIH0gZWxzZSB7XFxuICAgICAgICAvLyBOb3QgZW5vdWdoIGJpdHMsIHN0b3AgcHJvY2Vzc2luZyBTRUlcXG4gICAgICAgIGJyZWFrO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgICByZXN1bHQucGljU3RydWN0ID0ge1xcbiAgICAgIG51bUNsb2NrVFM6IG51bUNsb2NrVFMsXFxuICAgICAgY2xvY2tUaW1lc3RhbXBzOiBjbG9ja1RpbWVzdGFtcHNcXG4gICAgfTtcXG4gIH1cXG4gIHJldHVybiByZXN1bHQ7XFxufVxcbmZ1bmN0aW9uIGRlY29kZUZyYW1lVGltaW5nVGltZWNvZGUoY2h1bmspIHtcXG4gIHZhciByZWNlaXZlVGltZXN0YW1wID0gbmV3IERhdGUoKTtcXG4gIHZhciBjaHVua0RhdGEgPSBuZXcgVWludDhBcnJheShjaHVuay5kYXRhKTtcXG4gIHZhciBjdXJyZW50SW5kZXggPSBmaW5kTmV4dE5hbFN0YXJ0KGNodW5rRGF0YSwgMCk7XFxuICB3aGlsZSAoY3VycmVudEluZGV4ICE9PSAtMSkge1xcbiAgICB2YXIgbmV4dE5hbFN0YXJ0ID0gZmluZE5leHROYWxTdGFydChjaHVua0RhdGEsIGN1cnJlbnRJbmRleCArIDEpO1xcbiAgICB2YXIgbmFsVW5pdEVuZCA9IG5leHROYWxTdGFydCA9PT0gLTEgPyBjaHVua0RhdGEubGVuZ3RoIDogbmV4dE5hbFN0YXJ0O1xcbiAgICB2YXIgc3RhcnRDb2RlTGVuZ3RoID0gY2h1bmtEYXRhW2N1cnJlbnRJbmRleCArIDJdID09PSAweDAxID8gMyA6IDQ7XFxuICAgIHZhciBuYWxVbml0SGVhZGVySW5kZXggPSBjdXJyZW50SW5kZXggKyBzdGFydENvZGVMZW5ndGg7XFxuICAgIHZhciBuYWxVbml0VHlwZSA9IGNodW5rRGF0YVtuYWxVbml0SGVhZGVySW5kZXhdICYgMHgxZjtcXG4gICAgaWYgKG5hbFVuaXRUeXBlID09PSBIMjY0X0NPTlNUQU5UUy5OQUxfVU5JVF9UWVBFX1NFSSkge1xcbiAgICAgIHZhciBzZWlJbmRleCA9IG5hbFVuaXRIZWFkZXJJbmRleCArIEgyNjRfQ09OU1RBTlRTLk5BTF9VTklUX0hFQURFUl9TSVpFO1xcbiAgICAgIHZhciBuYWxVbml0RGF0YSA9IGNodW5rRGF0YS5zdWJhcnJheShzZWlJbmRleCwgbmFsVW5pdEVuZCk7XFxuICAgICAgdmFyIHNlaU9mZnNldCA9IDA7XFxuXFxuICAgICAgLy8gUHJvY2VzcyBTRUkgbWVzc2FnZXMgdW50aWwgZW5kIG9mIE5BTCB1bml0XFxuICAgICAgd2hpbGUgKHNlaU9mZnNldCA8IG5hbFVuaXREYXRhLmxlbmd0aCkge1xcbiAgICAgICAgLy8gU3RvcCBpZiByZW1haW5pbmcgZGF0YSBpcyB0b28gc2hvcnQgdG8gYmUgYSB2YWxpZCBTRUkgbWVzc2FnZVxcbiAgICAgICAgaWYgKHNlaU9mZnNldCArIDIgPiBuYWxVbml0RGF0YS5sZW5ndGgpIHtcXG4gICAgICAgICAgYnJlYWs7XFxuICAgICAgICB9XFxuICAgICAgICB2YXIgc2VpUGF5bG9hZCA9IGV4dHJhY3RTZWlQYXlsb2FkKG5hbFVuaXREYXRhLCBzZWlPZmZzZXQpO1xcbiAgICAgICAgaWYgKHNlaVBheWxvYWQudHlwZSA9PT0gSDI2NF9DT05TVEFOVFMuU0VJX1BBWUxPQURfVFlQRV9QSUNfVElNSU5HKSB7XFxuICAgICAgICAgIHZhciBfcGFyc2VkUGljdHVyZVRpbWluZyQ7XFxuICAgICAgICAgIHZhciBwYXJzZWRQaWN0dXJlVGltaW5nID0gcGFyc2VQaWN0dXJlVGltaW5nKHNlaVBheWxvYWQucGF5bG9hZCwge1xcbiAgICAgICAgICAgIGNwYkRwYkRlbGF5c1ByZXNlbnRGbGFnOiBmYWxzZSxcXG4gICAgICAgICAgICBwaWNTdHJ1Y3RQcmVzZW50RmxhZzogdHJ1ZVxcbiAgICAgICAgICB9KTtcXG4gICAgICAgICAgdmFyIGZpcnN0Q2xvY2tUaW1lc3RhbXAgPSAoX3BhcnNlZFBpY3R1cmVUaW1pbmckID0gcGFyc2VkUGljdHVyZVRpbWluZy5waWNTdHJ1Y3QpID09PSBudWxsIHx8IF9wYXJzZWRQaWN0dXJlVGltaW5nJCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3BhcnNlZFBpY3R1cmVUaW1pbmckLmNsb2NrVGltZXN0YW1wc1swXTtcXG4gICAgICAgICAgaWYgKGZpcnN0Q2xvY2tUaW1lc3RhbXAgIT09IG51bGwgJiYgZmlyc3RDbG9ja1RpbWVzdGFtcCAhPT0gdm9pZCAwICYmIGZpcnN0Q2xvY2tUaW1lc3RhbXAuY2xvY2tUaW1lc3RhbXBGbGFnKSB7XFxuICAgICAgICAgICAgdmFyIF9maXJzdENsb2NrVGltZXN0YW1wJCwgX2ZpcnN0Q2xvY2tUaW1lc3RhbXAkMiwgX2ZpcnN0Q2xvY2tUaW1lc3RhbXAkMywgX2ZpcnN0Q2xvY2tUaW1lc3RhbXAkNDtcXG4gICAgICAgICAgICB2YXIgcnRwVGltZXN0YW1wID0gY2h1bmsudGltZXN0YW1wO1xcbiAgICAgICAgICAgIHZhciBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiA9IHtcXG4gICAgICAgICAgICAgIHRpbWVjb2RlOiBmaXJzdENsb2NrVGltZXN0YW1wLmNsb2NrVGltZXN0YW1wID8ge1xcbiAgICAgICAgICAgICAgICBob3VyczogKF9maXJzdENsb2NrVGltZXN0YW1wJCA9IGZpcnN0Q2xvY2tUaW1lc3RhbXAuY2xvY2tUaW1lc3RhbXAuaG91cnMpICE9PSBudWxsICYmIF9maXJzdENsb2NrVGltZXN0YW1wJCAhPT0gdm9pZCAwID8gX2ZpcnN0Q2xvY2tUaW1lc3RhbXAkIDogbnVsbCxcXG4gICAgICAgICAgICAgICAgbWludXRlczogKF9maXJzdENsb2NrVGltZXN0YW1wJDIgPSBmaXJzdENsb2NrVGltZXN0YW1wLmNsb2NrVGltZXN0YW1wLm1pbnV0ZXMpICE9PSBudWxsICYmIF9maXJzdENsb2NrVGltZXN0YW1wJDIgIT09IHZvaWQgMCA/IF9maXJzdENsb2NrVGltZXN0YW1wJDIgOiBudWxsLFxcbiAgICAgICAgICAgICAgICBzZWNvbmRzOiAoX2ZpcnN0Q2xvY2tUaW1lc3RhbXAkMyA9IGZpcnN0Q2xvY2tUaW1lc3RhbXAuY2xvY2tUaW1lc3RhbXAuc2Vjb25kcykgIT09IG51bGwgJiYgX2ZpcnN0Q2xvY2tUaW1lc3RhbXAkMyAhPT0gdm9pZCAwID8gX2ZpcnN0Q2xvY2tUaW1lc3RhbXAkMyA6IG51bGwsXFxuICAgICAgICAgICAgICAgIGZyYW1lczogKF9maXJzdENsb2NrVGltZXN0YW1wJDQgPSBmaXJzdENsb2NrVGltZXN0YW1wLmNsb2NrVGltZXN0YW1wLm5GcmFtZXMpICE9PSBudWxsICYmIF9maXJzdENsb2NrVGltZXN0YW1wJDQgIT09IHZvaWQgMCA/IF9maXJzdENsb2NrVGltZXN0YW1wJDQgOiBudWxsLFxcbiAgICAgICAgICAgICAgICBpc0ZyYW1lRHJvcDogZmlyc3RDbG9ja1RpbWVzdGFtcC5jbG9ja1RpbWVzdGFtcC5jbnREcm9wcGVkRmxhZ1xcbiAgICAgICAgICAgICAgfSA6IG51bGwsXFxuICAgICAgICAgICAgICByZWNlaXZlVGltZXN0YW1wOiByZWNlaXZlVGltZXN0YW1wXFxuICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICBzZWxmLnBvc3RNZXNzYWdlKHtcXG4gICAgICAgICAgICAgIHR5cGU6IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy5UcmFuc2Zvcm1NZXNzYWdlVHlwZS5NZXRhZGF0YSxcXG4gICAgICAgICAgICAgIGRhdGE6IHtcXG4gICAgICAgICAgICAgICAgdHlwZTogX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fLlRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZS5GcmFtZVRpbWluZ0luZm9ybWF0aW9uLFxcbiAgICAgICAgICAgICAgICBkYXRhOiAoMCxfYmFiZWxfcnVudGltZV9oZWxwZXJzX2RlZmluZVByb3BlcnR5X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19bXFxcImRlZmF1bHRcXFwiXSkoe30sIHJ0cFRpbWVzdGFtcCwge1xcbiAgICAgICAgICAgICAgICAgIGRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uOiBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICBzZWlPZmZzZXQgKz0gc2VpUGF5bG9hZC5sZW5ndGg7XFxuXFxuICAgICAgICAvLyBTdG9wIGlmIGFuIGludmFsaWQgcGF5bG9hZCBsZW5ndGggd2FzIGRldGVjdGVkLlxcbiAgICAgICAgaWYgKHNlaVBheWxvYWQubGVuZ3RoID09PSAwKSB7XFxuICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgfVxcbiAgICAgIH1cXG4gICAgfVxcbiAgICBjdXJyZW50SW5kZXggPSBuZXh0TmFsU3RhcnQ7XFxuICB9XFxufVxcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcXFwiZGVmYXVsdFxcXCJdID0gKGRlY29kZUZyYW1lVGltaW5nVGltZWNvZGUpO1xcblxcbi8qKiovIH0pLFxcblxcbi8qKiovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3luY1RvR2VuZXJhdG9yLmpzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXN5bmNUb0dlbmVyYXRvci5qcyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovIChmdW5jdGlvbihfX3VudXNlZF93ZWJwYWNrX19fd2VicGFja19tb2R1bGVfXywgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xcblxcbi8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCB7XFxuLyogaGFybW9ueSBleHBvcnQgKi8gICBcXFwiZGVmYXVsdFxcXCI6IGZ1bmN0aW9uKCkgeyByZXR1cm4gLyogYmluZGluZyAqLyBfYXN5bmNUb0dlbmVyYXRvcjsgfVxcbi8qIGhhcm1vbnkgZXhwb3J0ICovIH0pO1xcbmZ1bmN0aW9uIGFzeW5jR2VuZXJhdG9yU3RlcChuLCB0LCBlLCByLCBvLCBhLCBjKSB7XFxuICB0cnkge1xcbiAgICB2YXIgaSA9IG5bYV0oYyksXFxuICAgICAgdSA9IGkudmFsdWU7XFxuICB9IGNhdGNoIChuKSB7XFxuICAgIHJldHVybiB2b2lkIGUobik7XFxuICB9XFxuICBpLmRvbmUgPyB0KHUpIDogUHJvbWlzZS5yZXNvbHZlKHUpLnRoZW4ociwgbyk7XFxufVxcbmZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKG4pIHtcXG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XFxuICAgIHZhciB0ID0gdGhpcyxcXG4gICAgICBlID0gYXJndW1lbnRzO1xcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHIsIG8pIHtcXG4gICAgICB2YXIgYSA9IG4uYXBwbHkodCwgZSk7XFxuICAgICAgZnVuY3Rpb24gX25leHQobikge1xcbiAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGEsIHIsIG8sIF9uZXh0LCBfdGhyb3csIFxcXCJuZXh0XFxcIiwgbik7XFxuICAgICAgfVxcbiAgICAgIGZ1bmN0aW9uIF90aHJvdyhuKSB7XFxuICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoYSwgciwgbywgX25leHQsIF90aHJvdywgXFxcInRocm93XFxcIiwgbik7XFxuICAgICAgfVxcbiAgICAgIF9uZXh0KHZvaWQgMCk7XFxuICAgIH0pO1xcbiAgfTtcXG59XFxuXFxuXFxuLyoqKi8gfSksXFxuXFxuLyoqKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrLmpzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrLmpzICoqKiFcXG4gIFxcXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovIChmdW5jdGlvbihfX3VudXNlZF93ZWJwYWNrX19fd2VicGFja19tb2R1bGVfXywgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xcblxcbi8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCB7XFxuLyogaGFybW9ueSBleHBvcnQgKi8gICBcXFwiZGVmYXVsdFxcXCI6IGZ1bmN0aW9uKCkgeyByZXR1cm4gLyogYmluZGluZyAqLyBfY2xhc3NDYWxsQ2hlY2s7IH1cXG4vKiBoYXJtb255IGV4cG9ydCAqLyB9KTtcXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soYSwgbikge1xcbiAgaWYgKCEoYSBpbnN0YW5jZW9mIG4pKSB0aHJvdyBuZXcgVHlwZUVycm9yKFxcXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cXFwiKTtcXG59XFxuXFxuXFxuLyoqKi8gfSksXFxuXFxuLyoqKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzLmpzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzLmpzICoqKiFcXG4gIFxcXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovIChmdW5jdGlvbihfX3VudXNlZF93ZWJwYWNrX19fd2VicGFja19tb2R1bGVfXywgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xcblxcbi8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCB7XFxuLyogaGFybW9ueSBleHBvcnQgKi8gICBcXFwiZGVmYXVsdFxcXCI6IGZ1bmN0aW9uKCkgeyByZXR1cm4gLyogYmluZGluZyAqLyBfY3JlYXRlQ2xhc3M7IH1cXG4vKiBoYXJtb255IGV4cG9ydCAqLyB9KTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX3RvUHJvcGVydHlLZXlfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vdG9Qcm9wZXJ0eUtleS5qcyAqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9Qcm9wZXJ0eUtleS5qc1xcXCIpO1xcblxcbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKGUsIHIpIHtcXG4gIGZvciAodmFyIHQgPSAwOyB0IDwgci5sZW5ndGg7IHQrKykge1xcbiAgICB2YXIgbyA9IHJbdF07XFxuICAgIG8uZW51bWVyYWJsZSA9IG8uZW51bWVyYWJsZSB8fCAhMSwgby5jb25maWd1cmFibGUgPSAhMCwgXFxcInZhbHVlXFxcIiBpbiBvICYmIChvLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgKDAsX3RvUHJvcGVydHlLZXlfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX1tcXFwiZGVmYXVsdFxcXCJdKShvLmtleSksIG8pO1xcbiAgfVxcbn1cXG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoZSwgciwgdCkge1xcbiAgcmV0dXJuIHIgJiYgX2RlZmluZVByb3BlcnRpZXMoZS5wcm90b3R5cGUsIHIpLCB0ICYmIF9kZWZpbmVQcm9wZXJ0aWVzKGUsIHQpLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgXFxcInByb3RvdHlwZVxcXCIsIHtcXG4gICAgd3JpdGFibGU6ICExXFxuICB9KSwgZTtcXG59XFxuXFxuXFxuLyoqKi8gfSksXFxuXFxuLyoqKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5LmpzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5LmpzICoqKiFcXG4gIFxcXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovIChmdW5jdGlvbihfX3VudXNlZF93ZWJwYWNrX19fd2VicGFja19tb2R1bGVfXywgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xcblxcbi8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCB7XFxuLyogaGFybW9ueSBleHBvcnQgKi8gICBcXFwiZGVmYXVsdFxcXCI6IGZ1bmN0aW9uKCkgeyByZXR1cm4gLyogYmluZGluZyAqLyBfZGVmaW5lUHJvcGVydHk7IH1cXG4vKiBoYXJtb255IGV4cG9ydCAqLyB9KTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX3RvUHJvcGVydHlLZXlfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vdG9Qcm9wZXJ0eUtleS5qcyAqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9Qcm9wZXJ0eUtleS5qc1xcXCIpO1xcblxcbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShlLCByLCB0KSB7XFxuICByZXR1cm4gKHIgPSAoMCxfdG9Qcm9wZXJ0eUtleV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fW1xcXCJkZWZhdWx0XFxcIl0pKHIpKSBpbiBlID8gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIHtcXG4gICAgdmFsdWU6IHQsXFxuICAgIGVudW1lcmFibGU6ICEwLFxcbiAgICBjb25maWd1cmFibGU6ICEwLFxcbiAgICB3cml0YWJsZTogITBcXG4gIH0pIDogZVtyXSA9IHQsIGU7XFxufVxcblxcblxcbi8qKiovIH0pLFxcblxcbi8qKiovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b1ByaW1pdGl2ZS5qc1xcXCI6XFxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b1ByaW1pdGl2ZS5qcyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqLyAoZnVuY3Rpb24oX191bnVzZWRfd2VicGFja19fX3dlYnBhY2tfbW9kdWxlX18sIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcXG5cXG4vKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywge1xcbi8qIGhhcm1vbnkgZXhwb3J0ICovICAgXFxcImRlZmF1bHRcXFwiOiBmdW5jdGlvbigpIHsgcmV0dXJuIC8qIGJpbmRpbmcgKi8gdG9QcmltaXRpdmU7IH1cXG4vKiBoYXJtb255IGV4cG9ydCAqLyB9KTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX3R5cGVvZl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi90eXBlb2YuanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3R5cGVvZi5qc1xcXCIpO1xcblxcbmZ1bmN0aW9uIHRvUHJpbWl0aXZlKHQsIHIpIHtcXG4gIGlmIChcXFwib2JqZWN0XFxcIiAhPSAoMCxfdHlwZW9mX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19bXFxcImRlZmF1bHRcXFwiXSkodCkgfHwgIXQpIHJldHVybiB0O1xcbiAgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07XFxuICBpZiAodm9pZCAwICE9PSBlKSB7XFxuICAgIHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXFxcImRlZmF1bHRcXFwiKTtcXG4gICAgaWYgKFxcXCJvYmplY3RcXFwiICE9ICgwLF90eXBlb2ZfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX1tcXFwiZGVmYXVsdFxcXCJdKShpKSkgcmV0dXJuIGk7XFxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXFxcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXFxcIik7XFxuICB9XFxuICByZXR1cm4gKFxcXCJzdHJpbmdcXFwiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTtcXG59XFxuXFxuXFxuLyoqKi8gfSksXFxuXFxuLyoqKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvUHJvcGVydHlLZXkuanNcXFwiOlxcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b1Byb3BlcnR5S2V5LmpzICoqKiFcXG4gIFxcXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLyoqKi8gKGZ1bmN0aW9uKF9fdW51c2VkX3dlYnBhY2tfX193ZWJwYWNrX21vZHVsZV9fLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XFxuXFxuLyogaGFybW9ueSBleHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIHtcXG4vKiBoYXJtb255IGV4cG9ydCAqLyAgIFxcXCJkZWZhdWx0XFxcIjogZnVuY3Rpb24oKSB7IHJldHVybiAvKiBiaW5kaW5nICovIHRvUHJvcGVydHlLZXk7IH1cXG4vKiBoYXJtb255IGV4cG9ydCAqLyB9KTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX3R5cGVvZl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi90eXBlb2YuanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3R5cGVvZi5qc1xcXCIpO1xcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfdG9QcmltaXRpdmVfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vdG9QcmltaXRpdmUuanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvUHJpbWl0aXZlLmpzXFxcIik7XFxuXFxuXFxuZnVuY3Rpb24gdG9Qcm9wZXJ0eUtleSh0KSB7XFxuICB2YXIgaSA9ICgwLF90b1ByaW1pdGl2ZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fW1xcXCJkZWZhdWx0XFxcIl0pKHQsIFxcXCJzdHJpbmdcXFwiKTtcXG4gIHJldHVybiBcXFwic3ltYm9sXFxcIiA9PSAoMCxfdHlwZW9mX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19bXFxcImRlZmF1bHRcXFwiXSkoaSkgPyBpIDogaSArIFxcXCJcXFwiO1xcbn1cXG5cXG5cXG4vKioqLyB9KSxcXG5cXG4vKioqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdHlwZW9mLmpzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90eXBlb2YuanMgKioqIVxcbiAgXFxcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovIChmdW5jdGlvbihfX3VudXNlZF93ZWJwYWNrX19fd2VicGFja19tb2R1bGVfXywgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xcblxcbi8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCB7XFxuLyogaGFybW9ueSBleHBvcnQgKi8gICBcXFwiZGVmYXVsdFxcXCI6IGZ1bmN0aW9uKCkgeyByZXR1cm4gLyogYmluZGluZyAqLyBfdHlwZW9mOyB9XFxuLyogaGFybW9ueSBleHBvcnQgKi8gfSk7XFxuZnVuY3Rpb24gX3R5cGVvZihvKSB7XFxuICBcXFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcXFwiO1xcblxcbiAgcmV0dXJuIF90eXBlb2YgPSBcXFwiZnVuY3Rpb25cXFwiID09IHR5cGVvZiBTeW1ib2wgJiYgXFxcInN5bWJvbFxcXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7XFxuICAgIHJldHVybiB0eXBlb2YgbztcXG4gIH0gOiBmdW5jdGlvbiAobykge1xcbiAgICByZXR1cm4gbyAmJiBcXFwiZnVuY3Rpb25cXFwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcXFwic3ltYm9sXFxcIiA6IHR5cGVvZiBvO1xcbiAgfSwgX3R5cGVvZihvKTtcXG59XFxuXFxuXFxuLyoqKi8gfSlcXG5cXG4vKioqKioqLyBcXHR9KTtcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKioqKiovIFxcdC8vIFRoZSBtb2R1bGUgY2FjaGVcXG4vKioqKioqLyBcXHR2YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XFxuLyoqKioqKi8gXFx0XFxuLyoqKioqKi8gXFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cXG4vKioqKioqLyBcXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XFxuLyoqKioqKi8gXFx0XFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXFxuLyoqKioqKi8gXFx0XFx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XFxuLyoqKioqKi8gXFx0XFx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XFxuLyoqKioqKi8gXFx0XFx0XFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xcbi8qKioqKiovIFxcdFxcdH1cXG4vKioqKioqLyBcXHRcXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxcbi8qKioqKiovIFxcdFxcdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xcbi8qKioqKiovIFxcdFxcdFxcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcXG4vKioqKioqLyBcXHRcXHRcXHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxcbi8qKioqKiovIFxcdFxcdFxcdGV4cG9ydHM6IHt9XFxuLyoqKioqKi8gXFx0XFx0fTtcXG4vKioqKioqLyBcXHRcXG4vKioqKioqLyBcXHRcXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cXG4vKioqKioqLyBcXHRcXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcXG4vKioqKioqLyBcXHRcXG4vKioqKioqLyBcXHRcXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxcbi8qKioqKiovIFxcdFxcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcXG4vKioqKioqLyBcXHR9XFxuLyoqKioqKi8gXFx0XFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqKioqLyBcXHQvKiB3ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMgKi9cXG4vKioqKioqLyBcXHQhZnVuY3Rpb24oKSB7XFxuLyoqKioqKi8gXFx0XFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xcbi8qKioqKiovIFxcdFxcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIGRlZmluaXRpb24pIHtcXG4vKioqKioqLyBcXHRcXHRcXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XFxuLyoqKioqKi8gXFx0XFx0XFx0XFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XFxuLyoqKioqKi8gXFx0XFx0XFx0XFx0XFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcXG4vKioqKioqLyBcXHRcXHRcXHRcXHR9XFxuLyoqKioqKi8gXFx0XFx0XFx0fVxcbi8qKioqKiovIFxcdFxcdH07XFxuLyoqKioqKi8gXFx0fSgpO1xcbi8qKioqKiovIFxcdFxcbi8qKioqKiovIFxcdC8qIHdlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQgKi9cXG4vKioqKioqLyBcXHQhZnVuY3Rpb24oKSB7XFxuLyoqKioqKi8gXFx0XFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqLCBwcm9wKSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKTsgfVxcbi8qKioqKiovIFxcdH0oKTtcXG4vKioqKioqLyBcXHRcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbnZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0ge307XFxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzFdLnVzZSEuL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lLndvcmtlci50cyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2JhYmVsX3J1bnRpbWVfaGVscGVyc19hc3luY1RvR2VuZXJhdG9yX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3IgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2FzeW5jVG9HZW5lcmF0b3IuanNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjayAqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2suanNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jcmVhdGVDbGFzc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzcyAqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3MuanNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2JhYmVsX3J1bnRpbWVfaGVscGVyc19kZWZpbmVQcm9wZXJ0eV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eSAqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHkuanNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2xhbmdfYXNzZXJ0VW5yZWFjaGFibGVfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uLy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUgKi8gXFxcIi4vc3JjL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUudHNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2UgKi8gXFxcIi4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi93b3JrZXIvVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlLnRzXFxcIik7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF90cmFuc2Zvcm1zX1dvcmtlclRyYW5zZm9ybXNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vdHJhbnNmb3Jtcy9Xb3JrZXJUcmFuc2Zvcm1zICovIFxcXCIuL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL3RyYW5zZm9ybXMvV29ya2VyVHJhbnNmb3Jtcy50c1xcXCIpO1xcblxcblxcblxcblxcbnZhciBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXI7XFxuZnVuY3Rpb24gX3JlZ2VuZXJhdG9yKCkgeyAvKiEgcmVnZW5lcmF0b3ItcnVudGltZSAtLSBDb3B5cmlnaHQgKGMpIDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4gLS0gbGljZW5zZSAoTUlUKTogaHR0cHM6Ly9naXRodWIuY29tL2JhYmVsL2JhYmVsL2Jsb2IvbWFpbi9wYWNrYWdlcy9iYWJlbC1oZWxwZXJzL0xJQ0VOU0UgKi8gdmFyIGUsIHQsIHIgPSBcXFwiZnVuY3Rpb25cXFwiID09IHR5cGVvZiBTeW1ib2wgPyBTeW1ib2wgOiB7fSwgbiA9IHIuaXRlcmF0b3IgfHwgXFxcIkBAaXRlcmF0b3JcXFwiLCBvID0gci50b1N0cmluZ1RhZyB8fCBcXFwiQEB0b1N0cmluZ1RhZ1xcXCI7IGZ1bmN0aW9uIGkociwgbiwgbywgaSkgeyB2YXIgYyA9IG4gJiYgbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IgPyBuIDogR2VuZXJhdG9yLCB1ID0gT2JqZWN0LmNyZWF0ZShjLnByb3RvdHlwZSk7IHJldHVybiBfcmVnZW5lcmF0b3JEZWZpbmUyKHUsIFxcXCJfaW52b2tlXFxcIiwgZnVuY3Rpb24gKHIsIG4sIG8pIHsgdmFyIGksIGMsIHUsIGYgPSAwLCBwID0gbyB8fCBbXSwgeSA9ICExLCBHID0geyBwOiAwLCBuOiAwLCB2OiBlLCBhOiBkLCBmOiBkLmJpbmQoZSwgNCksIGQ6IGZ1bmN0aW9uIGQodCwgcikgeyByZXR1cm4gaSA9IHQsIGMgPSAwLCB1ID0gZSwgRy5uID0gciwgYTsgfSB9OyBmdW5jdGlvbiBkKHIsIG4pIHsgZm9yIChjID0gciwgdSA9IG4sIHQgPSAwOyAheSAmJiBmICYmICFvICYmIHQgPCBwLmxlbmd0aDsgdCsrKSB7IHZhciBvLCBpID0gcFt0XSwgZCA9IEcucCwgbCA9IGlbMl07IHIgPiAzID8gKG8gPSBsID09PSBuKSAmJiAodSA9IGlbKGMgPSBpWzRdKSA/IDUgOiAoYyA9IDMsIDMpXSwgaVs0XSA9IGlbNV0gPSBlKSA6IGlbMF0gPD0gZCAmJiAoKG8gPSByIDwgMiAmJiBkIDwgaVsxXSkgPyAoYyA9IDAsIEcudiA9IG4sIEcubiA9IGlbMV0pIDogZCA8IGwgJiYgKG8gPSByIDwgMyB8fCBpWzBdID4gbiB8fCBuID4gbCkgJiYgKGlbNF0gPSByLCBpWzVdID0gbiwgRy5uID0gbCwgYyA9IDApKTsgfSBpZiAobyB8fCByID4gMSkgcmV0dXJuIGE7IHRocm93IHkgPSAhMCwgbjsgfSByZXR1cm4gZnVuY3Rpb24gKG8sIHAsIGwpIHsgaWYgKGYgPiAxKSB0aHJvdyBUeXBlRXJyb3IoXFxcIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmdcXFwiKTsgZm9yICh5ICYmIDEgPT09IHAgJiYgZChwLCBsKSwgYyA9IHAsIHUgPSBsOyAodCA9IGMgPCAyID8gZSA6IHUpIHx8ICF5OykgeyBpIHx8IChjID8gYyA8IDMgPyAoYyA+IDEgJiYgKEcubiA9IC0xKSwgZChjLCB1KSkgOiBHLm4gPSB1IDogRy52ID0gdSk7IHRyeSB7IGlmIChmID0gMiwgaSkgeyBpZiAoYyB8fCAobyA9IFxcXCJuZXh0XFxcIiksIHQgPSBpW29dKSB7IGlmICghKHQgPSB0LmNhbGwoaSwgdSkpKSB0aHJvdyBUeXBlRXJyb3IoXFxcIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0XFxcIik7IGlmICghdC5kb25lKSByZXR1cm4gdDsgdSA9IHQudmFsdWUsIGMgPCAyICYmIChjID0gMCk7IH0gZWxzZSAxID09PSBjICYmICh0ID0gaVtcXFwicmV0dXJuXFxcIl0pICYmIHQuY2FsbChpKSwgYyA8IDIgJiYgKHUgPSBUeXBlRXJyb3IoXFxcIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJ1xcXCIgKyBvICsgXFxcIicgbWV0aG9kXFxcIiksIGMgPSAxKTsgaSA9IGU7IH0gZWxzZSBpZiAoKHQgPSAoeSA9IEcubiA8IDApID8gdSA6IHIuY2FsbChuLCBHKSkgIT09IGEpIGJyZWFrOyB9IGNhdGNoICh0KSB7IGkgPSBlLCBjID0gMSwgdSA9IHQ7IH0gZmluYWxseSB7IGYgPSAxOyB9IH0gcmV0dXJuIHsgdmFsdWU6IHQsIGRvbmU6IHkgfTsgfTsgfShyLCBvLCBpKSwgITApLCB1OyB9IHZhciBhID0ge307IGZ1bmN0aW9uIEdlbmVyYXRvcigpIHt9IGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uKCkge30gZnVuY3Rpb24gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoKSB7fSB0ID0gT2JqZWN0LmdldFByb3RvdHlwZU9mOyB2YXIgYyA9IFtdW25dID8gdCh0KFtdW25dKCkpKSA6IChfcmVnZW5lcmF0b3JEZWZpbmUyKHQgPSB7fSwgbiwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSksIHQpLCB1ID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUucHJvdG90eXBlID0gR2VuZXJhdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoYyk7IGZ1bmN0aW9uIGYoZSkgeyByZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKGUsIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKSA6IChlLl9fcHJvdG9fXyA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLCBfcmVnZW5lcmF0b3JEZWZpbmUyKGUsIG8sIFxcXCJHZW5lcmF0b3JGdW5jdGlvblxcXCIpKSwgZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHUpLCBlOyB9IHJldHVybiBHZW5lcmF0b3JGdW5jdGlvbi5wcm90b3R5cGUgPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSwgX3JlZ2VuZXJhdG9yRGVmaW5lMih1LCBcXFwiY29uc3RydWN0b3JcXFwiLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSksIF9yZWdlbmVyYXRvckRlZmluZTIoR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUsIFxcXCJjb25zdHJ1Y3RvclxcXCIsIEdlbmVyYXRvckZ1bmN0aW9uKSwgR2VuZXJhdG9yRnVuY3Rpb24uZGlzcGxheU5hbWUgPSBcXFwiR2VuZXJhdG9yRnVuY3Rpb25cXFwiLCBfcmVnZW5lcmF0b3JEZWZpbmUyKEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLCBvLCBcXFwiR2VuZXJhdG9yRnVuY3Rpb25cXFwiKSwgX3JlZ2VuZXJhdG9yRGVmaW5lMih1KSwgX3JlZ2VuZXJhdG9yRGVmaW5lMih1LCBvLCBcXFwiR2VuZXJhdG9yXFxcIiksIF9yZWdlbmVyYXRvckRlZmluZTIodSwgbiwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSksIF9yZWdlbmVyYXRvckRlZmluZTIodSwgXFxcInRvU3RyaW5nXFxcIiwgZnVuY3Rpb24gKCkgeyByZXR1cm4gXFxcIltvYmplY3QgR2VuZXJhdG9yXVxcXCI7IH0pLCAoX3JlZ2VuZXJhdG9yID0gZnVuY3Rpb24gX3JlZ2VuZXJhdG9yKCkgeyByZXR1cm4geyB3OiBpLCBtOiBmIH07IH0pKCk7IH1cXG5mdW5jdGlvbiBfcmVnZW5lcmF0b3JEZWZpbmUyKGUsIHIsIG4sIHQpIHsgdmFyIGkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7IHRyeSB7IGkoe30sIFxcXCJcXFwiLCB7fSk7IH0gY2F0Y2ggKGUpIHsgaSA9IDA7IH0gX3JlZ2VuZXJhdG9yRGVmaW5lMiA9IGZ1bmN0aW9uIF9yZWdlbmVyYXRvckRlZmluZShlLCByLCBuLCB0KSB7IGZ1bmN0aW9uIG8ociwgbikgeyBfcmVnZW5lcmF0b3JEZWZpbmUyKGUsIHIsIGZ1bmN0aW9uIChlKSB7IHJldHVybiB0aGlzLl9pbnZva2UociwgbiwgZSk7IH0pOyB9IHIgPyBpID8gaShlLCByLCB7IHZhbHVlOiBuLCBlbnVtZXJhYmxlOiAhdCwgY29uZmlndXJhYmxlOiAhdCwgd3JpdGFibGU6ICF0IH0pIDogZVtyXSA9IG4gOiAobyhcXFwibmV4dFxcXCIsIDApLCBvKFxcXCJ0aHJvd1xcXCIsIDEpLCBvKFxcXCJyZXR1cm5cXFwiLCAyKSk7IH0sIF9yZWdlbmVyYXRvckRlZmluZTIoZSwgciwgbiwgdCk7IH1cXG4vKipcXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cXG4gKi9cXG5cXG5cXG5cXG5cXG52YXIgd29ya2VyID0gc2VsZjtcXG4vLyBUaGlzIGlzIGhvdyB0aGUgZG9jdW1lbnRhdGlvbiBpbnN0cnVjdHMgdG8gZG8gaXQgLSBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS93b3JrZXItbG9hZGVyXFxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xcbnZhciBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XFxuICBmdW5jdGlvbiBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlcigpIHtcXG4gICAgKDAsX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fW1xcXCJkZWZhdWx0XFxcIl0pKHRoaXMsIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyKTtcXG4gIH1cXG4gIHJldHVybiAoMCxfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NyZWF0ZUNsYXNzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19bXFxcImRlZmF1bHRcXFwiXSkoVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIsIG51bGwsIFt7XFxuICAgIGtleTogXFxcImhhbmRsZUFkZFRyYW5zZm9ybVxcXCIsXFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYW5kbGVBZGRUcmFuc2Zvcm0odHlwZSkge1xcbiAgICAgIGlmIChUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5faXNQaXBlbGluZUNvbmZpZ3VyZWQpIHtcXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRXJyb3I6IFBpcGVsaW5lIGlzIGxvY2tlZC4gQSB0cmFuc2Zvcm0gY2Fubm90IGJlIGFkZGVkIG9uY2UgdGhlIHBpcGVsaW5lIGhhcyBiZWVuIGNvbmZpZ3VyZWQnKTtcXG4gICAgICB9XFxuICAgICAgc3dpdGNoICh0eXBlKSB7XFxuICAgICAgICBjYXNlICdmcmFtZS10aW1pbmctaW5mb3JtYXRpb24nOlxcbiAgICAgICAgICBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5fdHJhbnNmb3Jtcy5wdXNoKF90cmFuc2Zvcm1zX1dvcmtlclRyYW5zZm9ybXNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfX1tcXFwiZGVmYXVsdFxcXCJdLmNyZWF0ZUZyYW1lVGltaW5nSW5mb3JtYXRpb25UcmFuc2Zvcm0oKSk7XFxuICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgY2FzZSAncHJvdGVjdGVkLXZpZGVvJzpcXG4gICAgICAgICAgVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIuX3RyYW5zZm9ybXMucHVzaChfdHJhbnNmb3Jtc19Xb3JrZXJUcmFuc2Zvcm1zX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X19bXFxcImRlZmF1bHRcXFwiXS5jcmVhdGVFbmNvZGVkVmlkZW9TdHJlYW1UcmFuc2Zvcm0od29ya2VyKSk7XFxuICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgY2FzZSAncHJvdGVjdGVkLWF1ZGlvJzpcXG4gICAgICAgICAgVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIuX3RyYW5zZm9ybXMucHVzaChfdHJhbnNmb3Jtc19Xb3JrZXJUcmFuc2Zvcm1zX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X19bXFxcImRlZmF1bHRcXFwiXS5jcmVhdGVFbmNvZGVkQXVkaW9TdHJlYW1UcmFuc2Zvcm0od29ya2VyKSk7XFxuICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgY2FzZSAncGFzcy10aHJvdWdoJzpcXG4gICAgICAgICAgVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIuX3RyYW5zZm9ybXMucHVzaChfdHJhbnNmb3Jtc19Xb3JrZXJUcmFuc2Zvcm1zX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X19bXFxcImRlZmF1bHRcXFwiXS5jcmVhdGVQYXNzVGhyb3VnaFRyYW5zZm9ybSgpKTtcXG4gICAgICAgICAgYnJlYWs7XFxuICAgICAgICBkZWZhdWx0OlxcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXFxcIkVycm9yOiBVbmtub3duIHRyYW5zZm9ybSB0eXBlIFtcXFwiLmNvbmNhdCh0eXBlLCBcXFwiXVxcXCIpKTtcXG4gICAgICB9XFxuICAgIH1cXG4gIH0sIHtcXG4gICAga2V5OiBcXFwiY29uZmlndXJlUGlwZWxpbmVcXFwiLFxcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xcbiAgICAgIHZhciBfY29uZmlndXJlUGlwZWxpbmUgPSAoMCxfYmFiZWxfcnVudGltZV9oZWxwZXJzX2FzeW5jVG9HZW5lcmF0b3JfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX1tcXFwiZGVmYXVsdFxcXCJdKSgvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yKCkubShmdW5jdGlvbiBfY2FsbGVlKHNvdXJjZSwgc2luaykge1xcbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvcigpLncoZnVuY3Rpb24gKF9jb250ZXh0KSB7XFxuICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0Lm4pIHtcXG4gICAgICAgICAgICBjYXNlIDA6XFxuICAgICAgICAgICAgICBpZiAoc291cmNlICYmIHNpbmspIHtcXG4gICAgICAgICAgICAgICAgX2NvbnRleHQubiA9IDE7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFcnJvcjogQ29uZmlndXJhdGlvbiBvZiBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZSByZXF1aXJlcyBib3RoIGEgcmVhZGJhbGUgc291cmNlIGFuZCB3cml0YWJsZSBzaW5rJyk7XFxuICAgICAgICAgICAgY2FzZSAxOlxcbiAgICAgICAgICAgICAgaWYgKFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLl90cmFuc2Zvcm1zLmxlbmd0aCA9PT0gMCkge1xcbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5fdHJhbnNmb3Jtcy5wdXNoKCk7XFxuICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICBfY29udGV4dC5uID0gMjtcXG4gICAgICAgICAgICAgIHJldHVybiBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5fdHJhbnNmb3Jtcy5yZWR1Y2VSaWdodChmdW5jdGlvbiAocGlwZWxpbmUsIHRyYW5zZm9ybSkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gcGlwZWxpbmUucGlwZVRocm91Z2godHJhbnNmb3JtKTtcXG4gICAgICAgICAgICAgIH0sIHNvdXJjZSkucGlwZVRvKHNpbmspO1xcbiAgICAgICAgICAgIGNhc2UgMjpcXG4gICAgICAgICAgICAgIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLl9pc1BpcGVsaW5lQ29uZmlndXJlZCA9IHRydWU7XFxuICAgICAgICAgICAgICB3b3JrZXIucG9zdE1lc3NhZ2Uoe1xcbiAgICAgICAgICAgICAgICB0eXBlOiBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X18uVHJhbnNmb3JtTWVzc2FnZVR5cGUuUGlwZWxpbmVDb25maWd1cmVkLFxcbiAgICAgICAgICAgICAgICBkYXRhOiB7XFxuICAgICAgICAgICAgICAgICAgbmFtZTogVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIuX3dvcmtlck5hbWVcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgY2FzZSAzOlxcbiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LmEoMik7XFxuICAgICAgICAgIH1cXG4gICAgICAgIH0sIF9jYWxsZWUpO1xcbiAgICAgIH0pKTtcXG4gICAgICBmdW5jdGlvbiBjb25maWd1cmVQaXBlbGluZShfeCwgX3gyKSB7XFxuICAgICAgICByZXR1cm4gX2NvbmZpZ3VyZVBpcGVsaW5lLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XFxuICAgICAgfVxcbiAgICAgIHJldHVybiBjb25maWd1cmVQaXBlbGluZTtcXG4gICAgfSgpXFxuICB9LCB7XFxuICAgIGtleTogXFxcImhhbmRsZU1lc3NhZ2VcXFwiLFxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlTWVzc2FnZShfcmVmKSB7XFxuICAgICAgdmFyIG1lc3NhZ2UgPSBfcmVmLmRhdGE7XFxuICAgICAgdmFyIHR5cGUgPSBtZXNzYWdlLnR5cGU7XFxuICAgICAgc3dpdGNoICh0eXBlKSB7XFxuICAgICAgICBjYXNlIF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfXy5UcmFuc2Zvcm1NZXNzYWdlVHlwZS5BZGRUcmFuc2Zvcm06XFxuICAgICAgICAgIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLmhhbmRsZUFkZFRyYW5zZm9ybShtZXNzYWdlLmRhdGEpO1xcbiAgICAgICAgICBicmVhaztcXG4gICAgICAgIGNhc2UgX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fLlRyYW5zZm9ybU1lc3NhZ2VUeXBlLkNvbmZpZ3VyZVBpcGVsaW5lOlxcbiAgICAgICAgICBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5jb25maWd1cmVQaXBlbGluZShtZXNzYWdlLmRhdGEuc291cmNlLCBtZXNzYWdlLmRhdGEuc2luayk7XFxuICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgY2FzZSBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X18uVHJhbnNmb3JtTWVzc2FnZVR5cGUuTWV0YWRhdGE6XFxuICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgY2FzZSBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X18uVHJhbnNmb3JtTWVzc2FnZVR5cGUuQ2h1bms6XFxuICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgZGVmYXVsdDpcXG4gICAgICAgICAgKDAsX2xhbmdfYXNzZXJ0VW5yZWFjaGFibGVfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX1tcXFwiZGVmYXVsdFxcXCJdKSh0eXBlKTtcXG4gICAgICB9XFxuICAgIH1cXG4gIH1dKTtcXG59KCk7XFxuX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyID0gVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXI7XFxuKDAsX2JhYmVsX3J1bnRpbWVfaGVscGVyc19kZWZpbmVQcm9wZXJ0eV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fW1xcXCJkZWZhdWx0XFxcIl0pKFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLCBcXFwiX3RyYW5zZm9ybXNcXFwiLCBbXSk7XFxuKDAsX2JhYmVsX3J1bnRpbWVfaGVscGVyc19kZWZpbmVQcm9wZXJ0eV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fW1xcXCJkZWZhdWx0XFxcIl0pKFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLCBcXFwiX2lzUGlwZWxpbmVDb25maWd1cmVkXFxcIiwgZmFsc2UpO1xcbigwLF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfZGVmaW5lUHJvcGVydHlfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX1tcXFwiZGVmYXVsdFxcXCJdKShUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlciwgXFxcIl93b3JrZXJOYW1lXFxcIiwgdm9pZCAwKTtcXG4oZnVuY3Rpb24gKCkge1xcbiAgd29ya2VyLm9uZXJyb3IgPSBmdW5jdGlvbiAoZXJyb3IpIHtcXG4gICAgcmV0dXJuIGNvbnNvbGUuZXJyb3IoJ1tUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlcl0gRXJyb3I6IFslc10nLCBlcnJvcik7XFxuICB9O1xcbiAgd29ya2VyLm9ubWVzc2FnZSA9IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5oYW5kbGVNZXNzYWdlLmJpbmQoX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyKTtcXG4gIGlmICh3b3JrZXIuUlRDVHJhbnNmb3JtRXZlbnQpIHtcXG4gICAgd29ya2VyLm9ucnRjdHJhbnNmb3JtID0gZnVuY3Rpb24gKF9yZWYyKSB7XFxuICAgICAgdmFyIHRyYW5zZm9ybWVyID0gX3JlZjIudHJhbnNmb3JtZXI7XFxuICAgICAgX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLl93b3JrZXJOYW1lID0gdHJhbnNmb3JtZXIub3B0aW9ucy5uYW1lO1xcbiAgICAgIHZhciBzb3VyY2UgPSB0cmFuc2Zvcm1lci5yZWFkYWJsZTtcXG4gICAgICB2YXIgc2luayA9IHRyYW5zZm9ybWVyLndyaXRhYmxlO1xcbiAgICAgIF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5jb25maWd1cmVQaXBlbGluZShzb3VyY2UsIHNpbmspO1xcbiAgICB9O1xcbiAgfVxcbn0pKCk7XFxuLyogdW51c2VkIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIF9fV0VCUEFDS19ERUZBVUxUX0VYUE9SVF9fID0gKG51bGwpO1xcbi8qKioqKiovIH0pKClcXG47XFxuXCIsIFwiV29ya2VyXCIsIHVuZGVmaW5lZCwgdW5kZWZpbmVkKTtcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBlc2xpbnQtZW52IGJyb3dzZXIgKi9cblxuLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZWYsIG5vLXVzZS1iZWZvcmUtZGVmaW5lLCBuZXctY2FwICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChjb250ZW50LCB3b3JrZXJDb25zdHJ1Y3Rvciwgd29ya2VyT3B0aW9ucywgdXJsKSB7XG4gIHZhciBnbG9iYWxTY29wZSA9IHNlbGYgfHwgd2luZG93O1xuXG4gIHRyeSB7XG4gICAgdHJ5IHtcbiAgICAgIHZhciBibG9iO1xuXG4gICAgICB0cnkge1xuICAgICAgICAvLyBOZXcgQVBJXG4gICAgICAgIGJsb2IgPSBuZXcgZ2xvYmFsU2NvcGUuQmxvYihbY29udGVudF0pO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBCbG9iQnVpbGRlciA9IERlcHJlY2F0ZWQsIGJ1dCB3aWRlbHkgaW1wbGVtZW50ZWRcbiAgICAgICAgdmFyIEJsb2JCdWlsZGVyID0gZ2xvYmFsU2NvcGUuQmxvYkJ1aWxkZXIgfHwgZ2xvYmFsU2NvcGUuV2ViS2l0QmxvYkJ1aWxkZXIgfHwgZ2xvYmFsU2NvcGUuTW96QmxvYkJ1aWxkZXIgfHwgZ2xvYmFsU2NvcGUuTVNCbG9iQnVpbGRlcjtcbiAgICAgICAgYmxvYiA9IG5ldyBCbG9iQnVpbGRlcigpO1xuICAgICAgICBibG9iLmFwcGVuZChjb250ZW50KTtcbiAgICAgICAgYmxvYiA9IGJsb2IuZ2V0QmxvYigpO1xuICAgICAgfVxuXG4gICAgICB2YXIgVVJMID0gZ2xvYmFsU2NvcGUuVVJMIHx8IGdsb2JhbFNjb3BlLndlYmtpdFVSTDtcbiAgICAgIHZhciBvYmplY3RVUkwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgdmFyIHdvcmtlciA9IG5ldyBnbG9iYWxTY29wZVt3b3JrZXJDb25zdHJ1Y3Rvcl0ob2JqZWN0VVJMLCB3b3JrZXJPcHRpb25zKTtcbiAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwob2JqZWN0VVJMKTtcbiAgICAgIHJldHVybiB3b3JrZXI7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIG5ldyBnbG9iYWxTY29wZVt3b3JrZXJDb25zdHJ1Y3Rvcl0oXCJkYXRhOmFwcGxpY2F0aW9uL2phdmFzY3JpcHQsXCIuY29uY2F0KGVuY29kZVVSSUNvbXBvbmVudChjb250ZW50KSksIHdvcmtlck9wdGlvbnMpO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmICghdXJsKSB7XG4gICAgICB0aHJvdyBFcnJvcihcIklubGluZSB3b3JrZXIgaXMgbm90IHN1cHBvcnRlZFwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IGdsb2JhbFNjb3BlW3dvcmtlckNvbnN0cnVjdG9yXSh1cmwsIHdvcmtlck9wdGlvbnMpO1xuICB9XG59OyIsImZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KHIsIGEpIHtcbiAgKG51bGwgPT0gYSB8fCBhID4gci5sZW5ndGgpICYmIChhID0gci5sZW5ndGgpO1xuICBmb3IgKHZhciBlID0gMCwgbiA9IEFycmF5KGEpOyBlIDwgYTsgZSsrKSBuW2VdID0gcltlXTtcbiAgcmV0dXJuIG47XG59XG5leHBvcnQgeyBfYXJyYXlMaWtlVG9BcnJheSBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKHIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkocikpIHJldHVybiByO1xufVxuZXhwb3J0IHsgX2FycmF5V2l0aEhvbGVzIGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgYXJyYXlMaWtlVG9BcnJheSBmcm9tIFwiLi9hcnJheUxpa2VUb0FycmF5LmpzXCI7XG5mdW5jdGlvbiBfYXJyYXlXaXRob3V0SG9sZXMocikge1xuICBpZiAoQXJyYXkuaXNBcnJheShyKSkgcmV0dXJuIGFycmF5TGlrZVRvQXJyYXkocik7XG59XG5leHBvcnQgeyBfYXJyYXlXaXRob3V0SG9sZXMgYXMgZGVmYXVsdCB9OyIsImZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoZSkge1xuICBpZiAodm9pZCAwID09PSBlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7XG4gIHJldHVybiBlO1xufVxuZXhwb3J0IHsgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JTdGVwKG4sIHQsIGUsIHIsIG8sIGEsIGMpIHtcbiAgdHJ5IHtcbiAgICB2YXIgaSA9IG5bYV0oYyksXG4gICAgICB1ID0gaS52YWx1ZTtcbiAgfSBjYXRjaCAobikge1xuICAgIHJldHVybiB2b2lkIGUobik7XG4gIH1cbiAgaS5kb25lID8gdCh1KSA6IFByb21pc2UucmVzb2x2ZSh1KS50aGVuKHIsIG8pO1xufVxuZnVuY3Rpb24gX2FzeW5jVG9HZW5lcmF0b3Iobikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciB0ID0gdGhpcyxcbiAgICAgIGUgPSBhcmd1bWVudHM7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyLCBvKSB7XG4gICAgICB2YXIgYSA9IG4uYXBwbHkodCwgZSk7XG4gICAgICBmdW5jdGlvbiBfbmV4dChuKSB7XG4gICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChhLCByLCBvLCBfbmV4dCwgX3Rocm93LCBcIm5leHRcIiwgbik7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBfdGhyb3cobikge1xuICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoYSwgciwgbywgX25leHQsIF90aHJvdywgXCJ0aHJvd1wiLCBuKTtcbiAgICAgIH1cbiAgICAgIF9uZXh0KHZvaWQgMCk7XG4gICAgfSk7XG4gIH07XG59XG5leHBvcnQgeyBfYXN5bmNUb0dlbmVyYXRvciBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGEsIG4pIHtcbiAgaWYgKCEoYSBpbnN0YW5jZW9mIG4pKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xufVxuZXhwb3J0IHsgX2NsYXNzQ2FsbENoZWNrIGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgdG9Qcm9wZXJ0eUtleSBmcm9tIFwiLi90b1Byb3BlcnR5S2V5LmpzXCI7XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyhlLCByKSB7XG4gIGZvciAodmFyIHQgPSAwOyB0IDwgci5sZW5ndGg7IHQrKykge1xuICAgIHZhciBvID0gclt0XTtcbiAgICBvLmVudW1lcmFibGUgPSBvLmVudW1lcmFibGUgfHwgITEsIG8uY29uZmlndXJhYmxlID0gITAsIFwidmFsdWVcIiBpbiBvICYmIChvLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgdG9Qcm9wZXJ0eUtleShvLmtleSksIG8pO1xuICB9XG59XG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoZSwgciwgdCkge1xuICByZXR1cm4gciAmJiBfZGVmaW5lUHJvcGVydGllcyhlLnByb3RvdHlwZSwgciksIHQgJiYgX2RlZmluZVByb3BlcnRpZXMoZSwgdCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCBcInByb3RvdHlwZVwiLCB7XG4gICAgd3JpdGFibGU6ICExXG4gIH0pLCBlO1xufVxuZXhwb3J0IHsgX2NyZWF0ZUNsYXNzIGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgdG9Qcm9wZXJ0eUtleSBmcm9tIFwiLi90b1Byb3BlcnR5S2V5LmpzXCI7XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkoZSwgciwgdCkge1xuICByZXR1cm4gKHIgPSB0b1Byb3BlcnR5S2V5KHIpKSBpbiBlID8gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIHtcbiAgICB2YWx1ZTogdCxcbiAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICBjb25maWd1cmFibGU6ICEwLFxuICAgIHdyaXRhYmxlOiAhMFxuICB9KSA6IGVbcl0gPSB0LCBlO1xufVxuZXhwb3J0IHsgX2RlZmluZVByb3BlcnR5IGFzIGRlZmF1bHQgfTsiLCJmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YodCkge1xuICByZXR1cm4gX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uICh0KSB7XG4gICAgcmV0dXJuIHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KTtcbiAgfSwgX2dldFByb3RvdHlwZU9mKHQpO1xufVxuZXhwb3J0IHsgX2dldFByb3RvdHlwZU9mIGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgc2V0UHJvdG90eXBlT2YgZnJvbSBcIi4vc2V0UHJvdG90eXBlT2YuanNcIjtcbmZ1bmN0aW9uIF9pbmhlcml0cyh0LCBlKSB7XG4gIGlmIChcImZ1bmN0aW9uXCIgIT0gdHlwZW9mIGUgJiYgbnVsbCAhPT0gZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpO1xuICB0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZSAmJiBlLnByb3RvdHlwZSwge1xuICAgIGNvbnN0cnVjdG9yOiB7XG4gICAgICB2YWx1ZTogdCxcbiAgICAgIHdyaXRhYmxlOiAhMCxcbiAgICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgICB9XG4gIH0pLCBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgXCJwcm90b3R5cGVcIiwge1xuICAgIHdyaXRhYmxlOiAhMVxuICB9KSwgZSAmJiBzZXRQcm90b3R5cGVPZih0LCBlKTtcbn1cbmV4cG9ydCB7IF9pbmhlcml0cyBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheShyKSB7XG4gIGlmIChcInVuZGVmaW5lZFwiICE9IHR5cGVvZiBTeW1ib2wgJiYgbnVsbCAhPSByW1N5bWJvbC5pdGVyYXRvcl0gfHwgbnVsbCAhPSByW1wiQEBpdGVyYXRvclwiXSkgcmV0dXJuIEFycmF5LmZyb20ocik7XG59XG5leHBvcnQgeyBfaXRlcmFibGVUb0FycmF5IGFzIGRlZmF1bHQgfTsiLCJmdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQociwgbCkge1xuICB2YXIgdCA9IG51bGwgPT0gciA/IG51bGwgOiBcInVuZGVmaW5lZFwiICE9IHR5cGVvZiBTeW1ib2wgJiYgcltTeW1ib2wuaXRlcmF0b3JdIHx8IHJbXCJAQGl0ZXJhdG9yXCJdO1xuICBpZiAobnVsbCAhPSB0KSB7XG4gICAgdmFyIGUsXG4gICAgICBuLFxuICAgICAgaSxcbiAgICAgIHUsXG4gICAgICBhID0gW10sXG4gICAgICBmID0gITAsXG4gICAgICBvID0gITE7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChpID0gKHQgPSB0LmNhbGwocikpLm5leHQsIDAgPT09IGwpIHtcbiAgICAgICAgaWYgKE9iamVjdCh0KSAhPT0gdCkgcmV0dXJuO1xuICAgICAgICBmID0gITE7XG4gICAgICB9IGVsc2UgZm9yICg7ICEoZiA9IChlID0gaS5jYWxsKHQpKS5kb25lKSAmJiAoYS5wdXNoKGUudmFsdWUpLCBhLmxlbmd0aCAhPT0gbCk7IGYgPSAhMCk7XG4gICAgfSBjYXRjaCAocikge1xuICAgICAgbyA9ICEwLCBuID0gcjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKCFmICYmIG51bGwgIT0gdFtcInJldHVyblwiXSAmJiAodSA9IHRbXCJyZXR1cm5cIl0oKSwgT2JqZWN0KHUpICE9PSB1KSkgcmV0dXJuO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaWYgKG8pIHRocm93IG47XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhO1xuICB9XG59XG5leHBvcnQgeyBfaXRlcmFibGVUb0FycmF5TGltaXQgYXMgZGVmYXVsdCB9OyIsImZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7XG59XG5leHBvcnQgeyBfbm9uSXRlcmFibGVSZXN0IGFzIGRlZmF1bHQgfTsiLCJmdW5jdGlvbiBfbm9uSXRlcmFibGVTcHJlYWQoKSB7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xufVxuZXhwb3J0IHsgX25vbkl0ZXJhYmxlU3ByZWFkIGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiLi90eXBlb2YuanNcIjtcbmltcG9ydCBhc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIi4vYXNzZXJ0VGhpc0luaXRpYWxpemVkLmpzXCI7XG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0LCBlKSB7XG4gIGlmIChlICYmIChcIm9iamVjdFwiID09IF90eXBlb2YoZSkgfHwgXCJmdW5jdGlvblwiID09IHR5cGVvZiBlKSkgcmV0dXJuIGU7XG4gIGlmICh2b2lkIDAgIT09IGUpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZFwiKTtcbiAgcmV0dXJuIGFzc2VydFRoaXNJbml0aWFsaXplZCh0KTtcbn1cbmV4cG9ydCB7IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIGFzIGRlZmF1bHQgfTsiLCJmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YodCwgZSkge1xuICByZXR1cm4gX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgcmV0dXJuIHQuX19wcm90b19fID0gZSwgdDtcbiAgfSwgX3NldFByb3RvdHlwZU9mKHQsIGUpO1xufVxuZXhwb3J0IHsgX3NldFByb3RvdHlwZU9mIGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgYXJyYXlXaXRoSG9sZXMgZnJvbSBcIi4vYXJyYXlXaXRoSG9sZXMuanNcIjtcbmltcG9ydCBpdGVyYWJsZVRvQXJyYXlMaW1pdCBmcm9tIFwiLi9pdGVyYWJsZVRvQXJyYXlMaW1pdC5qc1wiO1xuaW1wb3J0IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IGZyb20gXCIuL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzXCI7XG5pbXBvcnQgbm9uSXRlcmFibGVSZXN0IGZyb20gXCIuL25vbkl0ZXJhYmxlUmVzdC5qc1wiO1xuZnVuY3Rpb24gX3NsaWNlZFRvQXJyYXkociwgZSkge1xuICByZXR1cm4gYXJyYXlXaXRoSG9sZXMocikgfHwgaXRlcmFibGVUb0FycmF5TGltaXQociwgZSkgfHwgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkociwgZSkgfHwgbm9uSXRlcmFibGVSZXN0KCk7XG59XG5leHBvcnQgeyBfc2xpY2VkVG9BcnJheSBhcyBkZWZhdWx0IH07IiwiaW1wb3J0IGFycmF5V2l0aG91dEhvbGVzIGZyb20gXCIuL2FycmF5V2l0aG91dEhvbGVzLmpzXCI7XG5pbXBvcnQgaXRlcmFibGVUb0FycmF5IGZyb20gXCIuL2l0ZXJhYmxlVG9BcnJheS5qc1wiO1xuaW1wb3J0IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IGZyb20gXCIuL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzXCI7XG5pbXBvcnQgbm9uSXRlcmFibGVTcHJlYWQgZnJvbSBcIi4vbm9uSXRlcmFibGVTcHJlYWQuanNcIjtcbmZ1bmN0aW9uIF90b0NvbnN1bWFibGVBcnJheShyKSB7XG4gIHJldHVybiBhcnJheVdpdGhvdXRIb2xlcyhyKSB8fCBpdGVyYWJsZVRvQXJyYXkocikgfHwgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkocikgfHwgbm9uSXRlcmFibGVTcHJlYWQoKTtcbn1cbmV4cG9ydCB7IF90b0NvbnN1bWFibGVBcnJheSBhcyBkZWZhdWx0IH07IiwiaW1wb3J0IF90eXBlb2YgZnJvbSBcIi4vdHlwZW9mLmpzXCI7XG5mdW5jdGlvbiB0b1ByaW1pdGl2ZSh0LCByKSB7XG4gIGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0O1xuICB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTtcbiAgaWYgKHZvaWQgMCAhPT0gZSkge1xuICAgIHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpO1xuICAgIGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpO1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTtcbiAgfVxuICByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpO1xufVxuZXhwb3J0IHsgdG9QcmltaXRpdmUgYXMgZGVmYXVsdCB9OyIsImltcG9ydCBfdHlwZW9mIGZyb20gXCIuL3R5cGVvZi5qc1wiO1xuaW1wb3J0IHRvUHJpbWl0aXZlIGZyb20gXCIuL3RvUHJpbWl0aXZlLmpzXCI7XG5mdW5jdGlvbiB0b1Byb3BlcnR5S2V5KHQpIHtcbiAgdmFyIGkgPSB0b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTtcbiAgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBpICsgXCJcIjtcbn1cbmV4cG9ydCB7IHRvUHJvcGVydHlLZXkgYXMgZGVmYXVsdCB9OyIsImZ1bmN0aW9uIF90eXBlb2Yobykge1xuICBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7XG5cbiAgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykge1xuICAgIHJldHVybiB0eXBlb2YgbztcbiAgfSA6IGZ1bmN0aW9uIChvKSB7XG4gICAgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87XG4gIH0sIF90eXBlb2Yobyk7XG59XG5leHBvcnQgeyBfdHlwZW9mIGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgYXJyYXlMaWtlVG9BcnJheSBmcm9tIFwiLi9hcnJheUxpa2VUb0FycmF5LmpzXCI7XG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkociwgYSkge1xuICBpZiAocikge1xuICAgIGlmIChcInN0cmluZ1wiID09IHR5cGVvZiByKSByZXR1cm4gYXJyYXlMaWtlVG9BcnJheShyLCBhKTtcbiAgICB2YXIgdCA9IHt9LnRvU3RyaW5nLmNhbGwocikuc2xpY2UoOCwgLTEpO1xuICAgIHJldHVybiBcIk9iamVjdFwiID09PSB0ICYmIHIuY29uc3RydWN0b3IgJiYgKHQgPSByLmNvbnN0cnVjdG9yLm5hbWUpLCBcIk1hcFwiID09PSB0IHx8IFwiU2V0XCIgPT09IHQgPyBBcnJheS5mcm9tKHIpIDogXCJBcmd1bWVudHNcIiA9PT0gdCB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdCh0KSA/IGFycmF5TGlrZVRvQXJyYXkociwgYSkgOiB2b2lkIDA7XG4gIH1cbn1cbmV4cG9ydCB7IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSBhcyBkZWZhdWx0IH07IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0ZnVuY3Rpb24oKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG5cdFx0ZnVuY3Rpb24oKSB7IHJldHVybiBtb2R1bGU7IH07XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBkZWZpbml0aW9uKSB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18uZyA9IChmdW5jdGlvbigpIHtcblx0aWYgKHR5cGVvZiBnbG9iYWxUaGlzID09PSAnb2JqZWN0JykgcmV0dXJuIGdsb2JhbFRoaXM7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIHRoaXMgfHwgbmV3IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcpIHJldHVybiB3aW5kb3c7XG5cdH1cbn0pKCk7IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqLCBwcm9wKSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKTsgfSIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zICovXG52YXIgZyA9XG4gICh0eXBlb2YgZ2xvYmFsVGhpcyAhPT0gJ3VuZGVmaW5lZCcgJiYgZ2xvYmFsVGhpcykgfHxcbiAgKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyAmJiBzZWxmKSB8fFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbiAgKHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnICYmIGdsb2JhbCkgfHxcbiAge31cblxudmFyIHN1cHBvcnQgPSB7XG4gIHNlYXJjaFBhcmFtczogJ1VSTFNlYXJjaFBhcmFtcycgaW4gZyxcbiAgaXRlcmFibGU6ICdTeW1ib2wnIGluIGcgJiYgJ2l0ZXJhdG9yJyBpbiBTeW1ib2wsXG4gIGJsb2I6XG4gICAgJ0ZpbGVSZWFkZXInIGluIGcgJiZcbiAgICAnQmxvYicgaW4gZyAmJlxuICAgIChmdW5jdGlvbigpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIG5ldyBCbG9iKClcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfSkoKSxcbiAgZm9ybURhdGE6ICdGb3JtRGF0YScgaW4gZyxcbiAgYXJyYXlCdWZmZXI6ICdBcnJheUJ1ZmZlcicgaW4gZ1xufVxuXG5mdW5jdGlvbiBpc0RhdGFWaWV3KG9iaikge1xuICByZXR1cm4gb2JqICYmIERhdGFWaWV3LnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKG9iailcbn1cblxuaWYgKHN1cHBvcnQuYXJyYXlCdWZmZXIpIHtcbiAgdmFyIHZpZXdDbGFzc2VzID0gW1xuICAgICdbb2JqZWN0IEludDhBcnJheV0nLFxuICAgICdbb2JqZWN0IFVpbnQ4QXJyYXldJyxcbiAgICAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLFxuICAgICdbb2JqZWN0IEludDE2QXJyYXldJyxcbiAgICAnW29iamVjdCBVaW50MTZBcnJheV0nLFxuICAgICdbb2JqZWN0IEludDMyQXJyYXldJyxcbiAgICAnW29iamVjdCBVaW50MzJBcnJheV0nLFxuICAgICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nLFxuICAgICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nXG4gIF1cblxuICB2YXIgaXNBcnJheUJ1ZmZlclZpZXcgPVxuICAgIEFycmF5QnVmZmVyLmlzVmlldyB8fFxuICAgIGZ1bmN0aW9uKG9iaikge1xuICAgICAgcmV0dXJuIG9iaiAmJiB2aWV3Q2xhc3Nlcy5pbmRleE9mKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopKSA+IC0xXG4gICAgfVxufVxuXG5mdW5jdGlvbiBub3JtYWxpemVOYW1lKG5hbWUpIHtcbiAgaWYgKHR5cGVvZiBuYW1lICE9PSAnc3RyaW5nJykge1xuICAgIG5hbWUgPSBTdHJpbmcobmFtZSlcbiAgfVxuICBpZiAoL1teYS16MC05XFwtIyQlJicqKy5eX2B8fiFdL2kudGVzdChuYW1lKSB8fCBuYW1lID09PSAnJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgY2hhcmFjdGVyIGluIGhlYWRlciBmaWVsZCBuYW1lOiBcIicgKyBuYW1lICsgJ1wiJylcbiAgfVxuICByZXR1cm4gbmFtZS50b0xvd2VyQ2FzZSgpXG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVZhbHVlKHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgdmFsdWUgPSBTdHJpbmcodmFsdWUpXG4gIH1cbiAgcmV0dXJuIHZhbHVlXG59XG5cbi8vIEJ1aWxkIGEgZGVzdHJ1Y3RpdmUgaXRlcmF0b3IgZm9yIHRoZSB2YWx1ZSBsaXN0XG5mdW5jdGlvbiBpdGVyYXRvckZvcihpdGVtcykge1xuICB2YXIgaXRlcmF0b3IgPSB7XG4gICAgbmV4dDogZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgdmFsdWUgPSBpdGVtcy5zaGlmdCgpXG4gICAgICByZXR1cm4ge2RvbmU6IHZhbHVlID09PSB1bmRlZmluZWQsIHZhbHVlOiB2YWx1ZX1cbiAgICB9XG4gIH1cblxuICBpZiAoc3VwcG9ydC5pdGVyYWJsZSkge1xuICAgIGl0ZXJhdG9yW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBpdGVyYXRvclxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBpdGVyYXRvclxufVxuXG5leHBvcnQgZnVuY3Rpb24gSGVhZGVycyhoZWFkZXJzKSB7XG4gIHRoaXMubWFwID0ge31cblxuICBpZiAoaGVhZGVycyBpbnN0YW5jZW9mIEhlYWRlcnMpIHtcbiAgICBoZWFkZXJzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICAgIHRoaXMuYXBwZW5kKG5hbWUsIHZhbHVlKVxuICAgIH0sIHRoaXMpXG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShoZWFkZXJzKSkge1xuICAgIGhlYWRlcnMuZm9yRWFjaChmdW5jdGlvbihoZWFkZXIpIHtcbiAgICAgIGlmIChoZWFkZXIubGVuZ3RoICE9IDIpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSGVhZGVycyBjb25zdHJ1Y3RvcjogZXhwZWN0ZWQgbmFtZS92YWx1ZSBwYWlyIHRvIGJlIGxlbmd0aCAyLCBmb3VuZCcgKyBoZWFkZXIubGVuZ3RoKVxuICAgICAgfVxuICAgICAgdGhpcy5hcHBlbmQoaGVhZGVyWzBdLCBoZWFkZXJbMV0pXG4gICAgfSwgdGhpcylcbiAgfSBlbHNlIGlmIChoZWFkZXJzKSB7XG4gICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoaGVhZGVycykuZm9yRWFjaChmdW5jdGlvbihuYW1lKSB7XG4gICAgICB0aGlzLmFwcGVuZChuYW1lLCBoZWFkZXJzW25hbWVdKVxuICAgIH0sIHRoaXMpXG4gIH1cbn1cblxuSGVhZGVycy5wcm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgbmFtZSA9IG5vcm1hbGl6ZU5hbWUobmFtZSlcbiAgdmFsdWUgPSBub3JtYWxpemVWYWx1ZSh2YWx1ZSlcbiAgdmFyIG9sZFZhbHVlID0gdGhpcy5tYXBbbmFtZV1cbiAgdGhpcy5tYXBbbmFtZV0gPSBvbGRWYWx1ZSA/IG9sZFZhbHVlICsgJywgJyArIHZhbHVlIDogdmFsdWVcbn1cblxuSGVhZGVycy5wcm90b3R5cGVbJ2RlbGV0ZSddID0gZnVuY3Rpb24obmFtZSkge1xuICBkZWxldGUgdGhpcy5tYXBbbm9ybWFsaXplTmFtZShuYW1lKV1cbn1cblxuSGVhZGVycy5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24obmFtZSkge1xuICBuYW1lID0gbm9ybWFsaXplTmFtZShuYW1lKVxuICByZXR1cm4gdGhpcy5oYXMobmFtZSkgPyB0aGlzLm1hcFtuYW1lXSA6IG51bGxcbn1cblxuSGVhZGVycy5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24obmFtZSkge1xuICByZXR1cm4gdGhpcy5tYXAuaGFzT3duUHJvcGVydHkobm9ybWFsaXplTmFtZShuYW1lKSlcbn1cblxuSGVhZGVycy5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgdGhpcy5tYXBbbm9ybWFsaXplTmFtZShuYW1lKV0gPSBub3JtYWxpemVWYWx1ZSh2YWx1ZSlcbn1cblxuSGVhZGVycy5wcm90b3R5cGUuZm9yRWFjaCA9IGZ1bmN0aW9uKGNhbGxiYWNrLCB0aGlzQXJnKSB7XG4gIGZvciAodmFyIG5hbWUgaW4gdGhpcy5tYXApIHtcbiAgICBpZiAodGhpcy5tYXAuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgIGNhbGxiYWNrLmNhbGwodGhpc0FyZywgdGhpcy5tYXBbbmFtZV0sIG5hbWUsIHRoaXMpXG4gICAgfVxuICB9XG59XG5cbkhlYWRlcnMucHJvdG90eXBlLmtleXMgPSBmdW5jdGlvbigpIHtcbiAgdmFyIGl0ZW1zID0gW11cbiAgdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7XG4gICAgaXRlbXMucHVzaChuYW1lKVxuICB9KVxuICByZXR1cm4gaXRlcmF0b3JGb3IoaXRlbXMpXG59XG5cbkhlYWRlcnMucHJvdG90eXBlLnZhbHVlcyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgaXRlbXMgPSBbXVxuICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUpIHtcbiAgICBpdGVtcy5wdXNoKHZhbHVlKVxuICB9KVxuICByZXR1cm4gaXRlcmF0b3JGb3IoaXRlbXMpXG59XG5cbkhlYWRlcnMucHJvdG90eXBlLmVudHJpZXMgPSBmdW5jdGlvbigpIHtcbiAgdmFyIGl0ZW1zID0gW11cbiAgdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7XG4gICAgaXRlbXMucHVzaChbbmFtZSwgdmFsdWVdKVxuICB9KVxuICByZXR1cm4gaXRlcmF0b3JGb3IoaXRlbXMpXG59XG5cbmlmIChzdXBwb3J0Lml0ZXJhYmxlKSB7XG4gIEhlYWRlcnMucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0gPSBIZWFkZXJzLnByb3RvdHlwZS5lbnRyaWVzXG59XG5cbmZ1bmN0aW9uIGNvbnN1bWVkKGJvZHkpIHtcbiAgaWYgKGJvZHkuX25vQm9keSkgcmV0dXJuXG4gIGlmIChib2R5LmJvZHlVc2VkKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBUeXBlRXJyb3IoJ0FscmVhZHkgcmVhZCcpKVxuICB9XG4gIGJvZHkuYm9keVVzZWQgPSB0cnVlXG59XG5cbmZ1bmN0aW9uIGZpbGVSZWFkZXJSZWFkeShyZWFkZXIpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgIHJlYWRlci5vbmxvYWQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJlc29sdmUocmVhZGVyLnJlc3VsdClcbiAgICB9XG4gICAgcmVhZGVyLm9uZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJlamVjdChyZWFkZXIuZXJyb3IpXG4gICAgfVxuICB9KVxufVxuXG5mdW5jdGlvbiByZWFkQmxvYkFzQXJyYXlCdWZmZXIoYmxvYikge1xuICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKVxuICB2YXIgcHJvbWlzZSA9IGZpbGVSZWFkZXJSZWFkeShyZWFkZXIpXG4gIHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcihibG9iKVxuICByZXR1cm4gcHJvbWlzZVxufVxuXG5mdW5jdGlvbiByZWFkQmxvYkFzVGV4dChibG9iKSB7XG4gIHZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpXG4gIHZhciBwcm9taXNlID0gZmlsZVJlYWRlclJlYWR5KHJlYWRlcilcbiAgdmFyIG1hdGNoID0gL2NoYXJzZXQ9KFtBLVphLXowLTlfLV0rKS8uZXhlYyhibG9iLnR5cGUpXG4gIHZhciBlbmNvZGluZyA9IG1hdGNoID8gbWF0Y2hbMV0gOiAndXRmLTgnXG4gIHJlYWRlci5yZWFkQXNUZXh0KGJsb2IsIGVuY29kaW5nKVxuICByZXR1cm4gcHJvbWlzZVxufVxuXG5mdW5jdGlvbiByZWFkQXJyYXlCdWZmZXJBc1RleHQoYnVmKSB7XG4gIHZhciB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmKVxuICB2YXIgY2hhcnMgPSBuZXcgQXJyYXkodmlldy5sZW5ndGgpXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB2aWV3Lmxlbmd0aDsgaSsrKSB7XG4gICAgY2hhcnNbaV0gPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHZpZXdbaV0pXG4gIH1cbiAgcmV0dXJuIGNoYXJzLmpvaW4oJycpXG59XG5cbmZ1bmN0aW9uIGJ1ZmZlckNsb25lKGJ1Zikge1xuICBpZiAoYnVmLnNsaWNlKSB7XG4gICAgcmV0dXJuIGJ1Zi5zbGljZSgwKVxuICB9IGVsc2Uge1xuICAgIHZhciB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmLmJ5dGVMZW5ndGgpXG4gICAgdmlldy5zZXQobmV3IFVpbnQ4QXJyYXkoYnVmKSlcbiAgICByZXR1cm4gdmlldy5idWZmZXJcbiAgfVxufVxuXG5mdW5jdGlvbiBCb2R5KCkge1xuICB0aGlzLmJvZHlVc2VkID0gZmFsc2VcblxuICB0aGlzLl9pbml0Qm9keSA9IGZ1bmN0aW9uKGJvZHkpIHtcbiAgICAvKlxuICAgICAgZmV0Y2gtbW9jayB3cmFwcyB0aGUgUmVzcG9uc2Ugb2JqZWN0IGluIGFuIEVTNiBQcm94eSB0b1xuICAgICAgcHJvdmlkZSB1c2VmdWwgdGVzdCBoYXJuZXNzIGZlYXR1cmVzIHN1Y2ggYXMgZmx1c2guIEhvd2V2ZXIsIG9uXG4gICAgICBFUzUgYnJvd3NlcnMgd2l0aG91dCBmZXRjaCBvciBQcm94eSBzdXBwb3J0IHBvbGx5ZmlsbHMgbXVzdCBiZSB1c2VkO1xuICAgICAgdGhlIHByb3h5LXBvbGx5ZmlsbCBpcyB1bmFibGUgdG8gcHJveHkgYW4gYXR0cmlidXRlIHVubGVzcyBpdCBleGlzdHNcbiAgICAgIG9uIHRoZSBvYmplY3QgYmVmb3JlIHRoZSBQcm94eSBpcyBjcmVhdGVkLiBUaGlzIGNoYW5nZSBlbnN1cmVzXG4gICAgICBSZXNwb25zZS5ib2R5VXNlZCBleGlzdHMgb24gdGhlIGluc3RhbmNlLCB3aGlsZSBtYWludGFpbmluZyB0aGVcbiAgICAgIHNlbWFudGljIG9mIHNldHRpbmcgUmVxdWVzdC5ib2R5VXNlZCBpbiB0aGUgY29uc3RydWN0b3IgYmVmb3JlXG4gICAgICBfaW5pdEJvZHkgaXMgY2FsbGVkLlxuICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtYXNzaWduXG4gICAgdGhpcy5ib2R5VXNlZCA9IHRoaXMuYm9keVVzZWRcbiAgICB0aGlzLl9ib2R5SW5pdCA9IGJvZHlcbiAgICBpZiAoIWJvZHkpIHtcbiAgICAgIHRoaXMuX25vQm9keSA9IHRydWU7XG4gICAgICB0aGlzLl9ib2R5VGV4dCA9ICcnXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgYm9keSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMuX2JvZHlUZXh0ID0gYm9keVxuICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5ibG9iICYmIEJsb2IucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcbiAgICAgIHRoaXMuX2JvZHlCbG9iID0gYm9keVxuICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5mb3JtRGF0YSAmJiBGb3JtRGF0YS5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSkge1xuICAgICAgdGhpcy5fYm9keUZvcm1EYXRhID0gYm9keVxuICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5zZWFyY2hQYXJhbXMgJiYgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICB0aGlzLl9ib2R5VGV4dCA9IGJvZHkudG9TdHJpbmcoKVxuICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5hcnJheUJ1ZmZlciAmJiBzdXBwb3J0LmJsb2IgJiYgaXNEYXRhVmlldyhib2R5KSkge1xuICAgICAgdGhpcy5fYm9keUFycmF5QnVmZmVyID0gYnVmZmVyQ2xvbmUoYm9keS5idWZmZXIpXG4gICAgICAvLyBJRSAxMC0xMSBjYW4ndCBoYW5kbGUgYSBEYXRhVmlldyBib2R5LlxuICAgICAgdGhpcy5fYm9keUluaXQgPSBuZXcgQmxvYihbdGhpcy5fYm9keUFycmF5QnVmZmVyXSlcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuYXJyYXlCdWZmZXIgJiYgKEFycmF5QnVmZmVyLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpIHx8IGlzQXJyYXlCdWZmZXJWaWV3KGJvZHkpKSkge1xuICAgICAgdGhpcy5fYm9keUFycmF5QnVmZmVyID0gYnVmZmVyQ2xvbmUoYm9keSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fYm9keVRleHQgPSBib2R5ID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGJvZHkpXG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmhlYWRlcnMuZ2V0KCdjb250ZW50LXR5cGUnKSkge1xuICAgICAgaWYgKHR5cGVvZiBib2R5ID09PSAnc3RyaW5nJykge1xuICAgICAgICB0aGlzLmhlYWRlcnMuc2V0KCdjb250ZW50LXR5cGUnLCAndGV4dC9wbGFpbjtjaGFyc2V0PVVURi04JylcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUJsb2IgJiYgdGhpcy5fYm9keUJsb2IudHlwZSkge1xuICAgICAgICB0aGlzLmhlYWRlcnMuc2V0KCdjb250ZW50LXR5cGUnLCB0aGlzLl9ib2R5QmxvYi50eXBlKVxuICAgICAgfSBlbHNlIGlmIChzdXBwb3J0LnNlYXJjaFBhcmFtcyAmJiBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcbiAgICAgICAgdGhpcy5oZWFkZXJzLnNldCgnY29udGVudC10eXBlJywgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PVVURi04JylcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoc3VwcG9ydC5ibG9iKSB7XG4gICAgdGhpcy5ibG9iID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgcmVqZWN0ZWQgPSBjb25zdW1lZCh0aGlzKVxuICAgICAgaWYgKHJlamVjdGVkKSB7XG4gICAgICAgIHJldHVybiByZWplY3RlZFxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5fYm9keUJsb2IpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5QmxvYilcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUFycmF5QnVmZmVyKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobmV3IEJsb2IoW3RoaXMuX2JvZHlBcnJheUJ1ZmZlcl0pKVxuICAgICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5Rm9ybURhdGEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb3VsZCBub3QgcmVhZCBGb3JtRGF0YSBib2R5IGFzIGJsb2InKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShuZXcgQmxvYihbdGhpcy5fYm9keVRleHRdKSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB0aGlzLmFycmF5QnVmZmVyID0gZnVuY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikge1xuICAgICAgdmFyIGlzQ29uc3VtZWQgPSBjb25zdW1lZCh0aGlzKVxuICAgICAgaWYgKGlzQ29uc3VtZWQpIHtcbiAgICAgICAgcmV0dXJuIGlzQ29uc3VtZWRcbiAgICAgIH0gZWxzZSBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShcbiAgICAgICAgICB0aGlzLl9ib2R5QXJyYXlCdWZmZXIuYnVmZmVyLnNsaWNlKFxuICAgICAgICAgICAgdGhpcy5fYm9keUFycmF5QnVmZmVyLmJ5dGVPZmZzZXQsXG4gICAgICAgICAgICB0aGlzLl9ib2R5QXJyYXlCdWZmZXIuYnl0ZU9mZnNldCArIHRoaXMuX2JvZHlBcnJheUJ1ZmZlci5ieXRlTGVuZ3RoXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX2JvZHlBcnJheUJ1ZmZlcilcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuYmxvYikge1xuICAgICAgcmV0dXJuIHRoaXMuYmxvYigpLnRoZW4ocmVhZEJsb2JBc0FycmF5QnVmZmVyKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvdWxkIG5vdCByZWFkIGFzIEFycmF5QnVmZmVyJylcbiAgICB9XG4gIH1cblxuICB0aGlzLnRleHQgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgcmVqZWN0ZWQgPSBjb25zdW1lZCh0aGlzKVxuICAgIGlmIChyZWplY3RlZCkge1xuICAgICAgcmV0dXJuIHJlamVjdGVkXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2JvZHlCbG9iKSB7XG4gICAgICByZXR1cm4gcmVhZEJsb2JBc1RleHQodGhpcy5fYm9keUJsb2IpXG4gICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVhZEFycmF5QnVmZmVyQXNUZXh0KHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikpXG4gICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5Rm9ybURhdGEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY291bGQgbm90IHJlYWQgRm9ybURhdGEgYm9keSBhcyB0ZXh0JylcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5VGV4dClcbiAgICB9XG4gIH1cblxuICBpZiAoc3VwcG9ydC5mb3JtRGF0YSkge1xuICAgIHRoaXMuZm9ybURhdGEgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLnRleHQoKS50aGVuKGRlY29kZSlcbiAgICB9XG4gIH1cblxuICB0aGlzLmpzb24gPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy50ZXh0KCkudGhlbihKU09OLnBhcnNlKVxuICB9XG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuLy8gSFRUUCBtZXRob2RzIHdob3NlIGNhcGl0YWxpemF0aW9uIHNob3VsZCBiZSBub3JtYWxpemVkXG52YXIgbWV0aG9kcyA9IFsnQ09OTkVDVCcsICdERUxFVEUnLCAnR0VUJywgJ0hFQUQnLCAnT1BUSU9OUycsICdQQVRDSCcsICdQT1NUJywgJ1BVVCcsICdUUkFDRSddXG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZU1ldGhvZChtZXRob2QpIHtcbiAgdmFyIHVwY2FzZWQgPSBtZXRob2QudG9VcHBlckNhc2UoKVxuICByZXR1cm4gbWV0aG9kcy5pbmRleE9mKHVwY2FzZWQpID4gLTEgPyB1cGNhc2VkIDogbWV0aG9kXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSZXF1ZXN0KGlucHV0LCBvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBSZXF1ZXN0KSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1BsZWFzZSB1c2UgdGhlIFwibmV3XCIgb3BlcmF0b3IsIHRoaXMgRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uJylcbiAgfVxuXG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9XG4gIHZhciBib2R5ID0gb3B0aW9ucy5ib2R5XG5cbiAgaWYgKGlucHV0IGluc3RhbmNlb2YgUmVxdWVzdCkge1xuICAgIGlmIChpbnB1dC5ib2R5VXNlZCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQWxyZWFkeSByZWFkJylcbiAgICB9XG4gICAgdGhpcy51cmwgPSBpbnB1dC51cmxcbiAgICB0aGlzLmNyZWRlbnRpYWxzID0gaW5wdXQuY3JlZGVudGlhbHNcbiAgICBpZiAoIW9wdGlvbnMuaGVhZGVycykge1xuICAgICAgdGhpcy5oZWFkZXJzID0gbmV3IEhlYWRlcnMoaW5wdXQuaGVhZGVycylcbiAgICB9XG4gICAgdGhpcy5tZXRob2QgPSBpbnB1dC5tZXRob2RcbiAgICB0aGlzLm1vZGUgPSBpbnB1dC5tb2RlXG4gICAgdGhpcy5zaWduYWwgPSBpbnB1dC5zaWduYWxcbiAgICBpZiAoIWJvZHkgJiYgaW5wdXQuX2JvZHlJbml0ICE9IG51bGwpIHtcbiAgICAgIGJvZHkgPSBpbnB1dC5fYm9keUluaXRcbiAgICAgIGlucHV0LmJvZHlVc2VkID0gdHJ1ZVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aGlzLnVybCA9IFN0cmluZyhpbnB1dClcbiAgfVxuXG4gIHRoaXMuY3JlZGVudGlhbHMgPSBvcHRpb25zLmNyZWRlbnRpYWxzIHx8IHRoaXMuY3JlZGVudGlhbHMgfHwgJ3NhbWUtb3JpZ2luJ1xuICBpZiAob3B0aW9ucy5oZWFkZXJzIHx8ICF0aGlzLmhlYWRlcnMpIHtcbiAgICB0aGlzLmhlYWRlcnMgPSBuZXcgSGVhZGVycyhvcHRpb25zLmhlYWRlcnMpXG4gIH1cbiAgdGhpcy5tZXRob2QgPSBub3JtYWxpemVNZXRob2Qob3B0aW9ucy5tZXRob2QgfHwgdGhpcy5tZXRob2QgfHwgJ0dFVCcpXG4gIHRoaXMubW9kZSA9IG9wdGlvbnMubW9kZSB8fCB0aGlzLm1vZGUgfHwgbnVsbFxuICB0aGlzLnNpZ25hbCA9IG9wdGlvbnMuc2lnbmFsIHx8IHRoaXMuc2lnbmFsIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCdBYm9ydENvbnRyb2xsZXInIGluIGcpIHtcbiAgICAgIHZhciBjdHJsID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgICAgcmV0dXJuIGN0cmwuc2lnbmFsO1xuICAgIH1cbiAgfSgpKTtcbiAgdGhpcy5yZWZlcnJlciA9IG51bGxcblxuICBpZiAoKHRoaXMubWV0aG9kID09PSAnR0VUJyB8fCB0aGlzLm1ldGhvZCA9PT0gJ0hFQUQnKSAmJiBib2R5KSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQm9keSBub3QgYWxsb3dlZCBmb3IgR0VUIG9yIEhFQUQgcmVxdWVzdHMnKVxuICB9XG4gIHRoaXMuX2luaXRCb2R5KGJvZHkpXG5cbiAgaWYgKHRoaXMubWV0aG9kID09PSAnR0VUJyB8fCB0aGlzLm1ldGhvZCA9PT0gJ0hFQUQnKSB7XG4gICAgaWYgKG9wdGlvbnMuY2FjaGUgPT09ICduby1zdG9yZScgfHwgb3B0aW9ucy5jYWNoZSA9PT0gJ25vLWNhY2hlJykge1xuICAgICAgLy8gU2VhcmNoIGZvciBhICdfJyBwYXJhbWV0ZXIgaW4gdGhlIHF1ZXJ5IHN0cmluZ1xuICAgICAgdmFyIHJlUGFyYW1TZWFyY2ggPSAvKFs/Jl0pXz1bXiZdKi9cbiAgICAgIGlmIChyZVBhcmFtU2VhcmNoLnRlc3QodGhpcy51cmwpKSB7XG4gICAgICAgIC8vIElmIGl0IGFscmVhZHkgZXhpc3RzIHRoZW4gc2V0IHRoZSB2YWx1ZSB3aXRoIHRoZSBjdXJyZW50IHRpbWVcbiAgICAgICAgdGhpcy51cmwgPSB0aGlzLnVybC5yZXBsYWNlKHJlUGFyYW1TZWFyY2gsICckMV89JyArIG5ldyBEYXRlKCkuZ2V0VGltZSgpKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gT3RoZXJ3aXNlIGFkZCBhIG5ldyAnXycgcGFyYW1ldGVyIHRvIHRoZSBlbmQgd2l0aCB0aGUgY3VycmVudCB0aW1lXG4gICAgICAgIHZhciByZVF1ZXJ5U3RyaW5nID0gL1xcPy9cbiAgICAgICAgdGhpcy51cmwgKz0gKHJlUXVlcnlTdHJpbmcudGVzdCh0aGlzLnVybCkgPyAnJicgOiAnPycpICsgJ189JyArIG5ldyBEYXRlKCkuZ2V0VGltZSgpXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cblJlcXVlc3QucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBuZXcgUmVxdWVzdCh0aGlzLCB7Ym9keTogdGhpcy5fYm9keUluaXR9KVxufVxuXG5mdW5jdGlvbiBkZWNvZGUoYm9keSkge1xuICB2YXIgZm9ybSA9IG5ldyBGb3JtRGF0YSgpXG4gIGJvZHlcbiAgICAudHJpbSgpXG4gICAgLnNwbGl0KCcmJylcbiAgICAuZm9yRWFjaChmdW5jdGlvbihieXRlcykge1xuICAgICAgaWYgKGJ5dGVzKSB7XG4gICAgICAgIHZhciBzcGxpdCA9IGJ5dGVzLnNwbGl0KCc9JylcbiAgICAgICAgdmFyIG5hbWUgPSBzcGxpdC5zaGlmdCgpLnJlcGxhY2UoL1xcKy9nLCAnICcpXG4gICAgICAgIHZhciB2YWx1ZSA9IHNwbGl0LmpvaW4oJz0nKS5yZXBsYWNlKC9cXCsvZywgJyAnKVxuICAgICAgICBmb3JtLmFwcGVuZChkZWNvZGVVUklDb21wb25lbnQobmFtZSksIGRlY29kZVVSSUNvbXBvbmVudCh2YWx1ZSkpXG4gICAgICB9XG4gICAgfSlcbiAgcmV0dXJuIGZvcm1cbn1cblxuZnVuY3Rpb24gcGFyc2VIZWFkZXJzKHJhd0hlYWRlcnMpIHtcbiAgdmFyIGhlYWRlcnMgPSBuZXcgSGVhZGVycygpXG4gIC8vIFJlcGxhY2UgaW5zdGFuY2VzIG9mIFxcclxcbiBhbmQgXFxuIGZvbGxvd2VkIGJ5IGF0IGxlYXN0IG9uZSBzcGFjZSBvciBob3Jpem9udGFsIHRhYiB3aXRoIGEgc3BhY2VcbiAgLy8gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzAjc2VjdGlvbi0zLjJcbiAgdmFyIHByZVByb2Nlc3NlZEhlYWRlcnMgPSByYXdIZWFkZXJzLnJlcGxhY2UoL1xccj9cXG5bXFx0IF0rL2csICcgJylcbiAgLy8gQXZvaWRpbmcgc3BsaXQgdmlhIHJlZ2V4IHRvIHdvcmsgYXJvdW5kIGEgY29tbW9uIElFMTEgYnVnIHdpdGggdGhlIGNvcmUtanMgMy42LjAgcmVnZXggcG9seWZpbGxcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2dpdGh1Yi9mZXRjaC9pc3N1ZXMvNzQ4XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy83NTFcbiAgcHJlUHJvY2Vzc2VkSGVhZGVyc1xuICAgIC5zcGxpdCgnXFxyJylcbiAgICAubWFwKGZ1bmN0aW9uKGhlYWRlcikge1xuICAgICAgcmV0dXJuIGhlYWRlci5pbmRleE9mKCdcXG4nKSA9PT0gMCA/IGhlYWRlci5zdWJzdHIoMSwgaGVhZGVyLmxlbmd0aCkgOiBoZWFkZXJcbiAgICB9KVxuICAgIC5mb3JFYWNoKGZ1bmN0aW9uKGxpbmUpIHtcbiAgICAgIHZhciBwYXJ0cyA9IGxpbmUuc3BsaXQoJzonKVxuICAgICAgdmFyIGtleSA9IHBhcnRzLnNoaWZ0KCkudHJpbSgpXG4gICAgICBpZiAoa2V5KSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHBhcnRzLmpvaW4oJzonKS50cmltKClcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBoZWFkZXJzLmFwcGVuZChrZXksIHZhbHVlKVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUud2FybignUmVzcG9uc2UgJyArIGVycm9yLm1lc3NhZ2UpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuICByZXR1cm4gaGVhZGVyc1xufVxuXG5Cb2R5LmNhbGwoUmVxdWVzdC5wcm90b3R5cGUpXG5cbmV4cG9ydCBmdW5jdGlvbiBSZXNwb25zZShib2R5SW5pdCwgb3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUmVzcG9uc2UpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignUGxlYXNlIHVzZSB0aGUgXCJuZXdcIiBvcGVyYXRvciwgdGhpcyBET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4nKVxuICB9XG4gIGlmICghb3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSB7fVxuICB9XG5cbiAgdGhpcy50eXBlID0gJ2RlZmF1bHQnXG4gIHRoaXMuc3RhdHVzID0gb3B0aW9ucy5zdGF0dXMgPT09IHVuZGVmaW5lZCA/IDIwMCA6IG9wdGlvbnMuc3RhdHVzXG4gIGlmICh0aGlzLnN0YXR1cyA8IDIwMCB8fCB0aGlzLnN0YXR1cyA+IDU5OSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiRmFpbGVkIHRvIGNvbnN0cnVjdCAnUmVzcG9uc2UnOiBUaGUgc3RhdHVzIHByb3ZpZGVkICgwKSBpcyBvdXRzaWRlIHRoZSByYW5nZSBbMjAwLCA1OTldLlwiKVxuICB9XG4gIHRoaXMub2sgPSB0aGlzLnN0YXR1cyA+PSAyMDAgJiYgdGhpcy5zdGF0dXMgPCAzMDBcbiAgdGhpcy5zdGF0dXNUZXh0ID0gb3B0aW9ucy5zdGF0dXNUZXh0ID09PSB1bmRlZmluZWQgPyAnJyA6ICcnICsgb3B0aW9ucy5zdGF0dXNUZXh0XG4gIHRoaXMuaGVhZGVycyA9IG5ldyBIZWFkZXJzKG9wdGlvbnMuaGVhZGVycylcbiAgdGhpcy51cmwgPSBvcHRpb25zLnVybCB8fCAnJ1xuICB0aGlzLl9pbml0Qm9keShib2R5SW5pdClcbn1cblxuQm9keS5jYWxsKFJlc3BvbnNlLnByb3RvdHlwZSlcblxuUmVzcG9uc2UucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBuZXcgUmVzcG9uc2UodGhpcy5fYm9keUluaXQsIHtcbiAgICBzdGF0dXM6IHRoaXMuc3RhdHVzLFxuICAgIHN0YXR1c1RleHQ6IHRoaXMuc3RhdHVzVGV4dCxcbiAgICBoZWFkZXJzOiBuZXcgSGVhZGVycyh0aGlzLmhlYWRlcnMpLFxuICAgIHVybDogdGhpcy51cmxcbiAgfSlcbn1cblxuUmVzcG9uc2UuZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHJlc3BvbnNlID0gbmV3IFJlc3BvbnNlKG51bGwsIHtzdGF0dXM6IDIwMCwgc3RhdHVzVGV4dDogJyd9KVxuICByZXNwb25zZS5vayA9IGZhbHNlXG4gIHJlc3BvbnNlLnN0YXR1cyA9IDBcbiAgcmVzcG9uc2UudHlwZSA9ICdlcnJvcidcbiAgcmV0dXJuIHJlc3BvbnNlXG59XG5cbnZhciByZWRpcmVjdFN0YXR1c2VzID0gWzMwMSwgMzAyLCAzMDMsIDMwNywgMzA4XVxuXG5SZXNwb25zZS5yZWRpcmVjdCA9IGZ1bmN0aW9uKHVybCwgc3RhdHVzKSB7XG4gIGlmIChyZWRpcmVjdFN0YXR1c2VzLmluZGV4T2Yoc3RhdHVzKSA9PT0gLTEpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCBzdGF0dXMgY29kZScpXG4gIH1cblxuICByZXR1cm4gbmV3IFJlc3BvbnNlKG51bGwsIHtzdGF0dXM6IHN0YXR1cywgaGVhZGVyczoge2xvY2F0aW9uOiB1cmx9fSlcbn1cblxuZXhwb3J0IHZhciBET01FeGNlcHRpb24gPSBnLkRPTUV4Y2VwdGlvblxudHJ5IHtcbiAgbmV3IERPTUV4Y2VwdGlvbigpXG59IGNhdGNoIChlcnIpIHtcbiAgRE9NRXhjZXB0aW9uID0gZnVuY3Rpb24obWVzc2FnZSwgbmFtZSkge1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2VcbiAgICB0aGlzLm5hbWUgPSBuYW1lXG4gICAgdmFyIGVycm9yID0gRXJyb3IobWVzc2FnZSlcbiAgICB0aGlzLnN0YWNrID0gZXJyb3Iuc3RhY2tcbiAgfVxuICBET01FeGNlcHRpb24ucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShFcnJvci5wcm90b3R5cGUpXG4gIERPTUV4Y2VwdGlvbi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBET01FeGNlcHRpb25cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZldGNoKGlucHV0LCBpbml0KSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICB2YXIgcmVxdWVzdCA9IG5ldyBSZXF1ZXN0KGlucHV0LCBpbml0KVxuXG4gICAgaWYgKHJlcXVlc3Quc2lnbmFsICYmIHJlcXVlc3Quc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgIHJldHVybiByZWplY3QobmV3IERPTUV4Y2VwdGlvbignQWJvcnRlZCcsICdBYm9ydEVycm9yJykpXG4gICAgfVxuXG4gICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpXG5cbiAgICBmdW5jdGlvbiBhYm9ydFhocigpIHtcbiAgICAgIHhoci5hYm9ydCgpXG4gICAgfVxuXG4gICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIG9wdGlvbnMgPSB7XG4gICAgICAgIHN0YXR1c1RleHQ6IHhoci5zdGF0dXNUZXh0LFxuICAgICAgICBoZWFkZXJzOiBwYXJzZUhlYWRlcnMoeGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpIHx8ICcnKVxuICAgICAgfVxuICAgICAgLy8gVGhpcyBjaGVjayBpZiBzcGVjaWZpY2FsbHkgZm9yIHdoZW4gYSB1c2VyIGZldGNoZXMgYSBmaWxlIGxvY2FsbHkgZnJvbSB0aGUgZmlsZSBzeXN0ZW1cbiAgICAgIC8vIE9ubHkgaWYgdGhlIHN0YXR1cyBpcyBvdXQgb2YgYSBub3JtYWwgcmFuZ2VcbiAgICAgIGlmIChyZXF1ZXN0LnVybC5pbmRleE9mKCdmaWxlOi8vJykgPT09IDAgJiYgKHhoci5zdGF0dXMgPCAyMDAgfHwgeGhyLnN0YXR1cyA+IDU5OSkpIHtcbiAgICAgICAgb3B0aW9ucy5zdGF0dXMgPSAyMDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvcHRpb25zLnN0YXR1cyA9IHhoci5zdGF0dXM7XG4gICAgICB9XG4gICAgICBvcHRpb25zLnVybCA9ICdyZXNwb25zZVVSTCcgaW4geGhyID8geGhyLnJlc3BvbnNlVVJMIDogb3B0aW9ucy5oZWFkZXJzLmdldCgnWC1SZXF1ZXN0LVVSTCcpXG4gICAgICB2YXIgYm9keSA9ICdyZXNwb25zZScgaW4geGhyID8geGhyLnJlc3BvbnNlIDogeGhyLnJlc3BvbnNlVGV4dFxuICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgcmVzb2x2ZShuZXcgUmVzcG9uc2UoYm9keSwgb3B0aW9ucykpXG4gICAgICB9LCAwKVxuICAgIH1cblxuICAgIHhoci5vbmVycm9yID0gZnVuY3Rpb24oKSB7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICByZWplY3QobmV3IFR5cGVFcnJvcignTmV0d29yayByZXF1ZXN0IGZhaWxlZCcpKVxuICAgICAgfSwgMClcbiAgICB9XG5cbiAgICB4aHIub250aW1lb3V0ID0gZnVuY3Rpb24oKSB7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICByZWplY3QobmV3IFR5cGVFcnJvcignTmV0d29yayByZXF1ZXN0IHRpbWVkIG91dCcpKVxuICAgICAgfSwgMClcbiAgICB9XG5cbiAgICB4aHIub25hYm9ydCA9IGZ1bmN0aW9uKCkge1xuICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgcmVqZWN0KG5ldyBET01FeGNlcHRpb24oJ0Fib3J0ZWQnLCAnQWJvcnRFcnJvcicpKVxuICAgICAgfSwgMClcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBmaXhVcmwodXJsKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gdXJsID09PSAnJyAmJiBnLmxvY2F0aW9uLmhyZWYgPyBnLmxvY2F0aW9uLmhyZWYgOiB1cmxcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIHVybFxuICAgICAgfVxuICAgIH1cblxuICAgIHhoci5vcGVuKHJlcXVlc3QubWV0aG9kLCBmaXhVcmwocmVxdWVzdC51cmwpLCB0cnVlKVxuXG4gICAgaWYgKHJlcXVlc3QuY3JlZGVudGlhbHMgPT09ICdpbmNsdWRlJykge1xuICAgICAgeGhyLndpdGhDcmVkZW50aWFscyA9IHRydWVcbiAgICB9IGVsc2UgaWYgKHJlcXVlc3QuY3JlZGVudGlhbHMgPT09ICdvbWl0Jykge1xuICAgICAgeGhyLndpdGhDcmVkZW50aWFscyA9IGZhbHNlXG4gICAgfVxuXG4gICAgaWYgKCdyZXNwb25zZVR5cGUnIGluIHhocikge1xuICAgICAgaWYgKHN1cHBvcnQuYmxvYikge1xuICAgICAgICB4aHIucmVzcG9uc2VUeXBlID0gJ2Jsb2InXG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBzdXBwb3J0LmFycmF5QnVmZmVyXG4gICAgICApIHtcbiAgICAgICAgeGhyLnJlc3BvbnNlVHlwZSA9ICdhcnJheWJ1ZmZlcidcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaW5pdCAmJiB0eXBlb2YgaW5pdC5oZWFkZXJzID09PSAnb2JqZWN0JyAmJiAhKGluaXQuaGVhZGVycyBpbnN0YW5jZW9mIEhlYWRlcnMgfHwgKGcuSGVhZGVycyAmJiBpbml0LmhlYWRlcnMgaW5zdGFuY2VvZiBnLkhlYWRlcnMpKSkge1xuICAgICAgdmFyIG5hbWVzID0gW107XG4gICAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhpbml0LmhlYWRlcnMpLmZvckVhY2goZnVuY3Rpb24obmFtZSkge1xuICAgICAgICBuYW1lcy5wdXNoKG5vcm1hbGl6ZU5hbWUobmFtZSkpXG4gICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKG5hbWUsIG5vcm1hbGl6ZVZhbHVlKGluaXQuaGVhZGVyc1tuYW1lXSkpXG4gICAgICB9KVxuICAgICAgcmVxdWVzdC5oZWFkZXJzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICAgICAgaWYgKG5hbWVzLmluZGV4T2YobmFtZSkgPT09IC0xKSB7XG4gICAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIobmFtZSwgdmFsdWUpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcXVlc3QuaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7XG4gICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKG5hbWUsIHZhbHVlKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAocmVxdWVzdC5zaWduYWwpIHtcbiAgICAgIHJlcXVlc3Quc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgYWJvcnRYaHIpXG5cbiAgICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgLy8gRE9ORSAoc3VjY2VzcyBvciBmYWlsdXJlKVxuICAgICAgICBpZiAoeGhyLnJlYWR5U3RhdGUgPT09IDQpIHtcbiAgICAgICAgICByZXF1ZXN0LnNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIGFib3J0WGhyKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgeGhyLnNlbmQodHlwZW9mIHJlcXVlc3QuX2JvZHlJbml0ID09PSAndW5kZWZpbmVkJyA/IG51bGwgOiByZXF1ZXN0Ll9ib2R5SW5pdClcbiAgfSlcbn1cblxuZmV0Y2gucG9seWZpbGwgPSB0cnVlXG5cbmlmICghZy5mZXRjaCkge1xuICBnLmZldGNoID0gZmV0Y2hcbiAgZy5IZWFkZXJzID0gSGVhZGVyc1xuICBnLlJlcXVlc3QgPSBSZXF1ZXN0XG4gIGcuUmVzcG9uc2UgPSBSZXNwb25zZVxufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5pbXBvcnQgQ2hhbm5lbHMgZnJvbSAnLi9DaGFubmVscyc7XG5pbXBvcnQgQ2hhbm5lbFN0YXRlIGZyb20gJy4vQ2hhbm5lbFN0YXRlJztcblxuZXhwb3J0IHtcbiAgU0RLLFxuICBDaGFubmVscyxcbiAgQ2hhbm5lbFN0YXRlXG59O1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIFNESyxcbiAgQ2hhbm5lbHMsXG4gIENoYW5uZWxTdGF0ZVxufTsiXSwibmFtZXMiOlsiR2xvYmFsU2NvcGUiLCJEaXNwb3NhYmxlIiwiRGlzcG9zYWJsZUxpc3QiLCJTdWJqZWN0IiwiUmVhZE9ubHlTdWJqZWN0IiwidmlzaWJpbGl0eUNoYW5nZUV2ZW50IiwiQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IiLCJfY2xhc3NDYWxsQ2hlY2siLCJfZGVmaW5lUHJvcGVydHkiLCJEYXRlIiwibm93IiwiX2lzRm9yZWdyb3VuZCIsIl9yZWFkT25seUlzRm9yZWdyb3VuZCIsImluaXRpYWxpemUiLCJfY3JlYXRlQ2xhc3MiLCJrZXkiLCJnZXQiLCJ2YWx1ZSIsImdldFRpbWVTaW5jZUxhc3RDaGFuZ2UiLCJfdGltZU9mTGFzdFRhYkZvY3VzQ2hhbmdlIiwiZ2V0TGFzdEJhY2tncm91bmREdXJhdGlvbiIsIl9sYXN0QmFja2dyb3VuZER1cmF0aW9uIiwiZGlzcG9zZSIsIl9kaXNwb3NhYmxlcyIsIl90aGlzIiwiYmFja2dyb3VuZEVudHJ5VGltZSIsImhhbmRsZVZpc2liaWxpdHlDaGFuZ2UiLCJpc05vd0ZvcmVncm91bmQiLCJkb2N1bWVudElzSGlkZGVuIiwidXNlRXZlbnRDYXB0dXJlUGhhc2UiLCJhZGREb2N1bWVudEV2ZW50TGlzdGVuZXIiLCJhZGQiLCJyZW1vdmVEb2N1bWVudEV2ZW50TGlzdGVuZXIiLCJkZWZhdWx0IiwiQnJvd3NlckRldGVjdG9yIiwiX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbiIsIl9icm93c2VyTmFtZSIsIl9icm93c2VyTWFqb3JWZXJzaW9uIiwiX2lzQW5kcm9pZCIsIl9pc0Nocm9tZTY5IiwiX2lzQ2hyb21lNzAiLCJfaXNDaHJvbWU3MSIsIl9pc0Nocm9tZTcyIiwiX2lzQ2hyb21lNzQiLCJfaXNDaHJvbWU3NSIsIl9pc0Nocm9tZTc2IiwiX2lzQ2hyb21lNzciLCJpc01vYmlsZSIsIl9pc01vYmlsZSIsInBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uIiwibmF2aWdhdG9yIiwidXNlckFnZW50IiwiYnJvd3Nlck5hbWVBbmRWZXJzaW9uIiwibWF0Y2giLCJfYnJvd3Nlck5hbWVBbmRWZXJzaW9uUmVnZXgiLCJwYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbkZvcklFIiwicGFyc2VCcm93c2VyTmFtZSIsImJyb3dzZXJOYW1lTGlzdCIsInNwbGl0IiwicGFyc2VCcm93c2VyTWFqb3JWZXJzaW9uIiwiYnJvd3NlclZlcnNpb25MaXN0IiwiZnVsbFZlcnNpb24iLCJOdW1iZXIiLCJtc2llIiwiaW5kZXhPZiIsImNvbmNhdCIsInBhcnNlSW50Iiwic3Vic3RyaW5nIiwidHJpZGVudCIsInZlcnNpb24iLCJfQnJvd3NlckRldGVjdG9yIiwidGVzdCIsIl9uYXZpZ2F0b3IiLCJfbmF2aWdhdG9yMiIsImluY2x1ZGVzIiwiVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nIiwiVGVsZW1ldHJ5RGVmYXVsdCIsIkxvZ2dpbmdMZXZlbE1hcHBpbmciLCJMb2dnZXJEZWZhdWx0cyIsIlBsYWluQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlciIsImdldFN0cmluZ1ZhbHVlIiwibmFtZSIsImRlZmF1bHRTdHJpbmdWYWx1ZSIsImdldEJvb2xlYW5WYWx1ZSIsImRlZmF1bHRCb29sZWFuVmFsdWUiLCJjb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUb1RlbGVtZXRyeUxldmVsVHlwZSIsImRlZmF1bHRUZWxlbWV0cnlMZXZlbCIsImNvbnZlcnRMb2dnaW5nTGV2ZWxUb0xvZ2dpbmdMZXZlbFR5cGUiLCJkZWZhdWx0TG9nZ2luZ0xldmVsIiwiZGVmYXVsdENvbnNvbGVMb2dnaW5nTGV2ZWwiLCJkZWZhdWx0VGVsZW1ldHJ5TG9nZ2luZ0xldmVsIiwiRmVhdHVyZUVuYWJsZW1lbnQiLCJTREsiLCJHYXJiYWdlQ29sbGVjdG9yTWFuYWdlciIsIkVycm9yIiwiZm9yY2VHYXJiYWdlQ29sbGVjdGlvbiIsInNraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcyIsImlzRm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvblN1cHBvcnRlZCIsImZvcmNlQ2hyb21lR2FyYmFnZUNvbGxlY3Rpb24iLCJpc1F1ZXVlTWljcm90YXNrU3VwcG9ydGVkIiwicXVldWVNaWNyb3Rhc2siLCJvdmVybG9hZE1lbW9yeVRvSW52b2tlR2FyYmFnZUNvbGxlY3Rpb24iLCJiaW5kIiwic2V0VGltZW91dCIsImltZyIsImRvY3VtZW50Q3JlYXRlRWxlbWVudCIsInNyYyIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsIkJsb2IiLCJBcnJheUJ1ZmZlciIsIm9uZXJyb3IiLCJyZXZva2VPYmplY3RVUkwiLCJOZXR3b3JrTW9uaXRvciIsIm5hdmlnYXRvckNvbm5lY3Rpb24iLCJ1bmRlZmluZWQiLCJpc1N1cHBvcnRlZCIsInNldHVwTmV0d29ya0NoYW5nZUxpc3RlbmVycyIsInVwZGF0ZVN0YXRpc3RpY3MiLCJfaXNTdXBwb3J0ZWQiLCJfcnR0IiwiX2VmZmVjdGl2ZVR5cGUiLCJfZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkiLCJnZXREb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSIsIl9yZWYiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmEiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmEyIiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hMyIsImRvd25saW5rIiwiZG93bmxpbmtNYXgiLCJnZXRFZmZlY3RpdmVUeXBlIiwiX3JlZjIiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmE0IiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hNSIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTYiLCJlZmZlY3RpdmVUeXBlIiwidHlwZSIsImdldFJvdW5kVHJpcFRpbWUiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmE3IiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hOCIsInJ0dCIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTkiLCJsaXN0ZW5lciIsImFkZEV2ZW50TGlzdGVuZXIiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmEwIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIk1ldHJpY3NUeXBlIiwiTWV0cmljVHlwZSIsIkR1cmF0aW9ucyIsIkxvZ2dlckZhY3RvcnkiLCJTdHJlYW1TZXR1cExpc3RlbmVyIiwicGFnZUxvYWRUaW1lIiwiZ2V0TG9nZ2VyIiwibWV0cmljc1NlcnZpY2UiLCJfc3RhcnRUaW1lIiwiX3BhZ2VMb2FkVGltZSIsInN1Y2Nlc3MiLCJzdHJlYW1JZCIsInJlY29yZFN0cmVhbU1ldHJpYyIsIlNldHVwQ29tcGxldGVkIiwiZmFpbCIsIlNldHVwRmFpbGVkIiwibWV0cmljVHlwZSIsIl9tZXRyaWNTdWJtaXR0ZWQiLCJzZXR1cFRpbWUiLCJtZXRyaWNOYW1lIiwiZ2V0TmFtZSIsInB1c2giLCJydW50aW1lIiwidWludDY0IiwiX2xvZ2dlciIsImluZm8iLCJ0b0lzb1N0cmluZyIsIkVkZ2VUb2tlbiIsImVkZ2VBdXRoVG9rZW5QcmVmaXgiLCJFZGdlQXV0aFBhcnNlciIsInBhcnNlVG9rZW4iLCJ0b2tlbiIsImlzRW5jb2RlZEVkZ2VUb2tlblZhbGlkIiwiZXJyb3IiLCJkZWNvZGVkVG9rZW4iLCJhdG9iIiwic3Vic3RyIiwibGVuZ3RoIiwiZWRnZVRva2VuIiwiSlNPTiIsInBhcnNlIiwiZSIsInN0YXJ0c1dpdGgiLCJfZWRnZVRva2VuJHRva2VuIiwiX2VkZ2VUb2tlbiR0b2tlbjIiLCJfYXBwbGljYXRpb25JZCIsImFwcGxpY2F0aW9uSWQiLCJfdG9rZW4iLCJ1cmkiLCJjYXBhYmlsaXRpZXMiLCJCdWlsZEZlYXR1cmVzIiwiX3NlbmRMb2NhbENhbmRpZGF0ZXMiLCJfc2VuZExvZ3MiLCJfc2VuZE1ldHJpY3MiLCJfbG9nVG9Db25zb2xlIiwiYXBwbHlGZWF0dXJlcyIsImZlYXR1cmVzIiwiX19GRUFUVVJFU19fIiwic2VuZExvY2FsQ2FuZGlkYXRlcyIsInNlbmRMb2dzIiwic2VuZE1ldHJpY3MiLCJsb2dUb0NvbnNvbGUiLCJpc0Nocm9tZTc0IiwiaXNDaHJvbWU3NSIsImlzQ2hyb21lNzYiLCJpc0Nocm9tZTc3IiwiYWRkVHJhbmNlaXZlckRpc2FibGVkIiwiaXNDaHJvbWU2OSIsImlzQ2hyb21lNzAiLCJpc0Nocm9tZTcxIiwiaXNDaHJvbWU3MiIsImJyb3dzZXJOYW1lIiwiYnJvd3Nlck1ham9yVmVyc2lvbiIsIl9HbG9iYWxTY29wZSR2YWx1ZSIsIk1lZGlhU3RyZWFtVHJhY2tQcm9jZXNzb3IiLCJNZWRpYVN0cmVhbVRyYWNrR2VuZXJhdG9yIiwiUlRDUnRwUmVjZWl2ZXIiLCJwcm90b3R5cGUiLCJjcmVhdGVFbmNvZGVkU3RyZWFtcyIsIlJUQ1J0cFNjcmlwdFRyYW5zZm9ybSIsIl9HbG9iYWxTY29wZSR2YWx1ZTIiLCJIVE1MVmlkZW9FbGVtZW50IiwicmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayIsIl9HbG9iYWxTY29wZSR2YWx1ZTMiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJpc1JlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2tTdXBwb3J0ZWQiLCJpc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCIsImlzUlRDUnRwU2NyaXB0VHJhbnNmb3JtU3VwcG9ydGVkIiwiUGFyYW1ldGVycyIsIl9kaXNjb3ZlcnlQYXJhbWV0ZXJzIiwiYXBwbHlQYXJhbWV0ZXJzIiwicGFyYW1ldGVycyIsIl9fUEFSQU1FVEVSU19fIiwiZGlzY292ZXJ5IiwiaW50ZW50aW9ucyIsImJyb3dzZXJHbG9iYWxTY29wZSIsImRvY3VtZW50IiwibG9jYXRpb24iLCJ3aW5kb3ciLCJnbG9iYWxTY29wZSIsIl9kb2N1bWVudCIsIl9sb2NhdGlvbiIsIl93aW5kb3ciLCJBYm9ydENvbnRyb2xsZXIiLCJGb3JtRGF0YSIsIk1lZGlhU3RyZWFtIiwiTWVkaWFTdHJlYW1UcmFjayIsIk1lZGlhU291cmNlIiwiUlRDUGVlckNvbm5lY3Rpb24iLCJSVENTZXNzaW9uRGVzY3JpcHRpb24iLCJSVENJY2VDYW5kaWRhdGUiLCJVUkxTZWFyY2hQYXJhbXMiLCJjbGVhckludGVydmFsIiwiY2xlYXJUaW1lb3V0IiwiY3JlYXRlRWxlbWVudCIsImhhc0ZvY3VzIiwiaGlkZGVuIiwicXVlcnlTZWxlY3RvciIsImZldGNoIiwiaG9zdG5hbWUiLCJzZWFyY2giLCJjb25uZWN0aW9uIiwib25MaW5lIiwic2VuZEJlYWNvbiIsInVybCIsImRhdGEiLCJzZXRJbnRlcnZhbCIsInNldEluc3RhbmNlIiwicHJvdmlkZWRHbG9iYWxTY29wZSIsImdldEluc3RhbmNlIiwiX3JlYWRPbmx5SW5zdGFuY2UiLCJzdWJzY3JpYmUiLCJjYWxsYmFjayIsIl9HbG9iYWxTY29wZSIsIl9pbnN0YW5jZSIsImRpc3Bvc2FibGUiLCJfZGlzcG9zZWQiLCJfZGlzcG9zYWJsZSIsImNhbGwiLCJfbGlzdCIsImZvckVhY2giLCJ0b1N0cmluZyIsIm1heERpZ2l0c0luRmxvYXRBZnRlckRvdCIsIk51bWJlcnMiLCJjb3VudE51bWJlckxlbmd0aCIsImluY3JlbWVudEZvck5lZ2F0aXZlVmFsdWUiLCJudW1iZXIiLCJjb3VudERpZ2l0c0JlZm9yZURlY2ltYWwiLCJNYXRoIiwiZmxvb3IiLCJjb3VudERpZ2l0c0FmdGVyRGVjaW1hbCIsImZpeFJvdW5kaW5nIiwicHJlY2lzaW9uIiwicG93ZXIiLCJwb3ciLCJyb3VuZCIsImRpZ2l0c0JlZm9yZURlY2ltYWwiLCJvcmlnaW5hbFZhbHVlIiwibW9kaWZpZWRWYWx1ZSIsImNvdW50IiwiU3RyaW5ncyIsInJhbmRvbSIsInJhbmRvbTEzQ2hhcmFjdGVycyIsImxvb3BzIiwiY2VpbCIsIkFycmF5IiwiZmlsbCIsInJlZHVjZSIsInN0cmluZyIsImZ1bmMiLCJhc3NlcnRVbnJlYWNoYWJsZSIsIngiLCJBcHBlbmRlcnMiLCJfYXBwZW5kZXJzIiwiYXBwZW5kZXIiLCJyZW1vdmUiLCJpdGVtcyIsIml0ZW0iLCJMb2dnaW5nTGV2ZWwiLCJDb25zb2xlQXBwZW5kZXIiLCJ0aHJlc2hvbGQiLCJfdGhyZXNob2xkIiwibG9nIiwibG9nTGV2ZWwiLCJtZXNzYWdlIiwiY2F0ZWdvcnkiLCJkYXRlIiwiZnVsbE1lc3NhZ2UiLCJ0b0lTT1N0cmluZyIsIldhcm4iLCJjb25zb2xlIiwiTG9nZ2VyIiwiYXBwZW5kZXJzIiwiX2NhdGVnb3J5IiwidHJhY2UiLCJUcmFjZSIsIl9sZW4iLCJhcmd1bWVudHMiLCJhcmdzIiwiX2tleSIsImRlYnVnIiwiRGVidWciLCJfbGVuMiIsIl9rZXkyIiwiSW5mbyIsIl9sZW4zIiwiX2tleTMiLCJ3YXJuIiwiX2xlbjQiLCJfa2V5NCIsIl9sZW41IiwiX2tleTUiLCJmYXRhbCIsIkZhdGFsIiwiX2xlbjYiLCJfa2V5NiIsImxldmVsIiwicmVwbGFjZVBsYWNlaG9sZGVycyIsIl90aGlzMiIsInJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmciLCJpbmRleCIsInJlcGxhY2VBcmd1bWVudCIsInNwbGljZSIsInN0cmluZ2lmeSIsImFjY3VtdWxhdG9yIiwiY3VycmVudFZhbHVlIiwiYXJyYXkiLCJlcnJvclN0YWNrQWxzb0hhc0Vycm9yTWVzc2FnZSIsInN0YWNrIiwiYXJnIiwiY2FjaGUiLCJfIiwiT2JqZWN0IiwiYXJndW1lbnQiLCJ0b1N0cmluZ1N0ciIsIkxvZ2dpbmdUaHJlc2hvbGQiLCJUZWxlbWV0cnlBcHBlbmRlciIsIlRlbGVtZXRyeUNvbmZpZ3VyYXRpb24iLCJDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIiwiX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24iLCJsb2dnZXIiLCJfbG9nZ2VycyIsImFwcGx5TG9nZ2VyQ29uZmlnRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24iLCJhcHBseUxvZ2dpbmdMZXZlbCIsImFwcGx5QXBwZW5kZXJMb2dnaW5nTGV2ZWwiLCJhcHBseUNvbnNvbGVMb2dnZXIiLCJhcHBseVRlbGVtZXRyeUxvZ2dlciIsInBhcmFtZXRlclZhbHVlIiwic2V0VGhyZXNob2xkIiwiYXBwbHlBcHBlbmRlciIsImxvZ2dpbmdMZXZlbCIsIk9mZiIsIkFsbCIsImNvbnZlcnRMb2dnaW5nTGV2ZWxUeXBlVG9Mb2dnaW5nTGV2ZWwiLCJsb2dnaW5nTGV2ZWxUeXBlIiwiVGVsZW1ldHJ5TGV2ZWwiLCJtZXRyaWNzIiwiX21ldHJpY3MiLCJnZXRUZWxlbWV0cnlMZXZlbCIsIlRpbWVUb0ZpcnN0RnJhbWUiLCJFc3NlbnRpYWwiLCJDaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lIiwiU3RhbGxlZCIsIkJ1ZmZlcmluZyIsIlJvdW5kVHJpcFRpbWUiLCJEb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSIsIk5ldHdvcmtUeXBlIiwiUmVzb2x1dGlvbkNoYW5nZWQiLCJBcHBsaWNhdGlvbkZvcmVncm91bmQiLCJBcHBsaWNhdGlvbkJhY2tncm91bmQiLCJNZXRyaWNzQ29uZmlndXJhdGlvbiIsIl91cmwiLCJzZXQiLCJtZXRyaWNzVXJsIiwicGF0aG5hbWUiLCJfZW52aXJvbm1lbnQiLCJlbnZpcm9ubWVudCIsIl90ZW5hbmN5IiwidGVuYW5jeSIsIl9zZXNzaW9uSWQiLCJzZXNzaW9uSWQiLCJNZXRyaWNzU2VydmljZSIsIlRlbGVtZXRyeVVybCIsIkVudmlyb25tZW50IiwiTWV0cmljc0ZhY3RvcnkiLCJnZXRNZXRyaWNzU2VydmljZSIsIl90eXBlb2YiLCJtZXRyaWNzU2VydmljZXMiLCJfbWV0cmljc1NlcnZpY2VzIiwibWV0cmljc0NvbmZpZ3VyYXRpb24iLCJjbGllbnRTZXNzaW9uSWQiLCJnZXRUZWxlbWV0cnlVcmwiLCJnZXRFbnZpcm9ubWVudEZyb21VcmwiLCJjb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUeXBlVG9UZWxlbWV0cnlMZXZlbCIsInRlbGVtZXRyeUxldmVsIiwic2V0VGVsZW1ldHJ5TGV2ZWwiLCJ2YWx1ZXMiLCJ0IiwiciIsIlN5bWJvbCIsIm4iLCJpdGVyYXRvciIsIm8iLCJ0b1N0cmluZ1RhZyIsImkiLCJjIiwiR2VuZXJhdG9yIiwidSIsImNyZWF0ZSIsIl9yZWdlbmVyYXRvckRlZmluZTIiLCJmIiwicCIsInkiLCJHIiwidiIsImEiLCJkIiwibCIsIlR5cGVFcnJvciIsImRvbmUiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwiZ2V0UHJvdG90eXBlT2YiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImRpc3BsYXlOYW1lIiwiX3JlZ2VuZXJhdG9yIiwidyIsIm0iLCJkZWZpbmVQcm9wZXJ0eSIsIl9yZWdlbmVyYXRvckRlZmluZSIsIl9pbnZva2UiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJFeHBvbmVudGlhbEJhY2tvZmYiLCJWZXJzaW9uTWFuYWdlciIsInJlcXVlc3RTaXplTGltaXQiLCJtYXhCdWZmZXJlZFJlY29yZHMiLCJfbWV0cmljc0NvbmZpZ3VyYXRpb24iLCJfZXhwb25lbnRpYWxCYWNrb2ZmIiwiZ2V0TG9jYXRpb25Ib3N0bmFtZUZyb21HbG9iYWxTY29wZSIsInRoZW4iLCJsb2NhdGlvbkhvc3RuYW1lIiwiX2RvbWFpbiIsIm1ldHJpYyIsInByZXZpb3VzVmFsdWUiLCJyZXNvdXJjZSIsImtpbmQiLCJtZXRyaWNSZWNvcmQiLCJ0aW1lc3RhbXAiLCJmdWxsUXVhbGlmaWVkTmFtZSIsInNka1ZlcnNpb24iLCJpZ25vcmVkIiwic2VuZE1ldHJpY3NJZkFibGUiLCJQcm9taXNlIiwicmVzb2x2ZUxvY2F0aW9uSG9zdG5hbWUiLCJnbG9iYWxTY29wZVN1YnNjcmlwdGlvbiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX2NhbGxlZSIsIm1ldHJpY3NNZXNzYWdlcyIsImZvcm1EYXRhIiwiX2NvbnRleHQiLCJhcHBlbmQiLCJyZWNvcmRzIiwibWV0aG9kIiwiYm9keSIsIl94IiwiYXBwbHkiLCJfc2VuZE1ldHJpY3NJZkFibGUiLCJfY2FsbGVlMiIsIl9jb250ZXh0MiIsIl9pc1NlbmRpbmciLCJzbGljZSIsInJlc3BvbnNlIiwiaXNSZXNwb25zZVN0YXR1c0NvZGVSZXRyeWFibGUiLCJfZmFpbHVyZUNvdW50IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiZ2V0RXhwb25lbnRpYWxCYWNrb2ZmSW50ZXJ2YWxCeUZhaWx1cmVDb3VudCIsInN0YXR1cyIsInRlbGVtZXRyeUxldmVsVHlwZSIsIlZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3RvcnkiLCJFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMiLCJkZWZhdWx0VHJhY2tLaW5kcyIsIlBlZXJDb25uZWN0aW9uU2VydmljZSIsIl9wZWVyQ29ubmVjdGlvbkZhY3RvcnkiLCJpbml0aWF0ZUluaXRpYWxQcmVjYWNoaW5nIiwiaXNQcmVjYWNoaW5nRW5hYmxlZCIsInByZWNhY2hlQ3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlciIsIl9wcmVjYWNoZUNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIiLCJfY2FjaGVkIiwiZGlyZWN0aW9uIiwicGVlckNvbm5lY3Rpb24iLCJjcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyIiwiX2NyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIiLCJfY2FsbGVlMyIsInRyYWNrS2luZHMiLCJlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMiLCJjb25maWd1cmF0aW9uIiwiX2FyZ3MzIiwiX2NvbnRleHQzIiwiRGlzYWJsZWQiLCJpc1RyYWNrc0tpbmRzRXF1aXZhbGVudFRvRGVmYXVsdCIsIkVuYWJsZWQiLCJjcmVhdGVQZWVyQ29ubmVjdGlvbiIsInN1cHBvcnRzQWRkVHJhbnNjZWl2ZXIiLCJhdWRpb1RyYW5zY2VpdmVycyIsInZpZGVvVHJhbnNjZWl2ZXJzIiwib3B0aW9ucyIsIl90IiwiX3QyIiwiX3QzIiwiX3Q0IiwiX3Q1IiwiX3Q2IiwiYWRkVHJhbnNjZWl2ZXIiLCJjcmVhdGVPZmZlciIsImxvY2FsT2ZmZXIiLCJvZmZlclRvUmVjZWl2ZUF1ZGlvIiwib2ZmZXJUb1JlY2VpdmVWaWRlbyIsInRyYWNrc0tpbmRzIiwiY291bnRUcmFja0tpbmRzIiwidHJhY2tLaW5kQ291bnQiLCJhdWRpbyIsInZpZGVvIiwiY291bnRlZFRyYWNrS2luZHMiLCJjb3VudGVkRGVmYXVsdFRyYWNrS2luZHMiLCJSdGNDb25maWd1cmF0aW9uTWFuYWdlciIsInRydW5jYXRlSWNlU2VydmVycyIsImljZVNlcnZlcnMiLCJ1cmxzIiwidXNlcm5hbWUiLCJjcmVkZW50aWFsIiwiU2RwUGFyc2VyIiwidXBkYXRlU3RhdGlzdGljVGltZW91dCIsImdldFN0YXRzVGltZW91dER1cmF0aW9uIiwiUnRjQ29ubmVjdGlvbk1vbml0b3IiLCJtZWRpYVN0cmVhbSIsImVzdGltYXRlZFJvdW5kVHJpcFRpbWUiLCJpc0ZvcmVncm91bmQiLCJfcGVlckNvbm5lY3Rpb24iLCJfZXN0aW1hdGVkUm91bmRUcmlwVGltZSIsIl90cmFja3NUb01vbml0b3IiLCJnZXRUcmFja3MiLCJtYXAiLCJ0cmFjayIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbiIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjIiLCJnZXRDdXJyZW50T2ZmZXJEaXNhYmxlZCIsImN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbiIsInNkcCIsInBhcnNlZFNEUCIsIl9lc3RpbWF0ZWRBdWRpb0NvZGVjIiwiYXVkaW9Db2RlYyIsIl9lc3RpbWF0ZWRWaWRlb0NvZGVjIiwidmlkZW9Db2RlYyIsImlzSW5pdGlhbFN1YnNjcmlwdGlvbkNhbGxiYWNrIiwiZm9yZWdyb3VuZCIsIl9pc01vbml0b3JSdW5uaW5nIiwiX21vbml0b3JHZW5lcmF0aW9uIiwiX3VwZGF0ZVRpbWVvdXQiLCJ1cGRhdGVTdGF0aXN0aWMiLCJfcnRjU3RhdGlzdGljIiwiX3VwZGF0ZVN0YXRpc3RpYyIsImdldEtpbmRGb3JTYWZhcmkxMSIsImdlbmVyYXRpb24iLCJ0aW1lb3V0SGFuZGxlIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uMyIsInN0YXRzUHJvbWlzZSIsInRpbWVvdXRQcm9taXNlIiwic3RhdHMiLCJydGNTdGF0aXN0aWNzIiwicm91bmRUcmlwVGltZSIsImxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCIsImdldFN0YXRzUHJvbWlzZUJhc2VkRGlzYWJsZWQiLCJ1cGRhdGVTdGF0aXN0aWNMZWdhY3kiLCJpZCIsImdldFN0YXRzIiwicmVzb2x2ZSIsInJhY2UiLCJyZXBvcnQiLCJjdXJyZW50Um91bmRUcmlwVGltZSIsIm1lZGlhVHlwZSIsImNvZGVjIiwiY29kZWNJZCIsIm1pbWVUeXBlIiwiX3RoaXMyJF9ydGNTdGF0aXN0aWMkIiwiX3RoaXMyJF9ydGNTdGF0aXN0aWMkMiIsIl90aGlzMiRfcnRjU3RhdGlzdGljJDMiLCJfdGhpczIkX3J0Y1N0YXRpc3RpYyQ0IiwiX3RoaXMyJF9ydGNTdGF0aXN0aWMkNSIsIl90aGlzMiRfcnRjU3RhdGlzdGljJDYiLCJfdGhpczIkX3J0Y1N0YXRpc3RpYyQ3IiwiYnl0ZXMiLCJieXRlc1JlY2VpdmVkIiwicHJldmlvdXNCeXRlc1JlY2VpdmVkIiwiYnl0ZXNEZWx0YSIsInRpbWVEZWx0YSIsImJpdHJhdGUiLCJzc3JjIiwicGFja2V0c0xvc3QiLCJwYWNrZXRzUmVjZWl2ZWQiLCJnZXRDb2RlY0J5VHlwZSIsImZyYW1lc0RlY29kZWQiLCJmcHMiLCJfdXBkYXRlU3RhdGlzdGljTGVnYWN5IiwiX3RoaXMzIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uNCIsImdldFN0YXRzTGVnYWN5IiwicmVzdWx0IiwibmFtZXMiLCJzdGF0IiwiX3RoaXMzJF9ydGNTdGF0aXN0aWMkIiwiX3RoaXMzJF9ydGNTdGF0aXN0aWMkMiIsIl9zZHAiLCJzZHBTcGxpdEJ5TGluZXMiLCJzZHBTcGxpdEJ5VHJhY2tzIiwiX2F1ZGlvQ29kZWMiLCJhcHBseUNvZGVjIiwiX3ZpZGVvQ29kZWMiLCJfaXNBdWRpb1RyYWNrRW5hYmxlZCIsImlzVHJhY2tCeVR5cGVFbmFibGVkIiwiX2lzVmlkZW9UcmFja0VuYWJsZWQiLCJzZHBTZWN0aW9uRm9yVHlwZSIsImZpbmQiLCJzZHBUcmFjayIsIl9zZHBTcGxpdEJ5TGluZXMkZmluZCIsInJ0bWFwIiwic2RwTGluZSIsInVzZWRDb2RlY0xpbmUiLCJ1c2VkQ29kZWMiLCJjb2RlY05hbWUiLCJWYW5pbGxhUGVlckNvbm5lY3Rpb24iLCJ3ZWJraXRSVENQZWVyQ29ubmVjdGlvbkVuYWJsZWQiLCJ3ZWJraXRSVENQZWVyQ29ubmVjdGlvbiIsImN1cnJlbnRMb2NhbERlc2NyaXB0aW9uIiwiY29ubmVjdGlvblN0YXRlIiwiaWNlQ29ubmVjdGlvblN0YXRlIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uNSIsImdldENvbmZpZ3VyYXRpb24iLCJfdGhpcyRfcGVlckNvbm5lY3Rpb242Iiwic2V0Q29uZmlndXJhdGlvbiIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjciLCJnZXRUcmFuc2NlaXZlcnNEaXNhYmxlZCIsImdldFRyYW5zY2VpdmVycyIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjgiLCJfY3JlYXRlT2ZmZXIiLCJwcm9taXNlQmFzZWRQQ01ldGhvZHNEaXNhYmxlZCIsInJlamVjdCIsIl9jcmVhdGVBbnN3ZXIiLCJjcmVhdGVBbnN3ZXIiLCJfeDIiLCJfc2V0TG9jYWxEZXNjcmlwdGlvbiIsImRlc2NyaXB0aW9uIiwic2V0TG9jYWxEZXNjcmlwdGlvbiIsIl94MyIsIl9zZXRSZW1vdGVEZXNjcmlwdGlvbiIsIl9jYWxsZWU0IiwiX2Rlc2NyaXB0aW9uJHNkcCIsImhhc0NyeXB0byIsIl9jb250ZXh0NCIsInNldFJlbW90ZURlc2NyaXB0aW9uIiwiX3g0IiwiZ2V0U2VuZGVycyIsImdldFJlY2VpdmVycyIsInNlbGVjdG9yIiwiYWRkU3RyZWFtIiwiX3RoaXM0IiwiYWRkVHJhY2siLCJvbnRyYWNrIiwiaGFuZGxlciIsIm9uaWNlY2FuZGlkYXRlIiwib25jb25uZWN0aW9uc3RhdGVjaGFuZ2UiLCJvbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZSIsImNsb3NlIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uOSIsIl9jcmVhdGVQZWVyQ29ubmVjdGlvbiIsInJlc29sdmVQZWVyQ29ubmVjdGlvblByb21pc2UiLCJzdWJqZWN0IiwiX3N1YmplY3QiLCJEaXNwb3NhYmxlTGlzdGVuZXIiLCJfRGlzcG9zYWJsZSIsImxpc3RlbmVycyIsIl9jYWxsU3VwZXIiLCJpZHgiLCJfaW5oZXJpdHMiLCJfbGlzdGVuZXJzIiwiX3ZhbHVlIiwiY2hhbmdlZCIsImNvbXBhcmFibGUiLCJlcXVhbHMiLCJfaSIsIl9hcnIiLCJiYXNlVVJMIiwib3JpZ2luIiwiRGlzY292ZXJ5VXJpIiwiX0dsb2JhbFNjb3BlJGdldEluc3RhIiwiX2NsaWVudFNlc3Npb25JZCIsIl9sb2FkZWRUaW1lc3RhbXAiLCJfcmVhZE9ubHlJbml0aWFsaXplZCIsIl9yZWFkT25seURpc2NvdmVyeVVyaSIsIl9yZWFkT25seVBlZXJDb25uZWN0aW9uRmFjdG9yeSIsIl9hdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmUiLCJfYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uIiwiX2F1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0iLCJfYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmUiLCJfZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCIsIl9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMiLCJfd2ViUGxheWVyTG9hZGVyIiwiX3NoYWthUGxheWVyTG9hZGVyIiwiX2hsc0pzTG9hZGVyIiwiX21ldHJpY3NTZXJ2aWNlIiwiX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIiwiX3RlbGVtZXRyeVVybCIsIl9tYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzIiwicmV0cmllc0Ftb3VudCIsIl90ZWxlbWV0cnlMZXZlbCIsImFwcGx5VGVsZW1ldHJ5Q29uZmlndXJhdGlvbiIsInRlbGVtZXRyeUNvbmZpZ3VyYXRpb24iLCJpZ25vcmVkRW52aXJvbm1lbnQiLCJpZ25vcmVkRGlzY292ZXJ5VXJpIiwidGVsZW1ldHJ5VXJsIiwidGVsZW1ldHJ5QXBwZW5kZXIiLCJpZ25vcmVkVGVuYW5jeSIsImFwcGx5TWV0cmljc0NvbmZpZ3VyYXRpb24iLCJpZ25vcmVkVGVsZW1ldHJ5TGV2ZWwiLCJhcHBseUF1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZUZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiYXBwbHlBdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb25Gcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImFwcGx5Rm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydEZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiYXBwbHlTa2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXNGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImFwcGx5RGlzY292ZXJ5VXJpRGVmYXVsdEZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiZGlzY292ZXJ5VXJpIiwiY2hhbm5lbFRva2VuIiwidXJpVmFsdWUiLCJiYXNlVVJJVmFsdWUiLCJvbkxvYWQiLCJfaW5pdGlhbGl6ZWQiLCJhZGRXaW5kb3dFdmVudExpc3RlbmVyIiwiaW5pdCIsIm9wdGlvbnNXaXRoT3B0aW9uYWxnbG9iYWxTY29wZSIsInBlZXJDb25uZWN0aW9uRmFjdG9yeSIsImNvbnNvbGVMb2dnaW5nTGV2ZWwiLCJjb25zb2xlQXBwZW5kZXIiLCJhdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtIiwiYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmUiLCJ3ZWJQbGF5ZXJMb2FkZXIiLCJzaGFrYVBsYXllckxvYWRlciIsImhsc0pzTG9hZGVyIiwiX3RoaXMkX2FwcGxpY2F0aW9uQWN0IiwiX1NESyIsInNlZ21lbnRzIiwicHJvdG9jb2wiLCJ1bnNoaWZ0IiwiZW5kc1dpdGgiLCJqb2luIiwiQml0cmF0ZVN0YXRlIiwiQml0cmF0ZU1vZGUiLCJEaW1lbnNpb24iLCJDaGFubmVsU3RhdGUiLCJWaWRlb1RlbGVtZXRyeSIsIlNlc3Npb25UZWxlbWV0cnkiLCJUb2tlbkNvbnRleHQiLCJDaGFubmVsQ29udGV4dCIsIkVuY29kZWRTdHJlYW1TaW5rIiwiU3RyZWFtVHJhY2tUcmFuc2Zvcm0iLCJTdHJlYW1UcmFuc2Zvcm1Db250ZXh0IiwiUGVlckNvbm5lY3Rpb25Db250ZXh0IiwiU3RhdGVDb250ZXh0IiwiRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQiLCJTdHJlYW1TdWJzY3JpYmVyRmFjdG9yeSIsIkRpc2NvdmVyeSIsImRlZmF1bHRTdHJlYW1UZXJtaW5hdGlvblJlYXNvbiIsImZvcmVncm91bmRSZXN0YXJ0UmVhc29uQmFja2dyb3VuZFRpbWVvdXQiLCJmb3JlZ3JvdW5kUmVzdGFydFJlYXNvblVuaGVhbHRoeSIsImZvcmVncm91bmRSZXN0YXJ0UmVhc29uVW5oZWFsdGh5SGVhbHRoQ2hlY2siLCJmYWlsdXJlQ291bnRDbGVhblVwSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyIsInN0YW5kYnlQb2xsaW5nSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyIsImJhY2tncm91bmRSZWNvdmVyeUZhaWxzYWZlSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyIsInN0cmVhbURlbGV0aW9uVGhyZXNob2xkSW5NaWxsaXNlY29uZHMiLCJDaGFubmVsIiwidmlkZW9FbGVtZW50IiwiY2hhbm5lbENvbnRleHRPcHRpb25zIiwidGFyZ2V0TGFnIiwib25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayIsIm9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrIiwicGVlckNvbm5lY3Rpb25Db250ZXh0T3B0aW9ucyIsImZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQiLCJzdHJlYW1UcmFuc2Zvcm1Db250ZXh0T3B0aW9ucyIsImhhc0luc2VydGFibGVTdHJlYW1zIiwiaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zIiwidmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayIsImF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2siLCJlbmNvZGVkVmlkZW9TdHJlYW1TaW5rIiwiZW5jb2RlZEF1ZGlvU3RyZWFtU2luayIsIl90b2tlbkNvbnRleHQiLCJfY2hhbm5lbENvbnRleHQiLCJfcGVlckNvbm5lY3Rpb25Db250ZXh0IiwiX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQiLCJfc3RhdGVDb250ZXh0IiwiX2NoYW5uZWxTdGFydFRpbWUiLCJfcmVhZE9ubHlQZWVyQ29ubmVjdGlvbiIsIl9yZWFkT25seVN0YXRlIiwic3RhdGUiLCJfcmVhZE9ubHlFeGlzdHMiLCJleGlzdHMiLCJfcmVhZE9ubHlBdXRvTXV0ZWQiLCJhdXRvTXV0ZWQiLCJfcmVhZE9ubHlBdXRvUGF1c2VkIiwiYXV0b1BhdXNlZCIsIl9yZWFkT25seVRva2VuRXhwaXJpbmciLCJ0b2tlbkV4cGlyaW5nIiwiX3JlYWRPbmx5QXV0aG9yaXplZCIsImF1dGhvcml6ZWQiLCJfcmVhZE9ubHlPbmxpbmUiLCJvbmxpbmUiLCJfcmVhZE9ubHlMb2FkaW5nIiwibG9hZGluZyIsIl9yZWFkT25seVBsYXlpbmciLCJwbGF5aW5nIiwiX3JlYWRPbmx5U3RhbmRieSIsInN0YW5kYnkiLCJfcmVhZE9ubHlTdG9wcGVkIiwic3RvcHBlZCIsIl9yZWFkT25seVRhcmdldExhZyIsIl9yZWFkT25seUxhZyIsImxhZyIsIl9yZWFkT25seUJpdHJhdGVMaW1pdCIsImJpdHJhdGVMaW1pdCIsIl9yZWFkT25seVJlc29sdXRpb24iLCJyZXNvbHV0aW9uIiwiX3JlYWRPbmx5RmFpbHVyZUNvdW50IiwiZmFpbHVyZUNvdW50IiwiX3JlYWRPbmx5RW5kUG9pbnQiLCJlbmRQb2ludCIsIl9yZWFkT25seVN0cmVhbSIsInN0cmVhbSIsIl9yZWFkT25seVJ0Y1N0YXRpc3RpY3MiLCJfcmVhZE9ubHlNZWRpYVN0cmVhbSIsIl9zZXNzaW9uVGVsZW1ldHJ5IiwiY2hhbm5lbERpc3Bvc2FibGVzIiwiX3ZpZGVvTWV0YURhdGFDaGFuZ2VkSGFuZGxlciIsImhhbmRsZVZpZGVvTWV0YURhdGFDaGFuZ2VkIiwiX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0IiwiY29uZmlndXJlRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiIsIl9yZWFkT25seUlzRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkVuYWJsZWQiLCJpc0VuYWJsZWQiLCJfcmVhZE9ubHlEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiIsImRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIiwiX3JlYWRPbmx5UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIiwicmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIiwicmVuZGVyZXJEaXNwb3NhYmxlcyIsInZpZGVvVGVsZW1ldHJ5IiwiZGF0YXNldCIsInNldHVwTGlzdGVuZXJGb3JUaW1lVG9GaXJzdFRpbWUiLCJzZXR1cExpc3RlbmVyRm9yUmVidWZmZXJpbmciLCJTdG9wcGVkIiwicmVzdGFydEFmdGVyU3RvcCIsImNsZWFyRmFpbHVyZUNvdW50VGltZW91dCIsIlBsYXlpbmciLCJvblZpZGVvUmVzb2x1dGlvbkNoYW5nZXMiLCJlbGFwc2VkSW5NaWxsaXNlY29uZHMiLCJjaGFubmVsSW5pdGlhbGl6YXRpb24iLCJnZXRUaW1lIiwibGltaXRCaXRyYXRlIiwiS2VlcCIsIk5vcm1hbCIsImRlc3Ryb3lTdHJlYW1PblVubW91bnQiLCJyZW1vdmVXaW5kb3dFdmVudExpc3RlbmVyIiwic3RhcnQiLCJhdXRvbWF0aWNSZXRyeU9uRmFpbHVyZSIsInRyeVJlc3RhcnQiLCJyZWFzb24iLCJpc1N0YXJ0aW5nIiwiaXNUZXJtaW5hbFN0YXRlIiwiYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IiLCJsYXN0QmFja2dyb3VuZER1cmF0aW9uIiwic2hvdWxkRm9yY2VSZXN0YXJ0IiwiaXNTdHJlYW1EZWxldGVkQnlQbGF0Zm9ybSIsIlJlY29ubmVjdGluZyIsImlzUmV0cnlhYmxlU3RhdGUiLCJfc3RyZWFtU3Vic2NyaWJlciIsImlzU3Vic2NyaWJlckhlYWx0aHkiLCJpc0hlYWx0aHkiLCJwYXVzZSIsInNyY09iamVjdCIsIkluaXRpYWxpemluZyIsIndpZHRoIiwidmlkZW9XaWR0aCIsImhlaWdodCIsInZpZGVvSGVpZ2h0IiwiZW1wdHkiLCJkaXNwb3NhYmxlcyIsInNldEJpdHJhdGVMaW1pdCIsImNsZWFyQml0cmF0ZUxpbWl0IiwiYml0cmF0ZUluQml0c1BlclNlY29uZCIsIlJlc2V0IiwidXBkYXRlVGFyZ2V0TGFnIiwiX3N0b3AiLCJwcm9jZXNzU3RvcCIsInN0b3AiLCJjbGVhblVwUmVzb3VyY2VzIiwiX3Jlc3VtZSIsInBsYXlNZWRpYVN0cmVhbUluVmlkZW9FbGVtZW50IiwicmVzdW1lIiwibXV0ZSIsIm11dGVkIiwidW5tdXRlIiwiX2Rpc3Bvc2UiLCJpc0Rpc3Bvc2VkIiwiZ2V0VXJpIiwiX3N0YXJ0IiwicHJvY2Vzc1N0YXJ0IiwiVW5hdXRob3JpemVkIiwiR2VvUmVzdHJpY3RlZCIsIkdlb0Jsb2NrZWQiLCJVbnN1cHBvcnRlZEZlYXR1cmUiLCJDb25maWd1cmF0aW9uRXJyb3IiLCJPZmZsaW5lIiwiU3RhcnRpbmciLCJQYXVzZWQiLCJSZWNvdmVyaW5nIiwiU3RhbmRCeSIsIlRyYW5zaWVudENvbmZpZ3VyYXRpb25FcnJvciIsIkNvbm5lY3Rpb25FcnJvciIsIkNsaWVudFN0YXJ0RXJyb3IiLCJpc1N0cmVhbUhlYWx0aHkiLCJfcHJvY2Vzc1N0YXJ0IiwiX2NhbGxlZTUiLCJfdGhpczUiLCJpc1JlY292ZXJ5IiwibGlzdGVuT25TdHJlYW1TZXR1cCIsIl9TdHJlYW1UcmFja1RyYW5zZm9ybSIsInZhbGlkIiwidmFsaWRhdGlvblJlc3VsdCIsIl9TdHJlYW1UcmFja1RyYW5zZm9ybTIiLCJfdmFsaWQiLCJfdmFsaWRhdGlvblJlc3VsdCIsIl9FbmNvZGVkU3RyZWFtU2luayR2YSIsIl92YWxpZDIiLCJfdmFsaWRhdGlvblJlc3VsdDIiLCJfRW5jb2RlZFN0cmVhbVNpbmskdmEyIiwiX3ZhbGlkMyIsIl92YWxpZGF0aW9uUmVzdWx0MyIsImhhc1RyYW5zZm9ybVN0cmVhbUNhbGxiYWNrIiwiaGFzRW5jb2RlZFN0cmVhbVNpbmsiLCJoYW5kbGVTdHJlYW1GYWlsdXJlQ2FsbGJhY2siLCJfY29udGV4dDUiLCJ2YWxpZGF0ZU1lZGlhU3RyZWFtVHJhY2tUcmFuc2Zvcm0iLCJ2YWxpZGF0ZUVuY29kZWRTdHJlYW1TaW5rIiwiaXNJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCIsImNsZWFyQ2FjaGVkQ2xvc2VzdEVuZHBvaW50IiwidGltZW91dElkIiwiaGFuZGxlU3RyZWFtRmFpbHVyZSIsImdldFJldHJ5SW50ZXJ2YWwiLCJfcmVzdGFydEFmdGVyU3RvcCIsIl9jYWxsZWU2IiwiX2NvbnRleHQ2IiwiX3BsYXkiLCJfY2FsbGVlNyIsIl9jb250ZXh0NyIsInBsYXkiLCJfaGFuZGxlU3RyZWFtRmFpbHVyZSIsIl9jYWxsZWU4IiwiX2NvbnRleHQ4IiwiX3RoaXM2IiwiZGlzcG9zZVBlZXJDb25uZWN0aW9uIiwiZGlzcG9zZU1lZGlhU3RyZWFtIiwiZGVzdHJveVN0cmVhbSIsInBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMiLCJfdGhpczciLCJmcmFtZVRpbWluZ0luZm9ybWF0aW9uQ2FwYWJpbGl0eSIsImNhcGFiaWxpdHkiLCJzaG91bGRFeHRyYWN0VGltZWNvZGUiLCJzaG91bGRFeHRyYWN0VGltZXN0YW1wcyIsImlzQ2hhbm5lbEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdXBwb3J0ZWQiLCJvcHRpb24iLCJ0cmltIiwiX3BsYXlNZWRpYVN0cmVhbUluVmlkZW9FbGVtZW50IiwiX2NhbGxlZTkiLCJfdGhpczgiLCJwbGF5UHJvbWlzZSIsIl9jb250ZXh0OSIsImhhc0F1ZGlvVHJhY2siLCJmaWx0ZXIiLCJhdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZU9mZiIsIkNoYW5uZWxzIiwiY3JlYXRlQ2hhbm5lbCIsImluaXRpYWxpemVkIiwiY2hhbm5lbE9wdGlvbnMiLCJvcHRpb25zV2l0aFJlYWxUaW1lU3Vic2NyaWJlQ2FsbGJhY2tzIiwiZGVmYXVsdFRhcmdldExhZyIsIl9vcHRpb25zJHRhcmdldExhZyIsIl9vcHRpb25zJG9uUmVhbFRpbWVTdSIsIl9vcHRpb25zJG9uUmVhbFRpbWVTdTIiLCJydGNBdWRpb1N0YXRpc3RpYyIsInJ0Y1ZpZGVvU3RhdGlzdGljIiwiYXBwbHlTdGF0dXMiLCJhcHBseVNlc3Npb25BbmRTdHJlYW1Qcm9wZXJ0aWVzVG9WaWRlb0VsZW1lbnQiLCJtYXBTdWJzY3JpYmVTdGF0dXNUb0NoYW5uZWxTdGF0dXMiLCJtYXBTdWJzY3JpYmVTdGF0dXNUb0V4aXN0cyIsIl90aGlzJG1lZGlhU3RyZWFtJHZhbCIsImF1ZGlvVHJhY2siLCJtZWRpYVN0cmVhbVRyYWNrIiwicmVjZWl2ZXIiLCJtaWQiLCJ0cmFuc2Zvcm1QaXBlbGluZVdvcmtlciIsInRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXIiLCJ0cmFuc2Zvcm1GdW5jdGlvbk5hbWVzIiwidmlkZW9UcmFjayIsIkF1ZGlvQ29kZWMiLCJBdWRpb0NvZGVjTWFwcGluZyIsImNvbnZlcnRBdWRpb0NvZGVjVG9BdWRpb0NvZGVjVHlwZSIsIk9QVVMiLCJBQUMiLCJjb252ZXJ0QXVkaW9Db2RlY1R5cGVUb0F1ZGlvQ29kZWMiLCJhdWRpb0NvZGVjVHlwZSIsImF1ZGlvQ29kZWNTdHJpbmciLCJ0b1VwcGVyQ2FzZSIsIlZpZGVvQ29kZWMiLCJWaWRlb0NvZGVjTWFwcGluZyIsImNvbnZlcnRWaWRlb0NvZGVjVG9WaWRlb0NvZGVjVHlwZSIsIkgyNjQiLCJWUDgiLCJWUDkiLCJjb252ZXJ0VmlkZW9Db2RlY1R5cGVUb1ZpZGVvQ29kZWMiLCJ2aWRlb0NvZGVjVHlwZSIsInZpZGVvQ29kZWNTdHJpbmciLCJVaW50OEFycmF5IiwiZGVmYXVsdERpc2NvdmVyeVVyaSIsIkJpdHJhdGVNb2RlTWFwcGluZyIsImNvbnZlcnRCaXRyYXRlTW9kZVRvQml0cmF0ZU1vZGVUeXBlIiwiYml0cmF0ZU1vZGUiLCJGb3JjZSIsIkJpdHJhdGVTdGF0ZU1hcHBpbmciLCJjb252ZXJ0Qml0cmF0ZVN0YXRlVG9CaXRyYXRlU3RhdGVUeXBlIiwiYml0cmF0ZVN0YXRlIiwiRGlzY292ZXJ5U2VydmljZSIsImRpc2NvdmVyeUNhY2hlSW50ZXJ2YWwiLCJfcHJlY2FjaGVDbG9zZXN0RW5kUG9pbnREaXNjb3ZlcnkiLCJyZXNvbHZlRW5kUG9pbnRQcm9taXNlIiwiZGlzY292ZXJDbG9zZXN0RW5kUG9pbnRXaXRoQ2FjaGluZyIsInByZWNhY2hlQ2xvc2VzdEVuZFBvaW50RGlzY292ZXJ5IiwiX2Rpc2NvdmVyQ2xvc2VzdEVuZFBvaW50V2l0aENhY2hpbmciLCJkaXNjb3ZlcnlTZXJ2aWNlIiwiY2FjaGVkVmFsdWUiLCJfY2FjaGUiLCJkaXNjb3ZlckNsb3Nlc3RFbmRQb2ludCIsIkVuZFBvaW50IiwiZGVmYXVsdFRpbWVvdXQiLCJfdXJpIiwiX2Rpc2NvdmVyTmVhcmJ5RW5kUG9pbnRzIiwidGltZW91dCIsImFzU3RyaW5nIiwiZW5kUG9pbnRzIiwib2siLCJ0ZXh0IiwiZGlzY292ZXJOZWFyYnlFbmRQb2ludHMiLCJfZGlzY292ZXJDbG9zZXN0RW5kUG9pbnQiLCJmYWlsZWRSZXF1ZXN0cyIsInByb3BhZ2F0ZUZhaWx1cmVJZkFsbFJlcXVlc3RzRmFpbGVkIiwiX2FyZ3MyIiwiYnVpbGREaXNjb3ZlcnlVcmwiLCJwaW5nIiwidGltZSIsIl9kaXNjb3ZlcnlVcmkiLCJkaXNjb3ZlcnlQYXJhbWV0ZXJzIiwic2VhcmNoUGFyYW1zIiwiYXBpVmVyc2lvbiIsIl90aW1lb3V0IiwiX3JvdW5kVHJpcFRpbWUiLCJfcGluZyIsImZpbmlzaGVkIiwiYnVpbGRQaW5nVXJsIiwiX3N1YnNjcmliZSIsImxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uIiwiX29wdGlvbnMkb25TdWJzY3JpYmVSIiwiX29wdGlvbnMkb25TdWJzY3JpYmVSNCIsImNsaWVudFZlcnNpb24iLCJyZXF1ZXN0Qm9keSIsImh0dHBSZXNwb25zZSIsImpzb25SZXNwb25zZUJvZHkiLCJfb3B0aW9ucyRvblN1YnNjcmliZVIyIiwiX3Jlc3BvbnNlIiwiX29wdGlvbnMkb25TdWJzY3JpYmVSMyIsIl9yZXNwb25zZTIiLCJzdWJzY3JpYmVSZXNwb25zZSIsImJ1aWxkVXJsIiwiYmVhcmVyVG9rZW4iLCJodHRwUm91bmRUcmlwVGltZSIsInNlc3Npb25EZXNjcmlwdGlvbiIsImNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uIiwiY3JlYXRlT2ZmZXJEZXNjcmlwdGlvbiIsIm9uU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrIiwicGFyc2VKc29uQm9keSIsImhhbmRsZVN0cmVhbVJlc3BvbnNlQ29udGV4dCIsInN0cmVhbVJlc3BvbnNlQ29udGV4dCIsIm1hcEh0dHBTdGF0dXNUb1N1YnNjcmliZVN0YXR1cyIsIm9uU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjayIsIm5vcm1hbGl6ZVN1YnNjcmliZVJlc3BvbnNlIiwiX3B1Ymxpc2giLCJib2R5V2l0aE9mZmVyIiwiYm9keVdpdGhvdXRPZmZlciIsInB1Ymxpc2hSZXNwb25zZSIsIm1hcEh0dHBTdGF0dXNUb1B1Ymxpc2hTdGF0dXMiLCJub3JtYWxpemVQdWJsaXNoUmVzcG9uc2UiLCJwdWJsaXNoIiwiX3g1IiwiX3g2IiwiX3g3Iiwic2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSIsInNoYXJlZFNlY3JldCIsIm1hcEh0dHBTdGF0dXNUb1NldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzIiwiY29udmVydEh0dHBSZXNwb25zZVRvU2V0UmVtb3RlRGVzY3JpcHRpb24iLCJfeDgiLCJfeDkiLCJfbGltaXRCaXRyYXRlIiwibWFwSHR0cFN0YXR1c1RvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMiLCJfeDAiLCJfeDEiLCJfeDEwIiwiX3gxMSIsIl94MTIiLCJfYWRkSWNlQ2FuZGlkYXRlcyIsImNhbmRpZGF0ZXMiLCJkaXNjb3ZlcnlDb21wbGV0ZWQiLCJhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2UiLCJfYXJnczYiLCJtYXBIdHRwU3RhdHVzVG9BZGRJY2VDYW5kaWRhdGVzU3RhdHVzIiwiY29udmVydEh0dHBSZXNwb25zZVRvQWRkSWNlQ2FuZGlkYXRlcyIsImFkZEljZUNhbmRpZGF0ZXMiLCJfeDEzIiwiX3gxNCIsIl94MTUiLCJfZGVzdHJveVN0cmVhbSIsImRlc3Ryb3lTdHJlYW1SZXNwb25zZSIsIm1hcEh0dHBTdGF0dXNUb1NldERlc3Ryb3lTdHJlYW1TdGF0dXMiLCJjb252ZXJ0SHR0cFJlc3BvbnNlVG9EZXN0cm95U3RyZWFtIiwiX3gxNiIsIl94MTciLCJfZGVzdHJveVN0cmVhbU9uVW5tb3VudCIsImVyciIsIl94MTgiLCJfeDE5IiwicGF0aCIsInBhdGhBc0FycmF5IiwiX3BhcnNlSnNvbkJvZHkiLCJfdDciLCJqc29uIiwiX3gyMCIsImNvbnRleHQiLCJydGNDb25maWd1cmF0aW9uIiwiY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSIsImNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSIsImNvbnZlcnRJUnRjQ29uZmlndXJhdGlvblRvUlRDQ29uZmlndXJhdGlvbiIsImJ1bmRsZVBvbGljeSIsImljZUNhbmRpZGF0ZVBvb2xTaXplIiwiaWNlVHJhbnNwb3J0UG9saWN5IiwicnRjcE11eFBvbGljeSIsIl9jb252ZXJ0SHR0cFJlc3BvbnNlVG9TZXRSZW1vdGVEZXNjcmlwdGlvbiIsIl9jYWxsZWUwIiwiX2NvbnRleHQwIiwiX3gyMSIsIl9jb252ZXJ0SHR0cFJlc3BvbnNlVG9BZGRJY2VDYW5kaWRhdGVzIiwiX2NhbGxlZTEiLCJfY29udGV4dDEiLCJfeDIyIiwiX2NvbnZlcnRIdHRwUmVzcG9uc2VUb0Rlc3Ryb3lTdHJlYW0iLCJfY2FsbGVlMTAiLCJfY29udGV4dDEwIiwiX3gyMyIsIlRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZSIsIkZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyIiwiTWFwIiwiY2FuUHJvY2Vzc0ZyYW1lVGltaW5nSW5mb3JtYXRpb24iLCJzZXR1cFZpZGVvRWxlbWVudEhhbmRsaW5nIiwicmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdCIsInNldHVwRnJhbWVUaW1pbmdJbmZvcm1hdGlvblRyYW5zZm9ybSIsInRyYWNrSWQiLCJkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3QiLCJpc0VuYWJsZWRTdWJqZWN0IiwicmVnaXN0ZXJSb3V0ZSIsIkZyYW1lVGltaW5nSW5mb3JtYXRpb24iLCJoYW5kbGVGcmFtZVRpbWluZ01lc3NhZ2UiLCJfdHJhbnNmb3JtTmFtZSIsIl9PYmplY3QkZW50cmllcyIsImVudHJpZXMiLCJfT2JqZWN0JGVudHJpZXMkX2kiLCJfc2xpY2VkVG9BcnJheSIsInJ0cFRpbWVzdGFtcCIsIm1ldGFkYXRhIiwicnRwVGltZXN0YW1wTnVtYmVyIiwiX2RlY29kZWRGcmFtZVRpbWluZ0luIiwiX2RlY29kZWRGcmFtZVRpbWluZ0luMiIsImZyYW1lVGltaW5nSW5mb3JtYXRpb24iLCJ0aW1lY29kZSIsInJlY2VpdmVUaW1lc3RhbXAiLCJzb3VyY2VUaW1lc3RhbXAiLCJpbmdlc3RUaW1lc3RhbXAiLCJlbmNvZGVUaW1lc3RhbXAiLCJ0cmFuc2NvZGVUaW1lc3RhbXAiLCJwbGF5YmFja1N0YXRlIiwiX2N1cnJlbnRQbGF5YmFja1N0YXRlIiwiX2RlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uQnlSdHBUaW1lc3RhbXAiLCJ2aWRlb0VsZW1lbnRTdWJqZWN0IiwiY2xlYXIiLCJfdmlkZW9FbGVtZW50RGlzcG9zYWJsZXMiLCJzZXR1cFZpZGVvRXZlbnRMaXN0ZW5lcnMiLCJoYW5kbGVWaWRlb0ZyYW1lQ2FsbGJhY2siLCJfYXJtVmlkZW9GcmFtZUNhbGxiYWNrIiwidGltZXN0YW1wc1RvRGVsZXRlIiwiX2l0ZXJhdG9yIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJfc3RlcCIsInMiLCJfc3RlcCR2YWx1ZSIsImZyYW1lVGltaW5nIiwiX29iamVjdFNwcmVhZCIsInJlbmRlclRpbWVzdGFtcCIsInBlcmZvcm1hbmNlIiwidGltZU9yaWdpbiIsIl9pMiIsIl90aW1lc3RhbXBzVG9EZWxldGUiLCJvblBsYXlpbmciLCJvblBhdXNlIiwib25TdGFsbGVkIiwib25XYWl0aW5nIiwib25FbmRlZCIsIm9uRXJyb3IiLCJfYXJtZWRWaWRlb0ZyYW1lQ2FsbGJhY2tJZCIsImNhbmNlbFZpZGVvRnJhbWVDYWxsYmFjayIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJJbnNlcnRhYmxlU3RyZWFtcyIsIlZpZGVvRnJhbWVEZXRlY3RvciIsIkVuY29kZWRNZWRpYVRyYW5zZm9ybU1hbmFnZXIiLCJpY2VDYW5kaWRhdGVBY2N1bXVsYXRpb25JbnRlcnZhbCIsImRlZmF1bHRTdHJlYW1TZXR1cFRpbWVvdXQiLCJSZWFsVGltZVN0cmVhbVN1YnNjcmliZXIiLCJjaGFubmVsQ29udGV4dCIsInBlZXJDb25uZWN0aW9uQ29udGV4dCIsInN0cmVhbVRyYW5zZm9ybUNvbnRleHQiLCJmcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCIsInJlcXVpcmVzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zIiwiYWxsIiwiX3JlZjMiLCJfcmVmMyQiLCJzdWJzY3JpYmVPcHRpb25zIiwiY2xpZW50T2ZmZXJEaXNhYmxlZCIsInN1cHBvcnRzU2V0Q29uZmlndXJhdGlvbiIsInN1cHBvcnRzR2V0Q29uZmlndXJhdGlvbiIsImFwcGx5UnRjQ29uZmlndXJhdGlvbiIsInN1Ym1pdENhbmRpZGF0ZXNUaW1lb3V0IiwiY2FuY2VsRGlzY292ZXJ5IiwiY2FuZGlkYXRlIiwiX3RoaXMkX2NoYW5uZWxDb250ZXh0IiwiX3JlZjQiLCJyZXRyeUNhbGxiYWNrIiwibmF2aWdhdG9ySXNPbkxpbmUiLCJyZWNvbm5lY3RQZWVyQ29ubmVjdGlvbiIsIm1lZGlhU3RyZWFtUHJvbWlzZSIsIm9uVHJhY2tEaXNhYmxlZCIsInN0cmVhbXMiLCJ0cmFja0xpc3RlbmVyIiwiYW5zd2VyIiwiX3JlZjUiLCJtYXBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1c1RvQ2hhbm5lbFN0YXR1cyIsIl9wZWVyQ29ubmVjdGlvbiRjdXJyZSIsIl90aGlzJF9jaGFubmVsQ29udGV4dDIiLCJfcGVlckNvbm5lY3Rpb24kZ2V0VHIiLCJfcGVlckNvbm5lY3Rpb24kZ2V0VHIyIiwicGFyc2VkUmVtb3RlRGVzY3JpcHRpb24iLCJyZWNlaXZlcnMiLCJnZXRWaWRlb1RyYWNrcyIsInZpZGVvVHJhY2tSZWNlaXZlciIsInN1cHBvcnRzR2V0VHJhbnNjZWl2ZXJzIiwidHJhbnNjZWl2ZXIiLCJnZXRBdWRpb1RyYWNrcyIsImF1ZGlvVHJhY2tSZWNlaXZlciIsImNyZWF0ZUVuY29kZWRTdHJlYW1QaXBlbGluZSIsInJlcXVpcmVzRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiIsImZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyQ29udGV4dCIsInJlcXVpcmVzRW5jb2RlZE1lZGlhVHJhbnNmb3JtIiwiZW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlckNvbnRleHQiLCJjb25maWd1cmVFbmNvZGVkU3RyZWFtUGlwZWxpbmUiLCJfSW5zZXJ0YWJsZVN0cmVhbXMkY28iLCJjb25maWd1cmVJbnNlcnRhYmxlU3RyZWFtVHJhbnNmb3JtYXRpb24iLCJ0cmFuc2Zvcm1lZFN0cmVhbSIsInJ0Y0Nvbm5lY3Rpb25Nb25pdG9yIiwicnRjQ29ubmVjdGlvbk1vbml0b3JTdGF0aXN0aWNTdWJzY3JpcHRpb24iLCJydGNTdGF0aXN0aWMiLCJzdGF0aXN0aWNzIiwiYXVkaW9UcmFja0ZhaWxlZCIsInZpZGVvVHJhY2tGYWlsZWQiLCJfYXBwbHlSdGNDb25maWd1cmF0aW9uIiwib3B0aW9uYWxQZWVyQ29ubmVjdGlvbiIsIm5ld1J0Y0NvbmZpZ3VyYXRpb24iLCJtYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzIiwiYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uIiwiX3BlZXJDb25uZWN0aW9uJGN1cnJlMiIsImlzQ2xpZW50T2ZmZXJGbG93IiwiaWNlUmVzdGFydCIsIm9mZmVyIiwiX21lZGlhU3RyZWFtJGdldFRyYWNrIiwiaGFzQWN0aXZlVHJhY2tzIiwic29tZSIsInJlYWR5U3RhdGUiLCJwYXVzZWQiLCJpc1JlbmRlcmluZ0ZyYW1lcyIsIlJlYWxUaW1lU3RyZWFtU3Vic2NyaWJlckZhY3RvcnkiLCJ0b2tlbkNhcGFiaWxpdGllcyIsImRldGVjdGlvblRpbWVvdXRJbk1pbGxpc2Vjb25kcyIsImlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lU3VwcG9ydGVkIiwic3RhcnRUaW1lIiwicmVzb2x2ZWQiLCJTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyIiwiU2tpcEZyYW1lIiwiRW5jb2RlZFZpZGVvQ2h1bmsiLCJjaHVuayIsImVuY29kZWRWaWRlb1N0cmVhbUNhbGxiYWNrIiwiRW5jb2RlZEF1ZGlvQ2h1bmsiLCJlbmNvZGVkQXVkaW9TdHJlYW1DYWxsYmFjayIsIl9lbmNvZGVkQXVkaW9TdHJlYW1DYWxsYmFjayIsImdldEludmFsaWRTdXJyb2dhdGVBdWRpb0RhdGEiLCJnZXRTdXJyb2dhdGVBdWRpb1NpbGVudFBlckNvZGVjIiwiX2VuY29kZWRWaWRlb1N0cmVhbUNhbGxiYWNrIiwic3Vycm9nYXRlIiwiZ2V0SW52YWxpZFN1cnJvZ2F0ZVZpZGVvSUZyYW1lIiwiZ2V0SW52YWxpZFN1cnJvZ2F0ZVZpZGVvUEZyYW1lIiwiZ2V0U3Vycm9nYXRlVmlkZW9JRnJhbWVQZXJDb2RlYyIsImdldFN1cnJvZ2F0ZVZpZGVvUEZyYW1lUGVyQ29kZWMiLCJtb2RlIiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9uIiwiRiIsIm5leHQiLCJfYXJyYXlMaWtlVG9BcnJheSIsImNvbnN0cnVjdG9yIiwiZnJvbSIsIlRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyIiwiVHJhbnNmb3JtTWVzc2FnZVR5cGUiLCJUcmFuc2Zvcm1NZXNzYWdlUm91dGVyIiwiY3JlYXRlVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXJGb3JUcmFjayIsIndvcmtlciIsInRlcm1pbmF0ZSIsInZpZGVvVHJhY2tNZWRpYVN0cmVhbVRyYWNrIiwiYXVkaW9UcmFja01lZGlhU3RyZWFtVHJhY2siLCJfY29uZmlndXJlRW5jb2RlZFN0cmVhbVBpcGVsaW5lIiwiYWRkVHJhY2tUcmFuc2Zvcm1zIiwiY29uZmlndXJlUlRDUnRwU2NyaXB0VHJhbnNmb3JtIiwiY29uZmlndXJlRW5jb2RlZFN0cmVhbXMiLCJ0cmFuc2Zvcm1GdW5jdGlvbk5hbWUiLCJwb3N0TWVzc2FnZSIsIkFkZFRyYW5zZm9ybSIsImNvbmZpZ3VyZVJUQ1J0cFNjcmlwdFRyYW5zZm9ybUZvclRyYWNrIiwidHJhY2tSZWNlaXZlciIsInRyYWNrTWVkaWFTdHJlYW1UcmFjayIsInRyYWNrVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIiLCJ0cmFuc2Zvcm0iLCJQaXBlbGluZUNvbmZpZ3VyZWQiLCJvbmNlIiwiY29uZmlndXJlRW5jb2RlZFN0cmVhbXNGb3JUcmFjayIsImFjdGlvbnMiLCJlbmNvZGVkUmVjZWl2ZXJTdHJlYW1zIiwiQ29uZmlndXJlUGlwZWxpbmUiLCJzb3VyY2UiLCJyZWFkYWJsZSIsInNpbmsiLCJ0cmFuc2ZlciIsImluc2VydGFibGVTdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayIsImNvbnRyb2xsZXIiLCJ0cmFuc2Zvcm1lciIsIlRyYW5zZm9ybVN0cmVhbSIsInByb2Nlc3NvciIsImdlbmVyYXRvciIsInBpcGVUaHJvdWdoIiwicGlwZVRvIiwicmVtb3ZlVHJhY2siLCJhdWRpb1B1bXBlciIsIkF1ZGlvIiwiYXBwZW5kQ2hpbGQiLCJyZW1vdmVDaGlsZCIsImFubmV4QkZvdXJCeXRlU3RhcnRDb2RlIiwic3Vycm9nYXRlSDI2NDI4eDE2SUZyYW1lIiwic3Vycm9nYXRlSDI2NDI4eDE2UEZyYW1lIiwiX2R1bW15QXVkaW9TaWxlbnRQZXJDb2RlYyIsImJ1ZmZlciIsIl9zaW5nbGVaZXJvQnl0ZSIsIl9pc1NhZmFyaSIsIl9zdXJyb2dhdGUyOHgxNkgyNjRJRnJhbWUiLCJfZHVtbXkyeDJWaWRlb0lGcmFtZVBlckNvZGVjIiwiX2lzQW5kcm9pZENocm9tZSIsIl9zdXJyb2dhdGUyOHgxNlBGcmFtZUZyYW1lTnVtYmVyIiwiX3N1cnJvZ2F0ZTI4eDE2UEZyYW1lRnJhbWVOdW1iZXJSZXNldCIsIl9zdXJyb2dhdGUyOHgxNkgyNjRQRnJhbWUiLCJfZHVtbXkyeDJWaWRlb1BGcmFtZVBlckNvZGVjIiwiX1N1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIiLCJpc0FuZHJvaWQiLCJUcmFuc2Zvcm1QaXBlbGluZU1lc3NhZ2VSb3V0ZXIiLCJtZXNzYWdlVHlwZSIsInJvdXRlTWVzc2FnZSIsIl9tZXNzYWdlUm91dGVzIiwicm91dGVNZXNzYWdlRGF0YSIsIkNodW5rIiwiTWV0YWRhdGEiLCJfX0JVSUxEX1ZFUlNJT05fXyIsIl9kZWZhdWx0VmVyc2lvbiIsIlRlbGVtZXRyeVNlcnZpY2UiLCJfdGVsZW1ldHJ5U2VydmljZSIsInZhbHVlT2YiLCJsb2dSZWNvcmQiLCJfbG9ncyIsInNlbmRMb2dzSWZBYmxlIiwibG9nTWVzc2FnZXMiLCJfc2VuZExvZ3NJZkFibGUiLCJudW1iZXJPZkxvZ3NUb1NlbmQiLCJzaXplT2ZMb2dzVG9TZW5kIiwiZ2V0SXRlbVNpemUiLCJnZXRMb2dTaXplIiwic3VtIiwiZHVyYXRpb24iLCJfZHVyYXRpb24iLCJpc05lZ2F0aXZlIiwiYWJzIiwib2Zmc2V0IiwibWlsbGlzZWNvbmRzIiwic2Vjb25kcyIsIm1pbnV0ZXMiLCJob3VycyIsInBhcnRzIiwiU3RyaW5nIiwicGFkU3RhcnQiLCJ0YXJnZXRMZW5ndGgiLCJwYWRTdHJpbmciLCJyZXBlYXQiLCJkZWZhdWx0QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsImRlZmF1bHRNaW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiZGVmYXVsdE1heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJiYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwibWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsIm1heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJfYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsIl9taW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiX21heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJiYWNrb2ZmSW50ZXJ2YWxJblNlY29uZHMiLCJyYW5kb21pemF0aW9uIiwiZXhwb25lbnRpYWxCYWNrb2ZmIiwiZXhwb25lbnRpYWxCYWNrb2ZmV2l0aFJhbmRvbWl6YXRpb24iLCJleHBvbmVudGlhbEJhY2tvZmZXaXRoUmFuZG9taXphdGlvbkluTWlsbGlzZWNvbmQiLCJtYXgiLCJtaW4iLCJvdGhlciIsIl9uZXR3b3JrTW9uaXRvciIsInJlY29yZEZvcmVncm91bmRDaGFuZ2UiLCJyZWNvcmROZXR3b3JrUlRUVXBkYXRlIiwicmVjb3JkTmV0d29ya1R5cGVDaGFuZ2VVcGRhdGUiLCJkb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSIsInJlY29yZE5ldHdvcmtEb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eVVwZGF0ZSIsInRpbWVTaW5jZUxhc3RDaGFuZ2UiLCJuZXdSVFQiLCJvbGRSdHQiLCJfbGFzdE5ldHdvcmtTdGF0aXN0aWNzIiwibmV3TmV0d29ya1R5cGUiLCJvbGROZXR3b3JrVHlwZSIsIm5ld0NhcGFjaXR5Iiwib2xkQ2FwYWNpdHkiLCJub29wIiwiY2hhbm5lbFN0YXJ0VGltZSIsIl9zdHJlYW1JZCIsIl9zdGFydFJlY29yZGluZ0ZpcnN0RnJhbWUiLCJfbGlzdGVuVG9GaXJzdFRpbWUiLCJjYWxsVGltZVRvRmlyc3RGcmFtZSIsIl9jbGVhclRpbWVUb0ZpcnN0RnJhbWVMaXN0ZW5lciIsIl9saXN0ZW5Gb3JTdGFsbCIsIm9uU3RhbGwiLCJfbGlzdGVuRm9yQ29udGludWF0aW9uIiwiZXZlbnQiLCJvbkNvbnRpbnVhdGlvbiIsIl9jbGVhclJlYnVmZmVyaW5nTGlzdGVuZXIiLCJwdXNoVGltZVRvRmlyc3RGcmFtZSIsInB1c2hDaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lIiwiX3RpbWVUb0ZpcnN0RnJhbWUiLCJkdXJhdGlvblNpbmNlUGFnZUxvYWQiLCJfY2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZSIsIl92aWRlb1N0YWxsZWQiLCJidWZmZXJlZCIsImJ1ZmZlckxlbmd0aCIsImhhc05vdFByb2dyZXNzZWRTaW5jZUxhc3RQcm9ncmVzc0V2ZW50IiwiZW5kIiwiX2xhc3RQcm9ncmVzcyIsInRpbWVTaW5jZVN0b3AiLCJuZXdSZXNvbHV0aW9uIiwiX3ZpZGVvUmVzb2x1dGlvbiJdLCJzb3VyY2VSb290IjoiIn0=
|