Commit e0e4247e9a4e3643b689ab95aba9c5b80f2910d7

Authored by yangzhi
1 parent f352d67e

d

uniapp-wuduhuajiao/pages/meeting/meeting.nvue
... ... @@ -165,7 +165,6 @@
165 165 userSig: '',
166 166 roomId: 0,
167 167 userId: '',
168   - starting: false,
169 168 userType: '等待进入',
170 169 appScene: TRTCAppScene.TRTCAppSceneVideoCall, // TRTCAppSceneVideoCall
171 170 isFrontCamera: true,
... ... @@ -422,7 +421,7 @@
422 421 });
423 422 },
424 423 handleStartMeeting() {
425   - this.starting = true;
  424 + this.meeting = true;
426 425 this.$nextTick(() => {
427 426 this.createTrtcCloud();
428 427 this.enterRoom();
... ... @@ -500,7 +499,7 @@
500 499 },
501 500 exitRoom() {
502 501 try {
503   - this.starting = false;
  502 + this.meeting = false;
504 503 this.stopLocalPreview();
505 504 this.stopRemoteView();
506 505 this.trtcCloud.exitRoom();
... ...
uniapp-wuduhuajiao/uniapp-wuduhuajiao.rar
No preview for this file type
uniapp-wuduhuajiao/unpackage/dist/dev/app-plus/pages/meeting/meeting.js
... ... @@ -2446,7 +2446,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _D_P
2446 2446 /***/ (function(module, exports, __webpack_require__) {
2447 2447  
2448 2448 "use strict";
2449   -eval("/* WEBPACK VAR INJECTION */(function(__webpack_provided_uni_dot_requireNativePlugin, __f__) {Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar _vuex = __webpack_require__(/*! vuex */ 12);\n\n\nvar _permission = _interopRequireDefault(__webpack_require__(/*! @/TrtcCloud/permission.js */ 13));\nvar _index = _interopRequireDefault(__webpack_require__(/*! @/TrtcCloud/lib/index */ 14));\nvar _TrtcDefines = __webpack_require__(/*! @/TrtcCloud/lib/TrtcDefines */ 16);\n\n\n\n\n\nvar _GenerateTestUserSig = __webpack_require__(/*! @/debug/GenerateTestUserSig */ 17);\n\n\nvar _TrtcLocalView = _interopRequireDefault(__webpack_require__(/*! @/TrtcCloud/view/TrtcLocalView */ 19));\nvar _TrtcRemoteView = _interopRequireDefault(__webpack_require__(/*! @/TrtcCloud/view/TrtcRemoteView */ 25));\n\n\nvar _index2 = _interopRequireDefault(__webpack_require__(/*! @/apis/index.js */ 30));\nvar _config = _interopRequireDefault(__webpack_require__(/*! @/common/config/config.js */ 38));\nvar _service = _interopRequireDefault(__webpack_require__(/*! @/service/service.js */ 33));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}function ownKeys(object, enumerableOnly) {var keys = Object.keys(object);if (Object.getOwnPropertySymbols) {var symbols = Object.getOwnPropertySymbols(object);if (enumerableOnly) symbols = symbols.filter(function (sym) {return Object.getOwnPropertyDescriptor(object, sym).enumerable;});keys.push.apply(keys, symbols);}return keys;}function _objectSpread(target) {for (var i = 1; i < arguments.length; i++) {var source = arguments[i] != null ? arguments[i] : {};if (i % 2) {ownKeys(Object(source), true).forEach(function (key) {_defineProperty(target, key, source[key]);});} else if (Object.getOwnPropertyDescriptors) {Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));} else {ownKeys(Object(source)).forEach(function (key) {Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));});}}return target;}function _defineProperty(obj, key, value) {if (key in obj) {Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });} else {obj[key] = value;}return obj;}var TrtcEvent = __webpack_provided_uni_dot_requireNativePlugin('globalEvent');\nvar socketTask = getApp().globalData.socketTask;var _default =\n{\n components: {\n TrtcLocalView: _TrtcLocalView.default,\n TrtcRemoteView: _TrtcRemoteView.default },\n\n data: function data() {\n return {\n hasInvite: false,\n //我\n meetingUserMy: {\n userId: 0 },\n\n\n //需方\n meetingCustomerUser: {\n userId: 0 },\n\n\n //供方\n meetingBusinessUser: {\n userId: 0 },\n\n\n //客服\n meetingServiceUser: {\n userId: 0 },\n\n\n num: 10,\n trtcCloud: null,\n sdkAppId: 0,\n userSig: '',\n roomId: 0,\n userId: '',\n starting: false,\n userType: '等待进入',\n appScene: _TrtcDefines.TRTCAppScene.TRTCAppSceneVideoCall, // TRTCAppSceneVideoCall\n isFrontCamera: true,\n streamType: _TrtcDefines.TRTCVideoStreamType.TRTCVideoStreamTypeBig,\n remoteUserId: '',\n audioRoute: _TrtcDefines.TRTCCloudDef.TRTC_AUDIO_ROUTE_SPEAKER,\n messageList: [],\n messageContent: '',\n myUserInfo: '',\n room: {},\n shopId: 0,\n sellerUserId: 0,\n\n param: {},\n joinType: 'customer' };\n\n },\n computed: _objectSpread({},\n (0, _vuex.mapState)(['user', 'statistics', 'common'])),\n\n onLoad: function onLoad(e) {var _this = this;\n __f__(\"log\", 'onload e', e, \" at pages/meeting/meeting.nvue:190\");\n __f__(\"log\", 'user', this.user, \" at pages/meeting/meeting.nvue:191\");\n this.param = e;\n\n //加入类型,是以什么身份加入的\n var joinType = e.joinType || 'customer';\n __f__(\"log\", 'onLoad joinType', joinType, \" at pages/meeting/meeting.nvue:196\");\n this.joinType = joinType;\n\n this.roomId = e.roomId;\n this.sellerUserId = e.userid;\n this.userId = 'user_' + this.user.id;\n this.meetingUserMy = {\n userId: this.userId,\n id: this.user.id };\n\n this.shopId = e.shop_id;\n\n if (joinType == 'customer') {\n //需方\n this.createRoom({\n \"name\": \"测试房间\",\n \"bodyText\": \"\",\n \"roomNo\": \"\",\n \"description\": \"\",\n \"clientId\": \"\",\n // \"productId\": e.goods_id,\n \"shopId\": e.shop_id });\n\n this.meetingCustomerUser = _objectSpread({},\n this.meetingUserMy);\n\n } else {\n this.room = {\n id: e.roomId,\n RoomNo: e.roomId };\n\n\n this.meetingCustomerUser = {\n userId: 'user_' + e.customerid.toString(),\n id: e.customerid };\n\n }\n\n if (joinType == 'seller') {\n //供方\n this.meetingBusinessUser = {\n userId: this.meetingUserMy.userId,\n id: this.meetingUserMy.id };\n\n\n }\n if (joinType == 'service') {\n //平台客服\n this.meetingServiceUser = {\n userId: this.meetingUserMy.userId,\n id: this.meetingUserMy.id };\n\n }\n\n __f__(\"log\", 'onLoad meetingBusinessUser', this.meetingBusinessUser, \" at pages/meeting/meeting.nvue:250\");\n __f__(\"log\", 'onLoad meetingServiceUser', this.meetingServiceUser, \" at pages/meeting/meeting.nvue:251\");\n\n // this.getUserInfo(this.user.id,joinType);\n this.joinRoom();\n\n this.$forceUpdate();\n\n //文字聊天\n uni.$on('socketMessage', function (data) {\n __f__(\"log\", 'socketMessage', data, \" at pages/meeting/meeting.nvue:260\");\n if (data.messageType == 'send_to_room') {\n _this.messageList.push({\n author: data.realName,\n content: data.toMessage });\n\n }\n if (data.messageType == 'join') {\n var userid = data.userIntId;\n if (userid != _this.user.id) {\n //有用户加入房间\n var _joinType = data.messageContent;\n if (_joinType == 'seller') {\n _this.meetingBusinessUser.userId = 'user_' + userid;\n _this.meetingBusinessUser.id = userid;\n }\n if (_joinType == 'service') {\n _this.meetingServiceUser.userId = 'user_' + userid;\n _this.meetingServiceUser.id = userid;\n }\n }\n }\n });\n },\n onShow: function onShow() {},\n onHide: function onHide() {},\n mounted: function mounted() {\n if (uni.getSystemInfoSync().platform === 'android') {\n _permission.default.requestAndroidPermission('android.permission.RECORD_AUDIO');\n _permission.default.requestAndroidPermission('android.permission.CAMERA');\n }\n this.initUserSign();\n },\n onUnload: function onUnload() {\n this.destroyInstance();\n __f__(\"log\", '- onUnload', \" at pages/meeting/meeting.nvue:295\");\n },\n onBackPress: function onBackPress() {\n this.destroyInstance();\n },\n methods: {\n getUserInfo: function getUserInfo(userid, type) {var _this2 = this;\n __f__(\"log\", 'getUserInfo', userid, type, \" at pages/meeting/meeting.nvue:302\");\n _index2.default.message.getUserTypeInfo(userid).then(function (res) {\n __f__(\"log\", 'getUserTypeInfo', res, \" at pages/meeting/meeting.nvue:304\");\n if (type == 'customer') {\n __f__(\"log\", 'getUserTypeInfo type=customer', \" at pages/meeting/meeting.nvue:306\");\n _this2.meetingCustomerUser.userInfo = res.data[0];\n }\n if (type == 'seller') {\n __f__(\"log\", 'getUserTypeInfo type=seller', \" at pages/meeting/meeting.nvue:310\");\n _this2.meetingBusinessUser.userInfo = res.data[0];\n that.messageList.push({\n author: '系统',\n content: '供方加入房间' });\n\n }\n if (type == 'service') {\n __f__(\"log\", 'getUserTypeInfo type=service', \" at pages/meeting/meeting.nvue:318\");\n // this.meetingServiceUser.userInfo = res.data[0];\n that.messageList.push({\n author: '系统',\n content: '客服加入房间' });\n\n }\n __f__(\"log\", 'getUserTypeInfo meetingServiceUser', _this2.meetingServiceUser, \" at pages/meeting/meeting.nvue:325\");\n });\n },\n joinRoom: function joinRoom() {\n var param = {\n method: 'join',\n IsRoom: true,\n RoomNo: this.roomId,\n RoomName: this.room.RoomName,\n messageContent: this.joinType,\n token: _service.default.getTokenChaoge() };\n\n __f__(\"log\", 'joinRoom', param, \" at pages/meeting/meeting.nvue:337\");\n socketTask.send({\n data: JSON.stringify(param),\n success: function success(res) {},\n fail: function fail(e) {},\n complete: function complete() {} });\n\n },\n initUserSign: function initUserSign() {var _this3 = this;\n if (this.userId) {\n __f__(\"log\", 'initUserSign', this.userId, \" at pages/meeting/meeting.nvue:347\");\n // 生成 userSig\n var _genTestUserSig =\n\n\n (0, _GenerateTestUserSig.genTestUserSig)(this.userId),sdkAppId = _genTestUserSig.sdkAppId,userSig = _genTestUserSig.userSig;\n this.sdkAppId = sdkAppId;\n this.userSig = userSig;\n __f__(\"log\", 'sdkAppId,userSig', sdkAppId, userSig, \" at pages/meeting/meeting.nvue:355\");\n if (!sdkAppId || !userSig) {\n uni.showToast({\n title: '请填写 sdkAppId、userSig',\n icon: 'none' });\n\n }\n } else {\n setTimeout(function () {\n _this3.initUserSign();\n }, 200);\n }\n },\n handleToSubmitOrder: function handleToSubmitOrder() {\n uni.navigateBack();\n },\n //邀请商家客服\n handleInviteBusinessUser: function handleInviteBusinessUser() {\n _index2.default.message.getInviteBusinessUserJoin(this.shopId, this.room.RoomNo, this.sellerUserId).then(function (res) {});\n },\n //邀请平台客服\n handleInviteServiceUser: function handleInviteServiceUser() {var _this4 = this;\n uni.showLoading();\n _index2.default.message.getInviteServiceUserJoin(this.room.RoomNo, 'joinMultiplayerVideo').then(function (res) {\n uni.showToast({\n title: '邀请成功' });\n\n _this4.hasInvite = true;\n }).finally(function () {\n uni.hideLoading();\n });\n },\n createRoom: function createRoom(data) {var _this5 = this;\n uni.showLoading({\n title: '正在创建房间' });\n\n _index2.default.message.postAddRoom(data).then(function (res) {\n _this5.room = res.data;\n _this5.roomId = res.data.RoomNo;\n _this5.handleInviteBusinessUser();\n _this5.joinRoom();\n }).finally(function () {\n uni.hideLoading();\n });\n },\n\n sendMessage: function sendMessage() {\n var that = this;\n that.messageList.push({\n author: '我',\n content: that.messageContent });\n\n that.messageContent = '';\n socketTask.send({\n data: JSON.stringify({\n formUserId: this.userId,\n contentType: \"\",\n content: this.messageContent,\n sendTime: new Date(),\n method: 'send_to_room',\n RoomNo: this.room.RoomNo,\n RoomName: this.room.Name,\n IsRoom: true }),\n\n success: function success(res) {},\n fail: function fail(e) {},\n complete: function complete() {} });\n\n },\n handleStartMeeting: function handleStartMeeting() {var _this6 = this;\n this.starting = true;\n this.$nextTick(function () {\n _this6.createTrtcCloud();\n _this6.enterRoom();\n _this6.startLocalPreview();\n });\n },\n handleEndtMeeting: function handleEndtMeeting() {\n this.meeting = false;\n this.stopLocalPreview();\n this.exitRoom();\n this.destroyInstance();\n },\n\n bindInputChange: function bindInputChange(event, type) {\n var value = event.detail.value;\n switch (type) {\n case 'roomId':{\n this.roomId = value;\n break;\n }\n case 'userId':{\n this.userId = value;\n break;\n }}\n\n },\n destroyInstance: function destroyInstance() {\n if (this.trtcCloud) {\n _index.default.destroyInstance();\n this.trtcCloud = null;\n }\n },\n createTrtcCloud: function createTrtcCloud() {\n __f__(\"log\", 'createTrtcCloud', this.sdkAppId, \" at pages/meeting/meeting.nvue:459\");\n this.trtcCloud = _index.default.createInstance();\n __f__(\"log\", 'this.trtcCloud', this.trtcCloud, \" at pages/meeting/meeting.nvue:461\");\n this.handleEvents();\n this.sdkAppId && uni.$createTrtcCloudUpload(this.sdkAppId);\n },\n enterRoom: function enterRoom() {\n try {var\n\n sdkAppId =\n\n\n this.sdkAppId,appScene = this.appScene,userSig = this.userSig;\n var param = {\n roomId: 0,\n strRoomId: this.room.RoomNo,\n userId: this.userId,\n sdkAppId: sdkAppId,\n userSig: userSig };\n\n __f__(\"log\", 'enterRoom', param, \" at pages/meeting/meeting.nvue:479\");\n this.trtcCloud.enterRoom(param, appScene);\n this.sdkAppId && uni.$enterRoomSuccessUpload(this.sdkAppId);\n\n var userId = this.userId;\n if (this.meetingBusinessUser.userId == userId) {\n this.meetingBusinessUser.meeting = true;\n }\n if (this.meetingCustomerUser.userId == userId) {\n this.meetingCustomerUser.meeting = true;\n }\n if (this.meetingServiceUser.userId == userId) {\n this.meetingServiceUser.meeting = true;\n }\n\n } catch (error) {\n this.messageList.unshift({\n content: \"enterRoom error = \".concat(JSON.stringify(error)) });\n\n this.sdkAppId && uni.$enterRoomFailedUpload(this.sdkAppId, JSON.stringify(error));\n }\n },\n exitRoom: function exitRoom() {\n try {\n this.starting = false;\n this.stopLocalPreview();\n this.stopRemoteView();\n this.trtcCloud.exitRoom();\n } catch (e) {\n // TODO handle the exception\n }\n },\n startLocalPreview: function startLocalPreview() {var _this7 = this;\n this.$nextTick(function () {\n __f__(\"log\", 'startLocalPreview', _this7.userId, \" at pages/meeting/meeting.nvue:513\");\n _this7.meeting = true;\n _this7.trtcCloud.startLocalPreview(_this7.isFrontCamera, _this7.userId);\n _this7.trtcCloud.startLocalAudio(_TrtcDefines.TRTCAudioQuality.TRTCAudioQualityDefault);\n _this7.sdkAppId && uni.$startLocalPreviewUpload(_this7.sdkAppId);\n });\n },\n stopLocalPreview: function stopLocalPreview() {\n this.trtcCloud.stopLocalPreview();\n },\n startRemoteView: function startRemoteView(userId) {var _this8 = this;\n this.$nextTick(function () {\n _this8.trtcCloud.startRemoteView(userId, _this8.streamType, userId);\n _this8.sdkAppId && uni.$startRemoteViewSuccessUpload(_this8.sdkAppId);\n });\n if (this.meetingBusinessUser.userId == userId) {\n this.meetingBusinessUser.meeting = true;\n }\n if (this.meetingCustomerUser.userId == userId) {\n this.meetingCustomerUser.meeting = true;\n }\n if (this.meetingServiceUser.userId == userId) {\n this.meetingServiceUser.meeting = true;\n }\n },\n stopRemoteView: function stopRemoteView(userId) {\n this.trtcCloud.stopRemoteView(userId, this.streamType);\n if (this.meetingBusinessUser.userId == userId) {\n this.meetingBusinessUser.meeting = false;\n }\n if (this.meetingCustomerUser.userId == userId) {\n this.meetingCustomerUser.meeting = false;\n }\n if (this.meetingServiceUser.userId == userId) {\n this.meetingServiceUser.meeting = false;\n }\n\n },\n // 听筒、免提 切换\n switchAudioRoute: function switchAudioRoute() {\n this.audioRoute = this.audioRoute === _TrtcDefines.TRTCCloudDef.TRTC_AUDIO_ROUTE_SPEAKER ? _TrtcDefines.TRTCCloudDef.\n TRTC_AUDIO_ROUTE_EARPIECE : _TrtcDefines.TRTCCloudDef.TRTC_AUDIO_ROUTE_SPEAKER;\n this.trtcCloud.setAudioRoute(this.audioRoute);\n },\n handleEvents: function handleEvents() {var _this9 = this;\n this.trtcCloud.on('onWarning', function (res) {\n uni.showToast({\n title: \"onWarning: \".concat(JSON.stringify(res)),\n icon: 'none' });\n\n });\n this.trtcCloud.on('onError', function (res) {\n __f__(\"log\", 'onError', res, \" at pages/meeting/meeting.nvue:565\");\n _this9.messageList.unshift({\n content: \"error: \".concat(JSON.stringify(res)) });\n\n _this9.sdkAppId && uni.$onErrorUpload(_this9.sdkAppId, JSON.stringify(res));\n });\n this.trtcCloud.on('onEnterRoom', function (result) {\n __f__(\"log\", \"- onEnterRoom = \".concat(result), \" at pages/meeting/meeting.nvue:572\");\n if (result > 0) {\n _this9.messageList.unshift({\n content: \"\\u8FDB\\u623F\\u6210\\u529F\\uFF0C\\u8017\\u65F6: \".concat(result, \"ms\") });\n\n } else {\n __f__(\"log\", \"enter room failed\\uFF0Cerror code = \".concat(result), \" at pages/meeting/meeting.nvue:578\");\n }\n });\n this.trtcCloud.on('onExitRoom', function (reason) {\n var reasonList = ['主动调用 exitRoom 退房', '被服务器踢出当前房间', '当前房间整个被解散'];\n _this9.messageList.unshift({\n content: \"\\u9000\\u623F \".concat(reasonList[reason]) });\n\n _this9.meeting = false;\n });\n this.trtcCloud.on('onFirstVideoFrame', function (res) {\n __f__(\"log\", \"\\u6E32\\u67D3\\u7684\\u9996\\u5E27\\u753B\\u9762\\u54CD\\u5E94 = \".concat(JSON.stringify(res)), \" at pages/meeting/meeting.nvue:589\");\n });\n this.trtcCloud.on('onRemoteUserEnterRoom', function (userId) {\n __f__(\"log\", 'onRemoteUserEnterRoom', userId, \" at pages/meeting/meeting.nvue:592\");\n _this9.messageList.unshift({\n content: \"\\u7528\\u6237\".concat(userId, \"\\u52A0\\u5165\\u89C6\\u9891\\u804A\\u5929\") });\n\n _this9.startRemoteView(userId);\n });\n this.trtcCloud.on('onRemoteUserLeaveRoom', function (userId) {\n var index = _this9.meetingUsers.findIndex(function (t) {return t.userId == userId;});\n if (index >= 0) {\n _this9.meetingUsers.splice(index, 1);\n }\n if (_this9.meetingUsers.length < 2) {\n _this9.meetingUsers.push({\n type: '等待进入' });\n\n }\n _this9.messageList.unshift({\n content: \"\\u7528\\u6237\\u79BB\\u5F00\\u623F\\u95F4: userId = \".concat(userId) });\n\n\n\n });\n this.trtcCloud.on('onUserVideoAvailable', function (res) {var\n\n userId =\n\n res.userId,available = res.available;\n if (available) {\n _this9.startLocalPreview();\n }\n if (userId && available) {\n _this9.startRemoteView(userId);\n } else {\n _this9.stopRemoteView(userId);\n }\n });\n this.trtcCloud.on('onExitRoom', function (res) {\n __f__(\"log\", \"onExitRoom = \".concat(JSON.stringify(res)), \" at pages/meeting/meeting.nvue:629\");\n });\n } } };exports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-hbuilderx/packages/uni-app-plus-nvue/dist/require-native-plugin.js */ 10)[\"default\"], __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 11)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvbWVldGluZy9tZWV0aW5nLm52dWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBK0dBOzs7QUFHQTtBQUNBO0FBQ0E7Ozs7OztBQU1BOzs7QUFHQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0EsMkYsd25DQUpBO0FBS0EsZ0Q7QUFDQTtBQUNBO0FBQ0EseUNBREE7QUFFQSwyQ0FGQSxFQURBOztBQUtBLE1BTEEsa0JBS0E7QUFDQTtBQUNBLHNCQURBO0FBRUE7QUFDQTtBQUNBLGlCQURBLEVBSEE7OztBQU9BO0FBQ0E7QUFDQSxpQkFEQSxFQVJBOzs7QUFZQTtBQUNBO0FBQ0EsaUJBREEsRUFiQTs7O0FBaUJBO0FBQ0E7QUFDQSxpQkFEQSxFQWxCQTs7O0FBc0JBLGFBdEJBO0FBdUJBLHFCQXZCQTtBQXdCQSxpQkF4QkE7QUF5QkEsaUJBekJBO0FBMEJBLGVBMUJBO0FBMkJBLGdCQTNCQTtBQTRCQSxxQkE1QkE7QUE2QkEsc0JBN0JBO0FBOEJBLCtEQTlCQSxFQThCQTtBQUNBLHlCQS9CQTtBQWdDQSx5RUFoQ0E7QUFpQ0Esc0JBakNBO0FBa0NBLG9FQWxDQTtBQW1DQSxxQkFuQ0E7QUFvQ0Esd0JBcENBO0FBcUNBLG9CQXJDQTtBQXNDQSxjQXRDQTtBQXVDQSxlQXZDQTtBQXdDQSxxQkF4Q0E7O0FBMENBLGVBMUNBO0FBMkNBLDBCQTNDQTs7QUE2Q0EsR0FuREE7QUFvREE7QUFDQSx1REFEQSxDQXBEQTs7QUF1REEsUUF2REEsa0JBdURBLENBdkRBLEVBdURBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBREE7QUFFQSxzQkFGQTs7QUFJQTs7QUFFQTtBQUNB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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQTdPQTtBQThPQSxrQkE5T0EsMEJBOE9BLE1BOU9BLEVBOE9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsS0ExUEE7QUEyUEE7QUFDQSxvQkE1UEEsOEJBNFBBO0FBQ0E7QUFDQSwrQkFEQSxHQUNBLGtEQURBO0FBRUE7QUFDQSxLQWhRQTtBQWlRQSxnQkFqUUEsMEJBaVFBO0FBQ0E7QUFDQTtBQUNBLDBEQURBO0FBRUEsc0JBRkE7O0FBSUEsT0FMQTtBQU1BO0FBQ0E7QUFDQTtBQUNBLHdEQURBOztBQUdBO0FBQ0EsT0FOQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0ZBREE7O0FBR0EsU0FKQSxNQUlBO0FBQ0E7QUFDQTtBQUNBLE9BVEE7QUFVQTtBQUNBO0FBQ0E7QUFDQSw2REFEQTs7QUFHQTtBQUNBLE9BTkE7QUFPQTtBQUNBO0FBQ0EsT0FGQTtBQUdBO0FBQ0E7QUFDQTtBQUNBLHdGQURBOztBQUdBO0FBQ0EsT0FOQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBREE7O0FBR0E7QUFDQTtBQUNBLG1GQURBOzs7O0FBS0EsT0FmQTtBQWdCQTs7QUFFQSxjQUZBOztBQUlBLFdBSkEsQ0FFQSxNQUZBLENBR0EsU0FIQSxHQUlBLEdBSkEsQ0FHQSxTQUhBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBRkEsTUFFQTtBQUNBO0FBQ0E7QUFDQSxPQWJBO0FBY0E7QUFDQTtBQUNBLE9BRkE7QUFHQSxLQTNVQSxFQXRLQSxFIiwiZmlsZSI6IjQ2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxyXG5cdDx2aWV3PlxyXG5cdFx0PGltYWdlIHNyYz1cIi4uLy4uL3N0YXRpYy9ob21lL2JhbmNrMi5wbmdcIiBzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7XCIgbW9kZT1cIndpZHRoRml4XCI+PC9pbWFnZT5cclxuXHRcdDx2aWV3IGNsYXNzPVwiYmFja1wiPlxyXG5cdFx0XHQ8IS0tIOW5s+WPsOWuouacjSAtLT5cclxuXHRcdFx0PHZpZXcgY2xhc3M9XCJsaXN0MVwiIHN0eWxlPVwiYWxpZ24taXRlbXM6IGNlbnRlcjtvdmVyZmxvdzogaGlkZGVuO1wiPlxyXG5cdFx0XHRcdDx0ZXh0IGNsYXNzPVwibmFtZVwiIHYtaWY9XCIhbWVldGluZ1NlcnZpY2VVc2VyLnVzZXJJZFwiPnt7ICfnrYnlvoXlrqLmnI3ov5vlhaUnIH19PC90ZXh0PlxyXG5cdFx0XHRcdDx0ZXh0IGNsYXNzPVwibmFtZVwiIHYtZWxzZT7lrqLmnI1cclxuXHRcdFx0XHRcdHt7IG1lZXRpbmdTZXJ2aWNlVXNlci51c2VySW5mbyAmJiBtZWV0aW5nU2VydmljZVVzZXIudXNlckluZm8ubmFtZSB8fCAnJyB9fTwvdGV4dD5cclxuXHRcdFx0XHQ8dmlldyBzdHlsZT1cImhlaWdodDozNjBycHg7ZmxleC1kaXJlY3Rpb246IHJvdztqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjttYXJnaW46IDAgYXV0bztcIj5cclxuXHRcdFx0XHRcdDx2aWV3XHJcblx0XHRcdFx0XHRcdDpjbGFzcz1cInsnaGlkZSc6IShtZWV0aW5nU2VydmljZVVzZXIudXNlcklkICYmIHVzZXJJZCA9PSBtZWV0aW5nU2VydmljZVVzZXIudXNlcklkICYmIG1lZXRpbmdTZXJ2aWNlVXNlci5tZWV0aW5nKX1cIj5cclxuXHRcdFx0XHRcdFx0PHRydGMtbG9jYWwtdmlldyA6dmlld0lkPVwibWVldGluZ1NlcnZpY2VVc2VyLnVzZXJJZFwiIHN0eWxlPVwiaGVpZ2h0OiAzODBycHg7d2lkdGg6IDM2MHJweDtcIj5cclxuXHRcdFx0XHRcdFx0PC90cnRjLWxvY2FsLXZpZXc+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8dmlld1xyXG5cdFx0XHRcdFx0XHQ6Y2xhc3M9XCJ7J2hpZGUnOiEobWVldGluZ1NlcnZpY2VVc2VyLnVzZXJJZCAmJiB1c2VySWQgIT0gbWVldGluZ1NlcnZpY2VVc2VyLnVzZXJJZCAmJiBtZWV0aW5nU2VydmljZVVzZXIubWVldGluZyl9XCI+XHJcblx0XHRcdFx0XHRcdDx0cnRjLXJlbW90ZS12aWV3IDp1c2VySWQ9XCJtZWV0aW5nU2VydmljZVVzZXIudXNlcklkXCIgOnZpZXdJZD1cIm1lZXRpbmdTZXJ2aWNlVXNlci51c2VySWRcIlxyXG5cdFx0XHRcdFx0XHRcdHN0eWxlPVwiaGVpZ2h0OiAzNjBycHg7d2lkdGg6IDMwMHJweDtib3JkZXI6IDFweCBzb2xpZCAjZmZmO1wiPlxyXG5cdFx0XHRcdFx0XHQ8L3RydGMtcmVtb3RlLXZpZXc+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8aW1hZ2Ugdi1pZj1cIiFtZWV0aW5nU2VydmljZVVzZXIubWVldGluZ1wiIHYtZWxzZSBzcmM9XCIuLi8uLi9zdGF0aWMvaG9tZS9yZW4gKDEpLndlYnBcIlxyXG5cdFx0XHRcdFx0XHRzdHlsZT1cIndpZHRoOiAzODBycHg7aGVpZ2h0OiAzNjBycHg7Ym9yZGVyLXJhZGl1czogNDBycHg7XCIgbW9kZT1cImFzcGVjdEZpbGxcIj5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdFx0PHZpZXcgc3R5bGU9XCJmbGV4LWRpcmVjdGlvbjogcm93O2p1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kO3dpZHRoOiAxMDB2dztcIj5cclxuXHRcdFx0XHQ8IS0t5L6b5pa5LS0+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJsaXN0MVwiIHN0eWxlPVwid2lkdGg6IDMwMHJweDttYXJnaW4tcmlnaHQ6IDIwcHg7XCI+XHJcblx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cIm5hbWVcIiB2LWlmPVwiIW1lZXRpbmdCdXNpbmVzc1VzZXIudXNlcklkXCI+562J5b6F5L6b5pa56L+b5YWlPC90ZXh0PlxyXG5cdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJuYW1lXCIgdi1lbHNlPuS+m+aWuVxyXG5cdFx0XHRcdFx0XHR7eyBtZWV0aW5nQnVzaW5lc3NVc2VyLnVzZXJJbmZvICYmIG1lZXRpbmdCdXNpbmVzc1VzZXIudXNlckluZm8ubmFtZSB8fCAnJyB9fTwvdGV4dD5cclxuXHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDozNjBycHg7XCI+XHJcblx0XHRcdFx0XHRcdDx2aWV3XHJcblx0XHRcdFx0XHRcdFx0OmNsYXNzPVwieydoaWRlJzohKG1lZXRpbmdCdXNpbmVzc1VzZXIgJiYgbWVldGluZ0J1c2luZXNzVXNlci51c2VySWQgJiYgbWVldGluZ0J1c2luZXNzVXNlci51c2VySWQgPT0gdXNlcklkICYmIG1lZXRpbmdCdXNpbmVzc1VzZXIubWVldGluZyl9XCI+XHJcblx0XHRcdFx0XHRcdFx0PHRydGMtbG9jYWwtdmlldyA6dmlld0lkPVwibWVldGluZ0J1c2luZXNzVXNlci51c2VySWRcIiBzdHlsZT1cImhlaWdodDogMzgwcnB4O3dpZHRoOiAzNjBycHg7XCI+XHJcblx0XHRcdFx0XHRcdFx0PC90cnRjLWxvY2FsLXZpZXc+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0PHZpZXdcclxuXHRcdFx0XHRcdFx0XHQ6Y2xhc3M9XCJ7J2hpZGUnOiEobWVldGluZ0J1c2luZXNzVXNlciAmJiBtZWV0aW5nQnVzaW5lc3NVc2VyLnVzZXJJZCAmJiBtZWV0aW5nQnVzaW5lc3NVc2VyLnVzZXJJZCAhPSB1c2VySWQgJiYgIW1lZXRpbmdCdXNpbmVzc1VzZXIubWVldGluZyl9XCI+XHJcblx0XHRcdFx0XHRcdFx0PHRydGMtcmVtb3RlLXZpZXcgOnVzZXJJZD1cIm1lZXRpbmdCdXNpbmVzc1VzZXIudXNlcklkXCIgOnZpZXdJZD1cIm1lZXRpbmdCdXNpbmVzc1VzZXIudXNlcklkXCJcclxuXHRcdFx0XHRcdFx0XHRcdHN0eWxlPVwiaGVpZ2h0OiAzNjBycHg7d2lkdGg6IDMwMHJweDtib3JkZXI6IDFweCBzb2xpZCAjZmZmO1wiPlxyXG5cdFx0XHRcdFx0XHRcdDwvdHJ0Yy1yZW1vdGUtdmlldz5cclxuXHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8aW1hZ2VcclxuXHRcdFx0XHRcdFx0XHR2LWlmPVwiIW1lZXRpbmdCdXNpbmVzc1VzZXIgfHwgIW1lZXRpbmdCdXNpbmVzc1VzZXIudXNlcklkIHx8ICFtZWV0aW5nQnVzaW5lc3NVc2VyLm1lZXRpbmdcIlxyXG5cdFx0XHRcdFx0XHRcdHNyYz1cIi4uLy4uL3N0YXRpYy9ob21lL3JlbiAoMikud2VicFwiXHJcblx0XHRcdFx0XHRcdFx0c3R5bGU9XCJ3aWR0aDogMzAwcnB4O2hlaWdodDogMzYwcnB4O2JvcmRlci1yYWRpdXM6IDQwcnB4O1wiIG1vZGU9XCJhc3BlY3RGaWxsXCI+XHJcblx0XHRcdFx0XHRcdDwvaW1hZ2U+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PC92aWV3PlxyXG5cclxuXHRcdFx0XHQ8IS0t6ZyA5pa5LS0+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJsaXN0MVwiIHN0eWxlPVwid2lkdGg6IDMwMHJweDttYXJnaW4tcmlnaHQ6IDIwcHg7XCI+XHJcblx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cIm5hbWVcIiB2LWlmPVwiIW1lZXRpbmdDdXN0b21lclVzZXIudXNlcklkXCI+562J5b6F6ZyA5pa56L+b5YWlPC90ZXh0PlxyXG5cdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJuYW1lXCIgdi1lbHNlPumcgOaWuVxyXG5cdFx0XHRcdFx0XHR7eyBtZWV0aW5nQ3VzdG9tZXJVc2VyLnVzZXJJbmZvICYmIG1lZXRpbmdDdXN0b21lclVzZXIudXNlckluZm8ubmFtZSB8fCAnJyB9fTwvdGV4dD5cclxuXHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDozNjBycHg7XCI+XHJcblx0XHRcdFx0XHRcdDx2aWV3XHJcblx0XHRcdFx0XHRcdFx0OmNsYXNzPVwieydoaWRlJzohKG1lZXRpbmdDdXN0b21lclVzZXIgJiYgbWVldGluZ0N1c3RvbWVyVXNlci51c2VySWQgJiYgbWVldGluZ0N1c3RvbWVyVXNlci51c2VySWQgPT0gdXNlcklkICYmIG1lZXRpbmdDdXN0b21lclVzZXIubWVldGluZyl9XCI+XHJcblx0XHRcdFx0XHRcdFx0PHRydGMtbG9jYWwtdmlldyA6dmlld0lkPVwibWVldGluZ0N1c3RvbWVyVXNlci51c2VySWRcIiBzdHlsZT1cImhlaWdodDogMzgwcnB4O3dpZHRoOiAzNjBycHg7XCI+XHJcblx0XHRcdFx0XHRcdFx0PC90cnRjLWxvY2FsLXZpZXc+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0PHZpZXdcclxuXHRcdFx0XHRcdFx0XHQ6Y2xhc3M9XCJ7J2hpZGUnOiEobWVldGluZ0N1c3RvbWVyVXNlciAmJiBtZWV0aW5nQ3VzdG9tZXJVc2VyLnVzZXJJZCAmJiBtZWV0aW5nQ3VzdG9tZXJVc2VyLnVzZXJJZCAhPSB1c2VySWQgJiYgbWVldGluZ0N1c3RvbWVyVXNlci5tZWV0aW5nKX1cIj5cclxuXHRcdFx0XHRcdFx0XHQ8dHJ0Yy1yZW1vdGUtdmlldyA6dXNlcklkPVwibWVldGluZ0N1c3RvbWVyVXNlci51c2VySWRcIiA6dmlld0lkPVwibWVldGluZ0N1c3RvbWVyVXNlci51c2VySWRcIlxyXG5cdFx0XHRcdFx0XHRcdFx0c3R5bGU9XCJoZWlnaHQ6IDM2MHJweDt3aWR0aDogMzAwcnB4O2JvcmRlcjogMXB4IHNvbGlkICNmZmY7XCI+XHJcblx0XHRcdFx0XHRcdFx0PC90cnRjLXJlbW90ZS12aWV3PlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDxpbWFnZSB2LWlmPVwiIW1lZXRpbmdDdXN0b21lclVzZXIubWVldGluZ1wiIHNyYz1cIi4uLy4uL3N0YXRpYy9ob21lL3JlbiAoMikud2VicFwiXHJcblx0XHRcdFx0XHRcdFx0c3R5bGU9XCJ3aWR0aDogMzAwcnB4O2hlaWdodDogMzYwcnB4O2JvcmRlci1yYWRpdXM6IDQwcnB4O1wiIG1vZGU9XCJhc3BlY3RGaWxsXCI+XHJcblx0XHRcdFx0XHRcdDwvaW1hZ2U+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDx2aWV3IHN0eWxlPVwiZmxleC1kaXJlY3Rpb246IHJvdztqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcIj5cclxuXHRcdFx0XHQ8YmxvY2s+XHJcblx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cImJ0blwiIEBjbGljaz1cImhhbmRsZVN0YXJ0TWVldGluZ1wiIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAyMHJweDtcIj5cclxuXHRcdFx0XHRcdFx05byA5aeL6KeG6aKRXHJcblx0XHRcdFx0XHQ8L3RleHQ+XHJcblx0XHRcdFx0PC9ibG9jaz5cclxuXHRcdFx0XHQ8dGV4dCBjbGFzcz1cImJ0blwiIHYtaWY9XCJtZWV0aW5nXCIgQGNsaWNrPVwiaGFuZGxlRW5kdE1lZXRpbmdcIiBzdHlsZT1cIm1hcmdpbi1yaWdodDogMjBweDtcIj5cclxuXHRcdFx0XHRcdOaMguaWrVxyXG5cdFx0XHRcdDwvdGV4dD5cclxuXHRcdFx0XHQ8dGV4dCBjbGFzcz1cImJ0blwiIEBjbGljaz1cImhhbmRsZUludml0ZVNlcnZpY2VVc2VyXCIgdi1pZj1cIiFoYXNJbnZpdGUgJiYgam9pblR5cGUgPT0gJ2N1c3RvbWVyJ1wiXHJcblx0XHRcdFx0XHRzdHlsZT1cIm1hcmdpbi1yaWdodDogMjBycHg7XCI+XHJcblx0XHRcdFx0XHTpgoDor7flrqLmnI1cclxuXHRcdFx0XHQ8L3RleHQ+XHJcblx0XHRcdFx0PHRleHQgY2xhc3M9XCJidG5cIiB2LWlmPVwiam9pblR5cGUgPT0gJ2N1c3RvbWVyJ1wiIEBjbGljaz1cImhhbmRsZVRvU3VibWl0T3JkZXJcIj5cclxuXHRcdFx0XHRcdOeri+WNs+S4i+WNlVxyXG5cdFx0XHRcdDwvdGV4dD5cclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0XHQ8c2Nyb2xsLXZpZXcgOnNjcm9sbC15PVwidHJ1ZVwiIGNsYXNzPVwibWVzc2FnZVwiPlxyXG5cdFx0XHRcdDx2aWV3IHN0eWxlPVwid2lkdGg6IDMyMHB4O1wiPlxyXG5cdFx0XHRcdFx0PHZpZXcgdi1mb3I9XCJpdGVtIGluIG1lc3NhZ2VMaXN0XCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O2ZsZXgtZGlyZWN0aW9uOiByb3c7ZmxleC13cmFwOiB3cmFwO1wiPlxyXG5cdFx0XHRcdFx0XHQ8dGV4dCBzdHlsZT1cImNvbG9yOiAjRkZEQTk3IDtcIj57e2l0ZW0uYXV0aG9yIHx8ICfns7vnu58nfX06PC90ZXh0PlxyXG5cdFx0XHRcdFx0XHQ8dGV4dFxyXG5cdFx0XHRcdFx0XHRcdHN0eWxlPVwiY29sb3I6ICNmZmY7bWFyZ2luLWxlZnQ6IDEwcnB4O3dvcmQtYnJlYWs6IGJyZWFrLWFsbDt3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7d2hpdGUtc3BhY2U6IHByZS13cmFwO1wiPlxyXG5cdFx0XHRcdFx0XHRcdHt7aXRlbS5jb250ZW50fX1cclxuXHRcdFx0XHRcdFx0PC90ZXh0PlxyXG5cdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0PC9zY3JvbGwtdmlldz5cclxuXHRcdFx0PHZpZXdcclxuXHRcdFx0XHRzdHlsZT1cInBvc2l0aW9uOiBmaXhlZDtib3R0b206IDA7bGVmdDogMDtyaWdodDogMDtqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjthbGlnbi1pdGVtczogY2VudGVyO2JvdHRvbTogMjBweDtcIj5cclxuXHRcdFx0XHQ8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHBsYWNlaG9sZGVyPVwi5Zue5aSNXCIgcGxhY2Vob2xkZXItc3R5bGU9XCJjb2xvcjojZmZmXCIgdi1tb2RlbD1cIm1lc3NhZ2VDb250ZW50XCJcclxuXHRcdFx0XHRcdEBjb25maXJtPVwic2VuZE1lc3NhZ2VcIiBjb25maXJtLXR5cGU9XCJzZW5kXCIgLz5cclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0PC92aWV3PlxyXG5cdDwvdmlldz5cclxuPC90ZW1wbGF0ZT5cclxuPHNjcmlwdD5cclxuXHRpbXBvcnQge1xyXG5cdFx0bWFwU3RhdGVcclxuXHR9IGZyb20gJ3Z1ZXgnO1xyXG5cdGltcG9ydCBwZXJtaXNpb24gZnJvbSBcIkAvVHJ0Y0Nsb3VkL3Blcm1pc3Npb24uanNcIjtcclxuXHRpbXBvcnQgVHJ0Y0Nsb3VkIGZyb20gJ0AvVHJ0Y0Nsb3VkL2xpYi9pbmRleCc7XHJcblx0aW1wb3J0IHtcclxuXHRcdFRSVENBcHBTY2VuZSxcclxuXHRcdFRSVENWaWRlb1N0cmVhbVR5cGUsXHJcblx0XHRUUlRDQ2xvdWREZWYsXHJcblx0XHRUUlRDQXVkaW9RdWFsaXR5XHJcblx0fSBmcm9tICdAL1RydGNDbG91ZC9saWIvVHJ0Y0RlZmluZXMnO1xyXG5cdGltcG9ydCB7XHJcblx0XHRnZW5UZXN0VXNlclNpZ1xyXG5cdH0gZnJvbSAnQC9kZWJ1Zy9HZW5lcmF0ZVRlc3RVc2VyU2lnJztcclxuXHRpbXBvcnQgVHJ0Y0xvY2FsVmlldyBmcm9tICdAL1RydGNDbG91ZC92aWV3L1RydGNMb2NhbFZpZXcnO1xyXG5cdGltcG9ydCBUcnRjUmVtb3RlVmlldyBmcm9tICdAL1RydGNDbG91ZC92aWV3L1RydGNSZW1vdGVWaWV3JztcclxuXHRjb25zdCBUcnRjRXZlbnQgPSB1bmkucmVxdWlyZU5hdGl2ZVBsdWdpbignZ2xvYmFsRXZlbnQnKTtcclxuXHJcblx0aW1wb3J0IEFQSSBmcm9tICdAL2FwaXMvaW5kZXguanMnXHJcblx0aW1wb3J0IGNvbmZpZyBmcm9tICdAL2NvbW1vbi9jb25maWcvY29uZmlnLmpzJ1xyXG5cdGltcG9ydCBzZXJ2aWNlIGZyb20gJ0Avc2VydmljZS9zZXJ2aWNlLmpzJ1xyXG5cdGxldCBzb2NrZXRUYXNrID0gZ2V0QXBwKCkuZ2xvYmFsRGF0YS5zb2NrZXRUYXNrO1xyXG5cdGV4cG9ydCBkZWZhdWx0IHtcclxuXHRcdGNvbXBvbmVudHM6IHtcclxuXHRcdFx0VHJ0Y0xvY2FsVmlldzogVHJ0Y0xvY2FsVmlldyxcclxuXHRcdFx0VHJ0Y1JlbW90ZVZpZXc6IFRydGNSZW1vdGVWaWV3LFxyXG5cdFx0fSxcclxuXHRcdGRhdGEoKSB7XHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0aGFzSW52aXRlOiBmYWxzZSxcclxuXHRcdFx0XHQvL+aIkVxyXG5cdFx0XHRcdG1lZXRpbmdVc2VyTXk6IHtcclxuXHRcdFx0XHRcdHVzZXJJZDogMFxyXG5cdFx0XHRcdH0sXHJcblxyXG5cdFx0XHRcdC8v6ZyA5pa5XHJcblx0XHRcdFx0bWVldGluZ0N1c3RvbWVyVXNlcjoge1xyXG5cdFx0XHRcdFx0dXNlcklkOiAwXHJcblx0XHRcdFx0fSxcclxuXHJcblx0XHRcdFx0Ly/kvpvmlrlcclxuXHRcdFx0XHRtZWV0aW5nQnVzaW5lc3NVc2VyOiB7XHJcblx0XHRcdFx0XHR1c2VySWQ6IDBcclxuXHRcdFx0XHR9LFxyXG5cclxuXHRcdFx0XHQvL+WuouacjVxyXG5cdFx0XHRcdG1lZXRpbmdTZXJ2aWNlVXNlcjoge1xyXG5cdFx0XHRcdFx0dXNlcklkOiAwXHJcblx0XHRcdFx0fSxcclxuXHJcblx0XHRcdFx0bnVtOiAxMCxcclxuXHRcdFx0XHR0cnRjQ2xvdWQ6IG51bGwsXHJcblx0XHRcdFx0c2RrQXBwSWQ6IDAsXHJcblx0XHRcdFx0dXNlclNpZzogJycsXHJcblx0XHRcdFx0cm9vbUlkOiAwLFxyXG5cdFx0XHRcdHVzZXJJZDogJycsXHJcblx0XHRcdFx0c3RhcnRpbmc6IGZhbHNlLFxyXG5cdFx0XHRcdHVzZXJUeXBlOiAn562J5b6F6L+b5YWlJyxcclxuXHRcdFx0XHRhcHBTY2VuZTogVFJUQ0FwcFNjZW5lLlRSVENBcHBTY2VuZVZpZGVvQ2FsbCwgLy8gVFJUQ0FwcFNjZW5lVmlkZW9DYWxsXHJcblx0XHRcdFx0aXNGcm9udENhbWVyYTogdHJ1ZSxcclxuXHRcdFx0XHRzdHJlYW1UeXBlOiBUUlRDVmlkZW9TdHJlYW1UeXBlLlRSVENWaWRlb1N0cmVhbVR5cGVCaWcsXHJcblx0XHRcdFx0cmVtb3RlVXNlcklkOiAnJyxcclxuXHRcdFx0XHRhdWRpb1JvdXRlOiBUUlRDQ2xvdWREZWYuVFJUQ19BVURJT19ST1VURV9TUEVBS0VSLFxyXG5cdFx0XHRcdG1lc3NhZ2VMaXN0OiBbXSxcclxuXHRcdFx0XHRtZXNzYWdlQ29udGVudDogJycsXHJcblx0XHRcdFx0bXlVc2VySW5mbzogJycsXHJcblx0XHRcdFx0cm9vbToge30sXHJcblx0XHRcdFx0c2hvcElkOiAwLFxyXG5cdFx0XHRcdHNlbGxlclVzZXJJZDogMCxcclxuXHJcblx0XHRcdFx0cGFyYW06IHt9LFxyXG5cdFx0XHRcdGpvaW5UeXBlOiAnY3VzdG9tZXInXHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHRjb21wdXRlZDoge1xyXG5cdFx0XHQuLi5tYXBTdGF0ZShbJ3VzZXInLCAnc3RhdGlzdGljcycsICdjb21tb24nXSlcclxuXHRcdH0sXHJcblx0XHRvbkxvYWQoZSkge1xyXG5cdFx0XHRjb25zb2xlLmxvZygnb25sb2FkIGUnLCBlKTtcclxuXHRcdFx0Y29uc29sZS5sb2coJ3VzZXInLCB0aGlzLnVzZXIpO1xyXG5cdFx0XHR0aGlzLnBhcmFtID0gZTtcclxuXHJcblx0XHRcdC8v5Yqg5YWl57G75Z6L77yM5piv5Lul5LuA5LmI6Lqr5Lu95Yqg5YWl55qEXHJcblx0XHRcdGxldCBqb2luVHlwZSA9IGUuam9pblR5cGUgfHwgJ2N1c3RvbWVyJ1xyXG5cdFx0XHRjb25zb2xlLmxvZygnb25Mb2FkIGpvaW5UeXBlJywgam9pblR5cGUpO1xyXG5cdFx0XHR0aGlzLmpvaW5UeXBlID0gam9pblR5cGU7XHJcblxyXG5cdFx0XHR0aGlzLnJvb21JZCA9IGUucm9vbUlkO1xyXG5cdFx0XHR0aGlzLnNlbGxlclVzZXJJZCA9IGUudXNlcmlkO1xyXG5cdFx0XHR0aGlzLnVzZXJJZCA9ICd1c2VyXycgKyB0aGlzLnVzZXIuaWQ7XHJcblx0XHRcdHRoaXMubWVldGluZ1VzZXJNeSA9IHtcclxuXHRcdFx0XHR1c2VySWQ6IHRoaXMudXNlcklkLFxyXG5cdFx0XHRcdGlkOiB0aGlzLnVzZXIuaWRcclxuXHRcdFx0fTtcclxuXHRcdFx0dGhpcy5zaG9wSWQgPSBlLnNob3BfaWQ7XHJcblxyXG5cdFx0XHRpZiAoam9pblR5cGUgPT0gJ2N1c3RvbWVyJykge1xyXG5cdFx0XHRcdC8v6ZyA5pa5XHJcblx0XHRcdFx0dGhpcy5jcmVhdGVSb29tKHtcclxuXHRcdFx0XHRcdFwibmFtZVwiOiBcIua1i+ivleaIv+mXtFwiLFxyXG5cdFx0XHRcdFx0XCJib2R5VGV4dFwiOiBcIlwiLFxyXG5cdFx0XHRcdFx0XCJyb29tTm9cIjogXCJcIixcclxuXHRcdFx0XHRcdFwiZGVzY3JpcHRpb25cIjogXCJcIixcclxuXHRcdFx0XHRcdFwiY2xpZW50SWRcIjogXCJcIixcclxuXHRcdFx0XHRcdC8vIFwicHJvZHVjdElkXCI6IGUuZ29vZHNfaWQsXHJcblx0XHRcdFx0XHRcInNob3BJZFwiOiBlLnNob3BfaWRcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHR0aGlzLm1lZXRpbmdDdXN0b21lclVzZXIgPSB7XHJcblx0XHRcdFx0XHQuLi50aGlzLm1lZXRpbmdVc2VyTXlcclxuXHRcdFx0XHR9O1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHRoaXMucm9vbSA9IHtcclxuXHRcdFx0XHRcdGlkOiBlLnJvb21JZCxcclxuXHRcdFx0XHRcdFJvb21ObzogZS5yb29tSWRcclxuXHRcdFx0XHR9O1xyXG5cclxuXHRcdFx0XHR0aGlzLm1lZXRpbmdDdXN0b21lclVzZXIgPSB7XHJcblx0XHRcdFx0XHR1c2VySWQ6ICd1c2VyXycgKyBlLmN1c3RvbWVyaWQudG9TdHJpbmcoKSxcclxuXHRcdFx0XHRcdGlkOiBlLmN1c3RvbWVyaWRcclxuXHRcdFx0XHR9O1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpZiAoam9pblR5cGUgPT0gJ3NlbGxlcicpIHtcclxuXHRcdFx0XHQvL+S+m+aWuVxyXG5cdFx0XHRcdHRoaXMubWVldGluZ0J1c2luZXNzVXNlciA9IHtcclxuXHRcdFx0XHRcdHVzZXJJZDogdGhpcy5tZWV0aW5nVXNlck15LnVzZXJJZCxcclxuXHRcdFx0XHRcdGlkOiB0aGlzLm1lZXRpbmdVc2VyTXkuaWRcclxuXHRcdFx0XHR9O1xyXG5cclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAoam9pblR5cGUgPT0gJ3NlcnZpY2UnKSB7XHJcblx0XHRcdFx0Ly/lubPlj7DlrqLmnI1cclxuXHRcdFx0XHR0aGlzLm1lZXRpbmdTZXJ2aWNlVXNlciA9IHtcclxuXHRcdFx0XHRcdHVzZXJJZDogdGhpcy5tZWV0aW5nVXNlck15LnVzZXJJZCxcclxuXHRcdFx0XHRcdGlkOiB0aGlzLm1lZXRpbmdVc2VyTXkuaWRcclxuXHRcdFx0XHR9O1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRjb25zb2xlLmxvZygnb25Mb2FkIG1lZXRpbmdCdXNpbmVzc1VzZXInLCB0aGlzLm1lZXRpbmdCdXNpbmVzc1VzZXIpO1xyXG5cdFx0XHRjb25zb2xlLmxvZygnb25Mb2FkIG1lZXRpbmdTZXJ2aWNlVXNlcicsIHRoaXMubWVldGluZ1NlcnZpY2VVc2VyKTtcclxuXHJcblx0XHRcdC8vIHRoaXMuZ2V0VXNlckluZm8odGhpcy51c2VyLmlkLGpvaW5UeXBlKTtcclxuXHRcdFx0dGhpcy5qb2luUm9vbSgpO1xyXG5cclxuXHRcdFx0dGhpcy4kZm9yY2VVcGRhdGUoKTtcclxuXHJcblx0XHRcdC8v5paH5a2X6IGK5aSpXHJcblx0XHRcdHVuaS4kb24oJ3NvY2tldE1lc3NhZ2UnLCAoZGF0YSkgPT4ge1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKCdzb2NrZXRNZXNzYWdlJywgZGF0YSk7XHJcblx0XHRcdFx0aWYgKGRhdGEubWVzc2FnZVR5cGUgPT0gJ3NlbmRfdG9fcm9vbScpIHtcclxuXHRcdFx0XHRcdHRoaXMubWVzc2FnZUxpc3QucHVzaCh7XHJcblx0XHRcdFx0XHRcdGF1dGhvcjogZGF0YS5yZWFsTmFtZSxcclxuXHRcdFx0XHRcdFx0Y29udGVudDogZGF0YS50b01lc3NhZ2VcclxuXHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmIChkYXRhLm1lc3NhZ2VUeXBlID09ICdqb2luJykge1xyXG5cdFx0XHRcdFx0bGV0IHVzZXJpZCA9IGRhdGEudXNlckludElkO1xyXG5cdFx0XHRcdFx0aWYgKHVzZXJpZCAhPSB0aGlzLnVzZXIuaWQpIHtcclxuXHRcdFx0XHRcdFx0Ly/mnInnlKjmiLfliqDlhaXmiL/pl7RcclxuXHRcdFx0XHRcdFx0bGV0IGpvaW5UeXBlID0gZGF0YS5tZXNzYWdlQ29udGVudDtcclxuXHRcdFx0XHRcdFx0aWYgKGpvaW5UeXBlID09ICdzZWxsZXInKSB7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5tZWV0aW5nQnVzaW5lc3NVc2VyLnVzZXJJZCA9ICd1c2VyXycgKyB1c2VyaWQ7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5tZWV0aW5nQnVzaW5lc3NVc2VyLmlkID0gdXNlcmlkO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdGlmIChqb2luVHlwZSA9PSAnc2VydmljZScpIHtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLm1lZXRpbmdTZXJ2aWNlVXNlci51c2VySWQgPSAndXNlcl8nICsgdXNlcmlkO1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMubWVldGluZ1NlcnZpY2VVc2VyLmlkID0gdXNlcmlkO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KVxyXG5cdFx0fSxcclxuXHRcdG9uU2hvdygpIHt9LFxyXG5cdFx0b25IaWRlKCkge30sXHJcblx0XHRtb3VudGVkKCkge1xyXG5cdFx0XHRpZiAodW5pLmdldFN5c3RlbUluZm9TeW5jKCkucGxhdGZvcm0gPT09ICdhbmRyb2lkJykge1xyXG5cdFx0XHRcdHBlcm1pc2lvbi5yZXF1ZXN0QW5kcm9pZFBlcm1pc3Npb24oJ2FuZHJvaWQucGVybWlzc2lvbi5SRUNPUkRfQVVESU8nKTtcclxuXHRcdFx0XHRwZXJtaXNpb24ucmVxdWVzdEFuZHJvaWRQZXJtaXNzaW9uKCdhbmRyb2lkLnBlcm1pc3Npb24uQ0FNRVJBJyk7XHJcblx0XHRcdH1cclxuXHRcdFx0dGhpcy5pbml0VXNlclNpZ24oKTtcclxuXHRcdH0sXHJcblx0XHRvblVubG9hZCgpIHtcclxuXHRcdFx0dGhpcy5kZXN0cm95SW5zdGFuY2UoKTtcclxuXHRcdFx0Y29uc29sZS5sb2coJy0gb25VbmxvYWQnKTtcclxuXHRcdH0sXHJcblx0XHRvbkJhY2tQcmVzcygpIHtcclxuXHRcdFx0dGhpcy5kZXN0cm95SW5zdGFuY2UoKTtcclxuXHRcdH0sXHJcblx0XHRtZXRob2RzOiB7XHJcblx0XHRcdGdldFVzZXJJbmZvKHVzZXJpZCwgdHlwZSkge1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKCdnZXRVc2VySW5mbycsIHVzZXJpZCwgdHlwZSk7XHJcblx0XHRcdFx0QVBJLm1lc3NhZ2UuZ2V0VXNlclR5cGVJbmZvKHVzZXJpZCkudGhlbihyZXMgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ2dldFVzZXJUeXBlSW5mbycsIHJlcyk7XHJcblx0XHRcdFx0XHRpZiAodHlwZSA9PSAnY3VzdG9tZXInKSB7XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdnZXRVc2VyVHlwZUluZm8gdHlwZT1jdXN0b21lcicpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLm1lZXRpbmdDdXN0b21lclVzZXIudXNlckluZm8gPSByZXMuZGF0YVswXTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGlmICh0eXBlID09ICdzZWxsZXInKSB7XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdnZXRVc2VyVHlwZUluZm8gdHlwZT1zZWxsZXInKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5tZWV0aW5nQnVzaW5lc3NVc2VyLnVzZXJJbmZvID0gcmVzLmRhdGFbMF07XHJcblx0XHRcdFx0XHRcdHRoYXQubWVzc2FnZUxpc3QucHVzaCh7XHJcblx0XHRcdFx0XHRcdFx0YXV0aG9yOiAn57O757ufJyxcclxuXHRcdFx0XHRcdFx0XHRjb250ZW50OiAn5L6b5pa55Yqg5YWl5oi/6Ze0J1xyXG5cdFx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0aWYgKHR5cGUgPT0gJ3NlcnZpY2UnKSB7XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdnZXRVc2VyVHlwZUluZm8gdHlwZT1zZXJ2aWNlJyk7XHJcblx0XHRcdFx0XHRcdC8vIHRoaXMubWVldGluZ1NlcnZpY2VVc2VyLnVzZXJJbmZvID0gcmVzLmRhdGFbMF07XHJcblx0XHRcdFx0XHRcdHRoYXQubWVzc2FnZUxpc3QucHVzaCh7XHJcblx0XHRcdFx0XHRcdFx0YXV0aG9yOiAn57O757ufJyxcclxuXHRcdFx0XHRcdFx0XHRjb250ZW50OiAn5a6i5pyN5Yqg5YWl5oi/6Ze0J1xyXG5cdFx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ2dldFVzZXJUeXBlSW5mbyBtZWV0aW5nU2VydmljZVVzZXInLCB0aGlzLm1lZXRpbmdTZXJ2aWNlVXNlcik7XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0fSxcclxuXHRcdFx0am9pblJvb20oKSB7XHJcblx0XHRcdFx0bGV0IHBhcmFtID0ge1xyXG5cdFx0XHRcdFx0bWV0aG9kOiAnam9pbicsXHJcblx0XHRcdFx0XHRJc1Jvb206IHRydWUsXHJcblx0XHRcdFx0XHRSb29tTm86IHRoaXMucm9vbUlkLFxyXG5cdFx0XHRcdFx0Um9vbU5hbWU6IHRoaXMucm9vbS5Sb29tTmFtZSxcclxuXHRcdFx0XHRcdG1lc3NhZ2VDb250ZW50OiB0aGlzLmpvaW5UeXBlLFxyXG5cdFx0XHRcdFx0dG9rZW46IHNlcnZpY2UuZ2V0VG9rZW5DaGFvZ2UoKSxcclxuXHRcdFx0XHR9O1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKCdqb2luUm9vbScscGFyYW0pO1xyXG5cdFx0XHRcdHNvY2tldFRhc2suc2VuZCh7XHJcblx0XHRcdFx0XHRkYXRhOiBKU09OLnN0cmluZ2lmeShwYXJhbSksXHJcblx0XHRcdFx0XHRzdWNjZXNzKHJlcykge30sXHJcblx0XHRcdFx0XHRmYWlsKGUpIHt9LFxyXG5cdFx0XHRcdFx0Y29tcGxldGUoKSB7fVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRpbml0VXNlclNpZ24oKSB7XHJcblx0XHRcdFx0aWYgKHRoaXMudXNlcklkKSB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZygnaW5pdFVzZXJTaWduJywgdGhpcy51c2VySWQpO1xyXG5cdFx0XHRcdFx0Ly8g55Sf5oiQIHVzZXJTaWdcclxuXHRcdFx0XHRcdGNvbnN0IHtcclxuXHRcdFx0XHRcdFx0c2RrQXBwSWQsXHJcblx0XHRcdFx0XHRcdHVzZXJTaWdcclxuXHRcdFx0XHRcdH0gPSBnZW5UZXN0VXNlclNpZyh0aGlzLnVzZXJJZCk7XHJcblx0XHRcdFx0XHR0aGlzLnNka0FwcElkID0gc2RrQXBwSWQ7XHJcblx0XHRcdFx0XHR0aGlzLnVzZXJTaWcgPSB1c2VyU2lnO1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ3Nka0FwcElkLHVzZXJTaWcnLCBzZGtBcHBJZCwgdXNlclNpZyk7XHJcblx0XHRcdFx0XHRpZiAoIXNka0FwcElkIHx8ICF1c2VyU2lnKSB7XHJcblx0XHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xyXG5cdFx0XHRcdFx0XHRcdHRpdGxlOiAn6K+35aGr5YaZIHNka0FwcElk44CBdXNlclNpZycsXHJcblx0XHRcdFx0XHRcdFx0aWNvbjogJ25vbmUnXHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdFx0XHRcdFx0dGhpcy5pbml0VXNlclNpZ24oKTtcclxuXHRcdFx0XHRcdH0sIDIwMClcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdGhhbmRsZVRvU3VibWl0T3JkZXIoKSB7XHJcblx0XHRcdFx0dW5pLm5hdmlnYXRlQmFjaygpO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHQvL+mCgOivt+WVhuWutuWuouacjVxyXG5cdFx0XHRoYW5kbGVJbnZpdGVCdXNpbmVzc1VzZXIoKSB7XHJcblx0XHRcdFx0QVBJLm1lc3NhZ2UuZ2V0SW52aXRlQnVzaW5lc3NVc2VySm9pbih0aGlzLnNob3BJZCwgdGhpcy5yb29tLlJvb21ObywgdGhpcy5zZWxsZXJVc2VySWQpLnRoZW4ocmVzID0+IHt9KVxyXG5cdFx0XHR9LFxyXG5cdFx0XHQvL+mCgOivt+W5s+WPsOWuouacjVxyXG5cdFx0XHRoYW5kbGVJbnZpdGVTZXJ2aWNlVXNlcigpIHtcclxuXHRcdFx0XHR1bmkuc2hvd0xvYWRpbmcoKTtcclxuXHRcdFx0XHRBUEkubWVzc2FnZS5nZXRJbnZpdGVTZXJ2aWNlVXNlckpvaW4odGhpcy5yb29tLlJvb21ObywgJ2pvaW5NdWx0aXBsYXllclZpZGVvJykudGhlbihyZXMgPT4ge1xyXG5cdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XHJcblx0XHRcdFx0XHRcdHRpdGxlOiAn6YKA6K+35oiQ5YqfJ1xyXG5cdFx0XHRcdFx0fSlcclxuXHRcdFx0XHRcdHRoaXMuaGFzSW52aXRlID0gdHJ1ZTtcclxuXHRcdFx0XHR9KS5maW5hbGx5KCgpID0+IHtcclxuXHRcdFx0XHRcdHVuaS5oaWRlTG9hZGluZygpO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRjcmVhdGVSb29tKGRhdGEpIHtcclxuXHRcdFx0XHR1bmkuc2hvd0xvYWRpbmcoe1xyXG5cdFx0XHRcdFx0dGl0bGU6ICfmraPlnKjliJvlu7rmiL/pl7QnXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0QVBJLm1lc3NhZ2UucG9zdEFkZFJvb20oZGF0YSkudGhlbihyZXMgPT4ge1xyXG5cdFx0XHRcdFx0dGhpcy5yb29tID0gcmVzLmRhdGE7XHJcblx0XHRcdFx0XHR0aGlzLnJvb21JZCA9IHJlcy5kYXRhLlJvb21ObztcclxuXHRcdFx0XHRcdHRoaXMuaGFuZGxlSW52aXRlQnVzaW5lc3NVc2VyKCk7XHJcblx0XHRcdFx0XHR0aGlzLmpvaW5Sb29tKCk7XHJcblx0XHRcdFx0fSkuZmluYWxseSgoKSA9PiB7XHJcblx0XHRcdFx0XHR1bmkuaGlkZUxvYWRpbmcoKTtcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fSxcclxuXHJcblx0XHRcdHNlbmRNZXNzYWdlKCkge1xyXG5cdFx0XHRcdGxldCB0aGF0ID0gdGhpcztcclxuXHRcdFx0XHR0aGF0Lm1lc3NhZ2VMaXN0LnB1c2goe1xyXG5cdFx0XHRcdFx0YXV0aG9yOiAn5oiRJyxcclxuXHRcdFx0XHRcdGNvbnRlbnQ6IHRoYXQubWVzc2FnZUNvbnRlbnRcclxuXHRcdFx0XHR9KVxyXG5cdFx0XHRcdHRoYXQubWVzc2FnZUNvbnRlbnQgPSAnJztcclxuXHRcdFx0XHRzb2NrZXRUYXNrLnNlbmQoe1xyXG5cdFx0XHRcdFx0ZGF0YTogSlNPTi5zdHJpbmdpZnkoe1xyXG5cdFx0XHRcdFx0XHRmb3JtVXNlcklkOiB0aGlzLnVzZXJJZCxcclxuXHRcdFx0XHRcdFx0Y29udGVudFR5cGU6IFwiXCIsXHJcblx0XHRcdFx0XHRcdGNvbnRlbnQ6IHRoaXMubWVzc2FnZUNvbnRlbnQsXHJcblx0XHRcdFx0XHRcdHNlbmRUaW1lOiBuZXcgRGF0ZSgpLFxyXG5cdFx0XHRcdFx0XHRtZXRob2Q6ICdzZW5kX3RvX3Jvb20nLFxyXG5cdFx0XHRcdFx0XHRSb29tTm86IHRoaXMucm9vbS5Sb29tTm8sXHJcblx0XHRcdFx0XHRcdFJvb21OYW1lOiB0aGlzLnJvb20uTmFtZSxcclxuXHRcdFx0XHRcdFx0SXNSb29tOiB0cnVlXHJcblx0XHRcdFx0XHR9KSxcclxuXHRcdFx0XHRcdHN1Y2Nlc3MocmVzKSB7fSxcclxuXHRcdFx0XHRcdGZhaWwoZSkge30sXHJcblx0XHRcdFx0XHRjb21wbGV0ZSgpIHt9XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0sXHJcblx0XHRcdGhhbmRsZVN0YXJ0TWVldGluZygpIHtcclxuXHRcdFx0XHR0aGlzLnN0YXJ0aW5nID0gdHJ1ZTtcclxuXHRcdFx0XHR0aGlzLiRuZXh0VGljaygoKSA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLmNyZWF0ZVRydGNDbG91ZCgpO1xyXG5cdFx0XHRcdFx0dGhpcy5lbnRlclJvb20oKTtcclxuXHRcdFx0XHRcdHRoaXMuc3RhcnRMb2NhbFByZXZpZXcoKTtcclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRoYW5kbGVFbmR0TWVldGluZygpIHtcclxuXHRcdFx0XHR0aGlzLm1lZXRpbmcgPSBmYWxzZTtcclxuXHRcdFx0XHR0aGlzLnN0b3BMb2NhbFByZXZpZXcoKTtcclxuXHRcdFx0XHR0aGlzLmV4aXRSb29tKCk7XHJcblx0XHRcdFx0dGhpcy5kZXN0cm95SW5zdGFuY2UoKTtcclxuXHRcdFx0fSxcclxuXHJcblx0XHRcdGJpbmRJbnB1dENoYW5nZShldmVudCwgdHlwZSkge1xyXG5cdFx0XHRcdGNvbnN0IHZhbHVlID0gZXZlbnQuZGV0YWlsLnZhbHVlO1xyXG5cdFx0XHRcdHN3aXRjaCAodHlwZSkge1xyXG5cdFx0XHRcdFx0Y2FzZSAncm9vbUlkJzoge1xyXG5cdFx0XHRcdFx0XHR0aGlzLnJvb21JZCA9IHZhbHVlO1xyXG5cdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGNhc2UgJ3VzZXJJZCc6IHtcclxuXHRcdFx0XHRcdFx0dGhpcy51c2VySWQgPSB2YWx1ZTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRkZXN0cm95SW5zdGFuY2UoKSB7XHJcblx0XHRcdFx0aWYgKHRoaXMudHJ0Y0Nsb3VkKSB7XHJcblx0XHRcdFx0XHRUcnRjQ2xvdWQuZGVzdHJveUluc3RhbmNlKCk7XHJcblx0XHRcdFx0XHR0aGlzLnRydGNDbG91ZCA9IG51bGw7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRjcmVhdGVUcnRjQ2xvdWQoKSB7XHJcblx0XHRcdFx0Y29uc29sZS5sb2coJ2NyZWF0ZVRydGNDbG91ZCcsIHRoaXMuc2RrQXBwSWQpO1xyXG5cdFx0XHRcdHRoaXMudHJ0Y0Nsb3VkID0gVHJ0Y0Nsb3VkLmNyZWF0ZUluc3RhbmNlKCk7XHJcblx0XHRcdFx0Y29uc29sZS5sb2coJ3RoaXMudHJ0Y0Nsb3VkJywgdGhpcy50cnRjQ2xvdWQpXHJcblx0XHRcdFx0dGhpcy5oYW5kbGVFdmVudHMoKTtcclxuXHRcdFx0XHR0aGlzLnNka0FwcElkICYmIHVuaS4kY3JlYXRlVHJ0Y0Nsb3VkVXBsb2FkKHRoaXMuc2RrQXBwSWQpO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRlbnRlclJvb20oKSB7XHJcblx0XHRcdFx0dHJ5IHtcclxuXHRcdFx0XHRcdGNvbnN0IHtcclxuXHRcdFx0XHRcdFx0c2RrQXBwSWQsXHJcblx0XHRcdFx0XHRcdGFwcFNjZW5lLFxyXG5cdFx0XHRcdFx0XHR1c2VyU2lnXHJcblx0XHRcdFx0XHR9ID0gdGhpcztcclxuXHRcdFx0XHRcdGxldCBwYXJhbSA9IHtcclxuXHRcdFx0XHRcdFx0cm9vbUlkOiAwLFxyXG5cdFx0XHRcdFx0XHRzdHJSb29tSWQ6IHRoaXMucm9vbS5Sb29tTm8sXHJcblx0XHRcdFx0XHRcdHVzZXJJZDogdGhpcy51c2VySWQsXHJcblx0XHRcdFx0XHRcdHNka0FwcElkLFxyXG5cdFx0XHRcdFx0XHR1c2VyU2lnXHJcblx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ2VudGVyUm9vbScsIHBhcmFtKTtcclxuXHRcdFx0XHRcdHRoaXMudHJ0Y0Nsb3VkLmVudGVyUm9vbShwYXJhbSwgYXBwU2NlbmUpO1xyXG5cdFx0XHRcdFx0dGhpcy5zZGtBcHBJZCAmJiB1bmkuJGVudGVyUm9vbVN1Y2Nlc3NVcGxvYWQodGhpcy5zZGtBcHBJZCk7XHJcblxyXG5cdFx0XHRcdFx0bGV0IHVzZXJJZCA9IHRoaXMudXNlcklkO1xyXG5cdFx0XHRcdFx0aWYgKHRoaXMubWVldGluZ0J1c2luZXNzVXNlci51c2VySWQgPT0gdXNlcklkKSB7XHJcblx0XHRcdFx0XHRcdHRoaXMubWVldGluZ0J1c2luZXNzVXNlci5tZWV0aW5nID0gdHJ1ZTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGlmICh0aGlzLm1lZXRpbmdDdXN0b21lclVzZXIudXNlcklkID09IHVzZXJJZCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLm1lZXRpbmdDdXN0b21lclVzZXIubWVldGluZyA9IHRydWU7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRpZiAodGhpcy5tZWV0aW5nU2VydmljZVVzZXIudXNlcklkID09IHVzZXJJZCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLm1lZXRpbmdTZXJ2aWNlVXNlci5tZWV0aW5nID0gdHJ1ZTtcclxuXHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0fSBjYXRjaCAoZXJyb3IpIHtcclxuXHRcdFx0XHRcdHRoaXMubWVzc2FnZUxpc3QudW5zaGlmdCh7XHJcblx0XHRcdFx0XHRcdGNvbnRlbnQ6IGBlbnRlclJvb20gZXJyb3IgPSAke0pTT04uc3RyaW5naWZ5KGVycm9yKX1gXHJcblx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0dGhpcy5zZGtBcHBJZCAmJiB1bmkuJGVudGVyUm9vbUZhaWxlZFVwbG9hZCh0aGlzLnNka0FwcElkLCBKU09OLnN0cmluZ2lmeShlcnJvcikpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0ZXhpdFJvb20oKSB7XHJcblx0XHRcdFx0dHJ5IHtcclxuXHRcdFx0XHRcdHRoaXMuc3RhcnRpbmcgPSBmYWxzZTtcclxuXHRcdFx0XHRcdHRoaXMuc3RvcExvY2FsUHJldmlldygpO1xyXG5cdFx0XHRcdFx0dGhpcy5zdG9wUmVtb3RlVmlldygpO1xyXG5cdFx0XHRcdFx0dGhpcy50cnRjQ2xvdWQuZXhpdFJvb20oKTtcclxuXHRcdFx0XHR9IGNhdGNoIChlKSB7XHJcblx0XHRcdFx0XHQvLyBUT0RPIGhhbmRsZSB0aGUgZXhjZXB0aW9uXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRzdGFydExvY2FsUHJldmlldygpIHtcclxuXHRcdFx0XHR0aGlzLiRuZXh0VGljaygoKSA9PiB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZygnc3RhcnRMb2NhbFByZXZpZXcnLCB0aGlzLnVzZXJJZCk7XHJcblx0XHRcdFx0XHR0aGlzLm1lZXRpbmcgPSB0cnVlO1xyXG5cdFx0XHRcdFx0dGhpcy50cnRjQ2xvdWQuc3RhcnRMb2NhbFByZXZpZXcodGhpcy5pc0Zyb250Q2FtZXJhLCB0aGlzLnVzZXJJZCk7XHJcblx0XHRcdFx0XHR0aGlzLnRydGNDbG91ZC5zdGFydExvY2FsQXVkaW8oVFJUQ0F1ZGlvUXVhbGl0eS5UUlRDQXVkaW9RdWFsaXR5RGVmYXVsdCk7XHJcblx0XHRcdFx0XHR0aGlzLnNka0FwcElkICYmIHVuaS4kc3RhcnRMb2NhbFByZXZpZXdVcGxvYWQodGhpcy5zZGtBcHBJZCk7XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0fSxcclxuXHRcdFx0c3RvcExvY2FsUHJldmlldygpIHtcclxuXHRcdFx0XHR0aGlzLnRydGNDbG91ZC5zdG9wTG9jYWxQcmV2aWV3KCk7XHJcblx0XHRcdH0sXHJcblx0XHRcdHN0YXJ0UmVtb3RlVmlldyh1c2VySWQpIHtcclxuXHRcdFx0XHR0aGlzLiRuZXh0VGljaygoKSA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLnRydGNDbG91ZC5zdGFydFJlbW90ZVZpZXcodXNlcklkLCB0aGlzLnN0cmVhbVR5cGUsIHVzZXJJZCk7XHJcblx0XHRcdFx0XHR0aGlzLnNka0FwcElkICYmIHVuaS4kc3RhcnRSZW1vdGVWaWV3U3VjY2Vzc1VwbG9hZCh0aGlzLnNka0FwcElkKTtcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHRpZiAodGhpcy5tZWV0aW5nQnVzaW5lc3NVc2VyLnVzZXJJZCA9PSB1c2VySWQpIHtcclxuXHRcdFx0XHRcdHRoaXMubWVldGluZ0J1c2luZXNzVXNlci5tZWV0aW5nID0gdHJ1ZTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0aWYgKHRoaXMubWVldGluZ0N1c3RvbWVyVXNlci51c2VySWQgPT0gdXNlcklkKSB7XHJcblx0XHRcdFx0XHR0aGlzLm1lZXRpbmdDdXN0b21lclVzZXIubWVldGluZyA9IHRydWU7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmICh0aGlzLm1lZXRpbmdTZXJ2aWNlVXNlci51c2VySWQgPT0gdXNlcklkKSB7XHJcblx0XHRcdFx0XHR0aGlzLm1lZXRpbmdTZXJ2aWNlVXNlci5tZWV0aW5nID0gdHJ1ZTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdHN0b3BSZW1vdGVWaWV3KHVzZXJJZCkge1xyXG5cdFx0XHRcdHRoaXMudHJ0Y0Nsb3VkLnN0b3BSZW1vdGVWaWV3KHVzZXJJZCwgdGhpcy5zdHJlYW1UeXBlKTtcclxuXHRcdFx0XHRpZiAodGhpcy5tZWV0aW5nQnVzaW5lc3NVc2VyLnVzZXJJZCA9PSB1c2VySWQpIHtcclxuXHRcdFx0XHRcdHRoaXMubWVldGluZ0J1c2luZXNzVXNlci5tZWV0aW5nID0gZmFsc2U7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmICh0aGlzLm1lZXRpbmdDdXN0b21lclVzZXIudXNlcklkID09IHVzZXJJZCkge1xyXG5cdFx0XHRcdFx0dGhpcy5tZWV0aW5nQ3VzdG9tZXJVc2VyLm1lZXRpbmcgPSBmYWxzZTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0aWYgKHRoaXMubWVldGluZ1NlcnZpY2VVc2VyLnVzZXJJZCA9PSB1c2VySWQpIHtcclxuXHRcdFx0XHRcdHRoaXMubWVldGluZ1NlcnZpY2VVc2VyLm1lZXRpbmcgPSBmYWxzZTtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHR9LFxyXG5cdFx0XHQvLyDlkKznrZLjgIHlhY3mj5Ag5YiH5o2iXHJcblx0XHRcdHN3aXRjaEF1ZGlvUm91dGUoKSB7XHJcblx0XHRcdFx0dGhpcy5hdWRpb1JvdXRlID0gdGhpcy5hdWRpb1JvdXRlID09PSBUUlRDQ2xvdWREZWYuVFJUQ19BVURJT19ST1VURV9TUEVBS0VSID8gVFJUQ0Nsb3VkRGVmXHJcblx0XHRcdFx0XHQuVFJUQ19BVURJT19ST1VURV9FQVJQSUVDRSA6IFRSVENDbG91ZERlZi5UUlRDX0FVRElPX1JPVVRFX1NQRUFLRVI7XHJcblx0XHRcdFx0dGhpcy50cnRjQ2xvdWQuc2V0QXVkaW9Sb3V0ZSh0aGlzLmF1ZGlvUm91dGUpO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRoYW5kbGVFdmVudHMoKSB7XHJcblx0XHRcdFx0dGhpcy50cnRjQ2xvdWQub24oJ29uV2FybmluZycsIChyZXMpID0+IHtcclxuXHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xyXG5cdFx0XHRcdFx0XHR0aXRsZTogYG9uV2FybmluZzogJHtKU09OLnN0cmluZ2lmeShyZXMpfWAsXHJcblx0XHRcdFx0XHRcdGljb246ICdub25lJyxcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdHRoaXMudHJ0Y0Nsb3VkLm9uKCdvbkVycm9yJywgKHJlcykgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ29uRXJyb3InLCByZXMpXHJcblx0XHRcdFx0XHR0aGlzLm1lc3NhZ2VMaXN0LnVuc2hpZnQoe1xyXG5cdFx0XHRcdFx0XHRjb250ZW50OiBgZXJyb3I6ICR7SlNPTi5zdHJpbmdpZnkocmVzKX1gXHJcblx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0dGhpcy5zZGtBcHBJZCAmJiB1bmkuJG9uRXJyb3JVcGxvYWQodGhpcy5zZGtBcHBJZCwgSlNPTi5zdHJpbmdpZnkocmVzKSk7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0dGhpcy50cnRjQ2xvdWQub24oJ29uRW50ZXJSb29tJywgKHJlc3VsdCkgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coYC0gb25FbnRlclJvb20gPSAke3Jlc3VsdH1gKTtcclxuXHRcdFx0XHRcdGlmIChyZXN1bHQgPiAwKSB7XHJcblx0XHRcdFx0XHRcdHRoaXMubWVzc2FnZUxpc3QudW5zaGlmdCh7XHJcblx0XHRcdFx0XHRcdFx0Y29udGVudDogYOi/m+aIv+aIkOWKn++8jOiAl+aXtjogJHtyZXN1bHR9bXNgXHJcblx0XHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhgZW50ZXIgcm9vbSBmYWlsZWTvvIxlcnJvciBjb2RlID0gJHtyZXN1bHR9YCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0dGhpcy50cnRjQ2xvdWQub24oJ29uRXhpdFJvb20nLCAocmVhc29uKSA9PiB7XHJcblx0XHRcdFx0XHRjb25zdCByZWFzb25MaXN0ID0gWyfkuLvliqjosIPnlKggZXhpdFJvb20g6YCA5oi/JywgJ+iiq+acjeWKoeWZqOi4ouWHuuW9k+WJjeaIv+mXtCcsICflvZPliY3miL/pl7TmlbTkuKrooqvop6PmlaMnXTtcclxuXHRcdFx0XHRcdHRoaXMubWVzc2FnZUxpc3QudW5zaGlmdCh7XHJcblx0XHRcdFx0XHRcdGNvbnRlbnQ6IGDpgIDmiL8gJHtyZWFzb25MaXN0W3JlYXNvbl19YFxyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHR0aGlzLm1lZXRpbmcgPSBmYWxzZTtcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHR0aGlzLnRydGNDbG91ZC5vbignb25GaXJzdFZpZGVvRnJhbWUnLCAocmVzKSA9PiB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhg5riy5p+T55qE6aaW5bin55S76Z2i5ZON5bqUID0gJHtKU09OLnN0cmluZ2lmeShyZXMpfWApO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdHRoaXMudHJ0Y0Nsb3VkLm9uKCdvblJlbW90ZVVzZXJFbnRlclJvb20nLCAodXNlcklkKSA9PiB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZygnb25SZW1vdGVVc2VyRW50ZXJSb29tJywgdXNlcklkKTtcclxuXHRcdFx0XHRcdHRoaXMubWVzc2FnZUxpc3QudW5zaGlmdCh7XHJcblx0XHRcdFx0XHRcdGNvbnRlbnQ6IGDnlKjmiLcke3VzZXJJZH3liqDlhaXop4bpopHogYrlpKlgXHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdHRoaXMuc3RhcnRSZW1vdGVWaWV3KHVzZXJJZCk7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0dGhpcy50cnRjQ2xvdWQub24oJ29uUmVtb3RlVXNlckxlYXZlUm9vbScsICh1c2VySWQpID0+IHtcclxuXHRcdFx0XHRcdGxldCBpbmRleCA9IHRoaXMubWVldGluZ1VzZXJzLmZpbmRJbmRleCh0ID0+IHQudXNlcklkID09IHVzZXJJZCk7XHJcblx0XHRcdFx0XHRpZiAoaW5kZXggPj0gMCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLm1lZXRpbmdVc2Vycy5zcGxpY2UoaW5kZXgsIDEpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0aWYgKHRoaXMubWVldGluZ1VzZXJzLmxlbmd0aCA8IDIpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5tZWV0aW5nVXNlcnMucHVzaCh7XHJcblx0XHRcdFx0XHRcdFx0dHlwZTogJ+etieW+hei/m+WFpSdcclxuXHRcdFx0XHRcdFx0fSlcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdHRoaXMubWVzc2FnZUxpc3QudW5zaGlmdCh7XHJcblx0XHRcdFx0XHRcdGNvbnRlbnQ6IGDnlKjmiLfnprvlvIDmiL/pl7Q6IHVzZXJJZCA9ICR7dXNlcklkfWBcclxuXHRcdFx0XHRcdH0pXHJcblxyXG5cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHR0aGlzLnRydGNDbG91ZC5vbignb25Vc2VyVmlkZW9BdmFpbGFibGUnLCAocmVzKSA9PiB7XHJcblx0XHRcdFx0XHRjb25zdCB7XHJcblx0XHRcdFx0XHRcdHVzZXJJZCxcclxuXHRcdFx0XHRcdFx0YXZhaWxhYmxlXHJcblx0XHRcdFx0XHR9ID0gcmVzO1xyXG5cdFx0XHRcdFx0aWYgKGF2YWlsYWJsZSkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLnN0YXJ0TG9jYWxQcmV2aWV3KCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRpZiAodXNlcklkICYmIGF2YWlsYWJsZSkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLnN0YXJ0UmVtb3RlVmlldyh1c2VySWQpO1xyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5zdG9wUmVtb3RlVmlldyh1c2VySWQpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdHRoaXMudHJ0Y0Nsb3VkLm9uKCdvbkV4aXRSb29tJywgKHJlcykgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coYG9uRXhpdFJvb20gPSAke0pTT04uc3RyaW5naWZ5KHJlcyl9YCk7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0sXHJcblx0XHR9XHJcblx0fVxyXG48L3NjcmlwdD5cclxuPHN0eWxlIHNyYz1cIkAvcGFnZXMvbWVldGluZy9tZWV0aW5nLmNzc1wiPjwvc3R5bGU+XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///46\n");
  2449 +eval("/* WEBPACK VAR INJECTION */(function(__webpack_provided_uni_dot_requireNativePlugin, __f__) {Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar _vuex = __webpack_require__(/*! vuex */ 12);\n\n\nvar _permission = _interopRequireDefault(__webpack_require__(/*! @/TrtcCloud/permission.js */ 13));\nvar _index = _interopRequireDefault(__webpack_require__(/*! @/TrtcCloud/lib/index */ 14));\nvar _TrtcDefines = __webpack_require__(/*! @/TrtcCloud/lib/TrtcDefines */ 16);\n\n\n\n\n\nvar _GenerateTestUserSig = __webpack_require__(/*! @/debug/GenerateTestUserSig */ 17);\n\n\nvar _TrtcLocalView = _interopRequireDefault(__webpack_require__(/*! @/TrtcCloud/view/TrtcLocalView */ 19));\nvar _TrtcRemoteView = _interopRequireDefault(__webpack_require__(/*! @/TrtcCloud/view/TrtcRemoteView */ 25));\n\n\nvar _index2 = _interopRequireDefault(__webpack_require__(/*! @/apis/index.js */ 30));\nvar _config = _interopRequireDefault(__webpack_require__(/*! @/common/config/config.js */ 38));\nvar _service = _interopRequireDefault(__webpack_require__(/*! @/service/service.js */ 33));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}function ownKeys(object, enumerableOnly) {var keys = Object.keys(object);if (Object.getOwnPropertySymbols) {var symbols = Object.getOwnPropertySymbols(object);if (enumerableOnly) symbols = symbols.filter(function (sym) {return Object.getOwnPropertyDescriptor(object, sym).enumerable;});keys.push.apply(keys, symbols);}return keys;}function _objectSpread(target) {for (var i = 1; i < arguments.length; i++) {var source = arguments[i] != null ? arguments[i] : {};if (i % 2) {ownKeys(Object(source), true).forEach(function (key) {_defineProperty(target, key, source[key]);});} else if (Object.getOwnPropertyDescriptors) {Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));} else {ownKeys(Object(source)).forEach(function (key) {Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));});}}return target;}function _defineProperty(obj, key, value) {if (key in obj) {Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });} else {obj[key] = value;}return obj;}var TrtcEvent = __webpack_provided_uni_dot_requireNativePlugin('globalEvent');\nvar socketTask = getApp().globalData.socketTask;var _default =\n{\n components: {\n TrtcLocalView: _TrtcLocalView.default,\n TrtcRemoteView: _TrtcRemoteView.default },\n\n data: function data() {\n return {\n hasInvite: false,\n //我\n meetingUserMy: {\n userId: 0 },\n\n\n //需方\n meetingCustomerUser: {\n userId: 0 },\n\n\n //供方\n meetingBusinessUser: {\n userId: 0 },\n\n\n //客服\n meetingServiceUser: {\n userId: 0 },\n\n\n num: 10,\n trtcCloud: null,\n sdkAppId: 0,\n userSig: '',\n roomId: 0,\n userId: '',\n userType: '等待进入',\n appScene: _TrtcDefines.TRTCAppScene.TRTCAppSceneVideoCall, // TRTCAppSceneVideoCall\n isFrontCamera: true,\n streamType: _TrtcDefines.TRTCVideoStreamType.TRTCVideoStreamTypeBig,\n remoteUserId: '',\n audioRoute: _TrtcDefines.TRTCCloudDef.TRTC_AUDIO_ROUTE_SPEAKER,\n messageList: [],\n messageContent: '',\n myUserInfo: '',\n room: {},\n shopId: 0,\n sellerUserId: 0,\n\n param: {},\n joinType: 'customer' };\n\n },\n computed: _objectSpread({},\n (0, _vuex.mapState)(['user', 'statistics', 'common'])),\n\n onLoad: function onLoad(e) {var _this = this;\n __f__(\"log\", 'onload e', e, \" at pages/meeting/meeting.nvue:189\");\n __f__(\"log\", 'user', this.user, \" at pages/meeting/meeting.nvue:190\");\n this.param = e;\n\n //加入类型,是以什么身份加入的\n var joinType = e.joinType || 'customer';\n __f__(\"log\", 'onLoad joinType', joinType, \" at pages/meeting/meeting.nvue:195\");\n this.joinType = joinType;\n\n this.roomId = e.roomId;\n this.sellerUserId = e.userid;\n this.userId = 'user_' + this.user.id;\n this.meetingUserMy = {\n userId: this.userId,\n id: this.user.id };\n\n this.shopId = e.shop_id;\n\n if (joinType == 'customer') {\n //需方\n this.createRoom({\n \"name\": \"测试房间\",\n \"bodyText\": \"\",\n \"roomNo\": \"\",\n \"description\": \"\",\n \"clientId\": \"\",\n // \"productId\": e.goods_id,\n \"shopId\": e.shop_id });\n\n this.meetingCustomerUser = _objectSpread({},\n this.meetingUserMy);\n\n } else {\n this.room = {\n id: e.roomId,\n RoomNo: e.roomId };\n\n\n this.meetingCustomerUser = {\n userId: 'user_' + e.customerid.toString(),\n id: e.customerid };\n\n }\n\n if (joinType == 'seller') {\n //供方\n this.meetingBusinessUser = {\n userId: this.meetingUserMy.userId,\n id: this.meetingUserMy.id };\n\n\n }\n if (joinType == 'service') {\n //平台客服\n this.meetingServiceUser = {\n userId: this.meetingUserMy.userId,\n id: this.meetingUserMy.id };\n\n }\n\n __f__(\"log\", 'onLoad meetingBusinessUser', this.meetingBusinessUser, \" at pages/meeting/meeting.nvue:249\");\n __f__(\"log\", 'onLoad meetingServiceUser', this.meetingServiceUser, \" at pages/meeting/meeting.nvue:250\");\n\n // this.getUserInfo(this.user.id,joinType);\n this.joinRoom();\n\n this.$forceUpdate();\n\n //文字聊天\n uni.$on('socketMessage', function (data) {\n __f__(\"log\", 'socketMessage', data, \" at pages/meeting/meeting.nvue:259\");\n if (data.messageType == 'send_to_room') {\n _this.messageList.push({\n author: data.realName,\n content: data.toMessage });\n\n }\n if (data.messageType == 'join') {\n var userid = data.userIntId;\n if (userid != _this.user.id) {\n //有用户加入房间\n var _joinType = data.messageContent;\n if (_joinType == 'seller') {\n _this.meetingBusinessUser.userId = 'user_' + userid;\n _this.meetingBusinessUser.id = userid;\n }\n if (_joinType == 'service') {\n _this.meetingServiceUser.userId = 'user_' + userid;\n _this.meetingServiceUser.id = userid;\n }\n }\n }\n });\n },\n onShow: function onShow() {},\n onHide: function onHide() {},\n mounted: function mounted() {\n if (uni.getSystemInfoSync().platform === 'android') {\n _permission.default.requestAndroidPermission('android.permission.RECORD_AUDIO');\n _permission.default.requestAndroidPermission('android.permission.CAMERA');\n }\n this.initUserSign();\n },\n onUnload: function onUnload() {\n this.destroyInstance();\n __f__(\"log\", '- onUnload', \" at pages/meeting/meeting.nvue:294\");\n },\n onBackPress: function onBackPress() {\n this.destroyInstance();\n },\n methods: {\n getUserInfo: function getUserInfo(userid, type) {var _this2 = this;\n __f__(\"log\", 'getUserInfo', userid, type, \" at pages/meeting/meeting.nvue:301\");\n _index2.default.message.getUserTypeInfo(userid).then(function (res) {\n __f__(\"log\", 'getUserTypeInfo', res, \" at pages/meeting/meeting.nvue:303\");\n if (type == 'customer') {\n __f__(\"log\", 'getUserTypeInfo type=customer', \" at pages/meeting/meeting.nvue:305\");\n _this2.meetingCustomerUser.userInfo = res.data[0];\n }\n if (type == 'seller') {\n __f__(\"log\", 'getUserTypeInfo type=seller', \" at pages/meeting/meeting.nvue:309\");\n _this2.meetingBusinessUser.userInfo = res.data[0];\n that.messageList.push({\n author: '系统',\n content: '供方加入房间' });\n\n }\n if (type == 'service') {\n __f__(\"log\", 'getUserTypeInfo type=service', \" at pages/meeting/meeting.nvue:317\");\n // this.meetingServiceUser.userInfo = res.data[0];\n that.messageList.push({\n author: '系统',\n content: '客服加入房间' });\n\n }\n __f__(\"log\", 'getUserTypeInfo meetingServiceUser', _this2.meetingServiceUser, \" at pages/meeting/meeting.nvue:324\");\n });\n },\n joinRoom: function joinRoom() {\n var param = {\n method: 'join',\n IsRoom: true,\n RoomNo: this.roomId,\n RoomName: this.room.RoomName,\n messageContent: this.joinType,\n token: _service.default.getTokenChaoge() };\n\n __f__(\"log\", 'joinRoom', param, \" at pages/meeting/meeting.nvue:336\");\n socketTask.send({\n data: JSON.stringify(param),\n success: function success(res) {},\n fail: function fail(e) {},\n complete: function complete() {} });\n\n },\n initUserSign: function initUserSign() {var _this3 = this;\n if (this.userId) {\n __f__(\"log\", 'initUserSign', this.userId, \" at pages/meeting/meeting.nvue:346\");\n // 生成 userSig\n var _genTestUserSig =\n\n\n (0, _GenerateTestUserSig.genTestUserSig)(this.userId),sdkAppId = _genTestUserSig.sdkAppId,userSig = _genTestUserSig.userSig;\n this.sdkAppId = sdkAppId;\n this.userSig = userSig;\n __f__(\"log\", 'sdkAppId,userSig', sdkAppId, userSig, \" at pages/meeting/meeting.nvue:354\");\n if (!sdkAppId || !userSig) {\n uni.showToast({\n title: '请填写 sdkAppId、userSig',\n icon: 'none' });\n\n }\n } else {\n setTimeout(function () {\n _this3.initUserSign();\n }, 200);\n }\n },\n handleToSubmitOrder: function handleToSubmitOrder() {\n uni.navigateBack();\n },\n //邀请商家客服\n handleInviteBusinessUser: function handleInviteBusinessUser() {\n _index2.default.message.getInviteBusinessUserJoin(this.shopId, this.room.RoomNo, this.sellerUserId).then(function (res) {});\n },\n //邀请平台客服\n handleInviteServiceUser: function handleInviteServiceUser() {var _this4 = this;\n uni.showLoading();\n _index2.default.message.getInviteServiceUserJoin(this.room.RoomNo, 'joinMultiplayerVideo').then(function (res) {\n uni.showToast({\n title: '邀请成功' });\n\n _this4.hasInvite = true;\n }).finally(function () {\n uni.hideLoading();\n });\n },\n createRoom: function createRoom(data) {var _this5 = this;\n uni.showLoading({\n title: '正在创建房间' });\n\n _index2.default.message.postAddRoom(data).then(function (res) {\n _this5.room = res.data;\n _this5.roomId = res.data.RoomNo;\n _this5.handleInviteBusinessUser();\n _this5.joinRoom();\n }).finally(function () {\n uni.hideLoading();\n });\n },\n\n sendMessage: function sendMessage() {\n var that = this;\n that.messageList.push({\n author: '我',\n content: that.messageContent });\n\n that.messageContent = '';\n socketTask.send({\n data: JSON.stringify({\n formUserId: this.userId,\n contentType: \"\",\n content: this.messageContent,\n sendTime: new Date(),\n method: 'send_to_room',\n RoomNo: this.room.RoomNo,\n RoomName: this.room.Name,\n IsRoom: true }),\n\n success: function success(res) {},\n fail: function fail(e) {},\n complete: function complete() {} });\n\n },\n handleStartMeeting: function handleStartMeeting() {var _this6 = this;\n this.meeting = true;\n this.$nextTick(function () {\n _this6.createTrtcCloud();\n _this6.enterRoom();\n _this6.startLocalPreview();\n });\n },\n handleEndtMeeting: function handleEndtMeeting() {\n this.meeting = false;\n this.stopLocalPreview();\n this.exitRoom();\n this.destroyInstance();\n },\n\n bindInputChange: function bindInputChange(event, type) {\n var value = event.detail.value;\n switch (type) {\n case 'roomId':{\n this.roomId = value;\n break;\n }\n case 'userId':{\n this.userId = value;\n break;\n }}\n\n },\n destroyInstance: function destroyInstance() {\n if (this.trtcCloud) {\n _index.default.destroyInstance();\n this.trtcCloud = null;\n }\n },\n createTrtcCloud: function createTrtcCloud() {\n __f__(\"log\", 'createTrtcCloud', this.sdkAppId, \" at pages/meeting/meeting.nvue:458\");\n this.trtcCloud = _index.default.createInstance();\n __f__(\"log\", 'this.trtcCloud', this.trtcCloud, \" at pages/meeting/meeting.nvue:460\");\n this.handleEvents();\n this.sdkAppId && uni.$createTrtcCloudUpload(this.sdkAppId);\n },\n enterRoom: function enterRoom() {\n try {var\n\n sdkAppId =\n\n\n this.sdkAppId,appScene = this.appScene,userSig = this.userSig;\n var param = {\n roomId: 0,\n strRoomId: this.room.RoomNo,\n userId: this.userId,\n sdkAppId: sdkAppId,\n userSig: userSig };\n\n __f__(\"log\", 'enterRoom', param, \" at pages/meeting/meeting.nvue:478\");\n this.trtcCloud.enterRoom(param, appScene);\n this.sdkAppId && uni.$enterRoomSuccessUpload(this.sdkAppId);\n\n var userId = this.userId;\n if (this.meetingBusinessUser.userId == userId) {\n this.meetingBusinessUser.meeting = true;\n }\n if (this.meetingCustomerUser.userId == userId) {\n this.meetingCustomerUser.meeting = true;\n }\n if (this.meetingServiceUser.userId == userId) {\n this.meetingServiceUser.meeting = true;\n }\n\n } catch (error) {\n this.messageList.unshift({\n content: \"enterRoom error = \".concat(JSON.stringify(error)) });\n\n this.sdkAppId && uni.$enterRoomFailedUpload(this.sdkAppId, JSON.stringify(error));\n }\n },\n exitRoom: function exitRoom() {\n try {\n this.meeting = false;\n this.stopLocalPreview();\n this.stopRemoteView();\n this.trtcCloud.exitRoom();\n } catch (e) {\n // TODO handle the exception\n }\n },\n startLocalPreview: function startLocalPreview() {var _this7 = this;\n this.$nextTick(function () {\n __f__(\"log\", 'startLocalPreview', _this7.userId, \" at pages/meeting/meeting.nvue:512\");\n _this7.meeting = true;\n _this7.trtcCloud.startLocalPreview(_this7.isFrontCamera, _this7.userId);\n _this7.trtcCloud.startLocalAudio(_TrtcDefines.TRTCAudioQuality.TRTCAudioQualityDefault);\n _this7.sdkAppId && uni.$startLocalPreviewUpload(_this7.sdkAppId);\n });\n },\n stopLocalPreview: function stopLocalPreview() {\n this.trtcCloud.stopLocalPreview();\n },\n startRemoteView: function startRemoteView(userId) {var _this8 = this;\n this.$nextTick(function () {\n _this8.trtcCloud.startRemoteView(userId, _this8.streamType, userId);\n _this8.sdkAppId && uni.$startRemoteViewSuccessUpload(_this8.sdkAppId);\n });\n if (this.meetingBusinessUser.userId == userId) {\n this.meetingBusinessUser.meeting = true;\n }\n if (this.meetingCustomerUser.userId == userId) {\n this.meetingCustomerUser.meeting = true;\n }\n if (this.meetingServiceUser.userId == userId) {\n this.meetingServiceUser.meeting = true;\n }\n },\n stopRemoteView: function stopRemoteView(userId) {\n this.trtcCloud.stopRemoteView(userId, this.streamType);\n if (this.meetingBusinessUser.userId == userId) {\n this.meetingBusinessUser.meeting = false;\n }\n if (this.meetingCustomerUser.userId == userId) {\n this.meetingCustomerUser.meeting = false;\n }\n if (this.meetingServiceUser.userId == userId) {\n this.meetingServiceUser.meeting = false;\n }\n\n },\n // 听筒、免提 切换\n switchAudioRoute: function switchAudioRoute() {\n this.audioRoute = this.audioRoute === _TrtcDefines.TRTCCloudDef.TRTC_AUDIO_ROUTE_SPEAKER ? _TrtcDefines.TRTCCloudDef.\n TRTC_AUDIO_ROUTE_EARPIECE : _TrtcDefines.TRTCCloudDef.TRTC_AUDIO_ROUTE_SPEAKER;\n this.trtcCloud.setAudioRoute(this.audioRoute);\n },\n handleEvents: function handleEvents() {var _this9 = this;\n this.trtcCloud.on('onWarning', function (res) {\n uni.showToast({\n title: \"onWarning: \".concat(JSON.stringify(res)),\n icon: 'none' });\n\n });\n this.trtcCloud.on('onError', function (res) {\n __f__(\"log\", 'onError', res, \" at pages/meeting/meeting.nvue:564\");\n _this9.messageList.unshift({\n content: \"error: \".concat(JSON.stringify(res)) });\n\n _this9.sdkAppId && uni.$onErrorUpload(_this9.sdkAppId, JSON.stringify(res));\n });\n this.trtcCloud.on('onEnterRoom', function (result) {\n __f__(\"log\", \"- onEnterRoom = \".concat(result), \" at pages/meeting/meeting.nvue:571\");\n if (result > 0) {\n _this9.messageList.unshift({\n content: \"\\u8FDB\\u623F\\u6210\\u529F\\uFF0C\\u8017\\u65F6: \".concat(result, \"ms\") });\n\n } else {\n __f__(\"log\", \"enter room failed\\uFF0Cerror code = \".concat(result), \" at pages/meeting/meeting.nvue:577\");\n }\n });\n this.trtcCloud.on('onExitRoom', function (reason) {\n var reasonList = ['主动调用 exitRoom 退房', '被服务器踢出当前房间', '当前房间整个被解散'];\n _this9.messageList.unshift({\n content: \"\\u9000\\u623F \".concat(reasonList[reason]) });\n\n _this9.meeting = false;\n });\n this.trtcCloud.on('onFirstVideoFrame', function (res) {\n __f__(\"log\", \"\\u6E32\\u67D3\\u7684\\u9996\\u5E27\\u753B\\u9762\\u54CD\\u5E94 = \".concat(JSON.stringify(res)), \" at pages/meeting/meeting.nvue:588\");\n });\n this.trtcCloud.on('onRemoteUserEnterRoom', function (userId) {\n __f__(\"log\", 'onRemoteUserEnterRoom', userId, \" at pages/meeting/meeting.nvue:591\");\n _this9.messageList.unshift({\n content: \"\\u7528\\u6237\".concat(userId, \"\\u52A0\\u5165\\u89C6\\u9891\\u804A\\u5929\") });\n\n _this9.startRemoteView(userId);\n });\n this.trtcCloud.on('onRemoteUserLeaveRoom', function (userId) {\n var index = _this9.meetingUsers.findIndex(function (t) {return t.userId == userId;});\n if (index >= 0) {\n _this9.meetingUsers.splice(index, 1);\n }\n if (_this9.meetingUsers.length < 2) {\n _this9.meetingUsers.push({\n type: '等待进入' });\n\n }\n _this9.messageList.unshift({\n content: \"\\u7528\\u6237\\u79BB\\u5F00\\u623F\\u95F4: userId = \".concat(userId) });\n\n\n\n });\n this.trtcCloud.on('onUserVideoAvailable', function (res) {var\n\n userId =\n\n res.userId,available = res.available;\n if (available) {\n _this9.startLocalPreview();\n }\n if (userId && available) {\n _this9.startRemoteView(userId);\n } else {\n _this9.stopRemoteView(userId);\n }\n });\n this.trtcCloud.on('onExitRoom', function (res) {\n __f__(\"log\", \"onExitRoom = \".concat(JSON.stringify(res)), \" at pages/meeting/meeting.nvue:628\");\n });\n } } };exports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-hbuilderx/packages/uni-app-plus-nvue/dist/require-native-plugin.js */ 10)[\"default\"], __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 11)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvbWVldGluZy9tZWV0aW5nLm52dWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBK0dBOzs7QUFHQTtBQUNBO0FBQ0E7Ozs7OztBQU1BOzs7QUFHQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0EsMkYsd25DQUpBO0FBS0EsZ0Q7QUFDQTtBQUNBO0FBQ0EseUNBREE7QUFFQSwyQ0FGQSxFQURBOztBQUtBLE1BTEEsa0JBS0E7QUFDQTtBQUNBLHNCQURBO0FBRUE7QUFDQTtBQUNBLGlCQURBLEVBSEE7OztBQU9BO0FBQ0E7QUFDQSxpQkFEQSxFQVJBOzs7QUFZQTtBQUNBO0FBQ0EsaUJBREEsRUFiQTs7O0FBaUJBO0FBQ0E7QUFDQSxpQkFEQSxFQWxCQTs7O0FBc0JBLGFBdEJBO0FBdUJBLHFCQXZCQTtBQXdCQSxpQkF4QkE7QUF5QkEsaUJBekJBO0FBMEJBLGVBMUJBO0FBMkJBLGdCQTNCQTtBQTRCQSxzQkE1QkE7QUE2QkEsK0RBN0JBLEVBNkJBO0FBQ0EseUJBOUJBO0FBK0JBLHlFQS9CQTtBQWdDQSxzQkFoQ0E7QUFpQ0Esb0VBakNBO0FBa0NBLHFCQWxDQTtBQW1DQSx3QkFuQ0E7QUFvQ0Esb0JBcENBO0FBcUNBLGNBckNBO0FBc0NBLGVBdENBO0FBdUNBLHFCQXZDQTs7QUF5Q0EsZUF6Q0E7QUEwQ0EsMEJBMUNBOztBQTRDQSxHQWxEQTtBQW1EQTtBQUNBLHVEQURBLENBbkRBOztBQXNEQSxRQXREQSxrQkFzREEsQ0F0REEsRUFzREE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFEQTtBQUVBLHNCQUZBOztBQUlBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHNC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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBN09BO0FBOE9BLGtCQTlPQSwwQkE4T0EsTUE5T0EsRUE4T0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxLQTFQQTtBQTJQQTtBQUNBLG9CQTVQQSw4QkE0UEE7QUFDQTtBQUNBLCtCQURBLEdBQ0Esa0RBREE7QUFFQTtBQUNBLEtBaFFBO0FBaVFBLGdCQWpRQSwwQkFpUUE7QUFDQTtBQUNBO0FBQ0EsMERBREE7QUFFQSxzQkFGQTs7QUFJQSxPQUxBO0FBTUE7QUFDQTtBQUNBO0FBQ0Esd0RBREE7O0FBR0E7QUFDQSxPQU5BO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3RkFEQTs7QUFHQSxTQUpBLE1BSUE7QUFDQTtBQUNBO0FBQ0EsT0FUQTtBQVVBO0FBQ0E7QUFDQTtBQUNBLDZEQURBOztBQUdBO0FBQ0EsT0FOQTtBQU9BO0FBQ0E7QUFDQSxPQUZBO0FBR0E7QUFDQTtBQUNBO0FBQ0Esd0ZBREE7O0FBR0E7QUFDQSxPQU5BO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFEQTs7QUFHQTtBQUNBO0FBQ0EsbUZBREE7Ozs7QUFLQSxPQWZBO0FBZ0JBOztBQUVBLGNBRkE7O0FBSUEsV0FKQSxDQUVBLE1BRkEsQ0FHQSxTQUhBLEdBSUEsR0FKQSxDQUdBLFNBSEE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FGQSxNQUVBO0FBQ0E7QUFDQTtBQUNBLE9BYkE7QUFjQTtBQUNBO0FBQ0EsT0FGQTtBQUdBLEtBM1VBLEVBcktBLEUiLCJmaWxlIjoiNDYuanMiLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XHJcblx0PHZpZXc+XHJcblx0XHQ8aW1hZ2Ugc3JjPVwiLi4vLi4vc3RhdGljL2hvbWUvYmFuY2syLnBuZ1wiIHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTtcIiBtb2RlPVwid2lkdGhGaXhcIj48L2ltYWdlPlxyXG5cdFx0PHZpZXcgY2xhc3M9XCJiYWNrXCI+XHJcblx0XHRcdDwhLS0g5bmz5Y+w5a6i5pyNIC0tPlxyXG5cdFx0XHQ8dmlldyBjbGFzcz1cImxpc3QxXCIgc3R5bGU9XCJhbGlnbi1pdGVtczogY2VudGVyO292ZXJmbG93OiBoaWRkZW47XCI+XHJcblx0XHRcdFx0PHRleHQgY2xhc3M9XCJuYW1lXCIgdi1pZj1cIiFtZWV0aW5nU2VydmljZVVzZXIudXNlcklkXCI+e3sgJ+etieW+heWuouacjei/m+WFpScgfX08L3RleHQ+XHJcblx0XHRcdFx0PHRleHQgY2xhc3M9XCJuYW1lXCIgdi1lbHNlPuWuouacjVxyXG5cdFx0XHRcdFx0e3sgbWVldGluZ1NlcnZpY2VVc2VyLnVzZXJJbmZvICYmIG1lZXRpbmdTZXJ2aWNlVXNlci51c2VySW5mby5uYW1lIHx8ICcnIH19PC90ZXh0PlxyXG5cdFx0XHRcdDx2aWV3IHN0eWxlPVwiaGVpZ2h0OjM2MHJweDtmbGV4LWRpcmVjdGlvbjogcm93O2p1c3RpZnktY29udGVudDogY2VudGVyO21hcmdpbjogMCBhdXRvO1wiPlxyXG5cdFx0XHRcdFx0PHZpZXdcclxuXHRcdFx0XHRcdFx0OmNsYXNzPVwieydoaWRlJzohKG1lZXRpbmdTZXJ2aWNlVXNlci51c2VySWQgJiYgdXNlcklkID09IG1lZXRpbmdTZXJ2aWNlVXNlci51c2VySWQgJiYgbWVldGluZ1NlcnZpY2VVc2VyLm1lZXRpbmcpfVwiPlxyXG5cdFx0XHRcdFx0XHQ8dHJ0Yy1sb2NhbC12aWV3IDp2aWV3SWQ9XCJtZWV0aW5nU2VydmljZVVzZXIudXNlcklkXCIgc3R5bGU9XCJoZWlnaHQ6IDM4MHJweDt3aWR0aDogMzYwcnB4O1wiPlxyXG5cdFx0XHRcdFx0XHQ8L3RydGMtbG9jYWwtdmlldz5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDx2aWV3XHJcblx0XHRcdFx0XHRcdDpjbGFzcz1cInsnaGlkZSc6IShtZWV0aW5nU2VydmljZVVzZXIudXNlcklkICYmIHVzZXJJZCAhPSBtZWV0aW5nU2VydmljZVVzZXIudXNlcklkICYmIG1lZXRpbmdTZXJ2aWNlVXNlci5tZWV0aW5nKX1cIj5cclxuXHRcdFx0XHRcdFx0PHRydGMtcmVtb3RlLXZpZXcgOnVzZXJJZD1cIm1lZXRpbmdTZXJ2aWNlVXNlci51c2VySWRcIiA6dmlld0lkPVwibWVldGluZ1NlcnZpY2VVc2VyLnVzZXJJZFwiXHJcblx0XHRcdFx0XHRcdFx0c3R5bGU9XCJoZWlnaHQ6IDM2MHJweDt3aWR0aDogMzAwcnB4O2JvcmRlcjogMXB4IHNvbGlkICNmZmY7XCI+XHJcblx0XHRcdFx0XHRcdDwvdHJ0Yy1yZW1vdGUtdmlldz5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDxpbWFnZSB2LWlmPVwiIW1lZXRpbmdTZXJ2aWNlVXNlci5tZWV0aW5nXCIgdi1lbHNlIHNyYz1cIi4uLy4uL3N0YXRpYy9ob21lL3JlbiAoMSkud2VicFwiXHJcblx0XHRcdFx0XHRcdHN0eWxlPVwid2lkdGg6IDM4MHJweDtoZWlnaHQ6IDM2MHJweDtib3JkZXItcmFkaXVzOiA0MHJweDtcIiBtb2RlPVwiYXNwZWN0RmlsbFwiPlxyXG5cdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0XHQ8dmlldyBzdHlsZT1cImZsZXgtZGlyZWN0aW9uOiByb3c7anVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7d2lkdGg6IDEwMHZ3O1wiPlxyXG5cdFx0XHRcdDwhLS3kvpvmlrktLT5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cImxpc3QxXCIgc3R5bGU9XCJ3aWR0aDogMzAwcnB4O21hcmdpbi1yaWdodDogMjBweDtcIj5cclxuXHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwibmFtZVwiIHYtaWY9XCIhbWVldGluZ0J1c2luZXNzVXNlci51c2VySWRcIj7nrYnlvoXkvpvmlrnov5vlhaU8L3RleHQ+XHJcblx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cIm5hbWVcIiB2LWVsc2U+5L6b5pa5XHJcblx0XHRcdFx0XHRcdHt7IG1lZXRpbmdCdXNpbmVzc1VzZXIudXNlckluZm8gJiYgbWVldGluZ0J1c2luZXNzVXNlci51c2VySW5mby5uYW1lIHx8ICcnIH19PC90ZXh0PlxyXG5cdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OjM2MHJweDtcIj5cclxuXHRcdFx0XHRcdFx0PHZpZXdcclxuXHRcdFx0XHRcdFx0XHQ6Y2xhc3M9XCJ7J2hpZGUnOiEobWVldGluZ0J1c2luZXNzVXNlciAmJiBtZWV0aW5nQnVzaW5lc3NVc2VyLnVzZXJJZCAmJiBtZWV0aW5nQnVzaW5lc3NVc2VyLnVzZXJJZCA9PSB1c2VySWQgJiYgbWVldGluZ0J1c2luZXNzVXNlci5tZWV0aW5nKX1cIj5cclxuXHRcdFx0XHRcdFx0XHQ8dHJ0Yy1sb2NhbC12aWV3IDp2aWV3SWQ9XCJtZWV0aW5nQnVzaW5lc3NVc2VyLnVzZXJJZFwiIHN0eWxlPVwiaGVpZ2h0OiAzODBycHg7d2lkdGg6IDM2MHJweDtcIj5cclxuXHRcdFx0XHRcdFx0XHQ8L3RydGMtbG9jYWwtdmlldz5cclxuXHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8dmlld1xyXG5cdFx0XHRcdFx0XHRcdDpjbGFzcz1cInsnaGlkZSc6IShtZWV0aW5nQnVzaW5lc3NVc2VyICYmIG1lZXRpbmdCdXNpbmVzc1VzZXIudXNlcklkICYmIG1lZXRpbmdCdXNpbmVzc1VzZXIudXNlcklkICE9IHVzZXJJZCAmJiAhbWVldGluZ0J1c2luZXNzVXNlci5tZWV0aW5nKX1cIj5cclxuXHRcdFx0XHRcdFx0XHQ8dHJ0Yy1yZW1vdGUtdmlldyA6dXNlcklkPVwibWVldGluZ0J1c2luZXNzVXNlci51c2VySWRcIiA6dmlld0lkPVwibWVldGluZ0J1c2luZXNzVXNlci51c2VySWRcIlxyXG5cdFx0XHRcdFx0XHRcdFx0c3R5bGU9XCJoZWlnaHQ6IDM2MHJweDt3aWR0aDogMzAwcnB4O2JvcmRlcjogMXB4IHNvbGlkICNmZmY7XCI+XHJcblx0XHRcdFx0XHRcdFx0PC90cnRjLXJlbW90ZS12aWV3PlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDxpbWFnZVxyXG5cdFx0XHRcdFx0XHRcdHYtaWY9XCIhbWVldGluZ0J1c2luZXNzVXNlciB8fCAhbWVldGluZ0J1c2luZXNzVXNlci51c2VySWQgfHwgIW1lZXRpbmdCdXNpbmVzc1VzZXIubWVldGluZ1wiXHJcblx0XHRcdFx0XHRcdFx0c3JjPVwiLi4vLi4vc3RhdGljL2hvbWUvcmVuICgyKS53ZWJwXCJcclxuXHRcdFx0XHRcdFx0XHRzdHlsZT1cIndpZHRoOiAzMDBycHg7aGVpZ2h0OiAzNjBycHg7Ym9yZGVyLXJhZGl1czogNDBycHg7XCIgbW9kZT1cImFzcGVjdEZpbGxcIj5cclxuXHRcdFx0XHRcdFx0PC9pbWFnZT5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblxyXG5cdFx0XHRcdDwhLS3pnIDmlrktLT5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cImxpc3QxXCIgc3R5bGU9XCJ3aWR0aDogMzAwcnB4O21hcmdpbi1yaWdodDogMjBweDtcIj5cclxuXHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwibmFtZVwiIHYtaWY9XCIhbWVldGluZ0N1c3RvbWVyVXNlci51c2VySWRcIj7nrYnlvoXpnIDmlrnov5vlhaU8L3RleHQ+XHJcblx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cIm5hbWVcIiB2LWVsc2U+6ZyA5pa5XHJcblx0XHRcdFx0XHRcdHt7IG1lZXRpbmdDdXN0b21lclVzZXIudXNlckluZm8gJiYgbWVldGluZ0N1c3RvbWVyVXNlci51c2VySW5mby5uYW1lIHx8ICcnIH19PC90ZXh0PlxyXG5cdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OjM2MHJweDtcIj5cclxuXHRcdFx0XHRcdFx0PHZpZXdcclxuXHRcdFx0XHRcdFx0XHQ6Y2xhc3M9XCJ7J2hpZGUnOiEobWVldGluZ0N1c3RvbWVyVXNlciAmJiBtZWV0aW5nQ3VzdG9tZXJVc2VyLnVzZXJJZCAmJiBtZWV0aW5nQ3VzdG9tZXJVc2VyLnVzZXJJZCA9PSB1c2VySWQgJiYgbWVldGluZ0N1c3RvbWVyVXNlci5tZWV0aW5nKX1cIj5cclxuXHRcdFx0XHRcdFx0XHQ8dHJ0Yy1sb2NhbC12aWV3IDp2aWV3SWQ9XCJtZWV0aW5nQ3VzdG9tZXJVc2VyLnVzZXJJZFwiIHN0eWxlPVwiaGVpZ2h0OiAzODBycHg7d2lkdGg6IDM2MHJweDtcIj5cclxuXHRcdFx0XHRcdFx0XHQ8L3RydGMtbG9jYWwtdmlldz5cclxuXHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8dmlld1xyXG5cdFx0XHRcdFx0XHRcdDpjbGFzcz1cInsnaGlkZSc6IShtZWV0aW5nQ3VzdG9tZXJVc2VyICYmIG1lZXRpbmdDdXN0b21lclVzZXIudXNlcklkICYmIG1lZXRpbmdDdXN0b21lclVzZXIudXNlcklkICE9IHVzZXJJZCAmJiBtZWV0aW5nQ3VzdG9tZXJVc2VyLm1lZXRpbmcpfVwiPlxyXG5cdFx0XHRcdFx0XHRcdDx0cnRjLXJlbW90ZS12aWV3IDp1c2VySWQ9XCJtZWV0aW5nQ3VzdG9tZXJVc2VyLnVzZXJJZFwiIDp2aWV3SWQ9XCJtZWV0aW5nQ3VzdG9tZXJVc2VyLnVzZXJJZFwiXHJcblx0XHRcdFx0XHRcdFx0XHRzdHlsZT1cImhlaWdodDogMzYwcnB4O3dpZHRoOiAzMDBycHg7Ym9yZGVyOiAxcHggc29saWQgI2ZmZjtcIj5cclxuXHRcdFx0XHRcdFx0XHQ8L3RydGMtcmVtb3RlLXZpZXc+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0PGltYWdlIHYtaWY9XCIhbWVldGluZ0N1c3RvbWVyVXNlci5tZWV0aW5nXCIgc3JjPVwiLi4vLi4vc3RhdGljL2hvbWUvcmVuICgyKS53ZWJwXCJcclxuXHRcdFx0XHRcdFx0XHRzdHlsZT1cIndpZHRoOiAzMDBycHg7aGVpZ2h0OiAzNjBycHg7Ym9yZGVyLXJhZGl1czogNDBycHg7XCIgbW9kZT1cImFzcGVjdEZpbGxcIj5cclxuXHRcdFx0XHRcdFx0PC9pbWFnZT5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdFx0PHZpZXcgc3R5bGU9XCJmbGV4LWRpcmVjdGlvbjogcm93O2p1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kO1wiPlxyXG5cdFx0XHRcdDxibG9jaz5cclxuXHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwiYnRuXCIgQGNsaWNrPVwiaGFuZGxlU3RhcnRNZWV0aW5nXCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDIwcnB4O1wiPlxyXG5cdFx0XHRcdFx0XHTlvIDlp4vop4bpopFcclxuXHRcdFx0XHRcdDwvdGV4dD5cclxuXHRcdFx0XHQ8L2Jsb2NrPlxyXG5cdFx0XHRcdDx0ZXh0IGNsYXNzPVwiYnRuXCIgdi1pZj1cIm1lZXRpbmdcIiBAY2xpY2s9XCJoYW5kbGVFbmR0TWVldGluZ1wiIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAyMHB4O1wiPlxyXG5cdFx0XHRcdFx05oyC5patXHJcblx0XHRcdFx0PC90ZXh0PlxyXG5cdFx0XHRcdDx0ZXh0IGNsYXNzPVwiYnRuXCIgQGNsaWNrPVwiaGFuZGxlSW52aXRlU2VydmljZVVzZXJcIiB2LWlmPVwiIWhhc0ludml0ZSAmJiBqb2luVHlwZSA9PSAnY3VzdG9tZXInXCJcclxuXHRcdFx0XHRcdHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAyMHJweDtcIj5cclxuXHRcdFx0XHRcdOmCgOivt+WuouacjVxyXG5cdFx0XHRcdDwvdGV4dD5cclxuXHRcdFx0XHQ8dGV4dCBjbGFzcz1cImJ0blwiIHYtaWY9XCJqb2luVHlwZSA9PSAnY3VzdG9tZXInXCIgQGNsaWNrPVwiaGFuZGxlVG9TdWJtaXRPcmRlclwiPlxyXG5cdFx0XHRcdFx056uL5Y2z5LiL5Y2VXHJcblx0XHRcdFx0PC90ZXh0PlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDxzY3JvbGwtdmlldyA6c2Nyb2xsLXk9XCJ0cnVlXCIgY2xhc3M9XCJtZXNzYWdlXCI+XHJcblx0XHRcdFx0PHZpZXcgc3R5bGU9XCJ3aWR0aDogMzIwcHg7XCI+XHJcblx0XHRcdFx0XHQ8dmlldyB2LWZvcj1cIml0ZW0gaW4gbWVzc2FnZUxpc3RcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7ZmxleC1kaXJlY3Rpb246IHJvdztmbGV4LXdyYXA6IHdyYXA7XCI+XHJcblx0XHRcdFx0XHRcdDx0ZXh0IHN0eWxlPVwiY29sb3I6ICNGRkRBOTcgO1wiPnt7aXRlbS5hdXRob3IgfHwgJ+ezu+e7nyd9fTo8L3RleHQ+XHJcblx0XHRcdFx0XHRcdDx0ZXh0XHJcblx0XHRcdFx0XHRcdFx0c3R5bGU9XCJjb2xvcjogI2ZmZjttYXJnaW4tbGVmdDogMTBycHg7d29yZC1icmVhazogYnJlYWstYWxsO3dvcmQtd3JhcDogYnJlYWstd29yZDt3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XCI+XHJcblx0XHRcdFx0XHRcdFx0e3tpdGVtLmNvbnRlbnR9fVxyXG5cdFx0XHRcdFx0XHQ8L3RleHQ+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHQ8L3Njcm9sbC12aWV3PlxyXG5cdFx0XHQ8dmlld1xyXG5cdFx0XHRcdHN0eWxlPVwicG9zaXRpb246IGZpeGVkO2JvdHRvbTogMDtsZWZ0OiAwO3JpZ2h0OiAwO2p1c3RpZnktY29udGVudDogY2VudGVyO2FsaWduLWl0ZW1zOiBjZW50ZXI7Ym90dG9tOiAyMHB4O1wiPlxyXG5cdFx0XHRcdDxpbnB1dCBjbGFzcz1cImlucHV0XCIgcGxhY2Vob2xkZXI9XCLlm57lpI1cIiBwbGFjZWhvbGRlci1zdHlsZT1cImNvbG9yOiNmZmZcIiB2LW1vZGVsPVwibWVzc2FnZUNvbnRlbnRcIlxyXG5cdFx0XHRcdFx0QGNvbmZpcm09XCJzZW5kTWVzc2FnZVwiIGNvbmZpcm0tdHlwZT1cInNlbmRcIiAvPlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHQ8L3ZpZXc+XHJcblx0PC92aWV3PlxyXG48L3RlbXBsYXRlPlxyXG48c2NyaXB0PlxyXG5cdGltcG9ydCB7XHJcblx0XHRtYXBTdGF0ZVxyXG5cdH0gZnJvbSAndnVleCc7XHJcblx0aW1wb3J0IHBlcm1pc2lvbiBmcm9tIFwiQC9UcnRjQ2xvdWQvcGVybWlzc2lvbi5qc1wiO1xyXG5cdGltcG9ydCBUcnRjQ2xvdWQgZnJvbSAnQC9UcnRjQ2xvdWQvbGliL2luZGV4JztcclxuXHRpbXBvcnQge1xyXG5cdFx0VFJUQ0FwcFNjZW5lLFxyXG5cdFx0VFJUQ1ZpZGVvU3RyZWFtVHlwZSxcclxuXHRcdFRSVENDbG91ZERlZixcclxuXHRcdFRSVENBdWRpb1F1YWxpdHlcclxuXHR9IGZyb20gJ0AvVHJ0Y0Nsb3VkL2xpYi9UcnRjRGVmaW5lcyc7XHJcblx0aW1wb3J0IHtcclxuXHRcdGdlblRlc3RVc2VyU2lnXHJcblx0fSBmcm9tICdAL2RlYnVnL0dlbmVyYXRlVGVzdFVzZXJTaWcnO1xyXG5cdGltcG9ydCBUcnRjTG9jYWxWaWV3IGZyb20gJ0AvVHJ0Y0Nsb3VkL3ZpZXcvVHJ0Y0xvY2FsVmlldyc7XHJcblx0aW1wb3J0IFRydGNSZW1vdGVWaWV3IGZyb20gJ0AvVHJ0Y0Nsb3VkL3ZpZXcvVHJ0Y1JlbW90ZVZpZXcnO1xyXG5cdGNvbnN0IFRydGNFdmVudCA9IHVuaS5yZXF1aXJlTmF0aXZlUGx1Z2luKCdnbG9iYWxFdmVudCcpO1xyXG5cclxuXHRpbXBvcnQgQVBJIGZyb20gJ0AvYXBpcy9pbmRleC5qcydcclxuXHRpbXBvcnQgY29uZmlnIGZyb20gJ0AvY29tbW9uL2NvbmZpZy9jb25maWcuanMnXHJcblx0aW1wb3J0IHNlcnZpY2UgZnJvbSAnQC9zZXJ2aWNlL3NlcnZpY2UuanMnXHJcblx0bGV0IHNvY2tldFRhc2sgPSBnZXRBcHAoKS5nbG9iYWxEYXRhLnNvY2tldFRhc2s7XHJcblx0ZXhwb3J0IGRlZmF1bHQge1xyXG5cdFx0Y29tcG9uZW50czoge1xyXG5cdFx0XHRUcnRjTG9jYWxWaWV3OiBUcnRjTG9jYWxWaWV3LFxyXG5cdFx0XHRUcnRjUmVtb3RlVmlldzogVHJ0Y1JlbW90ZVZpZXcsXHJcblx0XHR9LFxyXG5cdFx0ZGF0YSgpIHtcclxuXHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRoYXNJbnZpdGU6IGZhbHNlLFxyXG5cdFx0XHRcdC8v5oiRXHJcblx0XHRcdFx0bWVldGluZ1VzZXJNeToge1xyXG5cdFx0XHRcdFx0dXNlcklkOiAwXHJcblx0XHRcdFx0fSxcclxuXHJcblx0XHRcdFx0Ly/pnIDmlrlcclxuXHRcdFx0XHRtZWV0aW5nQ3VzdG9tZXJVc2VyOiB7XHJcblx0XHRcdFx0XHR1c2VySWQ6IDBcclxuXHRcdFx0XHR9LFxyXG5cclxuXHRcdFx0XHQvL+S+m+aWuVxyXG5cdFx0XHRcdG1lZXRpbmdCdXNpbmVzc1VzZXI6IHtcclxuXHRcdFx0XHRcdHVzZXJJZDogMFxyXG5cdFx0XHRcdH0sXHJcblxyXG5cdFx0XHRcdC8v5a6i5pyNXHJcblx0XHRcdFx0bWVldGluZ1NlcnZpY2VVc2VyOiB7XHJcblx0XHRcdFx0XHR1c2VySWQ6IDBcclxuXHRcdFx0XHR9LFxyXG5cclxuXHRcdFx0XHRudW06IDEwLFxyXG5cdFx0XHRcdHRydGNDbG91ZDogbnVsbCxcclxuXHRcdFx0XHRzZGtBcHBJZDogMCxcclxuXHRcdFx0XHR1c2VyU2lnOiAnJyxcclxuXHRcdFx0XHRyb29tSWQ6IDAsXHJcblx0XHRcdFx0dXNlcklkOiAnJyxcclxuXHRcdFx0XHR1c2VyVHlwZTogJ+etieW+hei/m+WFpScsXHJcblx0XHRcdFx0YXBwU2NlbmU6IFRSVENBcHBTY2VuZS5UUlRDQXBwU2NlbmVWaWRlb0NhbGwsIC8vIFRSVENBcHBTY2VuZVZpZGVvQ2FsbFxyXG5cdFx0XHRcdGlzRnJvbnRDYW1lcmE6IHRydWUsXHJcblx0XHRcdFx0c3RyZWFtVHlwZTogVFJUQ1ZpZGVvU3RyZWFtVHlwZS5UUlRDVmlkZW9TdHJlYW1UeXBlQmlnLFxyXG5cdFx0XHRcdHJlbW90ZVVzZXJJZDogJycsXHJcblx0XHRcdFx0YXVkaW9Sb3V0ZTogVFJUQ0Nsb3VkRGVmLlRSVENfQVVESU9fUk9VVEVfU1BFQUtFUixcclxuXHRcdFx0XHRtZXNzYWdlTGlzdDogW10sXHJcblx0XHRcdFx0bWVzc2FnZUNvbnRlbnQ6ICcnLFxyXG5cdFx0XHRcdG15VXNlckluZm86ICcnLFxyXG5cdFx0XHRcdHJvb206IHt9LFxyXG5cdFx0XHRcdHNob3BJZDogMCxcclxuXHRcdFx0XHRzZWxsZXJVc2VySWQ6IDAsXHJcblxyXG5cdFx0XHRcdHBhcmFtOiB7fSxcclxuXHRcdFx0XHRqb2luVHlwZTogJ2N1c3RvbWVyJ1xyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0Y29tcHV0ZWQ6IHtcclxuXHRcdFx0Li4ubWFwU3RhdGUoWyd1c2VyJywgJ3N0YXRpc3RpY3MnLCAnY29tbW9uJ10pXHJcblx0XHR9LFxyXG5cdFx0b25Mb2FkKGUpIHtcclxuXHRcdFx0Y29uc29sZS5sb2coJ29ubG9hZCBlJywgZSk7XHJcblx0XHRcdGNvbnNvbGUubG9nKCd1c2VyJywgdGhpcy51c2VyKTtcclxuXHRcdFx0dGhpcy5wYXJhbSA9IGU7XHJcblxyXG5cdFx0XHQvL+WKoOWFpeexu+Wei++8jOaYr+S7peS7gOS5iOi6q+S7veWKoOWFpeeahFxyXG5cdFx0XHRsZXQgam9pblR5cGUgPSBlLmpvaW5UeXBlIHx8ICdjdXN0b21lcidcclxuXHRcdFx0Y29uc29sZS5sb2coJ29uTG9hZCBqb2luVHlwZScsIGpvaW5UeXBlKTtcclxuXHRcdFx0dGhpcy5qb2luVHlwZSA9IGpvaW5UeXBlO1xyXG5cclxuXHRcdFx0dGhpcy5yb29tSWQgPSBlLnJvb21JZDtcclxuXHRcdFx0dGhpcy5zZWxsZXJVc2VySWQgPSBlLnVzZXJpZDtcclxuXHRcdFx0dGhpcy51c2VySWQgPSAndXNlcl8nICsgdGhpcy51c2VyLmlkO1xyXG5cdFx0XHR0aGlzLm1lZXRpbmdVc2VyTXkgPSB7XHJcblx0XHRcdFx0dXNlcklkOiB0aGlzLnVzZXJJZCxcclxuXHRcdFx0XHRpZDogdGhpcy51c2VyLmlkXHJcblx0XHRcdH07XHJcblx0XHRcdHRoaXMuc2hvcElkID0gZS5zaG9wX2lkO1xyXG5cclxuXHRcdFx0aWYgKGpvaW5UeXBlID09ICdjdXN0b21lcicpIHtcclxuXHRcdFx0XHQvL+mcgOaWuVxyXG5cdFx0XHRcdHRoaXMuY3JlYXRlUm9vbSh7XHJcblx0XHRcdFx0XHRcIm5hbWVcIjogXCLmtYvor5XmiL/pl7RcIixcclxuXHRcdFx0XHRcdFwiYm9keVRleHRcIjogXCJcIixcclxuXHRcdFx0XHRcdFwicm9vbU5vXCI6IFwiXCIsXHJcblx0XHRcdFx0XHRcImRlc2NyaXB0aW9uXCI6IFwiXCIsXHJcblx0XHRcdFx0XHRcImNsaWVudElkXCI6IFwiXCIsXHJcblx0XHRcdFx0XHQvLyBcInByb2R1Y3RJZFwiOiBlLmdvb2RzX2lkLFxyXG5cdFx0XHRcdFx0XCJzaG9wSWRcIjogZS5zaG9wX2lkXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0dGhpcy5tZWV0aW5nQ3VzdG9tZXJVc2VyID0ge1xyXG5cdFx0XHRcdFx0Li4udGhpcy5tZWV0aW5nVXNlck15XHJcblx0XHRcdFx0fTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHR0aGlzLnJvb20gPSB7XHJcblx0XHRcdFx0XHRpZDogZS5yb29tSWQsXHJcblx0XHRcdFx0XHRSb29tTm86IGUucm9vbUlkXHJcblx0XHRcdFx0fTtcclxuXHJcblx0XHRcdFx0dGhpcy5tZWV0aW5nQ3VzdG9tZXJVc2VyID0ge1xyXG5cdFx0XHRcdFx0dXNlcklkOiAndXNlcl8nICsgZS5jdXN0b21lcmlkLnRvU3RyaW5nKCksXHJcblx0XHRcdFx0XHRpZDogZS5jdXN0b21lcmlkXHJcblx0XHRcdFx0fTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0aWYgKGpvaW5UeXBlID09ICdzZWxsZXInKSB7XHJcblx0XHRcdFx0Ly/kvpvmlrlcclxuXHRcdFx0XHR0aGlzLm1lZXRpbmdCdXNpbmVzc1VzZXIgPSB7XHJcblx0XHRcdFx0XHR1c2VySWQ6IHRoaXMubWVldGluZ1VzZXJNeS51c2VySWQsXHJcblx0XHRcdFx0XHRpZDogdGhpcy5tZWV0aW5nVXNlck15LmlkXHJcblx0XHRcdFx0fTtcclxuXHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKGpvaW5UeXBlID09ICdzZXJ2aWNlJykge1xyXG5cdFx0XHRcdC8v5bmz5Y+w5a6i5pyNXHJcblx0XHRcdFx0dGhpcy5tZWV0aW5nU2VydmljZVVzZXIgPSB7XHJcblx0XHRcdFx0XHR1c2VySWQ6IHRoaXMubWVldGluZ1VzZXJNeS51c2VySWQsXHJcblx0XHRcdFx0XHRpZDogdGhpcy5tZWV0aW5nVXNlck15LmlkXHJcblx0XHRcdFx0fTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Y29uc29sZS5sb2coJ29uTG9hZCBtZWV0aW5nQnVzaW5lc3NVc2VyJywgdGhpcy5tZWV0aW5nQnVzaW5lc3NVc2VyKTtcclxuXHRcdFx0Y29uc29sZS5sb2coJ29uTG9hZCBtZWV0aW5nU2VydmljZVVzZXInLCB0aGlzLm1lZXRpbmdTZXJ2aWNlVXNlcik7XHJcblxyXG5cdFx0XHQvLyB0aGlzLmdldFVzZXJJbmZvKHRoaXMudXNlci5pZCxqb2luVHlwZSk7XHJcblx0XHRcdHRoaXMuam9pblJvb20oKTtcclxuXHJcblx0XHRcdHRoaXMuJGZvcmNlVXBkYXRlKCk7XHJcblxyXG5cdFx0XHQvL+aWh+Wtl+iBiuWkqVxyXG5cdFx0XHR1bmkuJG9uKCdzb2NrZXRNZXNzYWdlJywgKGRhdGEpID0+IHtcclxuXHRcdFx0XHRjb25zb2xlLmxvZygnc29ja2V0TWVzc2FnZScsIGRhdGEpO1xyXG5cdFx0XHRcdGlmIChkYXRhLm1lc3NhZ2VUeXBlID09ICdzZW5kX3RvX3Jvb20nKSB7XHJcblx0XHRcdFx0XHR0aGlzLm1lc3NhZ2VMaXN0LnB1c2goe1xyXG5cdFx0XHRcdFx0XHRhdXRob3I6IGRhdGEucmVhbE5hbWUsXHJcblx0XHRcdFx0XHRcdGNvbnRlbnQ6IGRhdGEudG9NZXNzYWdlXHJcblx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRpZiAoZGF0YS5tZXNzYWdlVHlwZSA9PSAnam9pbicpIHtcclxuXHRcdFx0XHRcdGxldCB1c2VyaWQgPSBkYXRhLnVzZXJJbnRJZDtcclxuXHRcdFx0XHRcdGlmICh1c2VyaWQgIT0gdGhpcy51c2VyLmlkKSB7XHJcblx0XHRcdFx0XHRcdC8v5pyJ55So5oi35Yqg5YWl5oi/6Ze0XHJcblx0XHRcdFx0XHRcdGxldCBqb2luVHlwZSA9IGRhdGEubWVzc2FnZUNvbnRlbnQ7XHJcblx0XHRcdFx0XHRcdGlmIChqb2luVHlwZSA9PSAnc2VsbGVyJykge1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMubWVldGluZ0J1c2luZXNzVXNlci51c2VySWQgPSAndXNlcl8nICsgdXNlcmlkO1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMubWVldGluZ0J1c2luZXNzVXNlci5pZCA9IHVzZXJpZDtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRpZiAoam9pblR5cGUgPT0gJ3NlcnZpY2UnKSB7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5tZWV0aW5nU2VydmljZVVzZXIudXNlcklkID0gJ3VzZXJfJyArIHVzZXJpZDtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLm1lZXRpbmdTZXJ2aWNlVXNlci5pZCA9IHVzZXJpZDtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSlcclxuXHRcdH0sXHJcblx0XHRvblNob3coKSB7fSxcclxuXHRcdG9uSGlkZSgpIHt9LFxyXG5cdFx0bW91bnRlZCgpIHtcclxuXHRcdFx0aWYgKHVuaS5nZXRTeXN0ZW1JbmZvU3luYygpLnBsYXRmb3JtID09PSAnYW5kcm9pZCcpIHtcclxuXHRcdFx0XHRwZXJtaXNpb24ucmVxdWVzdEFuZHJvaWRQZXJtaXNzaW9uKCdhbmRyb2lkLnBlcm1pc3Npb24uUkVDT1JEX0FVRElPJyk7XHJcblx0XHRcdFx0cGVybWlzaW9uLnJlcXVlc3RBbmRyb2lkUGVybWlzc2lvbignYW5kcm9pZC5wZXJtaXNzaW9uLkNBTUVSQScpO1xyXG5cdFx0XHR9XHJcblx0XHRcdHRoaXMuaW5pdFVzZXJTaWduKCk7XHJcblx0XHR9LFxyXG5cdFx0b25VbmxvYWQoKSB7XHJcblx0XHRcdHRoaXMuZGVzdHJveUluc3RhbmNlKCk7XHJcblx0XHRcdGNvbnNvbGUubG9nKCctIG9uVW5sb2FkJyk7XHJcblx0XHR9LFxyXG5cdFx0b25CYWNrUHJlc3MoKSB7XHJcblx0XHRcdHRoaXMuZGVzdHJveUluc3RhbmNlKCk7XHJcblx0XHR9LFxyXG5cdFx0bWV0aG9kczoge1xyXG5cdFx0XHRnZXRVc2VySW5mbyh1c2VyaWQsIHR5cGUpIHtcclxuXHRcdFx0XHRjb25zb2xlLmxvZygnZ2V0VXNlckluZm8nLCB1c2VyaWQsIHR5cGUpO1xyXG5cdFx0XHRcdEFQSS5tZXNzYWdlLmdldFVzZXJUeXBlSW5mbyh1c2VyaWQpLnRoZW4ocmVzID0+IHtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCdnZXRVc2VyVHlwZUluZm8nLCByZXMpO1xyXG5cdFx0XHRcdFx0aWYgKHR5cGUgPT0gJ2N1c3RvbWVyJykge1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnZ2V0VXNlclR5cGVJbmZvIHR5cGU9Y3VzdG9tZXInKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5tZWV0aW5nQ3VzdG9tZXJVc2VyLnVzZXJJbmZvID0gcmVzLmRhdGFbMF07XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRpZiAodHlwZSA9PSAnc2VsbGVyJykge1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnZ2V0VXNlclR5cGVJbmZvIHR5cGU9c2VsbGVyJyk7XHJcblx0XHRcdFx0XHRcdHRoaXMubWVldGluZ0J1c2luZXNzVXNlci51c2VySW5mbyA9IHJlcy5kYXRhWzBdO1xyXG5cdFx0XHRcdFx0XHR0aGF0Lm1lc3NhZ2VMaXN0LnB1c2goe1xyXG5cdFx0XHRcdFx0XHRcdGF1dGhvcjogJ+ezu+e7nycsXHJcblx0XHRcdFx0XHRcdFx0Y29udGVudDogJ+S+m+aWueWKoOWFpeaIv+mXtCdcclxuXHRcdFx0XHRcdFx0fSlcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGlmICh0eXBlID09ICdzZXJ2aWNlJykge1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnZ2V0VXNlclR5cGVJbmZvIHR5cGU9c2VydmljZScpO1xyXG5cdFx0XHRcdFx0XHQvLyB0aGlzLm1lZXRpbmdTZXJ2aWNlVXNlci51c2VySW5mbyA9IHJlcy5kYXRhWzBdO1xyXG5cdFx0XHRcdFx0XHR0aGF0Lm1lc3NhZ2VMaXN0LnB1c2goe1xyXG5cdFx0XHRcdFx0XHRcdGF1dGhvcjogJ+ezu+e7nycsXHJcblx0XHRcdFx0XHRcdFx0Y29udGVudDogJ+WuouacjeWKoOWFpeaIv+mXtCdcclxuXHRcdFx0XHRcdFx0fSlcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCdnZXRVc2VyVHlwZUluZm8gbWVldGluZ1NlcnZpY2VVc2VyJywgdGhpcy5tZWV0aW5nU2VydmljZVVzZXIpO1xyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH0sXHJcblx0XHRcdGpvaW5Sb29tKCkge1xyXG5cdFx0XHRcdGxldCBwYXJhbSA9IHtcclxuXHRcdFx0XHRcdG1ldGhvZDogJ2pvaW4nLFxyXG5cdFx0XHRcdFx0SXNSb29tOiB0cnVlLFxyXG5cdFx0XHRcdFx0Um9vbU5vOiB0aGlzLnJvb21JZCxcclxuXHRcdFx0XHRcdFJvb21OYW1lOiB0aGlzLnJvb20uUm9vbU5hbWUsXHJcblx0XHRcdFx0XHRtZXNzYWdlQ29udGVudDogdGhpcy5qb2luVHlwZSxcclxuXHRcdFx0XHRcdHRva2VuOiBzZXJ2aWNlLmdldFRva2VuQ2hhb2dlKCksXHJcblx0XHRcdFx0fTtcclxuXHRcdFx0XHRjb25zb2xlLmxvZygnam9pblJvb20nLHBhcmFtKTtcclxuXHRcdFx0XHRzb2NrZXRUYXNrLnNlbmQoe1xyXG5cdFx0XHRcdFx0ZGF0YTogSlNPTi5zdHJpbmdpZnkocGFyYW0pLFxyXG5cdFx0XHRcdFx0c3VjY2VzcyhyZXMpIHt9LFxyXG5cdFx0XHRcdFx0ZmFpbChlKSB7fSxcclxuXHRcdFx0XHRcdGNvbXBsZXRlKCkge31cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fSxcclxuXHRcdFx0aW5pdFVzZXJTaWduKCkge1xyXG5cdFx0XHRcdGlmICh0aGlzLnVzZXJJZCkge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ2luaXRVc2VyU2lnbicsIHRoaXMudXNlcklkKTtcclxuXHRcdFx0XHRcdC8vIOeUn+aIkCB1c2VyU2lnXHJcblx0XHRcdFx0XHRjb25zdCB7XHJcblx0XHRcdFx0XHRcdHNka0FwcElkLFxyXG5cdFx0XHRcdFx0XHR1c2VyU2lnXHJcblx0XHRcdFx0XHR9ID0gZ2VuVGVzdFVzZXJTaWcodGhpcy51c2VySWQpO1xyXG5cdFx0XHRcdFx0dGhpcy5zZGtBcHBJZCA9IHNka0FwcElkO1xyXG5cdFx0XHRcdFx0dGhpcy51c2VyU2lnID0gdXNlclNpZztcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCdzZGtBcHBJZCx1c2VyU2lnJywgc2RrQXBwSWQsIHVzZXJTaWcpO1xyXG5cdFx0XHRcdFx0aWYgKCFzZGtBcHBJZCB8fCAhdXNlclNpZykge1xyXG5cdFx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHtcclxuXHRcdFx0XHRcdFx0XHR0aXRsZTogJ+ivt+Whq+WGmSBzZGtBcHBJZOOAgXVzZXJTaWcnLFxyXG5cdFx0XHRcdFx0XHRcdGljb246ICdub25lJ1xyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdFx0XHRcdHRoaXMuaW5pdFVzZXJTaWduKCk7XHJcblx0XHRcdFx0XHR9LCAyMDApXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRoYW5kbGVUb1N1Ym1pdE9yZGVyKCkge1xyXG5cdFx0XHRcdHVuaS5uYXZpZ2F0ZUJhY2soKTtcclxuXHRcdFx0fSxcclxuXHRcdFx0Ly/pgoDor7fllYblrrblrqLmnI1cclxuXHRcdFx0aGFuZGxlSW52aXRlQnVzaW5lc3NVc2VyKCkge1xyXG5cdFx0XHRcdEFQSS5tZXNzYWdlLmdldEludml0ZUJ1c2luZXNzVXNlckpvaW4odGhpcy5zaG9wSWQsIHRoaXMucm9vbS5Sb29tTm8sIHRoaXMuc2VsbGVyVXNlcklkKS50aGVuKHJlcyA9PiB7fSlcclxuXHRcdFx0fSxcclxuXHRcdFx0Ly/pgoDor7flubPlj7DlrqLmnI1cclxuXHRcdFx0aGFuZGxlSW52aXRlU2VydmljZVVzZXIoKSB7XHJcblx0XHRcdFx0dW5pLnNob3dMb2FkaW5nKCk7XHJcblx0XHRcdFx0QVBJLm1lc3NhZ2UuZ2V0SW52aXRlU2VydmljZVVzZXJKb2luKHRoaXMucm9vbS5Sb29tTm8sICdqb2luTXVsdGlwbGF5ZXJWaWRlbycpLnRoZW4ocmVzID0+IHtcclxuXHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xyXG5cdFx0XHRcdFx0XHR0aXRsZTogJ+mCgOivt+aIkOWKnydcclxuXHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0XHR0aGlzLmhhc0ludml0ZSA9IHRydWU7XHJcblx0XHRcdFx0fSkuZmluYWxseSgoKSA9PiB7XHJcblx0XHRcdFx0XHR1bmkuaGlkZUxvYWRpbmcoKTtcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fSxcclxuXHRcdFx0Y3JlYXRlUm9vbShkYXRhKSB7XHJcblx0XHRcdFx0dW5pLnNob3dMb2FkaW5nKHtcclxuXHRcdFx0XHRcdHRpdGxlOiAn5q2j5Zyo5Yib5bu65oi/6Ze0J1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdEFQSS5tZXNzYWdlLnBvc3RBZGRSb29tKGRhdGEpLnRoZW4ocmVzID0+IHtcclxuXHRcdFx0XHRcdHRoaXMucm9vbSA9IHJlcy5kYXRhO1xyXG5cdFx0XHRcdFx0dGhpcy5yb29tSWQgPSByZXMuZGF0YS5Sb29tTm87XHJcblx0XHRcdFx0XHR0aGlzLmhhbmRsZUludml0ZUJ1c2luZXNzVXNlcigpO1xyXG5cdFx0XHRcdFx0dGhpcy5qb2luUm9vbSgpO1xyXG5cdFx0XHRcdH0pLmZpbmFsbHkoKCkgPT4ge1xyXG5cdFx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0sXHJcblxyXG5cdFx0XHRzZW5kTWVzc2FnZSgpIHtcclxuXHRcdFx0XHRsZXQgdGhhdCA9IHRoaXM7XHJcblx0XHRcdFx0dGhhdC5tZXNzYWdlTGlzdC5wdXNoKHtcclxuXHRcdFx0XHRcdGF1dGhvcjogJ+aIkScsXHJcblx0XHRcdFx0XHRjb250ZW50OiB0aGF0Lm1lc3NhZ2VDb250ZW50XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0XHR0aGF0Lm1lc3NhZ2VDb250ZW50ID0gJyc7XHJcblx0XHRcdFx0c29ja2V0VGFzay5zZW5kKHtcclxuXHRcdFx0XHRcdGRhdGE6IEpTT04uc3RyaW5naWZ5KHtcclxuXHRcdFx0XHRcdFx0Zm9ybVVzZXJJZDogdGhpcy51c2VySWQsXHJcblx0XHRcdFx0XHRcdGNvbnRlbnRUeXBlOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRjb250ZW50OiB0aGlzLm1lc3NhZ2VDb250ZW50LFxyXG5cdFx0XHRcdFx0XHRzZW5kVGltZTogbmV3IERhdGUoKSxcclxuXHRcdFx0XHRcdFx0bWV0aG9kOiAnc2VuZF90b19yb29tJyxcclxuXHRcdFx0XHRcdFx0Um9vbU5vOiB0aGlzLnJvb20uUm9vbU5vLFxyXG5cdFx0XHRcdFx0XHRSb29tTmFtZTogdGhpcy5yb29tLk5hbWUsXHJcblx0XHRcdFx0XHRcdElzUm9vbTogdHJ1ZVxyXG5cdFx0XHRcdFx0fSksXHJcblx0XHRcdFx0XHRzdWNjZXNzKHJlcykge30sXHJcblx0XHRcdFx0XHRmYWlsKGUpIHt9LFxyXG5cdFx0XHRcdFx0Y29tcGxldGUoKSB7fVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRoYW5kbGVTdGFydE1lZXRpbmcoKSB7XHJcblx0XHRcdFx0dGhpcy5tZWV0aW5nID0gdHJ1ZTtcclxuXHRcdFx0XHR0aGlzLiRuZXh0VGljaygoKSA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLmNyZWF0ZVRydGNDbG91ZCgpO1xyXG5cdFx0XHRcdFx0dGhpcy5lbnRlclJvb20oKTtcclxuXHRcdFx0XHRcdHRoaXMuc3RhcnRMb2NhbFByZXZpZXcoKTtcclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRoYW5kbGVFbmR0TWVldGluZygpIHtcclxuXHRcdFx0XHR0aGlzLm1lZXRpbmcgPSBmYWxzZTtcclxuXHRcdFx0XHR0aGlzLnN0b3BMb2NhbFByZXZpZXcoKTtcclxuXHRcdFx0XHR0aGlzLmV4aXRSb29tKCk7XHJcblx0XHRcdFx0dGhpcy5kZXN0cm95SW5zdGFuY2UoKTtcclxuXHRcdFx0fSxcclxuXHJcblx0XHRcdGJpbmRJbnB1dENoYW5nZShldmVudCwgdHlwZSkge1xyXG5cdFx0XHRcdGNvbnN0IHZhbHVlID0gZXZlbnQuZGV0YWlsLnZhbHVlO1xyXG5cdFx0XHRcdHN3aXRjaCAodHlwZSkge1xyXG5cdFx0XHRcdFx0Y2FzZSAncm9vbUlkJzoge1xyXG5cdFx0XHRcdFx0XHR0aGlzLnJvb21JZCA9IHZhbHVlO1xyXG5cdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGNhc2UgJ3VzZXJJZCc6IHtcclxuXHRcdFx0XHRcdFx0dGhpcy51c2VySWQgPSB2YWx1ZTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRkZXN0cm95SW5zdGFuY2UoKSB7XHJcblx0XHRcdFx0aWYgKHRoaXMudHJ0Y0Nsb3VkKSB7XHJcblx0XHRcdFx0XHRUcnRjQ2xvdWQuZGVzdHJveUluc3RhbmNlKCk7XHJcblx0XHRcdFx0XHR0aGlzLnRydGNDbG91ZCA9IG51bGw7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRjcmVhdGVUcnRjQ2xvdWQoKSB7XHJcblx0XHRcdFx0Y29uc29sZS5sb2coJ2NyZWF0ZVRydGNDbG91ZCcsIHRoaXMuc2RrQXBwSWQpO1xyXG5cdFx0XHRcdHRoaXMudHJ0Y0Nsb3VkID0gVHJ0Y0Nsb3VkLmNyZWF0ZUluc3RhbmNlKCk7XHJcblx0XHRcdFx0Y29uc29sZS5sb2coJ3RoaXMudHJ0Y0Nsb3VkJywgdGhpcy50cnRjQ2xvdWQpXHJcblx0XHRcdFx0dGhpcy5oYW5kbGVFdmVudHMoKTtcclxuXHRcdFx0XHR0aGlzLnNka0FwcElkICYmIHVuaS4kY3JlYXRlVHJ0Y0Nsb3VkVXBsb2FkKHRoaXMuc2RrQXBwSWQpO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRlbnRlclJvb20oKSB7XHJcblx0XHRcdFx0dHJ5IHtcclxuXHRcdFx0XHRcdGNvbnN0IHtcclxuXHRcdFx0XHRcdFx0c2RrQXBwSWQsXHJcblx0XHRcdFx0XHRcdGFwcFNjZW5lLFxyXG5cdFx0XHRcdFx0XHR1c2VyU2lnXHJcblx0XHRcdFx0XHR9ID0gdGhpcztcclxuXHRcdFx0XHRcdGxldCBwYXJhbSA9IHtcclxuXHRcdFx0XHRcdFx0cm9vbUlkOiAwLFxyXG5cdFx0XHRcdFx0XHRzdHJSb29tSWQ6IHRoaXMucm9vbS5Sb29tTm8sXHJcblx0XHRcdFx0XHRcdHVzZXJJZDogdGhpcy51c2VySWQsXHJcblx0XHRcdFx0XHRcdHNka0FwcElkLFxyXG5cdFx0XHRcdFx0XHR1c2VyU2lnXHJcblx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ2VudGVyUm9vbScsIHBhcmFtKTtcclxuXHRcdFx0XHRcdHRoaXMudHJ0Y0Nsb3VkLmVudGVyUm9vbShwYXJhbSwgYXBwU2NlbmUpO1xyXG5cdFx0XHRcdFx0dGhpcy5zZGtBcHBJZCAmJiB1bmkuJGVudGVyUm9vbVN1Y2Nlc3NVcGxvYWQodGhpcy5zZGtBcHBJZCk7XHJcblxyXG5cdFx0XHRcdFx0bGV0IHVzZXJJZCA9IHRoaXMudXNlcklkO1xyXG5cdFx0XHRcdFx0aWYgKHRoaXMubWVldGluZ0J1c2luZXNzVXNlci51c2VySWQgPT0gdXNlcklkKSB7XHJcblx0XHRcdFx0XHRcdHRoaXMubWVldGluZ0J1c2luZXNzVXNlci5tZWV0aW5nID0gdHJ1ZTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGlmICh0aGlzLm1lZXRpbmdDdXN0b21lclVzZXIudXNlcklkID09IHVzZXJJZCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLm1lZXRpbmdDdXN0b21lclVzZXIubWVldGluZyA9IHRydWU7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRpZiAodGhpcy5tZWV0aW5nU2VydmljZVVzZXIudXNlcklkID09IHVzZXJJZCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLm1lZXRpbmdTZXJ2aWNlVXNlci5tZWV0aW5nID0gdHJ1ZTtcclxuXHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0fSBjYXRjaCAoZXJyb3IpIHtcclxuXHRcdFx0XHRcdHRoaXMubWVzc2FnZUxpc3QudW5zaGlmdCh7XHJcblx0XHRcdFx0XHRcdGNvbnRlbnQ6IGBlbnRlclJvb20gZXJyb3IgPSAke0pTT04uc3RyaW5naWZ5KGVycm9yKX1gXHJcblx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0dGhpcy5zZGtBcHBJZCAmJiB1bmkuJGVudGVyUm9vbUZhaWxlZFVwbG9hZCh0aGlzLnNka0FwcElkLCBKU09OLnN0cmluZ2lmeShlcnJvcikpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0ZXhpdFJvb20oKSB7XHJcblx0XHRcdFx0dHJ5IHtcclxuXHRcdFx0XHRcdHRoaXMubWVldGluZyA9IGZhbHNlO1xyXG5cdFx0XHRcdFx0dGhpcy5zdG9wTG9jYWxQcmV2aWV3KCk7XHJcblx0XHRcdFx0XHR0aGlzLnN0b3BSZW1vdGVWaWV3KCk7XHJcblx0XHRcdFx0XHR0aGlzLnRydGNDbG91ZC5leGl0Um9vbSgpO1xyXG5cdFx0XHRcdH0gY2F0Y2ggKGUpIHtcclxuXHRcdFx0XHRcdC8vIFRPRE8gaGFuZGxlIHRoZSBleGNlcHRpb25cclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdHN0YXJ0TG9jYWxQcmV2aWV3KCkge1xyXG5cdFx0XHRcdHRoaXMuJG5leHRUaWNrKCgpID0+IHtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCdzdGFydExvY2FsUHJldmlldycsIHRoaXMudXNlcklkKTtcclxuXHRcdFx0XHRcdHRoaXMubWVldGluZyA9IHRydWU7XHJcblx0XHRcdFx0XHR0aGlzLnRydGNDbG91ZC5zdGFydExvY2FsUHJldmlldyh0aGlzLmlzRnJvbnRDYW1lcmEsIHRoaXMudXNlcklkKTtcclxuXHRcdFx0XHRcdHRoaXMudHJ0Y0Nsb3VkLnN0YXJ0TG9jYWxBdWRpbyhUUlRDQXVkaW9RdWFsaXR5LlRSVENBdWRpb1F1YWxpdHlEZWZhdWx0KTtcclxuXHRcdFx0XHRcdHRoaXMuc2RrQXBwSWQgJiYgdW5pLiRzdGFydExvY2FsUHJldmlld1VwbG9hZCh0aGlzLnNka0FwcElkKTtcclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRzdG9wTG9jYWxQcmV2aWV3KCkge1xyXG5cdFx0XHRcdHRoaXMudHJ0Y0Nsb3VkLnN0b3BMb2NhbFByZXZpZXcoKTtcclxuXHRcdFx0fSxcclxuXHRcdFx0c3RhcnRSZW1vdGVWaWV3KHVzZXJJZCkge1xyXG5cdFx0XHRcdHRoaXMuJG5leHRUaWNrKCgpID0+IHtcclxuXHRcdFx0XHRcdHRoaXMudHJ0Y0Nsb3VkLnN0YXJ0UmVtb3RlVmlldyh1c2VySWQsIHRoaXMuc3RyZWFtVHlwZSwgdXNlcklkKTtcclxuXHRcdFx0XHRcdHRoaXMuc2RrQXBwSWQgJiYgdW5pLiRzdGFydFJlbW90ZVZpZXdTdWNjZXNzVXBsb2FkKHRoaXMuc2RrQXBwSWQpO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdGlmICh0aGlzLm1lZXRpbmdCdXNpbmVzc1VzZXIudXNlcklkID09IHVzZXJJZCkge1xyXG5cdFx0XHRcdFx0dGhpcy5tZWV0aW5nQnVzaW5lc3NVc2VyLm1lZXRpbmcgPSB0cnVlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRpZiAodGhpcy5tZWV0aW5nQ3VzdG9tZXJVc2VyLnVzZXJJZCA9PSB1c2VySWQpIHtcclxuXHRcdFx0XHRcdHRoaXMubWVldGluZ0N1c3RvbWVyVXNlci5tZWV0aW5nID0gdHJ1ZTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0aWYgKHRoaXMubWVldGluZ1NlcnZpY2VVc2VyLnVzZXJJZCA9PSB1c2VySWQpIHtcclxuXHRcdFx0XHRcdHRoaXMubWVldGluZ1NlcnZpY2VVc2VyLm1lZXRpbmcgPSB0cnVlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0c3RvcFJlbW90ZVZpZXcodXNlcklkKSB7XHJcblx0XHRcdFx0dGhpcy50cnRjQ2xvdWQuc3RvcFJlbW90ZVZpZXcodXNlcklkLCB0aGlzLnN0cmVhbVR5cGUpO1xyXG5cdFx0XHRcdGlmICh0aGlzLm1lZXRpbmdCdXNpbmVzc1VzZXIudXNlcklkID09IHVzZXJJZCkge1xyXG5cdFx0XHRcdFx0dGhpcy5tZWV0aW5nQnVzaW5lc3NVc2VyLm1lZXRpbmcgPSBmYWxzZTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0aWYgKHRoaXMubWVldGluZ0N1c3RvbWVyVXNlci51c2VySWQgPT0gdXNlcklkKSB7XHJcblx0XHRcdFx0XHR0aGlzLm1lZXRpbmdDdXN0b21lclVzZXIubWVldGluZyA9IGZhbHNlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRpZiAodGhpcy5tZWV0aW5nU2VydmljZVVzZXIudXNlcklkID09IHVzZXJJZCkge1xyXG5cdFx0XHRcdFx0dGhpcy5tZWV0aW5nU2VydmljZVVzZXIubWVldGluZyA9IGZhbHNlO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdH0sXHJcblx0XHRcdC8vIOWQrOetkuOAgeWFjeaPkCDliIfmjaJcclxuXHRcdFx0c3dpdGNoQXVkaW9Sb3V0ZSgpIHtcclxuXHRcdFx0XHR0aGlzLmF1ZGlvUm91dGUgPSB0aGlzLmF1ZGlvUm91dGUgPT09IFRSVENDbG91ZERlZi5UUlRDX0FVRElPX1JPVVRFX1NQRUFLRVIgPyBUUlRDQ2xvdWREZWZcclxuXHRcdFx0XHRcdC5UUlRDX0FVRElPX1JPVVRFX0VBUlBJRUNFIDogVFJUQ0Nsb3VkRGVmLlRSVENfQVVESU9fUk9VVEVfU1BFQUtFUjtcclxuXHRcdFx0XHR0aGlzLnRydGNDbG91ZC5zZXRBdWRpb1JvdXRlKHRoaXMuYXVkaW9Sb3V0ZSk7XHJcblx0XHRcdH0sXHJcblx0XHRcdGhhbmRsZUV2ZW50cygpIHtcclxuXHRcdFx0XHR0aGlzLnRydGNDbG91ZC5vbignb25XYXJuaW5nJywgKHJlcykgPT4ge1xyXG5cdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XHJcblx0XHRcdFx0XHRcdHRpdGxlOiBgb25XYXJuaW5nOiAke0pTT04uc3RyaW5naWZ5KHJlcyl9YCxcclxuXHRcdFx0XHRcdFx0aWNvbjogJ25vbmUnLFxyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0dGhpcy50cnRjQ2xvdWQub24oJ29uRXJyb3InLCAocmVzKSA9PiB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZygnb25FcnJvcicsIHJlcylcclxuXHRcdFx0XHRcdHRoaXMubWVzc2FnZUxpc3QudW5zaGlmdCh7XHJcblx0XHRcdFx0XHRcdGNvbnRlbnQ6IGBlcnJvcjogJHtKU09OLnN0cmluZ2lmeShyZXMpfWBcclxuXHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0XHR0aGlzLnNka0FwcElkICYmIHVuaS4kb25FcnJvclVwbG9hZCh0aGlzLnNka0FwcElkLCBKU09OLnN0cmluZ2lmeShyZXMpKTtcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHR0aGlzLnRydGNDbG91ZC5vbignb25FbnRlclJvb20nLCAocmVzdWx0KSA9PiB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhgLSBvbkVudGVyUm9vbSA9ICR7cmVzdWx0fWApO1xyXG5cdFx0XHRcdFx0aWYgKHJlc3VsdCA+IDApIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5tZXNzYWdlTGlzdC51bnNoaWZ0KHtcclxuXHRcdFx0XHRcdFx0XHRjb250ZW50OiBg6L+b5oi/5oiQ5Yqf77yM6ICX5pe2OiAke3Jlc3VsdH1tc2BcclxuXHRcdFx0XHRcdFx0fSlcclxuXHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGBlbnRlciByb29tIGZhaWxlZO+8jGVycm9yIGNvZGUgPSAke3Jlc3VsdH1gKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHR0aGlzLnRydGNDbG91ZC5vbignb25FeGl0Um9vbScsIChyZWFzb24pID0+IHtcclxuXHRcdFx0XHRcdGNvbnN0IHJlYXNvbkxpc3QgPSBbJ+S4u+WKqOiwg+eUqCBleGl0Um9vbSDpgIDmiL8nLCAn6KKr5pyN5Yqh5Zmo6Lii5Ye65b2T5YmN5oi/6Ze0JywgJ+W9k+WJjeaIv+mXtOaVtOS4quiiq+ino+aVoyddO1xyXG5cdFx0XHRcdFx0dGhpcy5tZXNzYWdlTGlzdC51bnNoaWZ0KHtcclxuXHRcdFx0XHRcdFx0Y29udGVudDogYOmAgOaIvyAke3JlYXNvbkxpc3RbcmVhc29uXX1gXHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdHRoaXMubWVldGluZyA9IGZhbHNlO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdHRoaXMudHJ0Y0Nsb3VkLm9uKCdvbkZpcnN0VmlkZW9GcmFtZScsIChyZXMpID0+IHtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKGDmuLLmn5PnmoTpppbluKfnlLvpnaLlk43lupQgPSAke0pTT04uc3RyaW5naWZ5KHJlcyl9YCk7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0dGhpcy50cnRjQ2xvdWQub24oJ29uUmVtb3RlVXNlckVudGVyUm9vbScsICh1c2VySWQpID0+IHtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCdvblJlbW90ZVVzZXJFbnRlclJvb20nLCB1c2VySWQpO1xyXG5cdFx0XHRcdFx0dGhpcy5tZXNzYWdlTGlzdC51bnNoaWZ0KHtcclxuXHRcdFx0XHRcdFx0Y29udGVudDogYOeUqOaItyR7dXNlcklkfeWKoOWFpeinhumikeiBiuWkqWBcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0dGhpcy5zdGFydFJlbW90ZVZpZXcodXNlcklkKTtcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHR0aGlzLnRydGNDbG91ZC5vbignb25SZW1vdGVVc2VyTGVhdmVSb29tJywgKHVzZXJJZCkgPT4ge1xyXG5cdFx0XHRcdFx0bGV0IGluZGV4ID0gdGhpcy5tZWV0aW5nVXNlcnMuZmluZEluZGV4KHQgPT4gdC51c2VySWQgPT0gdXNlcklkKTtcclxuXHRcdFx0XHRcdGlmIChpbmRleCA+PSAwKSB7XHJcblx0XHRcdFx0XHRcdHRoaXMubWVldGluZ1VzZXJzLnNwbGljZShpbmRleCwgMSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRpZiAodGhpcy5tZWV0aW5nVXNlcnMubGVuZ3RoIDwgMikge1xyXG5cdFx0XHRcdFx0XHR0aGlzLm1lZXRpbmdVc2Vycy5wdXNoKHtcclxuXHRcdFx0XHRcdFx0XHR0eXBlOiAn562J5b6F6L+b5YWlJ1xyXG5cdFx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0dGhpcy5tZXNzYWdlTGlzdC51bnNoaWZ0KHtcclxuXHRcdFx0XHRcdFx0Y29udGVudDogYOeUqOaIt+emu+W8gOaIv+mXtDogdXNlcklkID0gJHt1c2VySWR9YFxyXG5cdFx0XHRcdFx0fSlcclxuXHJcblxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdHRoaXMudHJ0Y0Nsb3VkLm9uKCdvblVzZXJWaWRlb0F2YWlsYWJsZScsIChyZXMpID0+IHtcclxuXHRcdFx0XHRcdGNvbnN0IHtcclxuXHRcdFx0XHRcdFx0dXNlcklkLFxyXG5cdFx0XHRcdFx0XHRhdmFpbGFibGVcclxuXHRcdFx0XHRcdH0gPSByZXM7XHJcblx0XHRcdFx0XHRpZiAoYXZhaWxhYmxlKSB7XHJcblx0XHRcdFx0XHRcdHRoaXMuc3RhcnRMb2NhbFByZXZpZXcoKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGlmICh1c2VySWQgJiYgYXZhaWxhYmxlKSB7XHJcblx0XHRcdFx0XHRcdHRoaXMuc3RhcnRSZW1vdGVWaWV3KHVzZXJJZCk7XHJcblx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHR0aGlzLnN0b3BSZW1vdGVWaWV3KHVzZXJJZCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0dGhpcy50cnRjQ2xvdWQub24oJ29uRXhpdFJvb20nLCAocmVzKSA9PiB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhgb25FeGl0Um9vbSA9ICR7SlNPTi5zdHJpbmdpZnkocmVzKX1gKTtcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fSxcclxuXHRcdH1cclxuXHR9XHJcbjwvc2NyaXB0PlxyXG48c3R5bGUgc3JjPVwiQC9wYWdlcy9tZWV0aW5nL21lZXRpbmcuY3NzXCI+PC9zdHlsZT5cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///46\n");
2450 2450  
2451 2451 /***/ }),
2452 2452 /* 47 */
... ...