diff --git a/manifest.json b/manifest.json index b732c14..83dfea3 100644 --- a/manifest.json +++ b/manifest.json @@ -1,6 +1,6 @@ { - "name" : "教育咨询", - "appid" : "__UNI__7AA205C", + "name" : "法律咨询", + "appid" : "__UNI__358D505", "description" : "", "versionName" : "1.0.0", "versionCode" : "100", diff --git a/pages.json b/pages.json index cc8240c..9812c9c 100644 --- a/pages.json +++ b/pages.json @@ -3,7 +3,7 @@ { "path": "pages/index/index", "style": { - "navigationBarTitleText": "教育咨询", + "navigationBarTitleText": "法律咨询", "bounce": "none" // "softinputMode": "adjustResize" } diff --git a/pages/index/index.vue b/pages/index/index.vue index 5d8f5be..5343a7c 100644 --- a/pages/index/index.vue +++ b/pages/index/index.vue @@ -52,8 +52,8 @@ }, data() { return { - wssType: 'jiaoyu', // 网络连接类型 - avatarType: "/static/icon/jy.png", // AI头像类型 + wssType: 'falv', // 网络连接类型 + avatarType: "/static/icon/fl.png", // AI头像类型 talkList: [], ajax: { rows: 15, //每页数量 diff --git a/unpackage/dist/dev/app-plus/app-config-service.js b/unpackage/dist/dev/app-plus/app-config-service.js index adf9f1c..13f8b54 100644 --- a/unpackage/dist/dev/app-plus/app-config-service.js +++ b/unpackage/dist/dev/app-plus/app-config-service.js @@ -1,8 +1,8 @@ var isReady=false;var onReadyCallbacks=[]; var isServiceReady=false;var onServiceReadyCallbacks=[]; -var __uniConfig = {"pages":["pages/index/index"],"window":{"navigationBarTextStyle":"black","navigationBarTitleText":"人工智能","navigationBarBackgroundColor":"#F8F8F8","backgroundColor":"#F8F8F8"},"darkmode":false,"nvueCompiler":"uni-app","nvueStyleCompiler":"uni-app","renderer":"auto","splashscreen":{"alwaysShowBeforeRender":true,"autoclose":false},"appname":"教育咨询","compilerVersion":"3.8.12","entryPagePath":"pages/index/index","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000}}; -var __uniRoutes = [{"path":"/pages/index/index","meta":{"isQuit":true},"window":{"navigationBarTitleText":"教育咨询","bounce":"none"}}]; +var __uniConfig = {"pages":["pages/index/index"],"window":{"navigationBarTextStyle":"black","navigationBarTitleText":"人工智能","navigationBarBackgroundColor":"#F8F8F8","backgroundColor":"#F8F8F8"},"darkmode":false,"nvueCompiler":"uni-app","nvueStyleCompiler":"uni-app","renderer":"auto","splashscreen":{"alwaysShowBeforeRender":true,"autoclose":false},"appname":"法律咨询","compilerVersion":"3.8.12","entryPagePath":"pages/index/index","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000}}; +var __uniRoutes = [{"path":"/pages/index/index","meta":{"isQuit":true},"window":{"navigationBarTitleText":"法律咨询","bounce":"none"}}]; __uniConfig.onReady=function(callback){if(__uniConfig.ready){callback()}else{onReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"ready",{get:function(){return isReady},set:function(val){isReady=val;if(!isReady){return}const callbacks=onReadyCallbacks.slice(0);onReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}}); __uniConfig.onServiceReady=function(callback){if(__uniConfig.serviceReady){callback()}else{onServiceReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"serviceReady",{get:function(){return isServiceReady},set:function(val){isServiceReady=val;if(!isServiceReady){return}const callbacks=onServiceReadyCallbacks.slice(0);onServiceReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}}); service.register("uni-app-config",{create(a,b,c){if(!__uniConfig.viewport){var d=b.weex.config.env.scale,e=b.weex.config.env.deviceWidth,f=Math.ceil(e/d);Object.assign(__uniConfig,{viewport:f,defaultFontSize:Math.round(f/20)})}return{instance:{__uniConfig:__uniConfig,__uniRoutes:__uniRoutes,global:void 0,window:void 0,document:void 0,frames:void 0,self:void 0,location:void 0,navigator:void 0,localStorage:void 0,history:void 0,Caches:void 0,screen:void 0,alert:void 0,confirm:void 0,prompt:void 0,fetch:void 0,XMLHttpRequest:void 0,WebSocket:void 0,webkit:void 0,print:void 0}}}}); diff --git a/unpackage/dist/dev/app-plus/app-service.js b/unpackage/dist/dev/app-plus/app-service.js index 1c3ed64..5866416 100644 --- a/unpackage/dist/dev/app-plus/app-service.js +++ b/unpackage/dist/dev/app-plus/app-service.js @@ -1058,7 +1058,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _HBu /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nvar _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ 4);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 33));\nvar _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ 22));\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 35));\nvar base64 = _interopRequireWildcard(__webpack_require__(/*! base-64 */ 36));\nvar _cryptoJs = _interopRequireDefault(__webpack_require__(/*! ../../static/crypto-js/crypto-js.js */ 40));\nvar _parser = _interopRequireDefault(__webpack_require__(/*! ../../static/fast-xml-parser/src/parser */ 198));\nvar utf8 = _interopRequireWildcard(__webpack_require__(/*! utf8 */ 207));\nvar _bingMath = _interopRequireDefault(__webpack_require__(/*! @/components/bing-math/bing-math.vue */ 10));\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\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 _default = {\n components: {\n 'bing-math': _bingMath.default\n },\n data: function data() {\n return {\n wssType: 'jiaoyu',\n // 网络连接类型\n avatarType: \"/static/icon/jy.png\",\n // AI头像类型\n talkList: [],\n ajax: {\n rows: 15,\n //每页数量\n page: 1,\n //页码\n flag: false,\n // 请求开关\n loading: false,\n // 加载中\n loadText: '正在获取消息'\n },\n keyboardHeight: 0,\n showplc: true,\n content: '',\n c_content: '',\n n_content: '',\n avatar: '/static/avatar.png',\n // 用户头像\n params: [],\n // 发送的消息内容\n timer: '',\n socketTask: {},\n TEXT: '',\n historyTextList: [],\n // 历史会话信息,由于最大token12000,可以结合实际使用,进行移出\n tempRes: '',\n // 临时答复保存\n socketing: false,\n // 是否正在接收\n showStop: false,\n // 是否显示中断按钮\n scrollTop: 0,\n shouldScrollToBottom: true\n };\n },\n mounted: function mounted() {\n var _this = this;\n this.$nextTick(function () {\n _this.getHistoryMsg();\n });\n uni.onKeyboardHeightChange(function (e) {\n var h = _this.keyboardHeight;\n _this.keyboardHeight = e.height;\n _this.$nextTick(function () {\n setTimeout(function () {\n uni.pageScrollTo({\n scrollTop: 9999999,\n // 当前位置向下滚动\n duration: 300 // 滚动过渡时间为300ms,默认值为300ms\n });\n }, 0);\n });\n });\n },\n onLoad: function onLoad() {\n var _this2 = this;\n var avatar = uni.getStorageSync('avatar');\n avatar ? this.avatar = avatar : null;\n uni.$on('MPinfo', function (e) {\n _this2.avatar = e.avatar;\n });\n },\n beforeDestroy: function beforeDestroy() {\n uni.offKeyboardHeightChange();\n },\n onPageScroll: function onPageScroll(e) {\n if (e.scrollTop < 5) {\n this.getHistoryMsg();\n }\n },\n watch: {\n n_content: function n_content(n, o) {\n var _this3 = this;\n // this.c_content = n;\n if (this.timer) clearInterval(this.timer);\n var cl = this.c_content.length;\n var nc = this.n_content.split('');\n this.timer = setInterval(function () {\n if (cl < nc.length) {\n _this3.c_content += nc[cl];\n cl++;\n if (cl % 6 == 0) _this3.$nextTick(function () {\n uni.pageScrollTo({\n scrollTop: 999999\n });\n });\n } else {\n // console.log(this.socketing==false, cl == nc.length);\n if (_this3.socketing == false) _this3.showStop = false;\n clearInterval(_this3.timer);\n _this3.$nextTick(function () {\n uni.pageScrollTo({\n scrollTop: 9999999\n });\n });\n }\n }, 60);\n }\n },\n methods: {\n copyText: function copyText(str) {\n uni.setClipboardData({\n data: str,\n success: function success() {\n uni.showToast({\n icon: 'none',\n title: '复制成功'\n });\n }\n });\n },\n // 获取历史消息\n getHistoryMsg: function getHistoryMsg() {\n var _this4 = this;\n return;\n if (this.ajax.flag) {\n return; //\n }\n\n var get = /*#__PURE__*/function () {\n var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {\n var data, selector;\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _this4.hideLoadTips();\n _this4.ajax.flag = false;\n _context.next = 4;\n return _this4.joinHistoryMsg();\n case 4:\n data = _context.sent;\n __f__(\"log\", '----- 模拟数据格式,供参考 -----', \" at pages/index/index.vue:169\");\n __f__(\"log\", data, \" at pages/index/index.vue:170\"); // 查看请求返回的数据结构 \n\n // 获取待滚动元素选择器,解决插入数据后,滚动条定位时使用\n selector = '';\n if (_this4.ajax.page > 1) {\n // 非第一页,则取历史消息数据的第一条信息元素\n selector = \"#msg-\".concat(_this4.talkList[0].id);\n } else {\n // 第一页,则取当前消息数据的最后一条信息元素\n selector = \"#msg-\".concat(data[data.length - 1].id);\n }\n\n // 将获取到的消息数据合并到消息数组中\n _this4.talkList = [].concat((0, _toConsumableArray2.default)(data), (0, _toConsumableArray2.default)(_this4.talkList));\n\n // 数据挂载后执行,不懂的请自行阅读 Vue.js 文档对 Vue.nextTick 函数说明。\n _this4.$nextTick(function () {\n // 设置当前滚动的位置\n _this4.setPageScrollTo(selector);\n _this4.hideLoadTips(true);\n if (data.length < _this4.ajax.rows) {\n // 当前消息数据条数小于请求要求条数时,则无更多消息,不再允许请求。\n // 可在此处编写无更多消息数据时的逻辑\n } else {\n _this4.ajax.page++;\n\n // 延迟 200ms ,以保证设置窗口滚动已完成\n setTimeout(function () {\n _this4.ajax.flag = true;\n }, 200);\n }\n });\n case 11:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n return function get() {\n return _ref.apply(this, arguments);\n };\n }();\n get();\n },\n // 拼接历史记录消息\n joinHistoryMsg: function joinHistoryMsg() {\n var _this5 = this;\n var join = function join() {\n var arr = [];\n\n //通过当前页码及页数,模拟数据内容\n var startIndex = (_this5.ajax.page - 1) * _this5.ajax.rows;\n var endIndex = startIndex + _this5.ajax.rows;\n for (var i = startIndex; i < endIndex; i++) {\n arr.push({\n \"id\": i,\n // 消息的ID\n \"content\": \"\\u8FD9\\u662F\\u5386\\u53F2\\u8BB0\\u5F55\\u7684\\u7B2C\".concat(i + 1, \"\\u6761\\u6D88\\u606F\"),\n // 消息内容\n \"type\": Math.random() > 0.5 ? 1 : 0,\n // 此为消息类别,设 1 为发出去的消息,0 为收到对方的消息,\n \"pic\": \"/static/avatar.png\" // 头像\n });\n }\n\n /*\n \t颠倒数组中元素的顺序。将最新的数据排在本次接口返回数据的最后面。\n \t后端接口按 消息的时间降序查找出当前页的数据后,再将本页数据按消息时间降序排序返回。\n \t这是数据的重点,因为页面滚动条和上拉加载历史的问题。\n */\n arr.reverse();\n return arr;\n };\n\n // 此处用到 ES6 的 Promise 知识,不懂的请自行学习。\n return new Promise(function (done, fail) {\n // 无数据请求接口,由 setTimeout 模拟,正式项目替换为 ajax 即可。\n setTimeout(function () {\n var data = join();\n done(data);\n }, 1500);\n });\n },\n focus: function focus() {\n // this.$nextTick(()=>{\n // setTimeout(()=>{\n // uni.pageScrollTo({\n // scrollTop: 9999999, // 当前位置向下滚动\n // duration: 300 // 滚动过渡时间为300ms,默认值为300ms\n // });\n // }, 0)\n // })\n },\n // 设置页面滚动位置\n setPageScrollTo: function setPageScrollTo(selector) {\n var view = uni.createSelectorQuery().in(this).select(selector);\n view.boundingClientRect(function (res) {\n uni.pageScrollTo({\n scrollTop: res.top - 30,\n // -30 为多显示出大半个消息的高度,示意上面还有信息。\n duration: 0\n });\n }).exec();\n },\n // 隐藏加载提示\n hideLoadTips: function hideLoadTips(flag) {\n var _this6 = this;\n if (flag) {\n this.ajax.loadText = '消息获取成功';\n setTimeout(function () {\n _this6.ajax.loading = false;\n }, 300);\n } else {\n this.ajax.loading = true;\n this.ajax.loadText = '正在获取消息';\n }\n },\n // 关闭连接\n closeSocketTask: function closeSocketTask() {\n var _this7 = this;\n try {\n clearInterval(this.timer);\n this.talkList[this.talkList.length - 1].content = this.c_content + '';\n // console.log(this.talkList[this.talkList.length - 1].content);\n // this.c_content = '';\n // this.n_content = '';\n this.socketTask.close({\n code: 500,\n // APP端存在BUG,正常关闭的code为1000,无法正常关闭,需要将code换为其他值\n complete: function complete(res) {\n _this7.showStop = false;\n __f__(\"log\", '主动断开', res, \" at pages/index/index.vue:289\");\n _this7.wsLiveFlag = false;\n }\n });\n } catch (e) {\n //TODO handle the exception\n }\n },\n // 发送信息\n send: function send() {\n var _this8 = this;\n if (!this.content) {\n uni.showToast({\n title: '请输入有效的内容',\n icon: 'none'\n });\n return;\n }\n this.showStop = true;\n // 将当前发送信息 添加到消息列表。\n var data = {\n \"id\": new Date().getTime(),\n \"content\": this.content,\n \"type\": 1,\n \"pic\": this.avatar\n };\n __f__(\"log\", data, \" at pages/index/index.vue:314\");\n this.TEXT = this.content;\n this.talkList.push(data);\n this.talkList.push({\n \"id\": new Date().getTime(),\n \"content\": '',\n \"type\": 2,\n \"pic\": this.avatarType\n });\n this.n_content = '';\n this.c_content = '';\n this.socketing = true;\n // return ;\n this.$nextTick(function () {\n // 清空内容框中的内容\n _this8.content = '';\n // uni.pageScrollTo({\n // scrollTop: 999999, // 设置一个超大值,以保证滚动条滚动到底部\n // duration: 0\n // });\n });\n\n this.sendToSpark();\n },\n sendToSpark: function sendToSpark() {\n var _this9 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {\n var realThis;\n return _regenerator.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n // let myUrl = await this.getWebSocketUrl();\n _this9.tempRes = \"\";\n realThis = _this9;\n _this9.socketTask = uni.connectSocket({\n //url: encodeURI(encodeURI(myUrl).replace(/\\+/g, '%2B')),\n url: \"wss://chat.lihaink.cn/chat?type=\".concat(_this9.wssType, \"×tamp=\").concat(Date.now()),\n method: 'GET',\n token: '',\n success: function success(res) {\n __f__(\"log\", res, \"ws成功连接...\", \" at pages/index/index.vue:348\");\n realThis.wsLiveFlag = true;\n }\n });\n realThis.socketTask.onError(function (res) {\n __f__(\"log\", \"连接发生错误,请检查appid是否填写\", res, \" at pages/index/index.vue:353\");\n });\n realThis.socketTask.onOpen(function (res) {\n _this9.historyTextList.push({\n \"role\": \"user\",\n \"content\": _this9.TEXT\n });\n // 第一帧..........................................\n __f__(\"log\", '连接成功...', \" at pages/index/index.vue:361\");\n // let params = {\n // \"header\": {\n // \"app_id\": this.APPID,\n // \"uid\": \"aef9f963-7\"\n // },\n // \"parameter\": {\n // \"chat\": {\n // \"domain\": \"generalv2\",\n // \"temperature\": 0.5,\n // \"max_tokens\": 1024\n // }\n // },\n // \"payload\": {\n // \"message\": {\n // \"text\": this.historyTextList\n // }\n // }\n // };\n if (_this9.historyTextList.length > 9) _this9.params = JSON.parse(JSON.stringify(_this9.historyTextList.splice(-9)));else _this9.params = JSON.parse(JSON.stringify(_this9.historyTextList));\n _this9.isSurpass();\n realThis.socketTask.send({\n // 发送消息,,都用uni的官方版本\n data: JSON.stringify(_this9.params),\n success: function success() {\n __f__(\"log\", '第一帧发送成功', \" at pages/index/index.vue:387\");\n }\n });\n });\n\n // 接受到消息时\n realThis.socketTask.onMessage(function (res) {\n __f__(\"log\", '收到API返回的内容:', res.data, \" at pages/index/index.vue:394\");\n var obj = JSON.parse(res.data);\n // console.log(\"我打印的\"+obj.payload);\n if (!realThis.wsLiveFlag) return;\n var dataArray = obj.payload.choices.text;\n for (var i = 0; i < dataArray.length; i++) {\n _this9.talkList[_this9.talkList.length - 1].content += dataArray[i].content;\n _this9.n_content = _this9.talkList[_this9.talkList.length - 1].content;\n realThis.tempRes = realThis.tempRes + dataArray[i].content;\n }\n var temp = JSON.parse(res.data);\n // console.log(\"0726\",temp.header.code)\n if (temp.header.code !== 0) {\n _this9.socketing = false;\n __f__(\"log\", \"\".concat(temp.header.code, \":\").concat(temp.message), \" at pages/index/index.vue:408\");\n realThis.socketTask.close({\n success: function success(res) {\n __f__(\"log\", '关闭成功', res, \" at pages/index/index.vue:411\");\n realThis.wsLiveFlag = false;\n },\n fail: function fail(err) {\n __f__(\"log\", '关闭失败', err, \" at pages/index/index.vue:415\");\n }\n });\n }\n if (temp.header.code === 0) {\n if (res.data && temp.header.status === 2) {\n _this9.socketing = false;\n _this9.historyTextList.push({\n \"role\": \"assistant\",\n \"content\": _this9.tempRes\n });\n setTimeout(function () {\n realThis.socketTask.close({\n success: function success(res) {\n __f__(\"log\", '关闭成功', res, \" at pages/index/index.vue:429\");\n realThis.wsLiveFlag = false;\n },\n fail: function fail(err) {\n // console.log('关闭失败', err)\n }\n });\n }, 1000);\n }\n }\n });\n case 6:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }))();\n },\n // 判断文字是否超过五千字\n isSurpass: function isSurpass() {\n var sum = this.params.reduce(function (accumulator, currentValue) {\n return accumulator + currentValue.content;\n }, '');\n if (sum.length > 5000) {\n this.params.shift();\n return this.isSurpass();\n } else {\n __f__(\"log\", \"\\u672C\\u6B21\\u53D1\\u9001\".concat(sum.length, \"\\u5B57\"), \" at pages/index/index.vue:450\");\n return sum;\n }\n },\n // 鉴权\n getWebSocketUrl: function getWebSocketUrl() {\n var _this10 = this;\n return new Promise(function (resolve, reject) {\n // https://spark-api.xf-yun.com/v1.1/chat V1.5 domain general\n // https://spark-api.xf-yun.com/v2.1/chat V2.0 domain generalv2\n var url = \"wss://spark-api.xf-yun.com/v2.1/chat\";\n var host = \"spark-api.xf-yun.com\";\n var apiKeyName = \"api_key\";\n var date = new Date().toGMTString();\n var algorithm = \"hmac-sha256\";\n var headers = \"host date request-line\";\n var signatureOrigin = \"host: \".concat(host, \"\\ndate: \").concat(date, \"\\nGET /v2.1/chat HTTP/1.1\");\n var signatureSha = _cryptoJs.default.HmacSHA256(signatureOrigin, _this10.APISecret);\n var signature = _cryptoJs.default.enc.Base64.stringify(signatureSha);\n var authorizationOrigin = \"\".concat(apiKeyName, \"=\\\"\").concat(_this10.APIKey, \"\\\", algorithm=\\\"\").concat(algorithm, \"\\\", headers=\\\"\").concat(headers, \"\\\", signature=\\\"\").concat(signature, \"\\\"\");\n var authorization = base64.encode(authorizationOrigin);\n url = \"\".concat(url, \"?authorization=\").concat(authorization, \"&date=\").concat(encodeURI(date), \"&host=\").concat(host);\n\n // console.log(url)\n resolve(url);\n });\n },\n // 滚动到头部\n bindScroll: function bindScroll() {\n if (this.userId == 0) {\n this.getHistory();\n this.getproductInfo();\n this.getOrderInfo();\n this.getRefundDetail();\n this.getStoreDetail();\n } else {\n this.getMerHistory();\n }\n },\n // 当滑动页面时,收起键盘,与微信聊天效果保持一致\n touchmove: function touchmove(e) {\n uni.hideKeyboard();\n }\n }\n};\nexports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 21)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvaW5kZXgvaW5kZXgudnVlIl0sIm5hbWVzIjpbImNvbXBvbmVudHMiLCJCaW5nTWF0aCIsImRhdGEiLCJ3c3NUeXBlIiwiYXZhdGFyVHlwZSIsInRhbGtMaXN0IiwiYWpheCIsInJvd3MiLCJwYWdlIiwiZmxhZyIsImxvYWRpbmciLCJsb2FkVGV4dCIsImtleWJvYXJkSGVpZ2h0Iiwic2hvd3BsYyIsImNvbnRlbnQiLCJjX2NvbnRlbnQiLCJuX2NvbnRlbnQiLCJhdmF0YXIiLCJwYXJhbXMiLCJ0aW1lciIsInNvY2tldFRhc2siLCJURVhUIiwiaGlzdG9yeVRleHRMaXN0IiwidGVtcFJlcyIsInNvY2tldGluZyIsInNob3dTdG9wIiwic2Nyb2xsVG9wIiwic2hvdWxkU2Nyb2xsVG9Cb3R0b20iLCJtb3VudGVkIiwiJG5leHRUaWNrIiwiZ2V0SGlzdG9yeU1zZyIsInVuaSIsIm9uS2V5Ym9hcmRIZWlnaHRDaGFuZ2UiLCJlIiwiaCIsImhlaWdodCIsInNldFRpbWVvdXQiLCJwYWdlU2Nyb2xsVG8iLCJkdXJhdGlvbiIsIm9uTG9hZCIsImdldFN0b3JhZ2VTeW5jIiwiJG9uIiwiYmVmb3JlRGVzdHJveSIsIm9mZktleWJvYXJkSGVpZ2h0Q2hhbmdlIiwib25QYWdlU2Nyb2xsIiwid2F0Y2giLCJuIiwibyIsImNsZWFySW50ZXJ2YWwiLCJjbCIsImxlbmd0aCIsIm5jIiwic3BsaXQiLCJzZXRJbnRlcnZhbCIsIm1ldGhvZHMiLCJjb3B5VGV4dCIsInN0ciIsInNldENsaXBib2FyZERhdGEiLCJzdWNjZXNzIiwic2hvd1RvYXN0IiwiaWNvbiIsInRpdGxlIiwiZ2V0IiwiaGlkZUxvYWRUaXBzIiwiam9pbkhpc3RvcnlNc2ciLCJzZWxlY3RvciIsImlkIiwic2V0UGFnZVNjcm9sbFRvIiwiam9pbiIsImFyciIsInN0YXJ0SW5kZXgiLCJlbmRJbmRleCIsImkiLCJwdXNoIiwiTWF0aCIsInJhbmRvbSIsInJldmVyc2UiLCJQcm9taXNlIiwiZG9uZSIsImZhaWwiLCJmb2N1cyIsInZpZXciLCJjcmVhdGVTZWxlY3RvclF1ZXJ5IiwiaW4iLCJzZWxlY3QiLCJib3VuZGluZ0NsaWVudFJlY3QiLCJyZXMiLCJ0b3AiLCJleGVjIiwiY2xvc2VTb2NrZXRUYXNrIiwiY2xvc2UiLCJjb2RlIiwiY29tcGxldGUiLCJ3c0xpdmVGbGFnIiwic2VuZCIsIkRhdGUiLCJnZXRUaW1lIiwic2VuZFRvU3BhcmsiLCJyZWFsVGhpcyIsImNvbm5lY3RTb2NrZXQiLCJ1cmwiLCJub3ciLCJtZXRob2QiLCJ0b2tlbiIsIm9uRXJyb3IiLCJvbk9wZW4iLCJKU09OIiwicGFyc2UiLCJzdHJpbmdpZnkiLCJzcGxpY2UiLCJpc1N1cnBhc3MiLCJvbk1lc3NhZ2UiLCJvYmoiLCJkYXRhQXJyYXkiLCJwYXlsb2FkIiwiY2hvaWNlcyIsInRleHQiLCJ0ZW1wIiwiaGVhZGVyIiwibWVzc2FnZSIsImVyciIsInN0YXR1cyIsInN1bSIsInJlZHVjZSIsImFjY3VtdWxhdG9yIiwiY3VycmVudFZhbHVlIiwic2hpZnQiLCJnZXRXZWJTb2NrZXRVcmwiLCJyZXNvbHZlIiwicmVqZWN0IiwiaG9zdCIsImFwaUtleU5hbWUiLCJkYXRlIiwidG9HTVRTdHJpbmciLCJhbGdvcml0aG0iLCJoZWFkZXJzIiwic2lnbmF0dXJlT3JpZ2luIiwic2lnbmF0dXJlU2hhIiwiQ3J5cHRvSlMiLCJIbWFjU0hBMjU2IiwiQVBJU2VjcmV0Iiwic2lnbmF0dXJlIiwiZW5jIiwiQmFzZTY0IiwiYXV0aG9yaXphdGlvbk9yaWdpbiIsIkFQSUtleSIsImF1dGhvcml6YXRpb24iLCJiYXNlNjQiLCJlbmNvZGUiLCJlbmNvZGVVUkkiLCJiaW5kU2Nyb2xsIiwidXNlcklkIiwiZ2V0SGlzdG9yeSIsImdldHByb2R1Y3RJbmZvIiwiZ2V0T3JkZXJJbmZvIiwiZ2V0UmVmdW5kRGV0YWlsIiwiZ2V0U3RvcmVEZXRhaWwiLCJnZXRNZXJIaXN0b3J5IiwidG91Y2htb3ZlIiwiaGlkZUtleWJvYXJkIl0sIm1hcHBp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RUFBRSxPQUFJLENBQUNJLFNBQVMsQ0FBQztRQUN2RSxJQUFJQyxTQUFTLEdBQUdILGlCQUFRLENBQUNJLEdBQUcsQ0FBQ0MsTUFBTSxDQUFDbkMsU0FBUyxDQUFDNkIsWUFBWSxDQUFDO1FBQzNELElBQUlPLG1CQUFtQixhQUNsQmIsVUFBVSxnQkFBSyxPQUFJLENBQUNjLE1BQU0sNkJBQWlCWCxTQUFTLDJCQUFlQyxPQUFPLDZCQUFpQk0sU0FBUyxPQUFHO1FBQzVHLElBQUlLLGFBQWEsR0FBR0MsTUFBTSxDQUFDQyxNQUFNLENBQUNKLG1CQUFtQixDQUFDO1FBQ3RENUMsR0FBRyxhQUFNQSxHQUFHLDRCQUFrQjhDLGFBQWEsbUJBQVNHLFNBQVMsQ0FBQ2pCLElBQUksQ0FBQyxtQkFBU0YsSUFBSSxDQUFFOztRQUVsRjtRQUNBRixPQUFPLENBQUM1QixHQUFHLENBQUM7TUFDZCxDQUFDLENBQUM7SUFDSixDQUFDO0lBQ0Q7SUFDQWtELFVBQVUsd0JBQUc7TUFDWCxJQUFJLElBQUksQ0FBQ0MsTUFBTSxJQUFJLENBQUMsRUFBRTtRQUNwQixJQUFJLENBQUNDLFVBQVUsRUFBRTtRQUNqQixJQUFJLENBQUNDLGNBQWMsRUFBRTtRQUNyQixJQUFJLENBQUNDLFlBQVksRUFBRTtRQUNuQixJQUFJLENBQUNDLGVBQWUsRUFBRTtRQUN0QixJQUFJLENBQUNDLGNBQWMsRUFBRTtNQUN2QixDQUFDLE1BQU07UUFDTCxJQUFJLENBQUNDLGFBQWEsRUFBRTtNQUN0QjtJQUNGLENBQUM7SUFDRDtJQUNBQyxTQUFTLHFCQUFDN0gsQ0FBQyxFQUFFO01BQ1hGLEdBQUcsQ0FBQ2dJLFlBQVksRUFBRTtJQUNwQjtFQUNGO0FBQ0YsQ0FBQztBQUFBLDJCIiwiZmlsZSI6IjMyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG5pbXBvcnQgKiBhcyBiYXNlNjQgZnJvbSBcImJhc2UtNjRcIlxuaW1wb3J0IENyeXB0b0pTIGZyb20gJy4uLy4uL3N0YXRpYy9jcnlwdG8tanMvY3J5cHRvLWpzLmpzJ1xuaW1wb3J0IHBhcnNlciBmcm9tICcuLi8uLi9zdGF0aWMvZmFzdC14bWwtcGFyc2VyL3NyYy9wYXJzZXInXG5pbXBvcnQgKiBhcyB1dGY4IGZyb20gXCJ1dGY4XCJcbmltcG9ydCBCaW5nTWF0aCBmcm9tIFwiQC9jb21wb25lbnRzL2JpbmctbWF0aC9iaW5nLW1hdGgudnVlXCJcbmV4cG9ydCBkZWZhdWx0IHtcbiAgY29tcG9uZW50czoge1xuICAgICdiaW5nLW1hdGgnOiBCaW5nTWF0aFxuICB9LFxuICBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICB3c3NUeXBlOiAnamlhb3l1JywgLy8g572R57uc6L+e5o6l57G75Z6LXG4gICAgICBhdmF0YXJUeXBlOiBcIi9zdGF0aWMvaWNvbi9qeS5wbmdcIiwgLy8gQUnlpLTlg4/nsbvlnotcbiAgICAgIHRhbGtMaXN0OiBbXSxcbiAgICAgIGFqYXg6IHtcbiAgICAgICAgcm93czogMTUsIC8v5q+P6aG15pWw6YePXG4gICAgICAgIHBhZ2U6IDEsIC8v6aG156CBXG4gICAgICAgIGZsYWc6IGZhbHNlLCAvLyDor7fmsYLlvIDlhbNcbiAgICAgICAgbG9hZGluZzogZmFsc2UsIC8vIOWKoOi9veS4rVxuICAgICAgICBsb2FkVGV4dDogJ+ato+WcqOiOt+WPlua2iOaBrydcbiAgICAgIH0sXG4gICAgICBrZXlib2FyZEhlaWdodDogMCxcbiAgICAgIHNob3dwbGM6IHRydWUsXG4gICAgICBjb250ZW50OiAnJyxcbiAgICAgIGNfY29udGVudDogJycsXG4gICAgICBuX2NvbnRlbnQ6ICcnLFxuICAgICAgYXZhdGFyOiAnL3N0YXRpYy9hdmF0YXIucG5nJywgLy8g55So5oi35aS05YOPXG4gICAgICBwYXJhbXM6IFtdLCAvLyDlj5HpgIHnmoTmtojmga/lhoXlrrlcbiAgICAgIHRpbWVyOiAnJyxcbiAgICAgIHNvY2tldFRhc2s6IHt9LFxuICAgICAgVEVYVDogJycsXG4gICAgICBoaXN0b3J5VGV4dExpc3Q6IFtdLCAvLyDljoblj7LkvJror53kv6Hmga/vvIznlLHkuo7mnIDlpKd0b2tlbjEyMDAwLOWPr+S7pee7k+WQiOWunumZheS9v+eUqO+8jOi/m+ihjOenu+WHulxuICAgICAgdGVtcFJlczogJycsIC8vIOS4tOaXtuetlOWkjeS/neWtmFxuICAgICAgc29ja2V0aW5nOiBmYWxzZSwgLy8g5piv5ZCm5q2j5Zyo5o6l5pS2XG4gICAgICBzaG93U3RvcDogZmFsc2UsIC8vIOaYr+WQpuaYvuekuuS4reaWreaMiemSrlxuICAgICAgc2Nyb2xsVG9wOiAwLFxuICAgICAgc2hvdWxkU2Nyb2xsVG9Cb3R0b206IHRydWVcbiAgICB9XG4gIH0sXG4gIG1vdW50ZWQoKSB7XG4gICAgdGhpcy4kbmV4dFRpY2soKCkgPT4ge1xuICAgICAgdGhpcy5nZXRIaXN0b3J5TXNnKCk7XG4gICAgfSk7XG4gICAgdW5pLm9uS2V5Ym9hcmRIZWlnaHRDaGFuZ2UoZSA9PiB7XG4gICAgICBsZXQgaCA9IHRoaXMua2V5Ym9hcmRIZWlnaHQ7XG4gICAgICB0aGlzLmtleWJvYXJkSGVpZ2h0ID0gZS5oZWlnaHQ7XG4gICAgICB0aGlzLiRuZXh0VGljaygoKSA9PiB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHVuaS5wYWdlU2Nyb2xsVG8oe1xuICAgICAgICAgICAgc2Nyb2xsVG9wOiA5OTk5OTk5LCAvLyDlvZPliY3kvY3nva7lkJHkuIvmu5rliqhcbiAgICAgICAgICAgIGR1cmF0aW9uOiAzMDAgLy8g5rua5Yqo6L+H5rih5pe26Ze05Li6MzAwbXPvvIzpu5jorqTlgLzkuLozMDBtc1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAwKVxuICAgICAgfSlcbiAgICB9KVxuICB9LFxuICBvbkxvYWQoKSB7XG4gICAgbGV0IGF2YXRhciA9IHVuaS5nZXRTdG9yYWdlU3luYygnYXZhdGFyJyk7XG4gICAgYXZhdGFyID8gdGhpcy5hdmF0YXIgPSBhdmF0YXIgOiBudWxsO1xuICAgIHVuaS4kb24oJ01QaW5mbycsIChlKSA9PiB7XG4gICAgICB0aGlzLmF2YXRhciA9IGUuYXZhdGFyO1xuICAgIH0pXG4gIH0sXG4gIGJlZm9yZURlc3Ryb3koKSB7XG5cbiAgICB1bmkub2ZmS2V5Ym9hcmRIZWlnaHRDaGFuZ2UoKTtcblxuICB9LFxuICBvblBhZ2VTY3JvbGwoZSkge1xuICAgIGlmIChlLnNjcm9sbFRvcCA8IDUpIHtcbiAgICAgIHRoaXMuZ2V0SGlzdG9yeU1zZygpO1xuICAgIH1cbiAgfSxcbiAgd2F0Y2g6IHtcbiAgICBuX2NvbnRlbnQobiwgbykge1xuICAgICAgLy8gdGhpcy5jX2NvbnRlbnQgPSBuO1xuICAgICAgaWYgKHRoaXMudGltZXIpIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lcik7XG4gICAgICBsZXQgY2wgPSB0aGlzLmNfY29udGVudC5sZW5ndGg7XG4gICAgICBsZXQgbmMgPSB0aGlzLm5fY29udGVudC5zcGxpdCgnJyk7XG4gICAgICB0aGlzLnRpbWVyID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICBpZiAoY2wgPCBuYy5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLmNfY29udGVudCArPSBuY1tjbF07XG4gICAgICAgICAgY2wrKztcbiAgICAgICAgICBpZiAoY2wgJSA2ID09IDApIHRoaXMuJG5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIHVuaS5wYWdlU2Nyb2xsVG8oe1xuICAgICAgICAgICAgICBzY3JvbGxUb3A6IDk5OTk5OSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLnNvY2tldGluZz09ZmFsc2UsIGNsID09IG5jLmxlbmd0aCk7XG4gICAgICAgICAgaWYgKHRoaXMuc29ja2V0aW5nID09IGZhbHNlKSB0aGlzLnNob3dTdG9wID0gZmFsc2U7XG4gICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWVyKTtcbiAgICAgICAgICB0aGlzLiRuZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICB1bmkucGFnZVNjcm9sbFRvKHtcbiAgICAgICAgICAgICAgc2Nyb2xsVG9wOiA5OTk5OTk5LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9LCA2MClcbiAgICB9LFxuICB9LFxuICBtZXRob2RzOiB7XG4gICAgY29weVRleHQoc3RyKSB7XG4gICAgICB1bmkuc2V0Q2xpcGJvYXJkRGF0YSh7XG4gICAgICAgIGRhdGE6IHN0cixcbiAgICAgICAgc3VjY2VzczogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgdW5pLnNob3dUb2FzdCh7XG4gICAgICAgICAgICBpY29uOiAnbm9uZScsXG4gICAgICAgICAgICB0aXRsZTogJ+WkjeWItuaIkOWKnydcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvLyDojrflj5bljoblj7Lmtojmga9cbiAgICBnZXRIaXN0b3J5TXNnKCkge1xuICAgICAgcmV0dXJuO1xuICAgICAgaWYgKHRoaXMuYWpheC5mbGFnKSB7XG4gICAgICAgIHJldHVybjsgLy9cbiAgICAgIH1cblxuICAgICAgbGV0IGdldCA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgdGhpcy5oaWRlTG9hZFRpcHMoKTtcbiAgICAgICAgdGhpcy5hamF4LmZsYWcgPSBmYWxzZTtcbiAgICAgICAgbGV0IGRhdGEgPSBhd2FpdCB0aGlzLmpvaW5IaXN0b3J5TXNnKCk7XG5cbiAgICAgICAgY29uc29sZS5sb2coJy0tLS0tIOaooeaLn+aVsOaNruagvOW8j++8jOS+m+WPguiAgyAtLS0tLScpO1xuICAgICAgICBjb25zb2xlLmxvZyhkYXRhKTsgLy8g5p+l55yL6K+35rGC6L+U5Zue55qE5pWw5o2u57uT5p6EIFxuXG4gICAgICAgIC8vIOiOt+WPluW+hea7muWKqOWFg+e0oOmAieaLqeWZqO+8jOino+WGs+aPkuWFpeaVsOaNruWQju+8jOa7muWKqOadoeWumuS9jeaXtuS9v+eUqFxuICAgICAgICBsZXQgc2VsZWN0b3IgPSAnJztcblxuICAgICAgICBpZiAodGhpcy5hamF4LnBhZ2UgPiAxKSB7XG4gICAgICAgICAgLy8g6Z2e56ys5LiA6aG177yM5YiZ5Y+W5Y6G5Y+y5raI5oGv5pWw5o2u55qE56ys5LiA5p2h5L+h5oGv5YWD57SgXG4gICAgICAgICAgc2VsZWN0b3IgPSBgI21zZy0ke3RoaXMudGFsa0xpc3RbMF0uaWR9YDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyDnrKzkuIDpobXvvIzliJnlj5blvZPliY3mtojmga/mlbDmja7nmoTmnIDlkI7kuIDmnaHkv6Hmga/lhYPntKBcbiAgICAgICAgICBzZWxlY3RvciA9IGAjbXNnLSR7ZGF0YVtkYXRhLmxlbmd0aC0xXS5pZH1gO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g5bCG6I635Y+W5Yiw55qE5raI5oGv5pWw5o2u5ZCI5bm25Yiw5raI5oGv5pWw57uE5LitXG4gICAgICAgIHRoaXMudGFsa0xpc3QgPSBbLi4uZGF0YSwgLi4udGhpcy50YWxrTGlzdF07XG5cbiAgICAgICAgLy8g5pWw5o2u5oyC6L295ZCO5omn6KGM77yM5LiN5oeC55qE6K+36Ieq6KGM6ZiF6K+7IFZ1ZS5qcyDmlofmoaPlr7kgVnVlLm5leHRUaWNrIOWHveaVsOivtOaYjuOAglxuICAgICAgICB0aGlzLiRuZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgLy8g6K6+572u5b2T5YmN5rua5Yqo55qE5L2N572uXG4gICAgICAgICAgdGhpcy5zZXRQYWdlU2Nyb2xsVG8oc2VsZWN0b3IpO1xuXG4gICAgICAgICAgdGhpcy5oaWRlTG9hZFRpcHModHJ1ZSk7XG5cbiAgICAgICAgICBpZiAoZGF0YS5sZW5ndGggPCB0aGlzLmFqYXgucm93cykge1xuICAgICAgICAgICAgLy8g5b2T5YmN5raI5oGv5pWw5o2u5p2h5pWw5bCP5LqO6K+35rGC6KaB5rGC5p2h5pWw5pe277yM5YiZ5peg5pu05aSa5raI5oGv77yM5LiN5YaN5YWB6K646K+35rGC44CCXG4gICAgICAgICAgICAvLyDlj6/lnKjmraTlpITnvJblhpnml6Dmm7TlpJrmtojmga/mlbDmja7ml7bnmoTpgLvovpFcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hamF4LnBhZ2UrKztcblxuICAgICAgICAgICAgLy8g5bu26L+fIDIwMG1zIO+8jOS7peS/neivgeiuvue9rueql+WPo+a7muWKqOW3suWujOaIkFxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuYWpheC5mbGFnID0gdHJ1ZTtcbiAgICAgICAgICAgIH0sIDIwMClcbiAgICAgICAgICB9XG5cbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGdldCgpO1xuICAgIH0sXG4gICAgLy8g5ou85o6l5Y6G5Y+y6K6w5b2V5raI5oGvXG4gICAgam9pbkhpc3RvcnlNc2coKSB7XG4gICAgICBsZXQgam9pbiA9ICgpID0+IHtcbiAgICAgICAgbGV0IGFyciA9IFtdO1xuXG4gICAgICAgIC8v6YCa6L+H5b2T5YmN6aG156CB5Y+K6aG15pWw77yM5qih5ouf5pWw5o2u5YaF5a65XG4gICAgICAgIGxldCBzdGFydEluZGV4ID0gKHRoaXMuYWpheC5wYWdlIC0gMSkgKiB0aGlzLmFqYXgucm93cztcbiAgICAgICAgbGV0IGVuZEluZGV4ID0gc3RhcnRJbmRleCArIHRoaXMuYWpheC5yb3dzO1xuICAgICAgICBmb3IgKGxldCBpID0gc3RhcnRJbmRleDsgaSA8IGVuZEluZGV4OyBpKyspIHtcbiAgICAgICAgICBhcnIucHVzaCh7XG4gICAgICAgICAgICBcImlkXCI6IGksIC8vIOa2iOaBr+eahElEXG4gICAgICAgICAgICBcImNvbnRlbnRcIjogYOi/meaYr+WOhuWPsuiusOW9leeahOesrCR7aSsxfeadoea2iOaBr2AsIC8vIOa2iOaBr+WGheWuuVxuICAgICAgICAgICAgXCJ0eXBlXCI6IE1hdGgucmFuZG9tKCkgPiAwLjUgPyAxIDogMCwgLy8g5q2k5Li65raI5oGv57G75Yir77yM6K6+IDEg5Li65Y+R5Ye65Y6755qE5raI5oGv77yMMCDkuLrmlLbliLDlr7nmlrnnmoTmtojmga8sXG4gICAgICAgICAgICBcInBpY1wiOiBcIi9zdGF0aWMvYXZhdGFyLnBuZ1wiIC8vIOWktOWDj1xuICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICAvKlxuICAgICAgICBcdOmioOWAkuaVsOe7hOS4reWFg+e0oOeahOmhuuW6j+OAguWwhuacgOaWsOeahOaVsOaNruaOkuWcqOacrOasoeaOpeWPo+i/lOWbnuaVsOaNrueahOacgOWQjumdouOAglxuICAgICAgICBcdOWQjuerr+aOpeWPo+aMiSDmtojmga/nmoTml7bpl7TpmY3luo/mn6Xmib7lh7rlvZPliY3pobXnmoTmlbDmja7lkI7vvIzlho3lsIbmnKzpobXmlbDmja7mjInmtojmga/ml7bpl7TpmY3luo/mjpLluo/ov5Tlm57jgIJcbiAgICAgICAgXHTov5nmmK/mlbDmja7nmoTph43ngrnvvIzlm6DkuLrpobXpnaLmu5rliqjmnaHlkozkuIrmi4nliqDovb3ljoblj7LnmoTpl67popjjgIJcbiAgICAgICAgICovXG4gICAgICAgIGFyci5yZXZlcnNlKCk7XG5cbiAgICAgICAgcmV0dXJuIGFycjtcbiAgICAgIH1cblxuICAgICAgLy8g5q2k5aSE55So5YiwIEVTNiDnmoQgUHJvbWlzZSDnn6Xor4bvvIzkuI3mh4LnmoTor7foh6rooYzlrabkuaDjgIJcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgoZG9uZSwgZmFpbCkgPT4ge1xuICAgICAgICAvLyDml6DmlbDmja7or7fmsYLmjqXlj6PvvIznlLEgc2V0VGltZW91dCDmqKHmi5/vvIzmraPlvI/pobnnm67mm7/mjaLkuLogYWpheCDljbPlj6/jgIJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgbGV0IGRhdGEgPSBqb2luKCk7XG4gICAgICAgICAgZG9uZShkYXRhKTtcbiAgICAgICAgfSwgMTUwMCk7XG4gICAgICB9KVxuICAgIH0sXG4gICAgZm9jdXMoKSB7XG4gICAgICAvLyB0aGlzLiRuZXh0VGljaygoKT0+e1xuICAgICAgLy8gICBzZXRUaW1lb3V0KCgpPT57XG4gICAgICAvLyAgICAgdW5pLnBhZ2VTY3JvbGxUbyh7XG4gICAgICAvLyAgICAgICBzY3JvbGxUb3A6IDk5OTk5OTksIC8vIOW9k+WJjeS9jee9ruWQkeS4i+a7muWKqFxuICAgICAgLy8gICAgICAgZHVyYXRpb246IDMwMCAvLyDmu5rliqjov4fmuKHml7bpl7TkuLozMDBtc++8jOm7mOiupOWAvOS4ujMwMG1zXG4gICAgICAvLyAgICAgfSk7XG4gICAgICAvLyAgIH0sIDApXG4gICAgICAvLyB9KVxuICAgIH0sXG4gICAgLy8g6K6+572u6aG16Z2i5rua5Yqo5L2N572uXG4gICAgc2V0UGFnZVNjcm9sbFRvKHNlbGVjdG9yKSB7XG4gICAgICBsZXQgdmlldyA9IHVuaS5jcmVhdGVTZWxlY3RvclF1ZXJ5KCkuaW4odGhpcykuc2VsZWN0KHNlbGVjdG9yKTtcbiAgICAgIHZpZXcuYm91bmRpbmdDbGllbnRSZWN0KChyZXMpID0+IHtcbiAgICAgICAgdW5pLnBhZ2VTY3JvbGxUbyh7XG4gICAgICAgICAgc2Nyb2xsVG9wOiByZXMudG9wIC0gMzAsIC8vIC0zMCDkuLrlpJrmmL7npLrlh7rlpKfljYrkuKrmtojmga/nmoTpq5jluqbvvIznpLrmhI/kuIrpnaLov5jmnInkv6Hmga/jgIJcbiAgICAgICAgICBkdXJhdGlvbjogMFxuICAgICAgICB9KTtcbiAgICAgIH0pLmV4ZWMoKTtcbiAgICB9LFxuICAgIC8vIOmakOiXj+WKoOi9veaPkOekulxuICAgIGhpZGVMb2FkVGlwcyhmbGFnKSB7XG4gICAgICBpZiAoZmxhZykge1xuICAgICAgICB0aGlzLmFqYXgubG9hZFRleHQgPSAn5raI5oGv6I635Y+W5oiQ5YqfJztcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5hamF4LmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgfSwgMzAwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYWpheC5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5hamF4LmxvYWRUZXh0ID0gJ+ato+WcqOiOt+WPlua2iOaBryc7XG4gICAgICB9XG4gICAgfSxcbiAgICAvLyDlhbPpl63ov57mjqVcbiAgICBjbG9zZVNvY2tldFRhc2soKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjbGVhckludGVydmFsKHRoaXMudGltZXIpO1xuICAgICAgICB0aGlzLnRhbGtMaXN0W3RoaXMudGFsa0xpc3QubGVuZ3RoIC0gMV0uY29udGVudCA9IHRoaXMuY19jb250ZW50ICsgJyc7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMudGFsa0xpc3RbdGhpcy50YWxrTGlzdC5sZW5ndGggLSAxXS5jb250ZW50KTtcbiAgICAgICAgLy8gdGhpcy5jX2NvbnRlbnQgPSAnJztcbiAgICAgICAgLy8gdGhpcy5uX2NvbnRlbnQgPSAnJztcbiAgICAgICAgdGhpcy5zb2NrZXRUYXNrLmNsb3NlKHtcbiAgICAgICAgICBjb2RlOiA1MDAsIC8vIEFQUOerr+WtmOWcqEJVRyzmraPluLjlhbPpl63nmoRjb2Rl5Li6MTAwMCzml6Dms5XmraPluLjlhbPpl60s6ZyA6KaB5bCGY29kZeaNouS4uuWFtuS7luWAvFxuICAgICAgICAgIGNvbXBsZXRlOiAocmVzKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNob3dTdG9wID0gZmFsc2U7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygn5Li75Yqo5pat5byAJywgcmVzKTtcbiAgICAgICAgICAgIHRoaXMud3NMaXZlRmxhZyA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy9UT0RPIGhhbmRsZSB0aGUgZXhjZXB0aW9uXG4gICAgICB9XG4gICAgfSxcbiAgICAvLyDlj5HpgIHkv6Hmga9cbiAgICBzZW5kKCkge1xuICAgICAgaWYgKCF0aGlzLmNvbnRlbnQpIHtcbiAgICAgICAgdW5pLnNob3dUb2FzdCh7XG4gICAgICAgICAgdGl0bGU6ICfor7fovpPlhaXmnInmlYjnmoTlhoXlrrknLFxuICAgICAgICAgIGljb246ICdub25lJ1xuICAgICAgICB9KVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLnNob3dTdG9wID0gdHJ1ZTtcbiAgICAgIC8vIOWwhuW9k+WJjeWPkemAgeS/oeaBryDmt7vliqDliLDmtojmga/liJfooajjgIJcbiAgICAgIGxldCBkYXRhID0ge1xuICAgICAgICBcImlkXCI6IG5ldyBEYXRlKCkuZ2V0VGltZSgpLFxuICAgICAgICBcImNvbnRlbnRcIjogdGhpcy5jb250ZW50LFxuICAgICAgICBcInR5cGVcIjogMSxcbiAgICAgICAgXCJwaWNcIjogdGhpcy5hdmF0YXJcbiAgICAgIH1cbiAgICAgIGNvbnNvbGUubG9nKGRhdGEpO1xuICAgICAgdGhpcy5URVhUID0gdGhpcy5jb250ZW50O1xuICAgICAgdGhpcy50YWxrTGlzdC5wdXNoKGRhdGEpO1xuICAgICAgdGhpcy50YWxrTGlzdC5wdXNoKHtcbiAgICAgICAgXCJpZFwiOiBuZXcgRGF0ZSgpLmdldFRpbWUoKSxcbiAgICAgICAgXCJjb250ZW50XCI6ICcnLFxuICAgICAgICBcInR5cGVcIjogMixcbiAgICAgICAgXCJwaWNcIjogdGhpcy5hdmF0YXJUeXBlXG4gICAgICB9KTtcbiAgICAgIHRoaXMubl9jb250ZW50ID0gJyc7XG4gICAgICB0aGlzLmNfY29udGVudCA9ICcnO1xuICAgICAgdGhpcy5zb2NrZXRpbmcgPSB0cnVlO1xuICAgICAgLy8gcmV0dXJuIDtcbiAgICAgIHRoaXMuJG5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgLy8g5riF56m65YaF5a655qGG5Lit55qE5YaF5a65XG4gICAgICAgIHRoaXMuY29udGVudCA9ICcnO1xuICAgICAgICAvLyB1bmkucGFnZVNjcm9sbFRvKHtcbiAgICAgICAgLy8gICBzY3JvbGxUb3A6IDk5OTk5OSwgLy8g6K6+572u5LiA5Liq6LaF5aSn5YC877yM5Lul5L+d6K+B5rua5Yqo5p2h5rua5Yqo5Yiw5bqV6YOoXG4gICAgICAgIC8vICAgZHVyYXRpb246IDBcbiAgICAgICAgLy8gfSk7XG4gICAgICB9KVxuICAgICAgdGhpcy5zZW5kVG9TcGFyaygpO1xuXG4gICAgfSxcbiAgICBhc3luYyBzZW5kVG9TcGFyaygpIHtcbiAgICAgIC8vIGxldCBteVVybCA9IGF3YWl0IHRoaXMuZ2V0V2ViU29ja2V0VXJsKCk7XG4gICAgICB0aGlzLnRlbXBSZXMgPSBcIlwiO1xuICAgICAgbGV0IHJlYWxUaGlzID0gdGhpcztcbiAgICAgIHRoaXMuc29ja2V0VGFzayA9IHVuaS5jb25uZWN0U29ja2V0KHtcbiAgICAgICAgLy91cmw6IGVuY29kZVVSSShlbmNvZGVVUkkobXlVcmwpLnJlcGxhY2UoL1xcKy9nLCAnJTJCJykpLFxuICAgICAgICB1cmw6IGB3c3M6Ly9jaGF0LmxpaGFpbmsuY24vY2hhdD90eXBlPSR7dGhpcy53c3NUeXBlfSZ0aW1lc3RhbXA9JHtEYXRlLm5vdygpfWAsXG4gICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgIHRva2VuOiAnJyxcbiAgICAgICAgc3VjY2VzczogcmVzID0+IHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhyZXMsIFwid3PmiJDlip/ov57mjqUuLi5cIilcbiAgICAgICAgICByZWFsVGhpcy53c0xpdmVGbGFnID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIHJlYWxUaGlzLnNvY2tldFRhc2sub25FcnJvcigocmVzKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwi6L+e5o6l5Y+R55Sf6ZSZ6K+v77yM6K+35qOA5p+lYXBwaWTmmK/lkKbloavlhplcIiwgcmVzKVxuICAgICAgfSlcbiAgICAgIHJlYWxUaGlzLnNvY2tldFRhc2sub25PcGVuKChyZXMpID0+IHtcbiAgICAgICAgdGhpcy5oaXN0b3J5VGV4dExpc3QucHVzaCh7XG4gICAgICAgICAgXCJyb2xlXCI6IFwidXNlclwiLFxuICAgICAgICAgIFwiY29udGVudFwiOiB0aGlzLlRFWFRcbiAgICAgICAgfSlcbiAgICAgICAgLy8g56ys5LiA5binLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXG4gICAgICAgIGNvbnNvbGUubG9nKCfov57mjqXmiJDlip8uLi4nKVxuICAgICAgICAvLyBsZXQgcGFyYW1zID0ge1xuICAgICAgICAvLyAgIFwiaGVhZGVyXCI6IHtcbiAgICAgICAgLy8gICAgIFwiYXBwX2lkXCI6IHRoaXMuQVBQSUQsXG4gICAgICAgIC8vICAgICBcInVpZFwiOiBcImFlZjlmOTYzLTdcIlxuICAgICAgICAvLyAgIH0sXG4gICAgICAgIC8vICAgXCJwYXJhbWV0ZXJcIjoge1xuICAgICAgICAvLyAgICAgXCJjaGF0XCI6IHtcbiAgICAgICAgLy8gICAgICAgXCJkb21haW5cIjogXCJnZW5lcmFsdjJcIixcbiAgICAgICAgLy8gICAgICAgXCJ0ZW1wZXJhdHVyZVwiOiAwLjUsXG4gICAgICAgIC8vICAgICAgIFwibWF4X3Rva2Vuc1wiOiAxMDI0XG4gICAgICAgIC8vICAgICB9XG4gICAgICAgIC8vICAgfSxcbiAgICAgICAgLy8gICBcInBheWxvYWRcIjoge1xuICAgICAgICAvLyAgICAgXCJtZXNzYWdlXCI6IHtcbiAgICAgICAgLy8gICAgICAgXCJ0ZXh0XCI6IHRoaXMuaGlzdG9yeVRleHRMaXN0XG4gICAgICAgIC8vICAgICB9XG4gICAgICAgIC8vICAgfVxuICAgICAgICAvLyB9O1xuICAgICAgICBpZiAodGhpcy5oaXN0b3J5VGV4dExpc3QubGVuZ3RoID4gOSkgdGhpcy5wYXJhbXMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuaGlzdG9yeVRleHRMaXN0XG4gICAgICAgICAgLnNwbGljZSgtOSkpKTtcbiAgICAgICAgZWxzZSB0aGlzLnBhcmFtcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5oaXN0b3J5VGV4dExpc3QpKTtcbiAgICAgICAgdGhpcy5pc1N1cnBhc3MoKTtcbiAgICAgICAgcmVhbFRoaXMuc29ja2V0VGFzay5zZW5kKHsgLy8g5Y+R6YCB5raI5oGv77yM77yM6YO955SodW5p55qE5a6Y5pa554mI5pysXG4gICAgICAgICAgZGF0YTogSlNPTi5zdHJpbmdpZnkodGhpcy5wYXJhbXMpLFxuICAgICAgICAgIHN1Y2Nlc3MoKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygn56ys5LiA5bin5Y+R6YCB5oiQ5YqfJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyDmjqXlj5fliLDmtojmga/ml7ZcbiAgICAgIHJlYWxUaGlzLnNvY2tldFRhc2sub25NZXNzYWdlKChyZXMpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coJ+aUtuWIsEFQSei/lOWbnueahOWGheWuue+8micsIHJlcy5kYXRhKTtcbiAgICAgICAgbGV0IG9iaiA9IEpTT04ucGFyc2UocmVzLmRhdGEpXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5oiR5omT5Y2w55qEXCIrb2JqLnBheWxvYWQpO1xuICAgICAgICBpZiAoIXJlYWxUaGlzLndzTGl2ZUZsYWcpIHJldHVybjtcbiAgICAgICAgbGV0IGRhdGFBcnJheSA9IG9iai5wYXlsb2FkLmNob2ljZXMudGV4dDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhQXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB0aGlzLnRhbGtMaXN0W3RoaXMudGFsa0xpc3QubGVuZ3RoIC0gMV0uY29udGVudCArPSBkYXRhQXJyYXlbaV0uY29udGVudDtcbiAgICAgICAgICB0aGlzLm5fY29udGVudCA9IHRoaXMudGFsa0xpc3RbdGhpcy50YWxrTGlzdC5sZW5ndGggLSAxXS5jb250ZW50O1xuICAgICAgICAgIHJlYWxUaGlzLnRlbXBSZXMgPSByZWFsVGhpcy50ZW1wUmVzICsgZGF0YUFycmF5W2ldLmNvbnRlbnRcbiAgICAgICAgfVxuICAgICAgICBsZXQgdGVtcCA9IEpTT04ucGFyc2UocmVzLmRhdGEpXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwiMDcyNlwiLHRlbXAuaGVhZGVyLmNvZGUpXG4gICAgICAgIGlmICh0ZW1wLmhlYWRlci5jb2RlICE9PSAwKSB7XG4gICAgICAgICAgdGhpcy5zb2NrZXRpbmcgPSBmYWxzZTtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgJHt0ZW1wLmhlYWRlci5jb2RlfToke3RlbXAubWVzc2FnZX1gKTtcbiAgICAgICAgICByZWFsVGhpcy5zb2NrZXRUYXNrLmNsb3NlKHtcbiAgICAgICAgICAgIHN1Y2Nlc3MocmVzKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKCflhbPpl63miJDlip8nLCByZXMpXG4gICAgICAgICAgICAgIHJlYWxUaGlzLndzTGl2ZUZsYWcgPSBmYWxzZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmYWlsKGVycikge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZygn5YWz6Zet5aSx6LSlJywgZXJyKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRlbXAuaGVhZGVyLmNvZGUgPT09IDApIHtcbiAgICAgICAgICBpZiAocmVzLmRhdGEgJiYgdGVtcC5oZWFkZXIuc3RhdHVzID09PSAyKSB7XG4gICAgICAgICAgICB0aGlzLnNvY2tldGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5oaXN0b3J5VGV4dExpc3QucHVzaCh7XG4gICAgICAgICAgICAgIFwicm9sZVwiOiBcImFzc2lzdGFudFwiLFxuICAgICAgICAgICAgICBcImNvbnRlbnRcIjogdGhpcy50ZW1wUmVzXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgIHJlYWxUaGlzLnNvY2tldFRhc2suY2xvc2Uoe1xuICAgICAgICAgICAgICAgIHN1Y2Nlc3MocmVzKSB7XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygn5YWz6Zet5oiQ5YqfJywgcmVzKVxuICAgICAgICAgICAgICAgICAgcmVhbFRoaXMud3NMaXZlRmxhZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZmFpbChlcnIpIHtcbiAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCflhbPpl63lpLHotKUnLCBlcnIpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSwgMTAwMClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSxcbiAgICAvLyDliKTmlq3mloflrZfmmK/lkKbotoXov4fkupTljYPlrZdcbiAgICBpc1N1cnBhc3MoKSB7XG4gICAgICBsZXQgc3VtID0gdGhpcy5wYXJhbXMucmVkdWNlKChhY2N1bXVsYXRvciwgY3VycmVudFZhbHVlKSA9PiB7XG4gICAgICAgIHJldHVybiBhY2N1bXVsYXRvciArIGN1cnJlbnRWYWx1ZS5jb250ZW50O1xuICAgICAgfSwgJycpO1xuICAgICAgaWYgKHN1bS5sZW5ndGggPiA1MDAwKSB7XG4gICAgICAgIHRoaXMucGFyYW1zLnNoaWZ0KCk7XG4gICAgICAgIHJldHVybiB0aGlzLmlzU3VycGFzcygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5sb2coYOacrOasoeWPkemAgSR7c3VtLmxlbmd0aH3lrZdgKTtcbiAgICAgICAgcmV0dXJuIHN1bTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8vIOmJtOadg1xuICAgIGdldFdlYlNvY2tldFVybCgpIHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIC8vIGh0dHBzOi8vc3BhcmstYXBpLnhmLXl1bi5jb20vdjEuMS9jaGF0ICBWMS41IGRvbWFpbiBnZW5lcmFsXG4gICAgICAgIC8vIGh0dHBzOi8vc3BhcmstYXBpLnhmLXl1bi5jb20vdjIuMS9jaGF0ICBWMi4wIGRvbWFpbiBnZW5lcmFsdjJcbiAgICAgICAgdmFyIHVybCA9IFwid3NzOi8vc3BhcmstYXBpLnhmLXl1bi5jb20vdjIuMS9jaGF0XCI7XG4gICAgICAgIHZhciBob3N0ID0gXCJzcGFyay1hcGkueGYteXVuLmNvbVwiO1xuICAgICAgICB2YXIgYXBpS2V5TmFtZSA9IFwiYXBpX2tleVwiO1xuICAgICAgICB2YXIgZGF0ZSA9IG5ldyBEYXRlKCkudG9HTVRTdHJpbmcoKTtcbiAgICAgICAgdmFyIGFsZ29yaXRobSA9IFwiaG1hYy1zaGEyNTZcIjtcbiAgICAgICAgdmFyIGhlYWRlcnMgPSBcImhvc3QgZGF0ZSByZXF1ZXN0LWxpbmVcIjtcbiAgICAgICAgdmFyIHNpZ25hdHVyZU9yaWdpbiA9IGBob3N0OiAke2hvc3R9XFxuZGF0ZTogJHtkYXRlfVxcbkdFVCAvdjIuMS9jaGF0IEhUVFAvMS4xYDtcbiAgICAgICAgdmFyIHNpZ25hdHVyZVNoYSA9IENyeXB0b0pTLkhtYWNTSEEyNTYoc2lnbmF0dXJlT3JpZ2luLCB0aGlzLkFQSVNlY3JldCk7XG4gICAgICAgIHZhciBzaWduYXR1cmUgPSBDcnlwdG9KUy5lbmMuQmFzZTY0LnN0cmluZ2lmeShzaWduYXR1cmVTaGEpO1xuICAgICAgICB2YXIgYXV0aG9yaXphdGlvbk9yaWdpbiA9XG4gICAgICAgICAgYCR7YXBpS2V5TmFtZX09XCIke3RoaXMuQVBJS2V5fVwiLCBhbGdvcml0aG09XCIke2FsZ29yaXRobX1cIiwgaGVhZGVycz1cIiR7aGVhZGVyc31cIiwgc2lnbmF0dXJlPVwiJHtzaWduYXR1cmV9XCJgO1xuICAgICAgICB2YXIgYXV0aG9yaXphdGlvbiA9IGJhc2U2NC5lbmNvZGUoYXV0aG9yaXphdGlvbk9yaWdpbik7XG4gICAgICAgIHVybCA9IGAke3VybH0/YXV0aG9yaXphdGlvbj0ke2F1dGhvcml6YXRpb259JmRhdGU9JHtlbmNvZGVVUkkoZGF0ZSl9Jmhvc3Q9JHtob3N0fWA7XG5cbiAgICAgICAgLy8gY29uc29sZS5sb2codXJsKVxuICAgICAgICByZXNvbHZlKHVybCk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIC8vIOa7muWKqOWIsOWktOmDqFxuICAgIGJpbmRTY3JvbGwoKSB7XG4gICAgICBpZiAodGhpcy51c2VySWQgPT0gMCkge1xuICAgICAgICB0aGlzLmdldEhpc3RvcnkoKTtcbiAgICAgICAgdGhpcy5nZXRwcm9kdWN0SW5mbygpO1xuICAgICAgICB0aGlzLmdldE9yZGVySW5mbygpO1xuICAgICAgICB0aGlzLmdldFJlZnVuZERldGFpbCgpO1xuICAgICAgICB0aGlzLmdldFN0b3JlRGV0YWlsKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmdldE1lckhpc3RvcnkoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8vIOW9k+a7keWKqOmhtemdouaXtizmlLbotbfplK7nm5gs5LiO5b6u5L+h6IGK5aSp5pWI5p6c5L+d5oyB5LiA6Ie0XG4gICAgdG91Y2htb3ZlKGUpIHtcbiAgICAgIHVuaS5oaWRlS2V5Ym9hcmQoKVxuICAgIH1cbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///32\n"); +eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nvar _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ 4);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 33));\nvar _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ 22));\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 35));\nvar base64 = _interopRequireWildcard(__webpack_require__(/*! base-64 */ 36));\nvar _cryptoJs = _interopRequireDefault(__webpack_require__(/*! ../../static/crypto-js/crypto-js.js */ 40));\nvar _parser = _interopRequireDefault(__webpack_require__(/*! ../../static/fast-xml-parser/src/parser */ 198));\nvar utf8 = _interopRequireWildcard(__webpack_require__(/*! utf8 */ 207));\nvar _bingMath = _interopRequireDefault(__webpack_require__(/*! @/components/bing-math/bing-math.vue */ 10));\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\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 _default = {\n components: {\n 'bing-math': _bingMath.default\n },\n data: function data() {\n return {\n wssType: 'falv',\n // 网络连接类型\n avatarType: \"/static/icon/fl.png\",\n // AI头像类型\n talkList: [],\n ajax: {\n rows: 15,\n //每页数量\n page: 1,\n //页码\n flag: false,\n // 请求开关\n loading: false,\n // 加载中\n loadText: '正在获取消息'\n },\n keyboardHeight: 0,\n showplc: true,\n content: '',\n c_content: '',\n n_content: '',\n avatar: '/static/avatar.png',\n // 用户头像\n params: [],\n // 发送的消息内容\n timer: '',\n socketTask: {},\n TEXT: '',\n historyTextList: [],\n // 历史会话信息,由于最大token12000,可以结合实际使用,进行移出\n tempRes: '',\n // 临时答复保存\n socketing: false,\n // 是否正在接收\n showStop: false,\n // 是否显示中断按钮\n scrollTop: 0,\n shouldScrollToBottom: true\n };\n },\n mounted: function mounted() {\n var _this = this;\n this.$nextTick(function () {\n _this.getHistoryMsg();\n });\n uni.onKeyboardHeightChange(function (e) {\n var h = _this.keyboardHeight;\n _this.keyboardHeight = e.height;\n _this.$nextTick(function () {\n setTimeout(function () {\n uni.pageScrollTo({\n scrollTop: 9999999,\n // 当前位置向下滚动\n duration: 300 // 滚动过渡时间为300ms,默认值为300ms\n });\n }, 0);\n });\n });\n },\n onLoad: function onLoad() {\n var _this2 = this;\n var avatar = uni.getStorageSync('avatar');\n avatar ? this.avatar = avatar : null;\n uni.$on('MPinfo', function (e) {\n _this2.avatar = e.avatar;\n });\n },\n beforeDestroy: function beforeDestroy() {\n uni.offKeyboardHeightChange();\n },\n onPageScroll: function onPageScroll(e) {\n if (e.scrollTop < 5) {\n this.getHistoryMsg();\n }\n },\n watch: {\n n_content: function n_content(n, o) {\n var _this3 = this;\n // this.c_content = n;\n if (this.timer) clearInterval(this.timer);\n var cl = this.c_content.length;\n var nc = this.n_content.split('');\n this.timer = setInterval(function () {\n if (cl < nc.length) {\n _this3.c_content += nc[cl];\n cl++;\n if (cl % 6 == 0) _this3.$nextTick(function () {\n uni.pageScrollTo({\n scrollTop: 999999\n });\n });\n } else {\n // console.log(this.socketing==false, cl == nc.length);\n if (_this3.socketing == false) _this3.showStop = false;\n clearInterval(_this3.timer);\n _this3.$nextTick(function () {\n uni.pageScrollTo({\n scrollTop: 9999999\n });\n });\n }\n }, 60);\n }\n },\n methods: {\n copyText: function copyText(str) {\n uni.setClipboardData({\n data: str,\n success: function success() {\n uni.showToast({\n icon: 'none',\n title: '复制成功'\n });\n }\n });\n },\n // 获取历史消息\n getHistoryMsg: function getHistoryMsg() {\n var _this4 = this;\n return;\n if (this.ajax.flag) {\n return; //\n }\n\n var get = /*#__PURE__*/function () {\n var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {\n var data, selector;\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _this4.hideLoadTips();\n _this4.ajax.flag = false;\n _context.next = 4;\n return _this4.joinHistoryMsg();\n case 4:\n data = _context.sent;\n __f__(\"log\", '----- 模拟数据格式,供参考 -----', \" at pages/index/index.vue:169\");\n __f__(\"log\", data, \" at pages/index/index.vue:170\"); // 查看请求返回的数据结构 \n\n // 获取待滚动元素选择器,解决插入数据后,滚动条定位时使用\n selector = '';\n if (_this4.ajax.page > 1) {\n // 非第一页,则取历史消息数据的第一条信息元素\n selector = \"#msg-\".concat(_this4.talkList[0].id);\n } else {\n // 第一页,则取当前消息数据的最后一条信息元素\n selector = \"#msg-\".concat(data[data.length - 1].id);\n }\n\n // 将获取到的消息数据合并到消息数组中\n _this4.talkList = [].concat((0, _toConsumableArray2.default)(data), (0, _toConsumableArray2.default)(_this4.talkList));\n\n // 数据挂载后执行,不懂的请自行阅读 Vue.js 文档对 Vue.nextTick 函数说明。\n _this4.$nextTick(function () {\n // 设置当前滚动的位置\n _this4.setPageScrollTo(selector);\n _this4.hideLoadTips(true);\n if (data.length < _this4.ajax.rows) {\n // 当前消息数据条数小于请求要求条数时,则无更多消息,不再允许请求。\n // 可在此处编写无更多消息数据时的逻辑\n } else {\n _this4.ajax.page++;\n\n // 延迟 200ms ,以保证设置窗口滚动已完成\n setTimeout(function () {\n _this4.ajax.flag = true;\n }, 200);\n }\n });\n case 11:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n return function get() {\n return _ref.apply(this, arguments);\n };\n }();\n get();\n },\n // 拼接历史记录消息\n joinHistoryMsg: function joinHistoryMsg() {\n var _this5 = this;\n var join = function join() {\n var arr = [];\n\n //通过当前页码及页数,模拟数据内容\n var startIndex = (_this5.ajax.page - 1) * _this5.ajax.rows;\n var endIndex = startIndex + _this5.ajax.rows;\n for (var i = startIndex; i < endIndex; i++) {\n arr.push({\n \"id\": i,\n // 消息的ID\n \"content\": \"\\u8FD9\\u662F\\u5386\\u53F2\\u8BB0\\u5F55\\u7684\\u7B2C\".concat(i + 1, \"\\u6761\\u6D88\\u606F\"),\n // 消息内容\n \"type\": Math.random() > 0.5 ? 1 : 0,\n // 此为消息类别,设 1 为发出去的消息,0 为收到对方的消息,\n \"pic\": \"/static/avatar.png\" // 头像\n });\n }\n\n /*\n \t颠倒数组中元素的顺序。将最新的数据排在本次接口返回数据的最后面。\n \t后端接口按 消息的时间降序查找出当前页的数据后,再将本页数据按消息时间降序排序返回。\n \t这是数据的重点,因为页面滚动条和上拉加载历史的问题。\n */\n arr.reverse();\n return arr;\n };\n\n // 此处用到 ES6 的 Promise 知识,不懂的请自行学习。\n return new Promise(function (done, fail) {\n // 无数据请求接口,由 setTimeout 模拟,正式项目替换为 ajax 即可。\n setTimeout(function () {\n var data = join();\n done(data);\n }, 1500);\n });\n },\n focus: function focus() {\n // this.$nextTick(()=>{\n // setTimeout(()=>{\n // uni.pageScrollTo({\n // scrollTop: 9999999, // 当前位置向下滚动\n // duration: 300 // 滚动过渡时间为300ms,默认值为300ms\n // });\n // }, 0)\n // })\n },\n // 设置页面滚动位置\n setPageScrollTo: function setPageScrollTo(selector) {\n var view = uni.createSelectorQuery().in(this).select(selector);\n view.boundingClientRect(function (res) {\n uni.pageScrollTo({\n scrollTop: res.top - 30,\n // -30 为多显示出大半个消息的高度,示意上面还有信息。\n duration: 0\n });\n }).exec();\n },\n // 隐藏加载提示\n hideLoadTips: function hideLoadTips(flag) {\n var _this6 = this;\n if (flag) {\n this.ajax.loadText = '消息获取成功';\n setTimeout(function () {\n _this6.ajax.loading = false;\n }, 300);\n } else {\n this.ajax.loading = true;\n this.ajax.loadText = '正在获取消息';\n }\n },\n // 关闭连接\n closeSocketTask: function closeSocketTask() {\n var _this7 = this;\n try {\n clearInterval(this.timer);\n this.talkList[this.talkList.length - 1].content = this.c_content + '';\n // console.log(this.talkList[this.talkList.length - 1].content);\n // this.c_content = '';\n // this.n_content = '';\n this.socketTask.close({\n code: 500,\n // APP端存在BUG,正常关闭的code为1000,无法正常关闭,需要将code换为其他值\n complete: function complete(res) {\n _this7.showStop = false;\n __f__(\"log\", '主动断开', res, \" at pages/index/index.vue:289\");\n _this7.wsLiveFlag = false;\n }\n });\n } catch (e) {\n //TODO handle the exception\n }\n },\n // 发送信息\n send: function send() {\n var _this8 = this;\n if (!this.content) {\n uni.showToast({\n title: '请输入有效的内容',\n icon: 'none'\n });\n return;\n }\n this.showStop = true;\n // 将当前发送信息 添加到消息列表。\n var data = {\n \"id\": new Date().getTime(),\n \"content\": this.content,\n \"type\": 1,\n \"pic\": this.avatar\n };\n __f__(\"log\", data, \" at pages/index/index.vue:314\");\n this.TEXT = this.content;\n this.talkList.push(data);\n this.talkList.push({\n \"id\": new Date().getTime(),\n \"content\": '',\n \"type\": 2,\n \"pic\": this.avatarType\n });\n this.n_content = '';\n this.c_content = '';\n this.socketing = true;\n // return ;\n this.$nextTick(function () {\n // 清空内容框中的内容\n _this8.content = '';\n // uni.pageScrollTo({\n // scrollTop: 999999, // 设置一个超大值,以保证滚动条滚动到底部\n // duration: 0\n // });\n });\n\n this.sendToSpark();\n },\n sendToSpark: function sendToSpark() {\n var _this9 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {\n var realThis;\n return _regenerator.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n // let myUrl = await this.getWebSocketUrl();\n _this9.tempRes = \"\";\n realThis = _this9;\n _this9.socketTask = uni.connectSocket({\n //url: encodeURI(encodeURI(myUrl).replace(/\\+/g, '%2B')),\n url: \"wss://chat.lihaink.cn/chat?type=\".concat(_this9.wssType, \"×tamp=\").concat(Date.now()),\n method: 'GET',\n token: '',\n success: function success(res) {\n __f__(\"log\", res, \"ws成功连接...\", \" at pages/index/index.vue:348\");\n realThis.wsLiveFlag = true;\n }\n });\n realThis.socketTask.onError(function (res) {\n __f__(\"log\", \"连接发生错误,请检查appid是否填写\", res, \" at pages/index/index.vue:353\");\n });\n realThis.socketTask.onOpen(function (res) {\n _this9.historyTextList.push({\n \"role\": \"user\",\n \"content\": _this9.TEXT\n });\n // 第一帧..........................................\n __f__(\"log\", '连接成功...', \" at pages/index/index.vue:361\");\n // let params = {\n // \"header\": {\n // \"app_id\": this.APPID,\n // \"uid\": \"aef9f963-7\"\n // },\n // \"parameter\": {\n // \"chat\": {\n // \"domain\": \"generalv2\",\n // \"temperature\": 0.5,\n // \"max_tokens\": 1024\n // }\n // },\n // \"payload\": {\n // \"message\": {\n // \"text\": this.historyTextList\n // }\n // }\n // };\n if (_this9.historyTextList.length > 9) _this9.params = JSON.parse(JSON.stringify(_this9.historyTextList.splice(-9)));else _this9.params = JSON.parse(JSON.stringify(_this9.historyTextList));\n _this9.isSurpass();\n realThis.socketTask.send({\n // 发送消息,,都用uni的官方版本\n data: JSON.stringify(_this9.params),\n success: function success() {\n __f__(\"log\", '第一帧发送成功', \" at pages/index/index.vue:387\");\n }\n });\n });\n\n // 接受到消息时\n realThis.socketTask.onMessage(function (res) {\n __f__(\"log\", '收到API返回的内容:', res.data, \" at pages/index/index.vue:394\");\n var obj = JSON.parse(res.data);\n // console.log(\"我打印的\"+obj.payload);\n if (!realThis.wsLiveFlag) return;\n var dataArray = obj.payload.choices.text;\n for (var i = 0; i < dataArray.length; i++) {\n _this9.talkList[_this9.talkList.length - 1].content += dataArray[i].content;\n _this9.n_content = _this9.talkList[_this9.talkList.length - 1].content;\n realThis.tempRes = realThis.tempRes + dataArray[i].content;\n }\n var temp = JSON.parse(res.data);\n // console.log(\"0726\",temp.header.code)\n if (temp.header.code !== 0) {\n _this9.socketing = false;\n __f__(\"log\", \"\".concat(temp.header.code, \":\").concat(temp.message), \" at pages/index/index.vue:408\");\n realThis.socketTask.close({\n success: function success(res) {\n __f__(\"log\", '关闭成功', res, \" at pages/index/index.vue:411\");\n realThis.wsLiveFlag = false;\n },\n fail: function fail(err) {\n __f__(\"log\", '关闭失败', err, \" at pages/index/index.vue:415\");\n }\n });\n }\n if (temp.header.code === 0) {\n if (res.data && temp.header.status === 2) {\n _this9.socketing = false;\n _this9.historyTextList.push({\n \"role\": \"assistant\",\n \"content\": _this9.tempRes\n });\n setTimeout(function () {\n realThis.socketTask.close({\n success: function success(res) {\n __f__(\"log\", '关闭成功', res, \" at pages/index/index.vue:429\");\n realThis.wsLiveFlag = false;\n },\n fail: function fail(err) {\n // console.log('关闭失败', err)\n }\n });\n }, 1000);\n }\n }\n });\n case 6:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }))();\n },\n // 判断文字是否超过五千字\n isSurpass: function isSurpass() {\n var sum = this.params.reduce(function (accumulator, currentValue) {\n return accumulator + currentValue.content;\n }, '');\n if (sum.length > 5000) {\n this.params.shift();\n return this.isSurpass();\n } else {\n __f__(\"log\", \"\\u672C\\u6B21\\u53D1\\u9001\".concat(sum.length, \"\\u5B57\"), \" at pages/index/index.vue:450\");\n return sum;\n }\n },\n // 鉴权\n getWebSocketUrl: function getWebSocketUrl() {\n var _this10 = this;\n return new Promise(function (resolve, reject) {\n // https://spark-api.xf-yun.com/v1.1/chat V1.5 domain general\n // https://spark-api.xf-yun.com/v2.1/chat V2.0 domain generalv2\n var url = \"wss://spark-api.xf-yun.com/v2.1/chat\";\n var host = \"spark-api.xf-yun.com\";\n var apiKeyName = \"api_key\";\n var date = new Date().toGMTString();\n var algorithm = \"hmac-sha256\";\n var headers = \"host date request-line\";\n var signatureOrigin = \"host: \".concat(host, \"\\ndate: \").concat(date, \"\\nGET /v2.1/chat HTTP/1.1\");\n var signatureSha = _cryptoJs.default.HmacSHA256(signatureOrigin, _this10.APISecret);\n var signature = _cryptoJs.default.enc.Base64.stringify(signatureSha);\n var authorizationOrigin = \"\".concat(apiKeyName, \"=\\\"\").concat(_this10.APIKey, \"\\\", algorithm=\\\"\").concat(algorithm, \"\\\", headers=\\\"\").concat(headers, \"\\\", signature=\\\"\").concat(signature, \"\\\"\");\n var authorization = base64.encode(authorizationOrigin);\n url = \"\".concat(url, \"?authorization=\").concat(authorization, \"&date=\").concat(encodeURI(date), \"&host=\").concat(host);\n\n // console.log(url)\n resolve(url);\n });\n },\n // 滚动到头部\n bindScroll: function bindScroll() {\n if (this.userId == 0) {\n this.getHistory();\n this.getproductInfo();\n this.getOrderInfo();\n this.getRefundDetail();\n this.getStoreDetail();\n } else {\n this.getMerHistory();\n }\n },\n // 当滑动页面时,收起键盘,与微信聊天效果保持一致\n touchmove: function touchmove(e) {\n uni.hideKeyboard();\n }\n }\n};\nexports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 21)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvaW5kZXgvaW5kZXgudnVlIl0sIm5hbWVzIjpbImNvbXBvbmVudHMiLCJCaW5nTWF0aCIsImRhdGEiLCJ3c3NUeXBlIiwiYXZhdGFyVHlwZSIsInRhbGtMaXN0IiwiYWpheCIsInJvd3MiLCJwYWdlIiwiZmxhZyIsImxvYWRpbmciLCJsb2FkVGV4dCIsImtleWJvYXJkSGVpZ2h0Iiwic2hvd3BsYyIsImNvbnRlbnQiLCJjX2NvbnRlbnQiLCJuX2NvbnRlbnQiLCJhdmF0YXIiLCJwYXJhbXMiLCJ0aW1lciIsInNvY2tldFRhc2siLCJURVhUIiwiaGlzdG9yeVRleHRMaXN0IiwidGVtcFJlcyIsInNvY2tldGluZyIsInNob3dTdG9wIiwic2Nyb2xsVG9wIiwic2hvdWxkU2Nyb2xsVG9Cb3R0b20iLCJtb3VudGVkIiwiJG5leHRUaWNrIiwiZ2V0SGlzdG9yeU1zZyIsInVuaSIsIm9uS2V5Ym9hcmRIZWlnaHRDaGFuZ2UiLCJlIiwiaCIsImhlaWdodCIsInNldFRpbWVvdXQiLCJwYWdlU2Nyb2xsVG8iLCJkdXJhdGlvbiIsIm9uTG9hZCIsImdldFN0b3JhZ2VTeW5jIiwiJG9uIiwiYmVmb3JlRGVzdHJveSIsIm9mZktleWJvYXJkSGVpZ2h0Q2hhbmdlIiwib25QYWdlU2Nyb2xsIiwid2F0Y2giLCJuIiwibyIsImNsZWFySW50ZXJ2YWwiLCJjbCIsImxlbmd0aCIsIm5jIiwic3BsaXQiLCJzZXRJbnRlcnZhbCIsIm1ldGhvZHMiLCJjb3B5VGV4dCIsInN0ciIsInNldENsaXBib2FyZERhdGEiLCJzdWNjZXNzIiwic2hvd1RvYXN0IiwiaWNvbiIsInRpdGxlIiwiZ2V0IiwiaGlkZUxvYWRUaXBzIiwiam9pbkhpc3RvcnlNc2ciLCJzZWxlY3RvciIsImlkIiwic2V0UGFnZVNjcm9sbFRvIiwiam9pbiIsImFyciIsInN0YXJ0SW5kZXgiLCJlbmRJbmRleCIsImkiLCJwdXNoIiwiTWF0aCIsInJhbmRvbSIsInJldmVyc2UiLCJQcm9taXNlIiwiZG9uZSIsImZhaWwiLCJmb2N1cyIsInZpZXciLCJjcmVhdGVTZWxlY3RvclF1ZXJ5IiwiaW4iLCJzZWxlY3QiLCJib3VuZGluZ0NsaWVudFJlY3QiLCJyZXMiLCJ0b3AiLCJleGVjIiwiY2xvc2VTb2NrZXRUYXNrIiwiY2xvc2UiLCJjb2RlIiwiY29tcGxldGUiLCJ3c0xpdmVGbGFnIiwic2VuZCIsIkRhdGUiLCJnZXRUaW1lIiwic2VuZFRvU3BhcmsiLCJyZWFsVGhpcyIsImNvbm5lY3RTb2NrZXQiLCJ1cmwiLCJub3ciLCJtZXRob2QiLCJ0b2tlbiIsIm9uRXJyb3IiLCJvbk9wZW4iLCJKU09OIiwicGFyc2UiLCJzdHJpbmdpZnkiLCJzcGxpY2UiLCJpc1N1cnBhc3MiLCJvbk1lc3NhZ2UiLCJvYmoiLCJkYXRhQXJyYXkiLCJwYXlsb2FkIiwiY2hvaWNlcyIsInRleHQiLCJ0ZW1wIiwiaGVhZGVyIiwibWVzc2FnZSIsImVyciIsInN0YXR1cyIsInN1bSIsInJlZHVjZSIsImFjY3VtdWxhdG9yIiwiY3VycmVudFZhbHVlIiwic2hpZnQiLCJnZXRXZWJTb2NrZXRVcmwiLCJyZXNvbHZlIiwicmVqZWN0IiwiaG9zdCIsImFwaUtleU5hbWUiLCJkYXRlIiwidG9HTVRTdHJpbmciLCJhbGdvcml0aG0iLCJoZWFkZXJzIiwic2lnbmF0dXJlT3JpZ2luIiwic2lnbmF0dXJlU2hhIiwiQ3J5cHRvSlMiLCJIbWFjU0hBMjU2IiwiQVBJU2VjcmV0Iiwic2lnbmF0dXJlIiwiZW5jIiwiQmFzZTY0IiwiYXV0aG9yaXphdGlvbk9yaWdpbiIsIkFQSUtleSIsImF1dGhvcml6YXRpb24iLCJiYXNlNjQiLCJlbmNvZGUiLCJlbmNvZGVVUkkiLCJiaW5kU2Nyb2xsIiwidXNlcklkIiwiZ2V0SGlzdG9yeSIsImdldHByb2R1Y3RJbmZvIiwiZ2V0T3JkZXJJbmZvIiwiZ2V0UmVmdW5kRGV0YWlsIiwiZ2V0U3RvcmVEZXRhaWwiLCJnZXRNZXJIaXN0b3J5IiwidG91Y2htb3ZlIiwiaGlkZUtleWJvYXJkIl0sIm1hcHBp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RUFBRSxPQUFJLENBQUNJLFNBQVMsQ0FBQztRQUN2RSxJQUFJQyxTQUFTLEdBQUdILGlCQUFRLENBQUNJLEdBQUcsQ0FBQ0MsTUFBTSxDQUFDbkMsU0FBUyxDQUFDNkIsWUFBWSxDQUFDO1FBQzNELElBQUlPLG1CQUFtQixhQUNsQmIsVUFBVSxnQkFBSyxPQUFJLENBQUNjLE1BQU0sNkJBQWlCWCxTQUFTLDJCQUFlQyxPQUFPLDZCQUFpQk0sU0FBUyxPQUFHO1FBQzVHLElBQUlLLGFBQWEsR0FBR0MsTUFBTSxDQUFDQyxNQUFNLENBQUNKLG1CQUFtQixDQUFDO1FBQ3RENUMsR0FBRyxhQUFNQSxHQUFHLDRCQUFrQjhDLGFBQWEsbUJBQVNHLFNBQVMsQ0FBQ2pCLElBQUksQ0FBQyxtQkFBU0YsSUFBSSxDQUFFOztRQUVsRjtRQUNBRixPQUFPLENBQUM1QixHQUFHLENBQUM7TUFDZCxDQUFDLENBQUM7SUFDSixDQUFDO0lBQ0Q7SUFDQWtELFVBQVUsd0JBQUc7TUFDWCxJQUFJLElBQUksQ0FBQ0MsTUFBTSxJQUFJLENBQUMsRUFBRTtRQUNwQixJQUFJLENBQUNDLFVBQVUsRUFBRTtRQUNqQixJQUFJLENBQUNDLGNBQWMsRUFBRTtRQUNyQixJQUFJLENBQUNDLFlBQVksRUFBRTtRQUNuQixJQUFJLENBQUNDLGVBQWUsRUFBRTtRQUN0QixJQUFJLENBQUNDLGNBQWMsRUFBRTtNQUN2QixDQUFDLE1BQU07UUFDTCxJQUFJLENBQUNDLGFBQWEsRUFBRTtNQUN0QjtJQUNGLENBQUM7SUFDRDtJQUNBQyxTQUFTLHFCQUFDN0gsQ0FBQyxFQUFFO01BQ1hGLEdBQUcsQ0FBQ2dJLFlBQVksRUFBRTtJQUNwQjtFQUNGO0FBQ0YsQ0FBQztBQUFBLDJCIiwiZmlsZSI6IjMyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG5pbXBvcnQgKiBhcyBiYXNlNjQgZnJvbSBcImJhc2UtNjRcIlxuaW1wb3J0IENyeXB0b0pTIGZyb20gJy4uLy4uL3N0YXRpYy9jcnlwdG8tanMvY3J5cHRvLWpzLmpzJ1xuaW1wb3J0IHBhcnNlciBmcm9tICcuLi8uLi9zdGF0aWMvZmFzdC14bWwtcGFyc2VyL3NyYy9wYXJzZXInXG5pbXBvcnQgKiBhcyB1dGY4IGZyb20gXCJ1dGY4XCJcbmltcG9ydCBCaW5nTWF0aCBmcm9tIFwiQC9jb21wb25lbnRzL2JpbmctbWF0aC9iaW5nLW1hdGgudnVlXCJcbmV4cG9ydCBkZWZhdWx0IHtcbiAgY29tcG9uZW50czoge1xuICAgICdiaW5nLW1hdGgnOiBCaW5nTWF0aFxuICB9LFxuICBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICB3c3NUeXBlOiAnZmFsdicsIC8vIOe9kee7nOi/nuaOpeexu+Wei1xuICAgICAgYXZhdGFyVHlwZTogXCIvc3RhdGljL2ljb24vZmwucG5nXCIsIC8vIEFJ5aS05YOP57G75Z6LXG4gICAgICB0YWxrTGlzdDogW10sXG4gICAgICBhamF4OiB7XG4gICAgICAgIHJvd3M6IDE1LCAvL+avj+mhteaVsOmHj1xuICAgICAgICBwYWdlOiAxLCAvL+mhteeggVxuICAgICAgICBmbGFnOiBmYWxzZSwgLy8g6K+35rGC5byA5YWzXG4gICAgICAgIGxvYWRpbmc6IGZhbHNlLCAvLyDliqDovb3kuK1cbiAgICAgICAgbG9hZFRleHQ6ICfmraPlnKjojrflj5bmtojmga8nXG4gICAgICB9LFxuICAgICAga2V5Ym9hcmRIZWlnaHQ6IDAsXG4gICAgICBzaG93cGxjOiB0cnVlLFxuICAgICAgY29udGVudDogJycsXG4gICAgICBjX2NvbnRlbnQ6ICcnLFxuICAgICAgbl9jb250ZW50OiAnJyxcbiAgICAgIGF2YXRhcjogJy9zdGF0aWMvYXZhdGFyLnBuZycsIC8vIOeUqOaIt+WktOWDj1xuICAgICAgcGFyYW1zOiBbXSwgLy8g5Y+R6YCB55qE5raI5oGv5YaF5a65XG4gICAgICB0aW1lcjogJycsXG4gICAgICBzb2NrZXRUYXNrOiB7fSxcbiAgICAgIFRFWFQ6ICcnLFxuICAgICAgaGlzdG9yeVRleHRMaXN0OiBbXSwgLy8g5Y6G5Y+y5Lya6K+d5L+h5oGv77yM55Sx5LqO5pyA5aSndG9rZW4xMjAwMCzlj6/ku6Xnu5PlkIjlrp7pmYXkvb/nlKjvvIzov5vooYznp7vlh7pcbiAgICAgIHRlbXBSZXM6ICcnLCAvLyDkuLTml7bnrZTlpI3kv53lrZhcbiAgICAgIHNvY2tldGluZzogZmFsc2UsIC8vIOaYr+WQpuato+WcqOaOpeaUtlxuICAgICAgc2hvd1N0b3A6IGZhbHNlLCAvLyDmmK/lkKbmmL7npLrkuK3mlq3mjInpkq5cbiAgICAgIHNjcm9sbFRvcDogMCxcbiAgICAgIHNob3VsZFNjcm9sbFRvQm90dG9tOiB0cnVlXG4gICAgfVxuICB9LFxuICBtb3VudGVkKCkge1xuICAgIHRoaXMuJG5leHRUaWNrKCgpID0+IHtcbiAgICAgIHRoaXMuZ2V0SGlzdG9yeU1zZygpO1xuICAgIH0pO1xuICAgIHVuaS5vbktleWJvYXJkSGVpZ2h0Q2hhbmdlKGUgPT4ge1xuICAgICAgbGV0IGggPSB0aGlzLmtleWJvYXJkSGVpZ2h0O1xuICAgICAgdGhpcy5rZXlib2FyZEhlaWdodCA9IGUuaGVpZ2h0O1xuICAgICAgdGhpcy4kbmV4dFRpY2soKCkgPT4ge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB1bmkucGFnZVNjcm9sbFRvKHtcbiAgICAgICAgICAgIHNjcm9sbFRvcDogOTk5OTk5OSwgLy8g5b2T5YmN5L2N572u5ZCR5LiL5rua5YqoXG4gICAgICAgICAgICBkdXJhdGlvbjogMzAwIC8vIOa7muWKqOi/h+a4oeaXtumXtOS4ujMwMG1z77yM6buY6K6k5YC85Li6MzAwbXNcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSwgMClcbiAgICAgIH0pXG4gICAgfSlcbiAgfSxcbiAgb25Mb2FkKCkge1xuICAgIGxldCBhdmF0YXIgPSB1bmkuZ2V0U3RvcmFnZVN5bmMoJ2F2YXRhcicpO1xuICAgIGF2YXRhciA/IHRoaXMuYXZhdGFyID0gYXZhdGFyIDogbnVsbDtcbiAgICB1bmkuJG9uKCdNUGluZm8nLCAoZSkgPT4ge1xuICAgICAgdGhpcy5hdmF0YXIgPSBlLmF2YXRhcjtcbiAgICB9KVxuICB9LFxuICBiZWZvcmVEZXN0cm95KCkge1xuXG4gICAgdW5pLm9mZktleWJvYXJkSGVpZ2h0Q2hhbmdlKCk7XG5cbiAgfSxcbiAgb25QYWdlU2Nyb2xsKGUpIHtcbiAgICBpZiAoZS5zY3JvbGxUb3AgPCA1KSB7XG4gICAgICB0aGlzLmdldEhpc3RvcnlNc2coKTtcbiAgICB9XG4gIH0sXG4gIHdhdGNoOiB7XG4gICAgbl9jb250ZW50KG4sIG8pIHtcbiAgICAgIC8vIHRoaXMuY19jb250ZW50ID0gbjtcbiAgICAgIGlmICh0aGlzLnRpbWVyKSBjbGVhckludGVydmFsKHRoaXMudGltZXIpO1xuICAgICAgbGV0IGNsID0gdGhpcy5jX2NvbnRlbnQubGVuZ3RoO1xuICAgICAgbGV0IG5jID0gdGhpcy5uX2NvbnRlbnQuc3BsaXQoJycpO1xuICAgICAgdGhpcy50aW1lciA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgaWYgKGNsIDwgbmMubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5jX2NvbnRlbnQgKz0gbmNbY2xdO1xuICAgICAgICAgIGNsKys7XG4gICAgICAgICAgaWYgKGNsICUgNiA9PSAwKSB0aGlzLiRuZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICB1bmkucGFnZVNjcm9sbFRvKHtcbiAgICAgICAgICAgICAgc2Nyb2xsVG9wOiA5OTk5OTksXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5zb2NrZXRpbmc9PWZhbHNlLCBjbCA9PSBuYy5sZW5ndGgpO1xuICAgICAgICAgIGlmICh0aGlzLnNvY2tldGluZyA9PSBmYWxzZSkgdGhpcy5zaG93U3RvcCA9IGZhbHNlO1xuICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lcik7XG4gICAgICAgICAgdGhpcy4kbmV4dFRpY2soKCkgPT4ge1xuICAgICAgICAgICAgdW5pLnBhZ2VTY3JvbGxUbyh7XG4gICAgICAgICAgICAgIHNjcm9sbFRvcDogOTk5OTk5OSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfSwgNjApXG4gICAgfSxcbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIGNvcHlUZXh0KHN0cikge1xuICAgICAgdW5pLnNldENsaXBib2FyZERhdGEoe1xuICAgICAgICBkYXRhOiBzdHIsXG4gICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHVuaS5zaG93VG9hc3Qoe1xuICAgICAgICAgICAgaWNvbjogJ25vbmUnLFxuICAgICAgICAgICAgdGl0bGU6ICflpI3liLbmiJDlip8nXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLy8g6I635Y+W5Y6G5Y+y5raI5oGvXG4gICAgZ2V0SGlzdG9yeU1zZygpIHtcbiAgICAgIHJldHVybjtcbiAgICAgIGlmICh0aGlzLmFqYXguZmxhZykge1xuICAgICAgICByZXR1cm47IC8vXG4gICAgICB9XG5cbiAgICAgIGxldCBnZXQgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgIHRoaXMuaGlkZUxvYWRUaXBzKCk7XG4gICAgICAgIHRoaXMuYWpheC5mbGFnID0gZmFsc2U7XG4gICAgICAgIGxldCBkYXRhID0gYXdhaXQgdGhpcy5qb2luSGlzdG9yeU1zZygpO1xuXG4gICAgICAgIGNvbnNvbGUubG9nKCctLS0tLSDmqKHmi5/mlbDmja7moLzlvI/vvIzkvpvlj4LogIMgLS0tLS0nKTtcbiAgICAgICAgY29uc29sZS5sb2coZGF0YSk7IC8vIOafpeeci+ivt+axgui/lOWbnueahOaVsOaNrue7k+aehCBcblxuICAgICAgICAvLyDojrflj5blvoXmu5rliqjlhYPntKDpgInmi6nlmajvvIzop6PlhrPmj5LlhaXmlbDmja7lkI7vvIzmu5rliqjmnaHlrprkvY3ml7bkvb/nlKhcbiAgICAgICAgbGV0IHNlbGVjdG9yID0gJyc7XG5cbiAgICAgICAgaWYgKHRoaXMuYWpheC5wYWdlID4gMSkge1xuICAgICAgICAgIC8vIOmdnuesrOS4gOmhte+8jOWImeWPluWOhuWPsua2iOaBr+aVsOaNrueahOesrOS4gOadoeS/oeaBr+WFg+e0oFxuICAgICAgICAgIHNlbGVjdG9yID0gYCNtc2ctJHt0aGlzLnRhbGtMaXN0WzBdLmlkfWA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8g56ys5LiA6aG177yM5YiZ5Y+W5b2T5YmN5raI5oGv5pWw5o2u55qE5pyA5ZCO5LiA5p2h5L+h5oGv5YWD57SgXG4gICAgICAgICAgc2VsZWN0b3IgPSBgI21zZy0ke2RhdGFbZGF0YS5sZW5ndGgtMV0uaWR9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIOWwhuiOt+WPluWIsOeahOa2iOaBr+aVsOaNruWQiOW5tuWIsOa2iOaBr+aVsOe7hOS4rVxuICAgICAgICB0aGlzLnRhbGtMaXN0ID0gWy4uLmRhdGEsIC4uLnRoaXMudGFsa0xpc3RdO1xuXG4gICAgICAgIC8vIOaVsOaNruaMgui9veWQjuaJp+ihjO+8jOS4jeaHgueahOivt+iHquihjOmYheivuyBWdWUuanMg5paH5qGj5a+5IFZ1ZS5uZXh0VGljayDlh73mlbDor7TmmI7jgIJcbiAgICAgICAgdGhpcy4kbmV4dFRpY2soKCkgPT4ge1xuICAgICAgICAgIC8vIOiuvue9ruW9k+WJjea7muWKqOeahOS9jee9rlxuICAgICAgICAgIHRoaXMuc2V0UGFnZVNjcm9sbFRvKHNlbGVjdG9yKTtcblxuICAgICAgICAgIHRoaXMuaGlkZUxvYWRUaXBzKHRydWUpO1xuXG4gICAgICAgICAgaWYgKGRhdGEubGVuZ3RoIDwgdGhpcy5hamF4LnJvd3MpIHtcbiAgICAgICAgICAgIC8vIOW9k+WJjea2iOaBr+aVsOaNruadoeaVsOWwj+S6juivt+axguimgeaxguadoeaVsOaXtu+8jOWImeaXoOabtOWkmua2iOaBr++8jOS4jeWGjeWFgeiuuOivt+axguOAglxuICAgICAgICAgICAgLy8g5Y+v5Zyo5q2k5aSE57yW5YaZ5peg5pu05aSa5raI5oGv5pWw5o2u5pe255qE6YC76L6RXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYWpheC5wYWdlKys7XG5cbiAgICAgICAgICAgIC8vIOW7tui/nyAyMDBtcyDvvIzku6Xkv53or4Horr7nva7nqpflj6Pmu5rliqjlt7LlrozmiJBcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmFqYXguZmxhZyA9IHRydWU7XG4gICAgICAgICAgICB9LCAyMDApXG4gICAgICAgICAgfVxuXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBnZXQoKTtcbiAgICB9LFxuICAgIC8vIOaLvOaOpeWOhuWPsuiusOW9lea2iOaBr1xuICAgIGpvaW5IaXN0b3J5TXNnKCkge1xuICAgICAgbGV0IGpvaW4gPSAoKSA9PiB7XG4gICAgICAgIGxldCBhcnIgPSBbXTtcblxuICAgICAgICAvL+mAmui/h+W9k+WJjemhteeggeWPiumhteaVsO+8jOaooeaLn+aVsOaNruWGheWuuVxuICAgICAgICBsZXQgc3RhcnRJbmRleCA9ICh0aGlzLmFqYXgucGFnZSAtIDEpICogdGhpcy5hamF4LnJvd3M7XG4gICAgICAgIGxldCBlbmRJbmRleCA9IHN0YXJ0SW5kZXggKyB0aGlzLmFqYXgucm93cztcbiAgICAgICAgZm9yIChsZXQgaSA9IHN0YXJ0SW5kZXg7IGkgPCBlbmRJbmRleDsgaSsrKSB7XG4gICAgICAgICAgYXJyLnB1c2goe1xuICAgICAgICAgICAgXCJpZFwiOiBpLCAvLyDmtojmga/nmoRJRFxuICAgICAgICAgICAgXCJjb250ZW50XCI6IGDov5nmmK/ljoblj7LorrDlvZXnmoTnrKwke2krMX3mnaHmtojmga9gLCAvLyDmtojmga/lhoXlrrlcbiAgICAgICAgICAgIFwidHlwZVwiOiBNYXRoLnJhbmRvbSgpID4gMC41ID8gMSA6IDAsIC8vIOatpOS4uua2iOaBr+exu+WIq++8jOiuviAxIOS4uuWPkeWHuuWOu+eahOa2iOaBr++8jDAg5Li65pS25Yiw5a+55pa555qE5raI5oGvLFxuICAgICAgICAgICAgXCJwaWNcIjogXCIvc3RhdGljL2F2YXRhci5wbmdcIiAvLyDlpLTlg49cbiAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgLypcbiAgICAgICAgXHTpoqDlgJLmlbDnu4TkuK3lhYPntKDnmoTpobrluo/jgILlsIbmnIDmlrDnmoTmlbDmja7mjpLlnKjmnKzmrKHmjqXlj6Pov5Tlm57mlbDmja7nmoTmnIDlkI7pnaLjgIJcbiAgICAgICAgXHTlkI7nq6/mjqXlj6PmjIkg5raI5oGv55qE5pe26Ze06ZmN5bqP5p+l5om+5Ye65b2T5YmN6aG155qE5pWw5o2u5ZCO77yM5YaN5bCG5pys6aG15pWw5o2u5oyJ5raI5oGv5pe26Ze06ZmN5bqP5o6S5bqP6L+U5Zue44CCXG4gICAgICAgIFx06L+Z5piv5pWw5o2u55qE6YeN54K577yM5Zug5Li66aG16Z2i5rua5Yqo5p2h5ZKM5LiK5ouJ5Yqg6L295Y6G5Y+y55qE6Zeu6aKY44CCXG4gICAgICAgICAqL1xuICAgICAgICBhcnIucmV2ZXJzZSgpO1xuXG4gICAgICAgIHJldHVybiBhcnI7XG4gICAgICB9XG5cbiAgICAgIC8vIOatpOWkhOeUqOWIsCBFUzYg55qEIFByb21pc2Ug55+l6K+G77yM5LiN5oeC55qE6K+36Ieq6KGM5a2m5Lmg44CCXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKGRvbmUsIGZhaWwpID0+IHtcbiAgICAgICAgLy8g5peg5pWw5o2u6K+35rGC5o6l5Y+j77yM55SxIHNldFRpbWVvdXQg5qih5ouf77yM5q2j5byP6aG555uu5pu/5o2i5Li6IGFqYXgg5Y2z5Y+v44CCXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGxldCBkYXRhID0gam9pbigpO1xuICAgICAgICAgIGRvbmUoZGF0YSk7XG4gICAgICAgIH0sIDE1MDApO1xuICAgICAgfSlcbiAgICB9LFxuICAgIGZvY3VzKCkge1xuICAgICAgLy8gdGhpcy4kbmV4dFRpY2soKCk9PntcbiAgICAgIC8vICAgc2V0VGltZW91dCgoKT0+e1xuICAgICAgLy8gICAgIHVuaS5wYWdlU2Nyb2xsVG8oe1xuICAgICAgLy8gICAgICAgc2Nyb2xsVG9wOiA5OTk5OTk5LCAvLyDlvZPliY3kvY3nva7lkJHkuIvmu5rliqhcbiAgICAgIC8vICAgICAgIGR1cmF0aW9uOiAzMDAgLy8g5rua5Yqo6L+H5rih5pe26Ze05Li6MzAwbXPvvIzpu5jorqTlgLzkuLozMDBtc1xuICAgICAgLy8gICAgIH0pO1xuICAgICAgLy8gICB9LCAwKVxuICAgICAgLy8gfSlcbiAgICB9LFxuICAgIC8vIOiuvue9rumhtemdoua7muWKqOS9jee9rlxuICAgIHNldFBhZ2VTY3JvbGxUbyhzZWxlY3Rvcikge1xuICAgICAgbGV0IHZpZXcgPSB1bmkuY3JlYXRlU2VsZWN0b3JRdWVyeSgpLmluKHRoaXMpLnNlbGVjdChzZWxlY3Rvcik7XG4gICAgICB2aWV3LmJvdW5kaW5nQ2xpZW50UmVjdCgocmVzKSA9PiB7XG4gICAgICAgIHVuaS5wYWdlU2Nyb2xsVG8oe1xuICAgICAgICAgIHNjcm9sbFRvcDogcmVzLnRvcCAtIDMwLCAvLyAtMzAg5Li65aSa5pi+56S65Ye65aSn5Y2K5Liq5raI5oGv55qE6auY5bqm77yM56S65oSP5LiK6Z2i6L+Y5pyJ5L+h5oGv44CCXG4gICAgICAgICAgZHVyYXRpb246IDBcbiAgICAgICAgfSk7XG4gICAgICB9KS5leGVjKCk7XG4gICAgfSxcbiAgICAvLyDpmpDol4/liqDovb3mj5DnpLpcbiAgICBoaWRlTG9hZFRpcHMoZmxhZykge1xuICAgICAgaWYgKGZsYWcpIHtcbiAgICAgICAgdGhpcy5hamF4LmxvYWRUZXh0ID0gJ+a2iOaBr+iOt+WPluaIkOWKnyc7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuYWpheC5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIH0sIDMwMCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmFqYXgubG9hZGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMuYWpheC5sb2FkVGV4dCA9ICfmraPlnKjojrflj5bmtojmga8nO1xuICAgICAgfVxuICAgIH0sXG4gICAgLy8g5YWz6Zet6L+e5o6lXG4gICAgY2xvc2VTb2NrZXRUYXNrKCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWVyKTtcbiAgICAgICAgdGhpcy50YWxrTGlzdFt0aGlzLnRhbGtMaXN0Lmxlbmd0aCAtIDFdLmNvbnRlbnQgPSB0aGlzLmNfY29udGVudCArICcnO1xuICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLnRhbGtMaXN0W3RoaXMudGFsa0xpc3QubGVuZ3RoIC0gMV0uY29udGVudCk7XG4gICAgICAgIC8vIHRoaXMuY19jb250ZW50ID0gJyc7XG4gICAgICAgIC8vIHRoaXMubl9jb250ZW50ID0gJyc7XG4gICAgICAgIHRoaXMuc29ja2V0VGFzay5jbG9zZSh7XG4gICAgICAgICAgY29kZTogNTAwLCAvLyBBUFDnq6/lrZjlnKhCVUcs5q2j5bi45YWz6Zet55qEY29kZeS4ujEwMDAs5peg5rOV5q2j5bi45YWz6ZetLOmcgOimgeWwhmNvZGXmjaLkuLrlhbbku5blgLxcbiAgICAgICAgICBjb21wbGV0ZTogKHJlcykgPT4ge1xuICAgICAgICAgICAgdGhpcy5zaG93U3RvcCA9IGZhbHNlO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ+S4u+WKqOaWreW8gCcsIHJlcyk7XG4gICAgICAgICAgICB0aGlzLndzTGl2ZUZsYWcgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vVE9ETyBoYW5kbGUgdGhlIGV4Y2VwdGlvblxuICAgICAgfVxuICAgIH0sXG4gICAgLy8g5Y+R6YCB5L+h5oGvXG4gICAgc2VuZCgpIHtcbiAgICAgIGlmICghdGhpcy5jb250ZW50KSB7XG4gICAgICAgIHVuaS5zaG93VG9hc3Qoe1xuICAgICAgICAgIHRpdGxlOiAn6K+36L6T5YWl5pyJ5pWI55qE5YaF5a65JyxcbiAgICAgICAgICBpY29uOiAnbm9uZSdcbiAgICAgICAgfSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5zaG93U3RvcCA9IHRydWU7XG4gICAgICAvLyDlsIblvZPliY3lj5HpgIHkv6Hmga8g5re75Yqg5Yiw5raI5oGv5YiX6KGo44CCXG4gICAgICBsZXQgZGF0YSA9IHtcbiAgICAgICAgXCJpZFwiOiBuZXcgRGF0ZSgpLmdldFRpbWUoKSxcbiAgICAgICAgXCJjb250ZW50XCI6IHRoaXMuY29udGVudCxcbiAgICAgICAgXCJ0eXBlXCI6IDEsXG4gICAgICAgIFwicGljXCI6IHRoaXMuYXZhdGFyXG4gICAgICB9XG4gICAgICBjb25zb2xlLmxvZyhkYXRhKTtcbiAgICAgIHRoaXMuVEVYVCA9IHRoaXMuY29udGVudDtcbiAgICAgIHRoaXMudGFsa0xpc3QucHVzaChkYXRhKTtcbiAgICAgIHRoaXMudGFsa0xpc3QucHVzaCh7XG4gICAgICAgIFwiaWRcIjogbmV3IERhdGUoKS5nZXRUaW1lKCksXG4gICAgICAgIFwiY29udGVudFwiOiAnJyxcbiAgICAgICAgXCJ0eXBlXCI6IDIsXG4gICAgICAgIFwicGljXCI6IHRoaXMuYXZhdGFyVHlwZVxuICAgICAgfSk7XG4gICAgICB0aGlzLm5fY29udGVudCA9ICcnO1xuICAgICAgdGhpcy5jX2NvbnRlbnQgPSAnJztcbiAgICAgIHRoaXMuc29ja2V0aW5nID0gdHJ1ZTtcbiAgICAgIC8vIHJldHVybiA7XG4gICAgICB0aGlzLiRuZXh0VGljaygoKSA9PiB7XG4gICAgICAgIC8vIOa4heepuuWGheWuueahhuS4reeahOWGheWuuVxuICAgICAgICB0aGlzLmNvbnRlbnQgPSAnJztcbiAgICAgICAgLy8gdW5pLnBhZ2VTY3JvbGxUbyh7XG4gICAgICAgIC8vICAgc2Nyb2xsVG9wOiA5OTk5OTksIC8vIOiuvue9ruS4gOS4qui2heWkp+WAvO+8jOS7peS/neivgea7muWKqOadoea7muWKqOWIsOW6lemDqFxuICAgICAgICAvLyAgIGR1cmF0aW9uOiAwXG4gICAgICAgIC8vIH0pO1xuICAgICAgfSlcbiAgICAgIHRoaXMuc2VuZFRvU3BhcmsoKTtcblxuICAgIH0sXG4gICAgYXN5bmMgc2VuZFRvU3BhcmsoKSB7XG4gICAgICAvLyBsZXQgbXlVcmwgPSBhd2FpdCB0aGlzLmdldFdlYlNvY2tldFVybCgpO1xuICAgICAgdGhpcy50ZW1wUmVzID0gXCJcIjtcbiAgICAgIGxldCByZWFsVGhpcyA9IHRoaXM7XG4gICAgICB0aGlzLnNvY2tldFRhc2sgPSB1bmkuY29ubmVjdFNvY2tldCh7XG4gICAgICAgIC8vdXJsOiBlbmNvZGVVUkkoZW5jb2RlVVJJKG15VXJsKS5yZXBsYWNlKC9cXCsvZywgJyUyQicpKSxcbiAgICAgICAgdXJsOiBgd3NzOi8vY2hhdC5saWhhaW5rLmNuL2NoYXQ/dHlwZT0ke3RoaXMud3NzVHlwZX0mdGltZXN0YW1wPSR7RGF0ZS5ub3coKX1gLFxuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICB0b2tlbjogJycsXG4gICAgICAgIHN1Y2Nlc3M6IHJlcyA9PiB7XG4gICAgICAgICAgY29uc29sZS5sb2cocmVzLCBcIndz5oiQ5Yqf6L+e5o6lLi4uXCIpXG4gICAgICAgICAgcmVhbFRoaXMud3NMaXZlRmxhZyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICByZWFsVGhpcy5zb2NrZXRUYXNrLm9uRXJyb3IoKHJlcykgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZyhcIui/nuaOpeWPkeeUn+mUmeivr++8jOivt+ajgOafpWFwcGlk5piv5ZCm5aGr5YaZXCIsIHJlcylcbiAgICAgIH0pXG4gICAgICByZWFsVGhpcy5zb2NrZXRUYXNrLm9uT3BlbigocmVzKSA9PiB7XG4gICAgICAgIHRoaXMuaGlzdG9yeVRleHRMaXN0LnB1c2goe1xuICAgICAgICAgIFwicm9sZVwiOiBcInVzZXJcIixcbiAgICAgICAgICBcImNvbnRlbnRcIjogdGhpcy5URVhUXG4gICAgICAgIH0pXG4gICAgICAgIC8vIOesrOS4gOW4py4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLlxuICAgICAgICBjb25zb2xlLmxvZygn6L+e5o6l5oiQ5YqfLi4uJylcbiAgICAgICAgLy8gbGV0IHBhcmFtcyA9IHtcbiAgICAgICAgLy8gICBcImhlYWRlclwiOiB7XG4gICAgICAgIC8vICAgICBcImFwcF9pZFwiOiB0aGlzLkFQUElELFxuICAgICAgICAvLyAgICAgXCJ1aWRcIjogXCJhZWY5Zjk2My03XCJcbiAgICAgICAgLy8gICB9LFxuICAgICAgICAvLyAgIFwicGFyYW1ldGVyXCI6IHtcbiAgICAgICAgLy8gICAgIFwiY2hhdFwiOiB7XG4gICAgICAgIC8vICAgICAgIFwiZG9tYWluXCI6IFwiZ2VuZXJhbHYyXCIsXG4gICAgICAgIC8vICAgICAgIFwidGVtcGVyYXR1cmVcIjogMC41LFxuICAgICAgICAvLyAgICAgICBcIm1heF90b2tlbnNcIjogMTAyNFxuICAgICAgICAvLyAgICAgfVxuICAgICAgICAvLyAgIH0sXG4gICAgICAgIC8vICAgXCJwYXlsb2FkXCI6IHtcbiAgICAgICAgLy8gICAgIFwibWVzc2FnZVwiOiB7XG4gICAgICAgIC8vICAgICAgIFwidGV4dFwiOiB0aGlzLmhpc3RvcnlUZXh0TGlzdFxuICAgICAgICAvLyAgICAgfVxuICAgICAgICAvLyAgIH1cbiAgICAgICAgLy8gfTtcbiAgICAgICAgaWYgKHRoaXMuaGlzdG9yeVRleHRMaXN0Lmxlbmd0aCA+IDkpIHRoaXMucGFyYW1zID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmhpc3RvcnlUZXh0TGlzdFxuICAgICAgICAgIC5zcGxpY2UoLTkpKSk7XG4gICAgICAgIGVsc2UgdGhpcy5wYXJhbXMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuaGlzdG9yeVRleHRMaXN0KSk7XG4gICAgICAgIHRoaXMuaXNTdXJwYXNzKCk7XG4gICAgICAgIHJlYWxUaGlzLnNvY2tldFRhc2suc2VuZCh7IC8vIOWPkemAgea2iOaBr++8jO+8jOmDveeUqHVuaeeahOWumOaWueeJiOacrFxuICAgICAgICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KHRoaXMucGFyYW1zKSxcbiAgICAgICAgICBzdWNjZXNzKCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ+esrOS4gOW4p+WPkemAgeaIkOWKnycpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgLy8g5o6l5Y+X5Yiw5raI5oGv5pe2XG4gICAgICByZWFsVGhpcy5zb2NrZXRUYXNrLm9uTWVzc2FnZSgocmVzKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKCfmlLbliLBBUEnov5Tlm57nmoTlhoXlrrnvvJonLCByZXMuZGF0YSk7XG4gICAgICAgIGxldCBvYmogPSBKU09OLnBhcnNlKHJlcy5kYXRhKVxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuaIkeaJk+WNsOeahFwiK29iai5wYXlsb2FkKTtcbiAgICAgICAgaWYgKCFyZWFsVGhpcy53c0xpdmVGbGFnKSByZXR1cm47XG4gICAgICAgIGxldCBkYXRhQXJyYXkgPSBvYmoucGF5bG9hZC5jaG9pY2VzLnRleHQ7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YUFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdGhpcy50YWxrTGlzdFt0aGlzLnRhbGtMaXN0Lmxlbmd0aCAtIDFdLmNvbnRlbnQgKz0gZGF0YUFycmF5W2ldLmNvbnRlbnQ7XG4gICAgICAgICAgdGhpcy5uX2NvbnRlbnQgPSB0aGlzLnRhbGtMaXN0W3RoaXMudGFsa0xpc3QubGVuZ3RoIC0gMV0uY29udGVudDtcbiAgICAgICAgICByZWFsVGhpcy50ZW1wUmVzID0gcmVhbFRoaXMudGVtcFJlcyArIGRhdGFBcnJheVtpXS5jb250ZW50XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHRlbXAgPSBKU09OLnBhcnNlKHJlcy5kYXRhKVxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIjA3MjZcIix0ZW1wLmhlYWRlci5jb2RlKVxuICAgICAgICBpZiAodGVtcC5oZWFkZXIuY29kZSAhPT0gMCkge1xuICAgICAgICAgIHRoaXMuc29ja2V0aW5nID0gZmFsc2U7XG4gICAgICAgICAgY29uc29sZS5sb2coYCR7dGVtcC5oZWFkZXIuY29kZX06JHt0ZW1wLm1lc3NhZ2V9YCk7XG4gICAgICAgICAgcmVhbFRoaXMuc29ja2V0VGFzay5jbG9zZSh7XG4gICAgICAgICAgICBzdWNjZXNzKHJlcykge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZygn5YWz6Zet5oiQ5YqfJywgcmVzKVxuICAgICAgICAgICAgICByZWFsVGhpcy53c0xpdmVGbGFnID0gZmFsc2U7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZmFpbChlcnIpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coJ+WFs+mXreWksei0pScsIGVycilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICAgIGlmICh0ZW1wLmhlYWRlci5jb2RlID09PSAwKSB7XG4gICAgICAgICAgaWYgKHJlcy5kYXRhICYmIHRlbXAuaGVhZGVyLnN0YXR1cyA9PT0gMikge1xuICAgICAgICAgICAgdGhpcy5zb2NrZXRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuaGlzdG9yeVRleHRMaXN0LnB1c2goe1xuICAgICAgICAgICAgICBcInJvbGVcIjogXCJhc3Npc3RhbnRcIixcbiAgICAgICAgICAgICAgXCJjb250ZW50XCI6IHRoaXMudGVtcFJlc1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICByZWFsVGhpcy5zb2NrZXRUYXNrLmNsb3NlKHtcbiAgICAgICAgICAgICAgICBzdWNjZXNzKHJlcykge1xuICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ+WFs+mXreaIkOWKnycsIHJlcylcbiAgICAgICAgICAgICAgICAgIHJlYWxUaGlzLndzTGl2ZUZsYWcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGZhaWwoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygn5YWz6Zet5aSx6LSlJywgZXJyKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0sIDEwMDApXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0sXG4gICAgLy8g5Yik5pat5paH5a2X5piv5ZCm6LaF6L+H5LqU5Y2D5a2XXG4gICAgaXNTdXJwYXNzKCkge1xuICAgICAgbGV0IHN1bSA9IHRoaXMucGFyYW1zLnJlZHVjZSgoYWNjdW11bGF0b3IsIGN1cnJlbnRWYWx1ZSkgPT4ge1xuICAgICAgICByZXR1cm4gYWNjdW11bGF0b3IgKyBjdXJyZW50VmFsdWUuY29udGVudDtcbiAgICAgIH0sICcnKTtcbiAgICAgIGlmIChzdW0ubGVuZ3RoID4gNTAwMCkge1xuICAgICAgICB0aGlzLnBhcmFtcy5zaGlmdCgpO1xuICAgICAgICByZXR1cm4gdGhpcy5pc1N1cnBhc3MoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGDmnKzmrKHlj5HpgIEke3N1bS5sZW5ndGh95a2XYCk7XG4gICAgICAgIHJldHVybiBzdW07XG4gICAgICB9XG4gICAgfSxcbiAgICAvLyDpibTmnYNcbiAgICBnZXRXZWJTb2NrZXRVcmwoKSB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAvLyBodHRwczovL3NwYXJrLWFwaS54Zi15dW4uY29tL3YxLjEvY2hhdCAgVjEuNSBkb21haW4gZ2VuZXJhbFxuICAgICAgICAvLyBodHRwczovL3NwYXJrLWFwaS54Zi15dW4uY29tL3YyLjEvY2hhdCAgVjIuMCBkb21haW4gZ2VuZXJhbHYyXG4gICAgICAgIHZhciB1cmwgPSBcIndzczovL3NwYXJrLWFwaS54Zi15dW4uY29tL3YyLjEvY2hhdFwiO1xuICAgICAgICB2YXIgaG9zdCA9IFwic3BhcmstYXBpLnhmLXl1bi5jb21cIjtcbiAgICAgICAgdmFyIGFwaUtleU5hbWUgPSBcImFwaV9rZXlcIjtcbiAgICAgICAgdmFyIGRhdGUgPSBuZXcgRGF0ZSgpLnRvR01UU3RyaW5nKCk7XG4gICAgICAgIHZhciBhbGdvcml0aG0gPSBcImhtYWMtc2hhMjU2XCI7XG4gICAgICAgIHZhciBoZWFkZXJzID0gXCJob3N0IGRhdGUgcmVxdWVzdC1saW5lXCI7XG4gICAgICAgIHZhciBzaWduYXR1cmVPcmlnaW4gPSBgaG9zdDogJHtob3N0fVxcbmRhdGU6ICR7ZGF0ZX1cXG5HRVQgL3YyLjEvY2hhdCBIVFRQLzEuMWA7XG4gICAgICAgIHZhciBzaWduYXR1cmVTaGEgPSBDcnlwdG9KUy5IbWFjU0hBMjU2KHNpZ25hdHVyZU9yaWdpbiwgdGhpcy5BUElTZWNyZXQpO1xuICAgICAgICB2YXIgc2lnbmF0dXJlID0gQ3J5cHRvSlMuZW5jLkJhc2U2NC5zdHJpbmdpZnkoc2lnbmF0dXJlU2hhKTtcbiAgICAgICAgdmFyIGF1dGhvcml6YXRpb25PcmlnaW4gPVxuICAgICAgICAgIGAke2FwaUtleU5hbWV9PVwiJHt0aGlzLkFQSUtleX1cIiwgYWxnb3JpdGhtPVwiJHthbGdvcml0aG19XCIsIGhlYWRlcnM9XCIke2hlYWRlcnN9XCIsIHNpZ25hdHVyZT1cIiR7c2lnbmF0dXJlfVwiYDtcbiAgICAgICAgdmFyIGF1dGhvcml6YXRpb24gPSBiYXNlNjQuZW5jb2RlKGF1dGhvcml6YXRpb25PcmlnaW4pO1xuICAgICAgICB1cmwgPSBgJHt1cmx9P2F1dGhvcml6YXRpb249JHthdXRob3JpemF0aW9ufSZkYXRlPSR7ZW5jb2RlVVJJKGRhdGUpfSZob3N0PSR7aG9zdH1gO1xuXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKHVybClcbiAgICAgICAgcmVzb2x2ZSh1cmwpO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICAvLyDmu5rliqjliLDlpLTpg6hcbiAgICBiaW5kU2Nyb2xsKCkge1xuICAgICAgaWYgKHRoaXMudXNlcklkID09IDApIHtcbiAgICAgICAgdGhpcy5nZXRIaXN0b3J5KCk7XG4gICAgICAgIHRoaXMuZ2V0cHJvZHVjdEluZm8oKTtcbiAgICAgICAgdGhpcy5nZXRPcmRlckluZm8oKTtcbiAgICAgICAgdGhpcy5nZXRSZWZ1bmREZXRhaWwoKTtcbiAgICAgICAgdGhpcy5nZXRTdG9yZURldGFpbCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5nZXRNZXJIaXN0b3J5KCk7XG4gICAgICB9XG4gICAgfSxcbiAgICAvLyDlvZPmu5HliqjpobXpnaLml7Ys5pS26LW36ZSu55uYLOS4juW+ruS/oeiBiuWkqeaViOaenOS/neaMgeS4gOiHtFxuICAgIHRvdWNobW92ZShlKSB7XG4gICAgICB1bmkuaGlkZUtleWJvYXJkKClcbiAgICB9XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///32\n"); /***/ }), /* 33 */ diff --git a/unpackage/dist/dev/app-plus/manifest.json b/unpackage/dist/dev/app-plus/manifest.json index dbdcea8..87df8e0 100644 --- a/unpackage/dist/dev/app-plus/manifest.json +++ b/unpackage/dist/dev/app-plus/manifest.json @@ -1 +1 @@ -{"@platforms":["android","iPhone","iPad"],"id":"__UNI__7AA205C","name":"教育咨询","version":{"name":"1.0.0","code":"100"},"description":"","launch_path":"__uniappview.html","developer":{"name":"","email":"","url":""},"permissions":{"UniNView":{"description":"UniNView原生渲染"}},"plus":{"useragent":{"value":"uni-app","concatenate":true},"splashscreen":{"target":"id:1","autoclose":true,"waiting":true,"delay":0},"popGesture":"close","launchwebview":{"render":"always","id":"1","kernel":"WKWebview"},"statusbar":{"immersed":"supportedDevice","style":"dark","background":"#F8F8F8"},"usingComponents":true,"nvueStyleCompiler":"uni-app","compilerVersion":3,"distribute":{"google":{"permissions":["","","","","","","","","","","","","","",""],"abiFilters":["armeabi-v7a","arm64-v8a","x86"]},"apple":{"dSYMs":false},"plugins":{"ad":{},"audio":{"mp3":{"description":"Android平台录音支持MP3格式文件"}}}},"uniStatistics":{"enable":false},"arguments":"{\"name\":\"\",\"path\":\"\",\"query\":\"\",\"id\":0}","allowsInlineMediaPlayback":true,"uni-app":{"compilerVersion":"3.8.12","control":"uni-v3","nvueCompiler":"uni-app","renderer":"auto","nvue":{"flex-direction":"column"},"nvueLaunchMode":"normal"},"launch_path":"__uniappview.html"}} \ No newline at end of file +{"@platforms":["android","iPhone","iPad"],"id":"__UNI__358D505","name":"法律咨询","version":{"name":"1.0.0","code":"100"},"description":"","launch_path":"__uniappview.html","developer":{"name":"","email":"","url":""},"permissions":{"UniNView":{"description":"UniNView原生渲染"}},"plus":{"useragent":{"value":"uni-app","concatenate":true},"splashscreen":{"target":"id:1","autoclose":true,"waiting":true,"delay":0},"popGesture":"close","launchwebview":{"render":"always","id":"1","kernel":"WKWebview"},"statusbar":{"immersed":"supportedDevice","style":"dark","background":"#F8F8F8"},"usingComponents":true,"nvueStyleCompiler":"uni-app","compilerVersion":3,"distribute":{"google":{"permissions":["","","","","","","","","","","","","","",""],"abiFilters":["armeabi-v7a","arm64-v8a","x86"]},"apple":{"dSYMs":false},"plugins":{"ad":{},"audio":{"mp3":{"description":"Android平台录音支持MP3格式文件"}}}},"uniStatistics":{"enable":false},"arguments":"{\"name\":\"\",\"path\":\"\",\"query\":\"\",\"id\":0}","allowsInlineMediaPlayback":true,"uni-app":{"compilerVersion":"3.8.12","control":"uni-v3","nvueCompiler":"uni-app","renderer":"auto","nvue":{"flex-direction":"column"},"nvueLaunchMode":"normal"},"launch_path":"__uniappview.html"}} \ No newline at end of file