| 1 |
- {"remainingRequest":"E:\\item\\newItem\\admin\\node_modules\\babel-loader\\lib\\index.js!E:\\item\\newItem\\admin\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!E:\\item\\newItem\\admin\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!E:\\item\\newItem\\admin\\node_modules\\iview-loader\\index.js??ref--0-2!E:\\item\\newItem\\admin\\src\\pages\\kefu\\appChat\\index.vue?vue&type=script&lang=js&","dependencies":[{"path":"E:\\item\\newItem\\admin\\src\\pages\\kefu\\appChat\\index.vue","mtime":1678166868217},{"path":"E:\\item\\newItem\\admin\\babel.config.js","mtime":1677828270071},{"path":"E:\\item\\newItem\\admin\\.babelrc","mtime":1677828270070},{"path":"E:\\item\\newItem\\admin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"E:\\item\\newItem\\admin\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"E:\\item\\newItem\\admin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"E:\\item\\newItem\\admin\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000},{"path":"E:\\item\\newItem\\admin\\node_modules\\iview-loader\\index.js","mtime":1570440814000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF90b0NvbnN1bWFibGVBcnJheSBmcm9tICJFOi9pdGVtL25ld0l0ZW0vYWRtaW4vbm9kZV9tb2R1bGVzL0B2dWUvYmFiZWwtcHJlc2V0LWFwcC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9Db25zdW1hYmxlQXJyYXkuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QudG8tc3RyaW5nLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5mb3ItZWFjaC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5Lm1hcC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC5leGVjLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnJlcGxhY2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuc3BsaXQuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5jb25jYXQuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcudHJpbS5qcyI7Ci8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCmltcG9ydCAnZW1vamktYXdlc29tZS9kaXN0L2Nzcy9nb29nbGUubWluLmNzcyc7CmltcG9ydCBlbW9qaUxpc3QgZnJvbSAnQC91dGlscy9lbW9qaSc7CmltcG9ydCB7IFNvY2tldCB9IGZyb20gJ0AvbGlicy9zb2NrZXQnOwppbXBvcnQgU2V0dGluZyBmcm9tICdAL3NldHRpbmcnOwppbXBvcnQgQ29va2llcyBmcm9tICdqcy1jb29raWUnOwppbXBvcnQgeyBjaGF0TGlzdEFwaSwgc2VydmljZUxpc3RBcGksIGdldEFkdkFwaSwgc2VydmljZUxpc3QsIGdldE9yZGVyQXBpLCBwcm9kdWN0QXBpIH0gZnJvbSAnQC9hcGkva2VmdSc7CmltcG9ydCBmZWVkQmFjayBmcm9tICcuL2ZlZWRiYWNrJzsKCnZhciBjaHVuayA9IGZ1bmN0aW9uIGNodW5rKGFyciwgbnVtKSB7CiAgbnVtID0gbnVtICogMSB8fCAxOwogIHZhciByZXQgPSBbXTsKICBhcnIuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSwgaSkgewogICAgaWYgKGkgJSBudW0gPT09IDApIHsKICAgICAgcmV0LnB1c2goW10pOwogICAgfQoKICAgIHJldFtyZXQubGVuZ3RoIC0gMV0ucHVzaChpdGVtKTsKICB9KTsKICByZXR1cm4gcmV0Owp9OwoKZXhwb3J0IGRlZmF1bHQgewogIG5hbWU6ICdDaGF0Um9vbScsCiAgYXV0aDogZmFsc2UsCiAgY29tcG9uZW50czogewogICAgZmVlZEJhY2s6IGZlZWRCYWNrCiAgfSwKICBwcm9wczogewogICAgY2hhdE9wdGlvbnM6IHsKICAgICAgdHlwZTogT2JqZWN0LAogICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgc2hvdzogZmFsc2UKICAgICAgICB9OwogICAgICB9CiAgICB9CiAgfSwKICBkaXJlY3RpdmVzOiB7CiAgICBkcmFnOiB7CiAgICAgIGluc2VydGVkOiBmdW5jdGlvbiBpbnNlcnRlZChlbCkgewogICAgICAgIHZhciB4ID0gMDsKICAgICAgICB2YXIgeSA9IDA7CiAgICAgICAgdmFyIGwgPSAwOwogICAgICAgIHZhciB0ID0gMDsKICAgICAgICB2YXIgaXNEb3duID0gZmFsc2U7CgogICAgICAgIGVsLm9ubW91c2Vkb3duID0gZnVuY3Rpb24gKGUpIHsKICAgICAgICAgIHggPSBlLmNsaWVudFg7CiAgICAgICAgICB5ID0gZS5jbGllbnRZOwogICAgICAgICAgbCA9IGVsLnBhcmVudE5vZGUub2Zmc2V0TGVmdDsKICAgICAgICAgIHQgPSBlbC5wYXJlbnROb2RlLm9mZnNldFRvcDsKICAgICAgICAgIGlzRG93biA9IHRydWU7CiAgICAgICAgICBlbC5zdHlsZS5jdXJzb3IgPSAnbW92ZSc7CgogICAgICAgICAgd2luZG93Lm9ubW91c2Vtb3ZlID0gZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgaWYgKGlzRG93biA9PSBmYWxzZSkgewogICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIG54ID0gZS5jbGllbnRYOwogICAgICAgICAgICB2YXIgbnkgPSBlLmNsaWVudFk7CiAgICAgICAgICAgIHZhciBubCA9IG54IC0gKHggLSBsKTsKICAgICAgICAgICAgdmFyIG50ID0gbnkgLSAoeSAtIHQpOwogICAgICAgICAgICBlbC5wYXJlbnROb2RlLnN0eWxlLmxlZnQgPSBubCArICdweCc7CiAgICAgICAgICAgIGVsLnBhcmVudE5vZGUuc3R5bGUudG9wID0gbnQgKyAncHgnOwogICAgICAgICAgfTsKCiAgICAgICAgICB3aW5kb3cub25tb3VzZXVwID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICBpc0Rvd24gPSBmYWxzZTsKICAgICAgICAgICAgZWwuc3R5bGUuY3Vyc29yID0gJ2RlZmF1bHQnOwogICAgICAgICAgICB3aW5kb3cub25tb3VzZW1vdmUgPSBudWxsOwogICAgICAgICAgICB3aW5kb3cub25tb3VzZXVwID0gbnVsbDsKICAgICAgICAgIH07CgogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH07CiAgICAgIH0KICAgIH0KICB9LAogIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7CiAgICByZXR1cm4gewogICAgICBsb2NhdGlvbnM6ICIiLmNvbmNhdChsb2NhdGlvbi5vcmlnaW4pLAogICAgICBjaGFuZ2U6IGZhbHNlLAogICAgICBlbW9qaUdyb3VwOiBjaHVuayhlbW9qaUxpc3QsIDIwKSwKICAgICAgLy8g6KGo5oOF5YiX6KGoCiAgICAgIGVtb2ppTGlzdDogZW1vamlMaXN0LAogICAgICBlbW9qaVNob3c6IGZhbHNlLAogICAgICByZWNvcmRMaXN0OiBbXSwKICAgICAgbGltaXQ6IDIwLAogICAgICBsb2FkaW5nOiBmYWxzZSwKICAgICAgZmluaXNoZWQ6IGZhbHNlLAogICAgICBjaGF0Q29udDogJycsCiAgICAgIHNlcnZpY2U6IG51bGwsCiAgICAgIHNlcnZpY2VEYXRhOiB7fSwKICAgICAgdXBsb2FkQWN0aW9uOiAnJywKICAgICAgbm90aWNlOiAnJywKICAgICAgYXVkaW86IG51bGwsCiAgICAgIG11dGVkOiBmYWxzZSwKICAgICAgYXVkaW9TcmM6ICcnLAogICAgICB1cHBlcklkOiAwLAogICAgICB1cGxvYWREYXRhOiB7fSwKICAgICAgaXNfdG91cmlzdDogMSwKICAgICAgLy8gMOeZu+W9leeKtuaAge+8jDHmnKrnmbvlvZXnirbmgIHmuLjlrqIKICAgICAgdGV4dDogJycsCiAgICAgIGlzTG9hZDogZmFsc2UsCiAgICAgIHBhZ2U6IDEsCiAgICAgIHRvdXJpc3RfYXZhdGFyOiAnJywKICAgICAgLy/muLjlrqLlpLTlg48KICAgICAgdG91cmlzdF91aWQ6ICcnLAogICAgICAvL+a4uOWuomlkCiAgICAgIHRvVWlkOiAnJywKICAgICAgLy/lrqLmnI1pZAogICAgICBrdWZ1VG9rZW46ICcnIC8vIHRva2VuCgogICAgfTsKICB9LAogIHdhdGNoOiB7CiAgICBtdXRlZDogZnVuY3Rpb24gbXV0ZWQodmFsdWUpIHsKICAgICAgdGhpcy5hdWRpby5tdXRlZCA9IHZhbHVlOwogICAgfQogIH0sCiAgY29tcHV0ZWQ6IHsKICAgIHJlY29yZHM6IGZ1bmN0aW9uIHJlY29yZHMoKSB7CiAgICAgIHZhciBfdGhpcyA9IHRoaXM7CgogICAgICByZXR1cm4gdGhpcy5yZWNvcmRMaXN0Lm1hcChmdW5jdGlvbiAoaXRlbSwgaW5kZXgpIHsKICAgICAgICBpZiAoaW5kZXgpIHsKICAgICAgICAgIGlmIChuZXcgRGF0ZShpdGVtLmFkZF90aW1lKSAtIG5ldyBEYXRlKF90aGlzLnJlY29yZExpc3RbaW5kZXggLSAxXS5hZGRfdGltZSkgPj0gMzAwMDAwKSB7CiAgICAgICAgICAgIGl0ZW0uc2hvdyA9IHRydWU7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpdGVtLnNob3cgPSBmYWxzZTsKICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgaXRlbS5zaG93ID0gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gaXRlbTsKICAgICAgfSk7CiAgICB9CiAgfSwKICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkgewogICAgaWYgKGxvY2F0aW9uLmhyZWYuaW5kZXhPZigna2VmdScpICE9IC0xKSB0aGlzLnVwbG9hZEFjdGlvbiA9IFNldHRpbmcuYXBpQmFzZVVSTC5yZXBsYWNlKC9hZG1pbmFwaS8sICdrZWZ1YXBpJykgKyAnL3RvdXJpc3QvdXBsb2FkJzsKICAgIHZhciB0b2tlbiA9IENvb2tpZXMuZ2V0KCdhdXRoLl90b2tlbi5sb2NhbDEnKTsKICAgIHRoaXMua3VmdVRva2VuID0gdG9rZW4gPyB0b2tlbi5zcGxpdCgnQmVhcmVyICcpWzFdIDogJyc7CiAgfSwKICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkgewogICAgdmFyIF90aGlzMiA9IHRoaXM7CgogICAgdmFyIHRoYXQgPSB0aGlzOwogICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICB0aGF0LmVtb2ppU2hvdyA9IGZhbHNlOwogICAgfSk7CiAgICBpZiAodGhpcy4kd2VjaGF0Ll9pc01vYmlsZSgpKSB0aGlzLiRyb3V0ZXIucmVwbGFjZSgnL2tlZnUvbW9iaWxlX3VzZXJfY2hhdCcpOwogICAgdGhpcy5nZXROb3RpY2UoKTsKICAgIFNvY2tldC50aGVuKGZ1bmN0aW9uICh3cykgewogICAgICBpZiAoX3RoaXMyLmt1ZnVUb2tlbikgewogICAgICAgIHdzLnNlbmQoewogICAgICAgICAgdHlwZTogJ2xvZ2luJywKICAgICAgICAgIGRhdGE6IF90aGlzMi5rdWZ1VG9rZW4KICAgICAgICB9KTsKICAgICAgfQoKICAgICAgX3RoaXMyLmdldFNlcnZpY2UoKTsKCiAgICAgIHdzLiRvbihbJ3JlcGx5JywgJ2NoYXQnXSwgZnVuY3Rpb24gKGRhdGEpIHsKICAgICAgICBpZiAoZGF0YS5tc25fdHlwZSA9PSAxKSB7CiAgICAgICAgICBkYXRhLm1zbiA9IF90aGlzMi5yZXBsYWNlX2VtKGRhdGEubXNuKTsKICAgICAgICB9CgogICAgICAgIF90aGlzMi5yZWNvcmRMaXN0LnB1c2goZGF0YSk7CgogICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgX3RoaXMyLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHRoaXMuJHJlZnMucmVjb3JkLnNjcm9sbFRvcCA9IHRoaXMuJHJlZnMucmVjb3JkLnNjcm9sbEhlaWdodCAtIHRoaXMuJHJlZnMucmVjb3JkLmNsaWVudEhlaWdodDsKICAgICAgICAgIH0pOwogICAgICAgIH0sIDMwMCk7CiAgICAgIH0pOyAvLyDnm5HlkKzlrqLmnI3ovazmjqUKCiAgICAgIHdzLiRvbigndG9fdHJhbnNmZXInLCBmdW5jdGlvbiAoZGF0YSkgewogICAgICAgIF90aGlzMi50b1VpZCA9IGRhdGEudG9VaWQ7CiAgICAgICAgd3Muc2VuZCh7CiAgICAgICAgICBkYXRhOiB7CiAgICAgICAgICAgIGlkOiBfdGhpczIudG9VaWQKICAgICAgICAgIH0sCiAgICAgICAgICB0eXBlOiAndG9fY2hhdCcKICAgICAgICB9KTsKICAgICAgfSk7CiAgICAgIHdzLiRvbignc29ja2V0X2Vycm9yJywgZnVuY3Rpb24gKCkgewogICAgICAgIF90aGlzMi4kTWVzc2FnZS5lcnJvcign6L+e5o6l5aSx6LSlJyk7CiAgICAgIH0pOwogICAgICB3cy4kb24oJ2Vycl90aXAnLCBmdW5jdGlvbiAoZGF0YSkgewogICAgICAgIF90aGlzMi4kTWVzc2FnZS5lcnJvcihkYXRhLm1zZyk7CiAgICAgIH0pOwogICAgICB3cy4kb24oJ3N1Y2Nlc3MnLCBmdW5jdGlvbiAoZGF0YSkgewogICAgICAgIF90aGlzMi5pc190b3VyaXN0ID0gMDsKICAgICAgfSk7CiAgICB9KTsKICAgIHRoaXMudGV4dCA9IHRoaXMucmVwbGFjZV9lbSgnW2VtLXNtaWxpbmdfaW1wXScpOwogIH0sCiAgYmVmb3JlRGVzdHJveTogZnVuY3Rpb24gYmVmb3JlRGVzdHJveSgpIHsKICAgIHRoaXMuc29ja2V0LmNsb3NlKCk7CiAgfSwKICBtZXRob2RzOiB7CiAgICBvbkxvb2s6IGZ1bmN0aW9uIG9uTG9vayhpZCkgewogICAgICB3aW5kb3cub3BlbigiIi5jb25jYXQobG9jYXRpb24ub3JpZ2luLCAiL2hvbWUvZ29vZHNfZGV0YWlsLyIpLmNvbmNhdChpZCkpOwogICAgfSwKICAgIC8vIOWFs+mXrQogICAgY2xvc2VDaGFuZ2U6IGZ1bmN0aW9uIGNsb3NlQ2hhbmdlKG1zZykgewogICAgICB0aGlzLmNoYW5nZSA9IG1zZzsKICAgIH0sCiAgICAvLyDnu5/kuIDlj5HpgIHlpITnkIYKICAgIHNlbmRNc2c6IGZ1bmN0aW9uIHNlbmRNc2cobXNuLCB0eXBlKSB7CiAgICAgIHZhciBvYmogPSB7CiAgICAgICAgdHlwZTogJ2NoYXQnLAogICAgICAgIGRhdGE6IHsKICAgICAgICAgIG1zbjogbXNuLAogICAgICAgICAgdHlwZTogdHlwZSwKICAgICAgICAgIGlzX3RvdXJpc3Q6IHRoaXMuaXNfdG91cmlzdCwKICAgICAgICAgIHRvX3VpZDogdGhpcy50b1VpZCwKICAgICAgICAgIHRvdXJpc3RfdWlkOiB0aGlzLnRvdXJpc3RfdWlkLAogICAgICAgICAgdG91cmlzdF9hdmF0YXI6IHRoaXMudG91cmlzdF9hdmF0YXIsCiAgICAgICAgICBmb3JtX3R5cGU6IHRoaXMuJHdlY2hhdC5pc1dlaXhpbigpID8gMSA6IDMKICAgICAgICB9CiAgICAgIH07CiAgICAgIFNvY2tldC50aGVuKGZ1bmN0aW9uICh3cykgewogICAgICAgIHdzLnNlbmQob2JqKTsKICAgICAgfSk7CiAgICB9LAogICAgLy8g6ZqP5py65a6i5pyNCiAgICBnZXRTZXJ2aWNlOiBmdW5jdGlvbiBnZXRTZXJ2aWNlKCkgewogICAgICB2YXIgX3RoaXMzID0gdGhpczsKCiAgICAgIHNlcnZpY2VMaXN0QXBpKHsKICAgICAgICB0b2tlbjogdGhpcy5rdWZ1VG9rZW4gfHwgJycKICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgX3RoaXMzLnNlcnZpY2VEYXRhID0gcmVzLmRhdGE7CiAgICAgICAgX3RoaXMzLnVwcGVySWQgPSAwOwogICAgICAgIF90aGlzMy50b1VpZCA9IHJlcy5kYXRhLnVpZDsKICAgICAgICBfdGhpczMudG91cmlzdF91aWQgPSByZXMuZGF0YS50b3VyaXN0X3VpZDsKICAgICAgICBfdGhpczMudG91cmlzdF9hdmF0YXIgPSByZXMuZGF0YS50b3VyaXN0X2F2YXRhcjsKICAgICAgICB2YXIgb2JqID0gewogICAgICAgICAgZGF0YTogewogICAgICAgICAgICBpZDogcmVzLmRhdGEudWlkLAogICAgICAgICAgICB0b3VyaXN0X3VpZDogX3RoaXMzLnRvdXJpc3RfdWlkCiAgICAgICAgICB9LAogICAgICAgICAgdHlwZTogJ3RvX2NoYXQnCiAgICAgICAgfTsKICAgICAgICBTb2NrZXQudGhlbihmdW5jdGlvbiAod3MpIHsKICAgICAgICAgIHdzLnNlbmQob2JqKTsKICAgICAgICB9KTsKCiAgICAgICAgaWYgKF90aGlzMy5rdWZ1VG9rZW4pIHsKICAgICAgICAgIF90aGlzMy5nZXRSZWNvcmRMaXN0KCk7CiAgICAgICAgfQogICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyKSB7CiAgICAgICAgX3RoaXMzLiRNZXNzYWdlLmVycm9yKGVyci5tc2cpOwoKICAgICAgICBfdGhpczMuY2hhbmdlID0gdHJ1ZTsKICAgICAgfSk7CiAgICB9LAogICAgcm9vbUNsaWNrOiBmdW5jdGlvbiByb29tQ2xpY2soZXZlbnQpIHsvLyBpZiAoCiAgICAgIC8vICAgICAhZXZlbnQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygiZW1vamktcGFuZWwiKSAmJgogICAgICAvLyAgICAgIWV2ZW50LnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoImVtb2ppLWJ0biIpICYmCiAgICAgIC8vICAgICAhZXZlbnQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygiaWNvbi1iaWFvcWluZyIpICYmCiAgICAgIC8vICAgICB0aGlzLmVtb2ppU2hvdwogICAgICAvLyApIHsKICAgICAgLy8gICAgIHRoaXMuZW1vamlTaG93ID0gZmFsc2U7CiAgICAgIC8vIH0KICAgIH0sCiAgICAvLyBlbnRlciDlj5HpgIEKICAgIGN0cmxFbnRlcjogZnVuY3Rpb24gY3RybEVudGVyKGUpIHsKICAgICAgaWYgKGUua2V5Q29kZSA9PSAxMykgewogICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgfQoKICAgICAgaWYgKHRoaXMuY2hhdENvbnQudHJpbSgpKSB7CiAgICAgICAgdGhpcy5zZW5kTWVzc2FnZSgpOwogICAgICB9CiAgICB9LAogICAgLy8g5YWz6Zet6IGK5aSp56qX5Y+jCiAgICBjbG9zZTogZnVuY3Rpb24gY2xvc2UoKSB7CiAgICAgIHRoaXMuJGVtaXQoJ2NoYXQtY2xvc2UnKTsKICAgIH0sCiAgICAvLyDpgInmi6nooajmg4UKICAgIHNlbGVjdEVtb2ppOiBmdW5jdGlvbiBzZWxlY3RFbW9qaShkYXRhKSB7CiAgICAgIHZhciB2YWwgPSAiWyIuY29uY2F0KGRhdGEsICJdIik7CiAgICAgIHRoaXMuY2hhdENvbnQgKz0gdmFsOwogICAgICB0aGlzLmVtb2ppU2hvdyA9IGZhbHNlOwogICAgfSwKICAgIC8vIOiBiuWkqeihqOaDhei9rOaNogogICAgcmVwbGFjZV9lbTogZnVuY3Rpb24gcmVwbGFjZV9lbShzdHIpIHsKICAgICAgc3RyID0gc3RyLnJlcGxhY2UoL1xbZW0tKFtcc1xTXSopXF0vZywgIjxzcGFuIGNsYXNzPSdlbSBlbS0kMScvPjwvc3Bhbj4iKTsKICAgICAgcmV0dXJuIHN0cjsKICAgIH0sCiAgICBvblNjcm9sbDogZnVuY3Rpb24gb25TY3JvbGwoZXZlbnQpIHsKICAgICAgaWYgKGV2ZW50LnRhcmdldC5zY3JvbGxUb3AgPD0gMzApIHsKICAgICAgICBpZiAodGhpcy5rdWZ1VG9rZW4pIHsKICAgICAgICAgIHRoaXMuZ2V0UmVjb3JkTGlzdCgpOwogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgIC8vIOiBiuWkqeiusOW9lQogICAgZ2V0UmVjb3JkTGlzdDogZnVuY3Rpb24gZ2V0UmVjb3JkTGlzdCgpIHsKICAgICAgdmFyIF90aGlzNCA9IHRoaXM7CgogICAgICBpZiAodGhpcy5sb2FkaW5nKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICBpZiAodGhpcy5maW5pc2hlZCkgewogICAgICAgIHJldHVybjsKICAgICAgfQoKICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTsKICAgICAgY2hhdExpc3RBcGkoewogICAgICAgIHVpZDogdGhpcy5zZXJ2aWNlRGF0YS51aWQsCiAgICAgICAgbGltaXQ6IHRoaXMubGltaXQsCiAgICAgICAgdXBwZXJJZDogdGhpcy51cHBlcklkLAogICAgICAgIHRva2VuOiB0aGlzLmt1ZnVUb2tlbgogICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICBpZiAocmVzLmRhdGEubGVuZ3RoID09PSAwKSByZXR1cm4gX3RoaXM0LmxvYWRpbmcgPSBmYWxzZTsKICAgICAgICByZXMuZGF0YS5mb3JFYWNoKGZ1bmN0aW9uIChlbCkgewogICAgICAgICAgaWYgKGVsLm1zbl90eXBlID09IDEpIHsKICAgICAgICAgICAgZWwubXNuID0gX3RoaXM0LnJlcGxhY2VfZW0oZWwubXNuKTsKICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgICB2YXIgc2VsZWN0b3IgPSAnJzsKCiAgICAgICAgaWYgKF90aGlzNC51cHBlcklkID09IDApIHsKICAgICAgICAgIHNlbGVjdG9yID0gImNoYXRfIi5jb25jYXQocmVzLmRhdGFbcmVzLmRhdGEubGVuZ3RoIC0gMV0uaWQpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBzZWxlY3RvciA9ICJjaGF0XyIuY29uY2F0KF90aGlzNC5yZWNvcmRMaXN0WzBdLmlkKTsKICAgICAgICB9CgogICAgICAgIF90aGlzNC5yZWNvcmRMaXN0ID0gW10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShyZXMuZGF0YSksIF90b0NvbnN1bWFibGVBcnJheShfdGhpczQucmVjb3JkTGlzdCkpOwogICAgICAgIF90aGlzNC51cHBlcklkID0gcmVzLmRhdGEubGVuZ3RoID4gMCA/IHJlcy5kYXRhWzBdLmlkIDogMDsKICAgICAgICBfdGhpczQubG9hZGluZyA9IGZhbHNlOwogICAgICAgIF90aGlzNC5maW5pc2hlZCA9IHJlcy5kYXRhLmxlbmd0aCA8IF90aGlzNC5saW1pdDsKCiAgICAgICAgX3RoaXM0LiRuZXh0VGljayhmdW5jdGlvbiAoKSB7CiAgICAgICAgICB0aGlzLnNldFBhZ2VTY3JvbGxUbyhzZWxlY3Rvcik7CiAgICAgICAgfSk7CiAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHsKICAgICAgICBfdGhpczQuJE1lc3NhZ2UuZXJyb3IoZXJyLm1zZyk7CgogICAgICAgIF90aGlzNC5sb2FkaW5nID0gZmFsc2U7CiAgICAgIH0pOwogICAgfSwKICAgIC8vIOiuvue9rumhtemdoua7muWKqOS9jee9rgogICAgc2V0UGFnZVNjcm9sbFRvOiBmdW5jdGlvbiBzZXRQYWdlU2Nyb2xsVG8oc2VsZWN0b3IpIHsKICAgICAgdmFyIF90aGlzNSA9IHRoaXM7CgogICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7CiAgICAgICAgaWYgKHNlbGVjdG9yKSB7CiAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdmFyIG51bSA9IHBhcnNlRmxvYXQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc2VsZWN0b3IpLm9mZnNldFRvcCkgLSA2MDsKICAgICAgICAgICAgX3RoaXM1LiRyZWZzLnJlY29yZC5zY3JvbGxUb3AgPSBudW07CiAgICAgICAgICB9LCAwKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNjaGF0X3Njcm9sbCcpOwogICAgICAgICAgX3RoaXM1LiRyZWZzLnJlY29yZC5zY3JvbGxUb3AgPSBjb250YWluZXIub2Zmc2V0SGVpZ2h0OwogICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgICAgIGlmIChfdGhpczUuJHJlZnMucmVjb3JkLnNjcm9sbFRvcCAhPSBfdGhpczUuJHJlZnMuc2Nyb2xsQm94Lm9mZnNldEhlaWdodCkgewogICAgICAgICAgICAgIF90aGlzNS4kcmVmcy5yZWNvcmQuc2Nyb2xsVG9wID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2NoYXRfc2Nyb2xsJykub2Zmc2V0SGVpZ2h0OwogICAgICAgICAgICB9CiAgICAgICAgICB9LCAzMDApOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9LAogICAgLy8g6KGo5oOF5YyF5pi+56S66ZqQ6JePCiAgICBlbW9qaVN3aXRjaDogZnVuY3Rpb24gZW1vamlTd2l0Y2goKSB7CiAgICAgIHRoaXMuZW1vamlTaG93ID0gIXRoaXMuZW1vamlTaG93OwogICAgfSwKICAgIC8vIOWPkemAgea2iOaBrwogICAgc2VuZE1lc3NhZ2U6IGZ1bmN0aW9uIHNlbmRNZXNzYWdlKCkgewogICAgICB0aGlzLnNlbmRNc2codGhpcy5jaGF0Q29udCwgMSk7CiAgICAgIHRoaXMuY2hhdENvbnQgPSAnJzsKICAgIH0sCiAgICBjaGF0OiBmdW5jdGlvbiBjaGF0KGRhdGEpIHsKICAgICAgdmFyIF90aGlzNiA9IHRoaXM7CgogICAgICBpZiAoZGF0YS51aWQgIT0gdGhpcy4kYXV0aC51c2VyLnVpZCAmJiB0aGlzLmF1ZGlvKSB7CiAgICAgICAgdGhpcy5hdWRpby5wbGF5KCk7CiAgICAgIH0KCiAgICAgIHRoaXMucmVjb3JkTGlzdC5wdXNoKGRhdGEpOwogICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7CiAgICAgICAgX3RoaXM2LiRyZWZzLnJlY29yZC5zY3JvbGxUb3AgPSBfdGhpczYuJHJlZnMucmVjb3JkLnNjcm9sbEhlaWdodCAtIF90aGlzNi4kcmVmcy5yZWNvcmQuY2xpZW50SGVpZ2h0OwogICAgICB9KTsKICAgIH0sCiAgICBzZW5kR29vZHM6IGZ1bmN0aW9uIHNlbmRHb29kcygpIHsKICAgICAgdmFyIF90aGlzNyA9IHRoaXM7CgogICAgICBpZiAodGhpcy5jaGF0T3B0aW9ucy5nb29kc0lkKSB7CiAgICAgICAgU29ja2V0LnRoZW4oZnVuY3Rpb24gKHdzKSB7CiAgICAgICAgICB3cy5zZW5kKHsKICAgICAgICAgICAgZGF0YTogewogICAgICAgICAgICAgIG1zbjogX3RoaXM3LmNoYXRPcHRpb25zLmdvb2RzSWQsCiAgICAgICAgICAgICAgdHlwZTogNSwKICAgICAgICAgICAgICB0b191aWQ6IF90aGlzNy50b1VpZAogICAgICAgICAgICB9LAogICAgICAgICAgICB0eXBlOiAndG9fY2hhdCcKICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgICB9CiAgICB9LAogICAgc2VuZE9yZGVyOiBmdW5jdGlvbiBzZW5kT3JkZXIoKSB7CiAgICAgIHZhciBfdGhpczggPSB0aGlzOwoKICAgICAgaWYgKHRoaXMuY2hhdE9wdGlvbnMub3JkZXJJZCkgewogICAgICAgIFNvY2tldC50aGVuKGZ1bmN0aW9uICh3cykgewogICAgICAgICAgd3Muc2VuZCh7CiAgICAgICAgICAgIGRhdGE6IHsKICAgICAgICAgICAgICBtc246IF90aGlzOC5jaGF0T3B0aW9ucy5vcmRlcklkLAogICAgICAgICAgICAgIHR5cGU6IDYsCiAgICAgICAgICAgICAgdG9fdWlkOiBfdGhpczgudG9VaWQKICAgICAgICAgICAgfSwKICAgICAgICAgICAgdHlwZTogJ3RvX2NoYXQnCiAgICAgICAgICB9KTsKICAgICAgICB9KTsKICAgICAgfQogICAgfSwKICAgIGNoYXRFbmQ6IGZ1bmN0aW9uIGNoYXRFbmQoKSB7CiAgICAgIGlmIChuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ01TSUUnKSA+IDApIHsKICAgICAgICBpZiAobmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdNU0lFIDYuMCcpID4gMCkgewogICAgICAgICAgd2luZG93Lm9wZW5lciA9IG51bGw7CiAgICAgICAgICB3aW5kb3cuY2xvc2UoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgd2luZG93Lm9wZW4oJycsICdfdG9wJyk7CiAgICAgICAgICB3aW5kb3cudG9wLmNsb3NlKCk7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignRmlyZWZveCcpID4gMCkgewogICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJ2Fib3V0OmJsYW5rICc7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgd2luZG93Lm9wZW5lciA9IG51bGw7CiAgICAgICAgd2luZG93Lm9wZW4oJycsICdfc2VsZicsICcnKTsKICAgICAgICB3aW5kb3cuY2xvc2UoKTsKICAgICAgfQogICAgfSwKICAgIC8vIOW5v+WRigogICAgZ2V0Tm90aWNlOiBmdW5jdGlvbiBnZXROb3RpY2UoKSB7CiAgICAgIHZhciBfdGhpczkgPSB0aGlzOwoKICAgICAgZ2V0QWR2QXBpKCkudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgX3RoaXM5Lm5vdGljZSA9IHJlcy5kYXRhLmNvbnRlbnQ7CiAgICAgIH0pOwogICAgfSwKICAgIGJlZm9yZVVwbG9hZDogZnVuY3Rpb24gYmVmb3JlVXBsb2FkKGZpbGUpIHsKICAgICAgdmFyIF90aGlzMTAgPSB0aGlzOwoKICAgICAgdGhpcy51cGxvYWREYXRhID0gewogICAgICAgIGZpbGVuYW1lOiBmaWxlLAogICAgICAgIHRva2VuOiB0aGlzLmt1ZnVUb2tlbgogICAgICB9OwogICAgICB2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7CiAgICAgICAgX3RoaXMxMC4kbmV4dFRpY2soZnVuY3Rpb24gKCkgewogICAgICAgICAgcmVzb2x2ZSh0cnVlKTsKICAgICAgICB9KTsKICAgICAgfSk7CiAgICAgIHJldHVybiBwcm9taXNlOwogICAgfSwKICAgIGhhbmRsZUZvcm1hdEVycm9yOiBmdW5jdGlvbiBoYW5kbGVGb3JtYXRFcnJvcihmaWxlKSB7CiAgICAgIHRoaXMuJE1lc3NhZ2UuZXJyb3IoJ+S4iuS8oOWbvueJh+WPquiDveaYryBqcGfjgIFqcGfjgIFqcGVn44CBZ2lmIOagvOW8jyEnKTsKICAgIH0sCiAgICB1cGxvYWRTdWNjZXNzOiBmdW5jdGlvbiB1cGxvYWRTdWNjZXNzKHJlcykgewogICAgICB0aGlzLnNlbmRNc2cocmVzLmRhdGEudXJsLCAzKTsKICAgIH0sCiAgICB1cGxvYWRFcnJvcjogZnVuY3Rpb24gdXBsb2FkRXJyb3IoZXJyb3IpIHsKICAgICAgdGhpcy4kTWVzc2FnZS5lcnJvcihlcnJvcik7CiAgICB9CiAgfQp9Ow=="},{"version":3,"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkJA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;EACAA;EACA;EACAC;IACA;MACAC;IACA;;IACAA;EACA,CALA;EAMA;AACA,CAVA;;AAWA;EACAC,gBADA;EAEAC,WAFA;EAGAC;IACAC;EADA,CAHA;EAMAC;IACAC;MACAC,YADA;MAEAC;QACA;UACAC;QADA;MAGA;IANA;EADA,CANA;EAgBAC;IACAC;MACAC;QACA;QACA;QACA;QACA;QACA;;QACAC;UACAC;UACAC;UACAC;UACAC;UACAC;UACAL;;UACAM;YACA;cACA;YACA;;YACA;YACA;YACA;YACA;YACAN;YACAA;UACA,CAVA;;UAWAM;YACAD;YACAL;YACAM;YACAA;UACA,CALA;;UAMA;QACA,CAzBA;MA0BA;IAjCA;EADA,CAhBA;EAqDAC,IArDA,kBAqDA;IACA;MACAC,qCADA;MAEAC,aAFA;MAGAC,gCAHA;MAGA;MACAC,oBAJA;MAKAC,gBALA;MAMAC,cANA;MAOAC,SAPA;MAQAC,cARA;MASAC,eATA;MAUAC,YAVA;MAWAC,aAXA;MAYAC,eAZA;MAaAC,gBAbA;MAcAC,UAdA;MAeAC,WAfA;MAgBAC,YAhBA;MAiBAC,YAjBA;MAkBAC,UAlBA;MAmBAC,cAnBA;MAoBAC,aApBA;MAoBA;MACAC,QArBA;MAsBAC,aAtBA;MAuBAC,OAvBA;MAwBAC,kBAxBA;MAwBA;MACAC,eAzBA;MAyBA;MACAC,SA1BA;MA0BA;MACAC,aA3BA,CA2BA;;IA3BA;EA6BA,CAnFA;EAoFAC;IACAZ,KADA,iBACAa,KADA,EACA;MACA;IACA;EAHA,CApFA;EAyFAC;IACAC,OADA,qBACA;MAAA;;MACA;QACA;UACA;YACAC;UACA,CAFA,MAEA;YACAA;UACA;QACA,CANA,MAMA;UACAA;QACA;;QACA;MACA,CAXA;IAYA;EAdA,CAzFA;EAyGAC,OAzGA,qBAyGA;IACA,yCACA;IACA;IACA;EACA,CA9GA;EA+GAC,OA/GA,qBA+GA;IAAA;;IACA;IACAnC;MACAoC;IACA,CAFA;IAGA;IACA;IACAC;MACA;QACAC;UACAlD,aADA;UAEAa;QAFA;MAIA;;MACA;;MACAqC;QACA;UACArC;QACA;;QACA;;QACAsC;UACA;YACA;UACA,CAFA;QAGA,CAJA,EAIA,GAJA;MAKA,CAVA,EARA,CAmBA;;MACAD;QACA;QACAA;UACArC;YACAuC;UADA,CADA;UAIApD;QAJA;MAMA,CARA;MASAkD;QACA;MACA,CAFA;MAGAA;QACA;MACA,CAFA;MAGAA;QACA;MACA,CAFA;IAGA,CAtCA;IAuCA;EACA,CA9JA;EA+JAG,aA/JA,2BA+JA;IACA;EACA,CAjKA;EAkKAC;IACAC,MADA,kBACAH,EADA,EACA;MACAxC;IACA,CAHA;IAIA;IACA4C,WALA,uBAKAC,GALA,EAKA;MACA;IACA,CAPA;IAQA;IACAC,OATA,mBASAC,GATA,EASA3D,IATA,EASA;MACA;QACAA,YADA;QAEAa;UACA8C,QADA;UAEA3D,UAFA;UAGAiC,2BAHA;UAIA2B,kBAJA;UAKAtB,6BALA;UAMAD,mCANA;UAOAwB;QAPA;MAFA;MAYAZ;QACAC;MACA,CAFA;IAGA,CAzBA;IA0BA;IACAY,UA3BA,wBA2BA;MAAA;;MACAC;QAAAC;MAAA,GACAC,IADA,CACA;QACA;QACA;QACA;QACA;QACA;QACA;UACApD;YACAuC,gBADA;YAEAd;UAFA,CADA;UAKAtC;QALA;QAOAiD;UACAC;QACA,CAFA;;QAGA;UACA;QACA;MACA,CApBA,EAqBAgB,KArBA,CAqBA;QACA;;QACA;MACA,CAxBA;IAyBA,CArDA;IAsDAC,SAtDA,qBAsDAC,KAtDA,EAsDA,CACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;IACA,CA/DA;IAgEA;IACAC,SAjEA,qBAiEAC,CAjEA,EAiEA;MACA;QACAA;MACA;;MACA;QACA;MACA;IACA,CAxEA;IAyEA;IACAC,KA1EA,mBA0EA;MACA;IACA,CA5EA;IA6EA;IACAC,WA9EA,uBA8EA3D,IA9EA,EA8EA;MACA;MACA;MACA;IACA,CAlFA;IAmFA;IACA4D,UApFA,sBAoFAC,GApFA,EAoFA;MACAA;MACA;IACA,CAvFA;IAwFAC,QAxFA,oBAwFAP,KAxFA,EAwFA;MACA;QACA;UACA;QACA;MACA;IACA,CA9FA;IA+FA;IACAQ,aAhGA,2BAgGA;MAAA;;MACA;QACA;MACA;;MACA;QACA;MACA;;MACA;MACAC;QACAC,yBADA;QAEA1D,iBAFA;QAGAW,qBAHA;QAIAiC;MAJA,GAMAC,IANA,CAMA;QACA;QACAc;UACA;YACAzE;UACA;QACA,CAJA;QAKA;;QACA;UACA0E;QACA,CAFA,MAEA;UACAA;QACA;;QACA;QACA;QACA;QACA;;QACA;UACA;QACA,CAFA;MAGA,CA1BA,EA2BAd,KA3BA,CA2BA;QACA;;QACA;MACA,CA9BA;IA+BA,CAvIA;IAwIA;IACAe,eAzIA,2BAyIAD,QAzIA,EAyIA;MAAA;;MACA;QACA;UACA7B;YACA;YACA;UACA,CAHA,EAGA,CAHA;QAIA,CALA,MAKA;UACA;UACA;UACAA;YACA;cACA;YACA;UACA,CAJA,EAIA,GAJA;QAKA;MACA,CAfA;IAgBA,CA1JA;IA2JA;IACA+B,WA5JA,yBA4JA;MACA;IACA,CA9JA;IA+JA;IACAC,WAhKA,yBAgKA;MACA;MACA;IACA,CAnKA;IAoKAC,IApKA,gBAoKAvE,IApKA,EAoKA;MAAA;;MACA;QACA;MACA;;MACA;MACA;QACA;MACA,CAFA;IAGA,CA5KA;IA6KAwE,SA7KA,uBA6KA;MAAA;;MACA;QACApC;UACAC;YACArC;cACA8C,+BADA;cAEA3D,OAFA;cAGA4D;YAHA,CADA;YAMA5D;UANA;QAQA,CATA;MAUA;IACA,CA1LA;IA2LAsF,SA3LA,uBA2LA;MAAA;;MACA;QACArC;UACAC;YACArC;cACA8C,+BADA;cAEA3D,OAFA;cAGA4D;YAHA,CADA;YAMA5D;UANA;QAQA,CATA;MAUA;IACA,CAxMA;IAyMAuF,OAzMA,qBAyMA;MACA;QACA;UACA3E;UACAA;QACA,CAHA,MAGA;UACAA;UACAA;QACA;MACA,CARA,MAQA;QACAA;MACA,CAFA,MAEA;QACAA;QACAA;QACAA;MACA;IACA,CAzNA;IA0NA;IACA4E,SA3NA,uBA2NA;MAAA;;MACAC;QACA;MACA,CAFA;IAGA,CA/NA;IAgOAC,YAhOA,wBAgOAC,IAhOA,EAgOA;MAAA;;MACA;QACAC,cADA;QAEA5B;MAFA;MAIA;QACA;UACA6B;QACA,CAFA;MAGA,CAJA;MAKA;IACA,CA3OA;IA4OAC,iBA5OA,6BA4OAH,IA5OA,EA4OA;MACA;IACA,CA9OA;IA+OAI,aA/OA,yBA+OAhB,GA/OA,EA+OA;MACA;IACA,CAjPA;IAkPAiB,WAlPA,uBAkPAC,KAlPA,EAkPA;MACA;IACA;EApPA;AAlKA","names":["num","arr","ret","name","auth","components","feedBack","props","chatOptions","type","default","show","directives","drag","inserted","el","x","y","l","t","isDown","window","data","locations","change","emojiGroup","emojiList","emojiShow","recordList","limit","loading","finished","chatCont","service","serviceData","uploadAction","notice","audio","muted","audioSrc","upperId","uploadData","is_tourist","text","isLoad","page","tourist_avatar","tourist_uid","toUid","kufuToken","watch","value","computed","records","item","created","mounted","that","Socket","ws","setTimeout","id","beforeDestroy","methods","onLook","closeChange","msg","sendMsg","msn","to_uid","form_type","getService","serviceListApi","token","then","catch","roomClick","event","ctrlEnter","e","close","selectEmoji","replace_em","str","onScroll","getRecordList","chatListApi","uid","res","selector","setPageScrollTo","emojiSwitch","sendMessage","chat","sendGoods","sendOrder","chatEnd","getNotice","getAdvApi","beforeUpload","file","filename","resolve","handleFormatError","uploadSuccess","uploadError","error"],"sourceRoot":"src/pages/kefu/appChat","sources":["index.vue"],"sourcesContent":["<template>\r\n <div class=\"chat-room\">\r\n <div class=\"room\" :class=\"{ win: !chatOptions.popup }\" @click=\"roomClick\">\r\n <div v-drag class=\"head\">\r\n <div class=\"image\">\r\n <img v-lazy=\"serviceData && serviceData.avatar\" />\r\n </div>\r\n <div class=\"name\">{{ serviceData && serviceData.nickname }}</div>\r\n <div\r\n :class=\"['iconfont', muted ? 'icon-shengyinjingyinxianxing' : 'icon-shengyinyinliang']\"\r\n @click.stop=\"muted = !muted\"\r\n ></div>\r\n <div class=\"iconfont icon-guanbi5\" @click.stop=\"close\"></div>\r\n </div>\r\n <div class=\"main\">\r\n <div class=\"chat\">\r\n <div class=\"record\" @scroll=\"onScroll\" ref=\"record\">\r\n <div id=\"chat_scroll\" ref=\"scrollBox\">\r\n <Spin v-show=\"loading\">\r\n <Icon type=\"ios-loading\" size=\"18\" class=\"demo-spin-icon-load\"></Icon>\r\n <div>Loading</div>\r\n </Spin>\r\n <ul>\r\n <template v-for=\"item in records\">\r\n <li :key=\"item.id\" :class=\"{ right: item.uid === serviceData.tourist_uid }\" :id=\"`chat_${item.id}`\">\r\n <div v-if=\"item.show\" class=\"time-tag\">\r\n {{ item.add_time }}\r\n </div>\r\n <div class=\"avatar\">\r\n <img v-lazy=\"item.avatar\" />\r\n </div>\r\n <div class=\"content\" ref=\"chatContent\">\r\n <div v-if=\"item.msn_type === 1\" class=\"text\" v-html=\"item.msn\"></div>\r\n <div v-if=\"item.msn_type === 2\" class=\"image\">\r\n <div class=\"text\">\r\n <i :class=\"`em ${item.msn}`\"></i>\r\n </div>\r\n </div>\r\n <div v-if=\"item.msn_type === 3\" class=\"image\" v-viewer>\r\n <img v-lazy=\"item.msn\" />\r\n </div>\r\n <div v-if=\"item.msn_type === 5\" class=\"goods\">\r\n <div class=\"thumb\">\r\n <img v-lazy=\"item.productInfo.image\" />\r\n </div>\r\n <div class=\"intro\">\r\n <div class=\"name\">\r\n {{ item.productInfo.store_name }}\r\n </div>\r\n <div class=\"attr\">\r\n <span>库存:{{ item.productInfo.stock }}</span>\r\n <span>销量:{{ item.productInfo.sales }}</span>\r\n </div>\r\n <div class=\"group\">\r\n <div class=\"money\">¥{{ item.productInfo.price }}</div>\r\n <span style=\"cursor: pointer\" @click.stop=\"onLook(item.productInfo.id)\">查看商品 ></span>\r\n </div>\r\n </div>\r\n </div>\r\n <template v-if=\"item.msn_type === 6\">\r\n <div v-for=\"itm in item.orderInfo.cartInfo\" :key=\"itm.id\" class=\"order\">\r\n <div class=\"thumb\">\r\n <img :src=\"itm.productInfo.image\" />\r\n </div>\r\n <div class=\"intro\">\r\n <div class=\"name\">订单ID:{{ item.orderInfo.order_id }}</div>\r\n <div class=\"attr\">商品数量:{{ itm.cart_num }}</div>\r\n <div class=\"group\">\r\n <div class=\"money\">¥{{ itm.productInfo.price }}</div>\r\n <nuxt-link\r\n target=\"_blank\"\r\n :to=\"{\r\n path: '/order_detail',\r\n query: { orderId: item.orderInfo.order_id },\r\n }\"\r\n >查看订单 ></nuxt-link\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n </template>\r\n </div>\r\n </li>\r\n </template>\r\n </ul>\r\n </div>\r\n </div>\r\n <div class=\"editor\">\r\n <div class=\"editor-hd\">\r\n <div>\r\n <button class=\"emoji-btn\" title=\"表情\" @click.stop=\"emojiSwitch\">\r\n <span class=\"iconfont iconbiaoqing1\"></span>\r\n </button>\r\n <button title=\"图片\" v-if=\"kufuToken\">\r\n <Upload\r\n :show-upload-list=\"false\"\r\n :action=\"uploadAction\"\r\n :before-upload=\"beforeUpload\"\r\n :format=\"['jpg', 'jpeg', 'png', 'gif']\"\r\n :on-format-error=\"handleFormatError\"\r\n :data=\"uploadData\"\r\n :on-success=\"uploadSuccess\"\r\n :on-error=\"uploadError\"\r\n >\r\n <span class=\"iconfont icontupian1\"></span>\r\n </Upload>\r\n </button>\r\n </div>\r\n <!-- <div>-->\r\n <!-- <button class=\"end\" @click=\"chatEnd\">-->\r\n <!-- <i class=\"iconfont icon-guanji\"></i>结束-->\r\n <!-- </button>-->\r\n <!-- </div>-->\r\n <!-- 表情 -->\r\n <div class=\"emoji-panel\" v-if=\"emojiShow\">\r\n <i\r\n class=\"em\"\r\n :class=\"emoji\"\r\n @click.stop=\"selectEmoji(emoji)\"\r\n v-for=\"(emoji, index) in emojiList\"\r\n :key=\"index\"\r\n ></i>\r\n </div>\r\n </div>\r\n <div class=\"editor-bd\">\r\n <textarea v-model=\"chatCont\" placeholder=\"请输入文字内容\" @keydown.enter=\"ctrlEnter\"></textarea>\r\n </div>\r\n <div class=\"editor-ft\">\r\n <button :disabled=\"!chatCont\" @click.stop=\"sendMessage\">发送</button>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div class=\"notice\">\r\n <div v-if=\"notice\" class=\"rich\" v-html=\"notice\"></div>\r\n <div class=\"copy\">\r\n <a href=\"http://www.crmeb.com/\" target=\"_blank\">CRMEB提供技术支持</a>\r\n </div>\r\n </div> -->\r\n </div>\r\n <audio ref=\"audio\" :src=\"audioSrc\"></audio>\r\n </div>\r\n <feed-back @closeChange=\"closeChange($event)\" v-if=\"change\" :change=\"change\"></feed-back>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport 'emoji-awesome/dist/css/google.min.css';\r\nimport emojiList from '@/utils/emoji';\r\nimport { Socket } from '@/libs/socket';\r\nimport Setting from '@/setting';\r\nimport Cookies from 'js-cookie';\r\nimport { chatListApi, serviceListApi, getAdvApi, serviceList, getOrderApi, productApi } from '@/api/kefu';\r\nimport feedBack from './feedback';\r\nconst chunk = function (arr, num) {\r\n num = num * 1 || 1;\r\n var ret = [];\r\n arr.forEach(function (item, i) {\r\n if (i % num === 0) {\r\n ret.push([]);\r\n }\r\n ret[ret.length - 1].push(item);\r\n });\r\n return ret;\r\n};\r\nexport default {\r\n name: 'ChatRoom',\r\n auth: false,\r\n components: {\r\n feedBack,\r\n },\r\n props: {\r\n chatOptions: {\r\n type: Object,\r\n default: function () {\r\n return {\r\n show: false,\r\n };\r\n },\r\n },\r\n },\r\n directives: {\r\n drag: {\r\n inserted: function (el) {\r\n let x = 0;\r\n let y = 0;\r\n let l = 0;\r\n let t = 0;\r\n let isDown = false;\r\n el.onmousedown = function (e) {\r\n x = e.clientX;\r\n y = e.clientY;\r\n l = el.parentNode.offsetLeft;\r\n t = el.parentNode.offsetTop;\r\n isDown = true;\r\n el.style.cursor = 'move';\r\n window.onmousemove = function (e) {\r\n if (isDown == false) {\r\n return;\r\n }\r\n let nx = e.clientX;\r\n let ny = e.clientY;\r\n let nl = nx - (x - l);\r\n let nt = ny - (y - t);\r\n el.parentNode.style.left = nl + 'px';\r\n el.parentNode.style.top = nt + 'px';\r\n };\r\n window.onmouseup = function () {\r\n isDown = false;\r\n el.style.cursor = 'default';\r\n window.onmousemove = null;\r\n window.onmouseup = null;\r\n };\r\n return false;\r\n };\r\n },\r\n },\r\n },\r\n data() {\r\n return {\r\n locations: `${location.origin}`,\r\n change: false,\r\n emojiGroup: chunk(emojiList, 20), // 表情列表\r\n emojiList: emojiList,\r\n emojiShow: false,\r\n recordList: [],\r\n limit: 20,\r\n loading: false,\r\n finished: false,\r\n chatCont: '',\r\n service: null,\r\n serviceData: {},\r\n uploadAction: '',\r\n notice: '',\r\n audio: null,\r\n muted: false,\r\n audioSrc: '',\r\n upperId: 0,\r\n uploadData: {},\r\n is_tourist: 1, // 0登录状态,1未登录状态游客\r\n text: '',\r\n isLoad: false,\r\n page: 1,\r\n tourist_avatar: '', //游客头像\r\n tourist_uid: '', //游客id\r\n toUid: '', //客服id\r\n kufuToken: '', // token\r\n };\r\n },\r\n watch: {\r\n muted(value) {\r\n this.audio.muted = value;\r\n },\r\n },\r\n computed: {\r\n records() {\r\n return this.recordList.map((item, index) => {\r\n if (index) {\r\n if (new Date(item.add_time) - new Date(this.recordList[index - 1].add_time) >= 300000) {\r\n item.show = true;\r\n } else {\r\n item.show = false;\r\n }\r\n } else {\r\n item.show = false;\r\n }\r\n return item;\r\n });\r\n },\r\n },\r\n created() {\r\n if (location.href.indexOf('kefu') != -1)\r\n this.uploadAction = Setting.apiBaseURL.replace(/adminapi/, 'kefuapi') + '/tourist/upload';\r\n let token = Cookies.get('auth._token.local1');\r\n this.kufuToken = token ? token.split('Bearer ')[1] : '';\r\n },\r\n mounted() {\r\n let that = this;\r\n window.addEventListener('click', function () {\r\n that.emojiShow = false;\r\n });\r\n if (this.$wechat._isMobile()) this.$router.replace('/kefu/mobile_user_chat');\r\n this.getNotice();\r\n Socket.then((ws) => {\r\n if (this.kufuToken) {\r\n ws.send({\r\n type: 'login',\r\n data: this.kufuToken,\r\n });\r\n }\r\n this.getService();\r\n ws.$on(['reply', 'chat'], (data) => {\r\n if (data.msn_type == 1) {\r\n data.msn = this.replace_em(data.msn);\r\n }\r\n this.recordList.push(data);\r\n setTimeout((res) => {\r\n this.$nextTick(function () {\r\n this.$refs.record.scrollTop = this.$refs.record.scrollHeight - this.$refs.record.clientHeight;\r\n });\r\n }, 300);\r\n });\r\n // 监听客服转接\r\n ws.$on('to_transfer', (data) => {\r\n this.toUid = data.toUid;\r\n ws.send({\r\n data: {\r\n id: this.toUid,\r\n },\r\n type: 'to_chat',\r\n });\r\n });\r\n ws.$on('socket_error', () => {\r\n this.$Message.error('连接失败');\r\n });\r\n ws.$on('err_tip', (data) => {\r\n this.$Message.error(data.msg);\r\n });\r\n ws.$on('success', (data) => {\r\n this.is_tourist = 0;\r\n });\r\n });\r\n this.text = this.replace_em('[em-smiling_imp]');\r\n },\r\n beforeDestroy() {\r\n this.socket.close();\r\n },\r\n methods: {\r\n onLook(id) {\r\n window.open(`${location.origin}/home/goods_detail/${id}`);\r\n },\r\n // 关闭\r\n closeChange(msg) {\r\n this.change = msg;\r\n },\r\n // 统一发送处理\r\n sendMsg(msn, type) {\r\n let obj = {\r\n type: 'chat',\r\n data: {\r\n msn,\r\n type,\r\n is_tourist: this.is_tourist,\r\n to_uid: this.toUid,\r\n tourist_uid: this.tourist_uid,\r\n tourist_avatar: this.tourist_avatar,\r\n form_type: this.$wechat.isWeixin() ? 1 : 3,\r\n },\r\n };\r\n Socket.then((ws) => {\r\n ws.send(obj);\r\n });\r\n },\r\n // 随机客服\r\n getService() {\r\n serviceListApi({ token: this.kufuToken || '' })\r\n .then((res) => {\r\n this.serviceData = res.data;\r\n this.upperId = 0;\r\n this.toUid = res.data.uid;\r\n this.tourist_uid = res.data.tourist_uid;\r\n this.tourist_avatar = res.data.tourist_avatar;\r\n let obj = {\r\n data: {\r\n id: res.data.uid,\r\n tourist_uid: this.tourist_uid,\r\n },\r\n type: 'to_chat',\r\n };\r\n Socket.then((ws) => {\r\n ws.send(obj);\r\n });\r\n if (this.kufuToken) {\r\n this.getRecordList();\r\n }\r\n })\r\n .catch((err) => {\r\n this.$Message.error(err.msg);\r\n this.change = true;\r\n });\r\n },\r\n roomClick(event) {\r\n // if (\r\n // !event.target.classList.contains(\"emoji-panel\") &&\r\n // !event.target.classList.contains(\"emoji-btn\") &&\r\n // !event.target.classList.contains(\"icon-biaoqing\") &&\r\n // this.emojiShow\r\n // ) {\r\n // this.emojiShow = false;\r\n // }\r\n },\r\n // enter 发送\r\n ctrlEnter(e) {\r\n if (e.keyCode == 13) {\r\n e.preventDefault();\r\n }\r\n if (this.chatCont.trim()) {\r\n this.sendMessage();\r\n }\r\n },\r\n // 关闭聊天窗口\r\n close() {\r\n this.$emit('chat-close');\r\n },\r\n // 选择表情\r\n selectEmoji(data) {\r\n let val = `[${data}]`;\r\n this.chatCont += val;\r\n this.emojiShow = false;\r\n },\r\n // 聊天表情转换\r\n replace_em(str) {\r\n str = str.replace(/\\[em-([\\s\\S]*)\\]/g, \"<span class='em em-$1'/></span>\");\r\n return str;\r\n },\r\n onScroll(event) {\r\n if (event.target.scrollTop <= 30) {\r\n if (this.kufuToken) {\r\n this.getRecordList();\r\n }\r\n }\r\n },\r\n // 聊天记录\r\n getRecordList() {\r\n if (this.loading) {\r\n return;\r\n }\r\n if (this.finished) {\r\n return;\r\n }\r\n this.loading = true;\r\n chatListApi({\r\n uid: this.serviceData.uid,\r\n limit: this.limit,\r\n upperId: this.upperId,\r\n token: this.kufuToken,\r\n })\r\n .then((res) => {\r\n if (res.data.length === 0) return (this.loading = false);\r\n res.data.forEach((el) => {\r\n if (el.msn_type == 1) {\r\n el.msn = this.replace_em(el.msn);\r\n }\r\n });\r\n let selector = '';\r\n if (this.upperId == 0) {\r\n selector = `chat_${res.data[res.data.length - 1].id}`;\r\n } else {\r\n selector = `chat_${this.recordList[0].id}`;\r\n }\r\n this.recordList = [...res.data, ...this.recordList];\r\n this.upperId = res.data.length > 0 ? res.data[0].id : 0;\r\n this.loading = false;\r\n this.finished = res.data.length < this.limit;\r\n this.$nextTick(function () {\r\n this.setPageScrollTo(selector);\r\n });\r\n })\r\n .catch((err) => {\r\n this.$Message.error(err.msg);\r\n this.loading = false;\r\n });\r\n },\r\n // 设置页面滚动位置\r\n setPageScrollTo(selector) {\r\n this.$nextTick(() => {\r\n if (selector) {\r\n setTimeout(() => {\r\n let num = parseFloat(document.getElementById(selector).offsetTop) - 60;\r\n this.$refs.record.scrollTop = num;\r\n }, 0);\r\n } else {\r\n var container = document.querySelector('#chat_scroll');\r\n this.$refs.record.scrollTop = container.offsetHeight;\r\n setTimeout((res) => {\r\n if (this.$refs.record.scrollTop != this.$refs.scrollBox.offsetHeight) {\r\n this.$refs.record.scrollTop = document.querySelector('#chat_scroll').offsetHeight;\r\n }\r\n }, 300);\r\n }\r\n });\r\n },\r\n // 表情包显示隐藏\r\n emojiSwitch() {\r\n this.emojiShow = !this.emojiShow;\r\n },\r\n // 发送消息\r\n sendMessage() {\r\n this.sendMsg(this.chatCont, 1);\r\n this.chatCont = '';\r\n },\r\n chat(data) {\r\n if (data.uid != this.$auth.user.uid && this.audio) {\r\n this.audio.play();\r\n }\r\n this.recordList.push(data);\r\n this.$nextTick(() => {\r\n this.$refs.record.scrollTop = this.$refs.record.scrollHeight - this.$refs.record.clientHeight;\r\n });\r\n },\r\n sendGoods() {\r\n if (this.chatOptions.goodsId) {\r\n Socket.then((ws) => {\r\n ws.send({\r\n data: {\r\n msn: this.chatOptions.goodsId,\r\n type: 5,\r\n to_uid: this.toUid,\r\n },\r\n type: 'to_chat',\r\n });\r\n });\r\n }\r\n },\r\n sendOrder() {\r\n if (this.chatOptions.orderId) {\r\n Socket.then((ws) => {\r\n ws.send({\r\n data: {\r\n msn: this.chatOptions.orderId,\r\n type: 6,\r\n to_uid: this.toUid,\r\n },\r\n type: 'to_chat',\r\n });\r\n });\r\n }\r\n },\r\n chatEnd() {\r\n if (navigator.userAgent.indexOf('MSIE') > 0) {\r\n if (navigator.userAgent.indexOf('MSIE 6.0') > 0) {\r\n window.opener = null;\r\n window.close();\r\n } else {\r\n window.open('', '_top');\r\n window.top.close();\r\n }\r\n } else if (navigator.userAgent.indexOf('Firefox') > 0) {\r\n window.location.href = 'about:blank ';\r\n } else {\r\n window.opener = null;\r\n window.open('', '_self', '');\r\n window.close();\r\n }\r\n },\r\n // 广告\r\n getNotice() {\r\n getAdvApi().then((res) => {\r\n this.notice = res.data.content;\r\n });\r\n },\r\n beforeUpload(file) {\r\n this.uploadData = {\r\n filename: file,\r\n token: this.kufuToken,\r\n };\r\n let promise = new Promise((resolve) => {\r\n this.$nextTick(function () {\r\n resolve(true);\r\n });\r\n });\r\n return promise;\r\n },\r\n handleFormatError(file) {\r\n this.$Message.error('上传图片只能是 jpg、jpg、jpeg、gif 格式!');\r\n },\r\n uploadSuccess(res) {\r\n this.sendMsg(res.data.url, 3);\r\n },\r\n uploadError(error) {\r\n this.$Message.error(error);\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style lang=\"less\" scoped>\r\n@import '../../../styles/emoji-awesome/css/google.min.css';\r\nli {\r\n list-style-type: none;\r\n}\r\n.chat-room {\r\n .room {\r\n border-radius: 10px;\r\n position: fixed;\r\n top: calc(50% - 327px);\r\n left: calc(50% - 365px);\r\n z-index: 999;\r\n display: flex;\r\n flex-direction: column;\r\n width: 730px;\r\n height: 654px;\r\n background-color: #ffffff;\r\n overflow: hidden;\r\n box-shadow: 1px 1px 15px 0 rgba(0, 0, 0, 0.1);\r\n\r\n &.win {\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n }\r\n\r\n .head {\r\n display: flex;\r\n align-items: center;\r\n height: 50px;\r\n padding-right: 15px;\r\n padding-left: 20px;\r\n background: linear-gradient(270deg, #1890ff 0%, #3875ea 100%);\r\n\r\n .image {\r\n width: 36px;\r\n height: 36px;\r\n border-radius: 50%;\r\n overflow: hidden;\r\n\r\n img {\r\n display: block;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n }\r\n }\r\n\r\n .name {\r\n flex: 1;\r\n min-width: 0;\r\n margin-left: 15px;\r\n font-size: 16px;\r\n color: #ffffff;\r\n }\r\n\r\n .iconfont {\r\n width: 25px;\r\n height: 25px;\r\n font-size: 16px;\r\n line-height: 25px;\r\n text-align: center;\r\n color: #ffffff;\r\n cursor: pointer;\r\n }\r\n }\r\n\r\n .main {\r\n flex: 1;\r\n display: flex;\r\n min-height: 0;\r\n\r\n .chat {\r\n flex: 1;\r\n display: flex;\r\n flex-direction: column;\r\n min-width: 0;\r\n }\r\n\r\n .record {\r\n flex: 1;\r\n min-height: 0;\r\n overflow-x: hidden;\r\n overflow-y: auto;\r\n\r\n &::-webkit-scrollbar {\r\n display: none;\r\n }\r\n\r\n ul {\r\n padding: 20px;\r\n }\r\n\r\n li {\r\n ~ li {\r\n margin-top: 20px;\r\n }\r\n\r\n &::after {\r\n content: '';\r\n display: block;\r\n height: 0;\r\n clear: both;\r\n visibility: hidden;\r\n }\r\n\r\n &.right {\r\n .avatar {\r\n float: right;\r\n }\r\n\r\n .content {\r\n text-align: right;\r\n\r\n > div {\r\n text-align: left;\r\n }\r\n }\r\n }\r\n }\r\n\r\n .time-tag {\r\n padding-top: 10px;\r\n padding-bottom: 30px;\r\n text-align: center;\r\n color: #999999;\r\n }\r\n\r\n .avatar {\r\n float: left;\r\n width: 40px;\r\n height: 40px;\r\n border-radius: 50%;\r\n overflow: hidden;\r\n\r\n &.right {\r\n float: right;\r\n }\r\n\r\n img {\r\n display: block;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n }\r\n }\r\n\r\n .content {\r\n margin-right: 56px;\r\n margin-left: 56px;\r\n }\r\n\r\n .text {\r\n display: inline-block;\r\n min-height: 41px;\r\n padding: 10px 12px;\r\n border-radius: 10px;\r\n background-color: #f5f5f5;\r\n font-size: 15px;\r\n line-height: 21px;\r\n color: #000000;\r\n }\r\n\r\n .image {\r\n display: inline-block;\r\n max-width: 50%;\r\n border-radius: 10px;\r\n overflow: hidden;\r\n\r\n img {\r\n display: block;\r\n max-width: 100%;\r\n }\r\n }\r\n\r\n .goods,\r\n .order {\r\n display: inline-flex;\r\n align-items: center;\r\n width: 320px;\r\n padding: 10px 13px;\r\n border-radius: 10px;\r\n background-color: #f5f5f5;\r\n }\r\n\r\n .thumb {\r\n width: 60px;\r\n height: 60px;\r\n border-radius: 5px;\r\n overflow: hidden;\r\n\r\n img {\r\n display: block;\r\n width: 100%;\r\n height: 100%;\r\n }\r\n }\r\n\r\n .intro {\r\n flex: 1;\r\n min-width: 0;\r\n margin-left: 10px;\r\n\r\n .name {\r\n overflow: hidden;\r\n white-space: nowrap;\r\n text-overflow: ellipsis;\r\n font-size: 15px;\r\n color: #000000;\r\n }\r\n\r\n .attr {\r\n margin-top: 5px;\r\n font-size: 12px;\r\n color: #999999;\r\n\r\n span {\r\n vertical-align: middle;\r\n\r\n ~ span {\r\n margin-left: 10px;\r\n }\r\n }\r\n }\r\n\r\n .group {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n margin-top: 5px;\r\n\r\n .money {\r\n font-size: 14px;\r\n color: #ff0000;\r\n }\r\n\r\n a {\r\n font-size: 12px;\r\n color: #1890ff;\r\n }\r\n }\r\n }\r\n }\r\n\r\n .editor {\r\n display: flex;\r\n flex-direction: column;\r\n height: 162px;\r\n border-top: 1px solid #ececec;\r\n\r\n > div {\r\n &:first-child {\r\n font-size: 0;\r\n }\r\n }\r\n\r\n button {\r\n border: none;\r\n background: none;\r\n outline: none;\r\n\r\n ~ button {\r\n margin-left: 20px;\r\n }\r\n\r\n &.end {\r\n font-size: 15px;\r\n }\r\n\r\n &:hover {\r\n color: #1890ff;\r\n\r\n .iconfont {\r\n color: #1890ff;\r\n }\r\n }\r\n }\r\n\r\n .editor-hd {\r\n position: relative;\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n height: 50px;\r\n padding-right: 20px;\r\n padding-left: 20px;\r\n\r\n .iconfont {\r\n line-height: 1;\r\n color: #333333;\r\n }\r\n\r\n .emoji-panel {\r\n position: absolute;\r\n bottom: 100%;\r\n left: 5px;\r\n width: 390px;\r\n padding-bottom: 10px;\r\n border: 1px solid #ececec;\r\n margin-bottom: 5px;\r\n background-color: #ffffff;\r\n box-shadow: 1px 0 16px 0 rgba(0, 0, 0, 0.05);\r\n\r\n .em {\r\n width: 28px;\r\n height: 28px;\r\n padding: 4px;\r\n margin-top: 10px;\r\n margin-left: 10px;\r\n box-sizing: border-box;\r\n\r\n &:hover {\r\n background-color: #ececec;\r\n }\r\n }\r\n }\r\n }\r\n\r\n .icon-biaoqing1,\r\n .icon-tupian1 {\r\n font-size: 22px;\r\n }\r\n\r\n .icon-guanji {\r\n margin-right: 5px;\r\n font-size: 15px;\r\n }\r\n\r\n .editor-bd {\r\n flex: 1;\r\n min-height: 0;\r\n\r\n textarea {\r\n display: block;\r\n width: 100%;\r\n height: 100%;\r\n padding-right: 20px;\r\n padding-left: 20px;\r\n border: none;\r\n outline: none;\r\n resize: none;\r\n white-space: pre-wrap;\r\n overflow-wrap: break-word;\r\n\r\n &::-webkit-scrollbar {\r\n display: none;\r\n }\r\n }\r\n }\r\n\r\n .editor-ft {\r\n display: flex;\r\n justify-content: flex-end;\r\n align-items: center;\r\n padding-right: 20px;\r\n padding-bottom: 20px;\r\n\r\n button {\r\n width: 68px;\r\n height: 26px;\r\n border: none;\r\n border-radius: 3px;\r\n background-color: #3875ea;\r\n outline: none;\r\n font-size: 13px;\r\n color: #ffffff;\r\n\r\n &:disabled {\r\n background-color: #cccccc;\r\n }\r\n }\r\n }\r\n }\r\n\r\n .notice {\r\n display: flex;\r\n flex-direction: column;\r\n width: 260px;\r\n border-left: 1px solid #ececec;\r\n\r\n .rich {\r\n flex: 1;\r\n min-height: 0;\r\n padding: 18px 18px 0;\r\n overflow-x: hidden;\r\n overflow-y: auto;\r\n\r\n &::-webkit-scrollbar {\r\n display: none;\r\n }\r\n\r\n /deep/ img {\r\n width: 100%;\r\n }\r\n\r\n /deep/ video {\r\n width: 100%;\r\n }\r\n }\r\n\r\n .copy {\r\n padding-top: 15px;\r\n padding-bottom: 15px;\r\n font-size: 12px;\r\n text-align: center;\r\n a {\r\n color: #cccccc !important;\r\n text-decoration: none;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n</style>\r\n"]}]}
|