From 27ff2a57e76e8c3ce8735b012984c588d4d8cab6 Mon Sep 17 00:00:00 2001 From: Maxim Kadushkin Date: Wed, 28 Sep 2022 23:43:03 +0300 Subject: [PATCH 01/32] [desktop] added button 'home' in app header --- apps/common/main/lib/controller/Desktop.js | 26 ++++++++++++++++-- .../common/main/lib/controller/HintManager.js | 2 +- apps/common/main/lib/view/Header.js | 3 +- .../resources/img/toolbar/1.25x/btn-home.png | Bin 0 -> 653 bytes .../resources/img/toolbar/1.5x/btn-home.png | Bin 0 -> 750 bytes .../resources/img/toolbar/1.75x/btn-home.png | Bin 0 -> 1012 bytes .../resources/img/toolbar/1x/btn-home.png | Bin 0 -> 511 bytes .../resources/img/toolbar/2x/btn-home.png | Bin 0 -> 968 bytes 8 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 apps/common/main/resources/img/toolbar/1.25x/btn-home.png create mode 100644 apps/common/main/resources/img/toolbar/1.5x/btn-home.png create mode 100644 apps/common/main/resources/img/toolbar/1.75x/btn-home.png create mode 100644 apps/common/main/resources/img/toolbar/1x/btn-home.png create mode 100644 apps/common/main/resources/img/toolbar/2x/btn-home.png diff --git a/apps/common/main/lib/controller/Desktop.js b/apps/common/main/lib/controller/Desktop.js index 82689e6db..94161bbe9 100644 --- a/apps/common/main/lib/controller/Desktop.js +++ b/apps/common/main/lib/controller/Desktop.js @@ -93,8 +93,9 @@ define([ } if ( obj.singlewindow !== undefined ) { - $('#box-document-title .hedset')[obj.singlewindow ? 'hide' : 'show'](); + // $('#box-document-title .hedset')[obj.singlewindow ? 'hide' : 'show'](); native.features.singlewindow = obj.singlewindow; + titlebuttons.home && titlebuttons.home.btn.setVisible(obj.singlewindow); } } else if (/editor:config/.test(cmd)) { @@ -245,6 +246,26 @@ define([ titlebuttons = {}; if ( mode.isEdit ) { var header = webapp.getController('Viewport').getView('Common.Views.Header'); + + { + header.btnHome = (new Common.UI.Button({ + cls: 'btn-header', + iconCls: 'toolbar__icon icon--inverse btn-home', + disabled: true, + visible: false, + hint: 'Show Main window', + dataHint:'0', + dataHintDirection: 'right', + dataHintOffset: '10, -18', + dataHintTitle: 'K' + })).render($('#box-document-title #slot-btn-dt-home')); + titlebuttons['home'] = {btn: header.btnHome}; + + header.btnHome.on('click', event => { + native.execCommand('title:button', JSON.stringify({click: "home"})); + }); + } + if (!!header.btnSave) { titlebuttons['save'] = {btn: header.btnSave}; @@ -278,7 +299,8 @@ define([ } if ( native.features.singlewindow !== undefined ) { - $('#box-document-title .hedset')[native.features.singlewindow ? 'hide' : 'show'](); + // $('#box-document-title .hedset')[native.features.singlewindow ? 'hide' : 'show'](); + !!titlebuttons.home && titlebuttons.home.btn.setVisible(native.features.singlewindow); } }); diff --git a/apps/common/main/lib/controller/HintManager.js b/apps/common/main/lib/controller/HintManager.js index ecb631631..d9bd2f251 100644 --- a/apps/common/main/lib/controller/HintManager.js +++ b/apps/common/main/lib/controller/HintManager.js @@ -121,7 +121,7 @@ Common.UI.HintManager = new(function() { _usedTitles = [], _appPrefix, _staticHints = { // for desktop buttons - "btnhome": 'K' + // "btnhome": 'K' }; var _api; diff --git a/apps/common/main/lib/view/Header.js b/apps/common/main/lib/view/Header.js index f433be058..97a4a9c0f 100644 --- a/apps/common/main/lib/view/Header.js +++ b/apps/common/main/lib/view/Header.js @@ -123,9 +123,10 @@ define([ '' + ''; - var templateTitleBox = '
' + + var templateTitleBox = '
' + '
' + '
' + + '
' + '
' + '
' + '
' + diff --git a/apps/common/main/resources/img/toolbar/1.25x/btn-home.png b/apps/common/main/resources/img/toolbar/1.25x/btn-home.png new file mode 100644 index 0000000000000000000000000000000000000000..57f8f883cd7b8ee21eb8e44d11466d10d1968362 GIT binary patch literal 653 zcmV;80&@L{P)X1^@s6b5wmq00004XF*Lt006O% z3;baP00009a7bBm000XT000XT0n*)m`~Uy|8FWQhbW?9;ba!ELWdLwtX>N2bZe?^J zG%heMF*(%MvSa`N0t!h)K~z{r?Uc<;12GUrLkZ*r1wb>Q2SCsQ3O7V4p#*3Kap&g> z+=#^TK4)hcyklnr0SPHjdP;We^>`AGM}I-nG{5e5xNkoP6D3~aeGsd<3VZmBdg}%E zaS&1Bf_wOk;sy6Hn%8qE+o;*{(S28ZDN*9UZ8RR+Poa1;|BFM=W^MB)xP`~<^AnD- zN|ZQLo3+iK;1(XIr>1$rF-GroEM@HFJ9V6lOY~zGXjG5cGOQ<# z(o>&9)VO-4NR-%VJ#mE5_#q1QOf;S>;TwC3I!+OapP>~K{xeZx^o>159j9oX;%6v| z7eIt>>~jSMV8zJZ1rQ|mjeU;MoLnnL^e%uL-`J-LtU&Ps$ddZTKE-^zX7K{>)Eavz z;RWCl)*5@L;RWEap3pD*6M7ebB}3~8{jxs3s=W(9_{Nq8_!A~*Yo!Z-M82`b0p^=q z#R(ee0wB-m7T@s|qe6DjHWs;y9xFuaY27;#-QqjGqR0!`!5X{h=UX9KPwU?KL2{-I ztfi1_-3|@FS_)~GT;K-NBbExeNl%|#qvGo<G3K3DIjJZ{|%4Zs}VGDWG7e6HT_E!+tY6|c}U!)RVITepK}jg`E@?me7g nG%wjMxqv|DU*Pkt&t~)ixi@_9wB$^}00000NkvXXu0mjf1PC2Q literal 0 HcmV?d00001 diff --git a/apps/common/main/resources/img/toolbar/1.5x/btn-home.png b/apps/common/main/resources/img/toolbar/1.5x/btn-home.png new file mode 100644 index 0000000000000000000000000000000000000000..1f222514450ea347087a48357af77681d7d0b0e9 GIT binary patch literal 750 zcmVN2bZe?^J zG%heMF*(%MvSa`N0&7V`K~z{r?U>C?LQxQfK@wvDPy|v4E@(vQfw&=70Ae4u;SO4` z1%ewqN8a2FlevHV$mV^?m%x4Zap%AZA#`rVe!sto=kN?)4iD?`hAH$JzL>RQPlaK( zjZ-ev;tf+E!)_a=&03YGFoC>N%e5-JVKPpjg=^m4sI~Bum5?jARL`sG?G2NVpRBNg z%frJzs_I>X)L6nkG)m~IdV9k}lo}I;eQ1=>RrM}K*Z33OL7@w|CfAGV?G59oYy1iC zpj_)VYeG@IOVBlbhdpTF8?b<~FI#VK7^AN7JM2Nbhi||F3fX$+&^7*mtZ+K9vQ{$M~dRuIbSktZ|-ek=4jb7kBAQh=Z4F5- za9FpVUmhk!yG7`B0x7Yoc#U&e1J*DMm4d+dGOFRvTWLqLI{zKq|H zqylq~y^s5aaF0a>OPLCsGoXinC8Pr92=`c6$(-JQRb2D-S_66r$V%q){;T4ex7Ql( gxfyzh|8w8@1@IAAk6-PQ*Z=?k07*qoM6N<$f>Os~yZ`_I literal 0 HcmV?d00001 diff --git a/apps/common/main/resources/img/toolbar/1.75x/btn-home.png b/apps/common/main/resources/img/toolbar/1.75x/btn-home.png new file mode 100644 index 0000000000000000000000000000000000000000..e968143e49ae3871dac7ee720d13f8e3d6039458 GIT binary patch literal 1012 zcmVN2bZe?^J zG%heMF*(%MvSa`N193@2K~!i%?U&mwEkO{5g%B=?LtG*eui!>_ONa0VT;R^>8Sn%= z0T<#DfC>3We?syI7a{xk{s0Nb?_fN))h_T(v0tBOI0Y?}@Cju|p5YXAsMZ0tHbhf1=Pr?7X*CES8t*n~DYt)<*MpwZqb zmv9SuaZPSQo1E5C-bP%K`3Wdt4PHTAtFe@O2NdIy%uj$9mvRkWL8Y;jHxZZQCD@0o zQtllP#wB?PdU3gCmGT&`B(ntn2FX$$9nLGsEWvSHiOEuKX)MWhLWzdfQf}rnmgK&0 z4Y9S9D{)Dtt1zI!rABZsyH8chB|a|6WEFaAbw<|_xtFCX<;44yOqXGRfqjhNeHHH& zN;zV^U&&+{dTVt?*AaPN#e`DM*h9uUjx#az2(gFIW1NX0M~vNtZ;)k>Z9Qm}7{W1? z&6FlKrb>*A^H=#h+(Ua8zCr%?AOr|iVyK0KDI~O-Z>$m{ zPXn@Lpw?tVI{1=fDltiQPuaKjOz@mbDlti9%RsHkMu~mqTJ1We^qFg^t)qwPYM;4Q iyG|*6=2}Lh(Zn~(a%$`!xUsna0000N2bZe?^J zG%heMF*(%MvSa`N0eneBK~zXft&vd3wB#8o_wbyS%q|I0xrYa)C1=EP z;%=Fi%r5c7a&mWsF)TSED<`HUvr8;lIb~WhV^&TKOD31h$|=K=M^?&-wB+G}m2yg2 zGSZdHh7NQk!{J>yp>>k3q)@qMSveZY65yL!()U&FY019n2y=V`r6j!A-)Gu`w9XRu zdG)+){jwC;0A9l~CGPXB^Jaau@LLhbgIHuKgn1sEakKT+!f);7a07HsVOQmho2vp+ z2f1pU`|e_1i!j1$b&xs0p^4a4>!8Z8(Kz>UbLcG9LFNF5CSq5ugG^Qz_UgdQS*A|l z&_wL2b&$#G!d@MiIm^@u9GZw-wGOHbo6C*|1mB)+{Nm6gQf1g&c03^X_H^SHhb9qL zT{IXz=w>{HFq`6I71tTMZ_e_dqxn%pw%2F7d;!yOQsPZ@QfdGI002ovPDHLkV1kfA B;nV;C literal 0 HcmV?d00001 diff --git a/apps/common/main/resources/img/toolbar/2x/btn-home.png b/apps/common/main/resources/img/toolbar/2x/btn-home.png new file mode 100644 index 0000000000000000000000000000000000000000..007c3f2baec498bccf5a75417181e894f614c48f GIT binary patch literal 968 zcmeAS@N?(olHy`uVBq!ia0vp^0YI$5!3HEV6KWZO6id3JuOkD)#(wTUiL5|AXMsm# zF$05`3J5dK7Cj~c6qGD+jVKAuPb(=;EJ|f4NX*PD(aTFMQ83Xn&@;5Wa&1!z0|T?G zr;B4qhV$7Ox3g3Xd0d!x{{PS3wx`YJd1=_J&S^z~n^L!{e`#diy|PQ$bQ$}zhi_u^ zrUzG7UAd56WM22^TJY5i>^vdcp7=d_m|NSC^}<#1>dZ3nKOYVqUa?U8Ou${u@&o+6 zwk=XsmjqvxpOR~pzt;WJ$G&)aptJvpJu}X4uQyw9U$>H_&LcnVLsrqg7O7ntpVQpF zy|P#MP=0#dA^zj}vY%6m@}*2m9FOJ8me2EPvvv-D(EceeO=e$b){Dk7yH{4ddpO&I z+n#5CsyKh;((6rOqSZ1VK{B+FpKP{&30IyniOp#EeNZcUHdn;wy9T^twAXX|I6#9MhgY+Zb%VkzK#? z$uq;JvsbkJn`&9~`Nk*TGY_6>&EK|pirw6+7u14(ZkfCF%gZ$nmX_VKNvjY(dg08u z*~j_vl@6bNQ}Mj_#XjN8gtX(<`6=J$c6<=Zt%|?2pZBnq!T#l4*s0tb#}DWD}6GW zv3c_fW2Ynkxx(S~?%(4h5!W qB$3BoJ{(B@{AI<$^N*iCl)wA$+a;;(%l86v9fPN Date: Thu, 29 Sep 2022 13:15:41 +0300 Subject: [PATCH 02/32] [desktop] fix "home" button disabled state --- apps/common/main/lib/controller/Desktop.js | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/common/main/lib/controller/Desktop.js b/apps/common/main/lib/controller/Desktop.js index 94161bbe9..2bb9531f0 100644 --- a/apps/common/main/lib/controller/Desktop.js +++ b/apps/common/main/lib/controller/Desktop.js @@ -251,7 +251,6 @@ define([ header.btnHome = (new Common.UI.Button({ cls: 'btn-header', iconCls: 'toolbar__icon icon--inverse btn-home', - disabled: true, visible: false, hint: 'Show Main window', dataHint:'0', From 1663f8a36741f1211a6bb1b39539c2ad815ace81 Mon Sep 17 00:00:00 2001 From: Maxim Kadushkin Date: Fri, 30 Sep 2022 10:15:22 +0300 Subject: [PATCH 03/32] [desktop] send js mouse events to native app --- apps/common/main/lib/controller/Desktop.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/apps/common/main/lib/controller/Desktop.js b/apps/common/main/lib/controller/Desktop.js index 2bb9531f0..046dda207 100644 --- a/apps/common/main/lib/controller/Desktop.js +++ b/apps/common/main/lib/controller/Desktop.js @@ -263,6 +263,21 @@ define([ header.btnHome.on('click', event => { native.execCommand('title:button', JSON.stringify({click: "home"})); }); + + $('#id-box-doc-name').on({ + 'dblclick': e => { + native.execCommand('title:dblclick', JSON.stringify({x: e.originalEvent.screenX, y: e.originalEvent.screenY})) + }, + 'mousedown': e => { + native.execCommand('title:mousedown', JSON.stringify({x: e.originalEvent.screenX, y: e.originalEvent.screenY})) + }, + 'mousemove': e => { + native.execCommand('title:mousemove', JSON.stringify({x: e.originalEvent.screenX, y: e.originalEvent.screenY})) + }, + 'mouseup': e => { + native.execCommand('title:mouseup', JSON.stringify({x: e.originalEvent.screenX, y: e.originalEvent.screenY})) + } + }); } if (!!header.btnSave) { From 5edf90c839d47e5537026ee5a4a5c55d62ba434c Mon Sep 17 00:00:00 2001 From: SergeyEzhin Date: Thu, 13 Oct 2022 19:19:39 +0400 Subject: [PATCH 04/32] Change config and imports to es modules and update framework7 --- apps/common/mobile/lib/controller/Themes.js | 2 +- .../collaboration/Collaboration.jsx | 2 +- .../lib/controller/collaboration/Comments.jsx | 2 +- .../lib/controller/collaboration/Review.jsx | 2 +- .../{LocalStorage.js => LocalStorage.mjs} | 0 apps/documenteditor/mobile/src/app.js | 13 ++++----- .../mobile/src/controller/ContextMenu.jsx | 2 +- .../mobile/src/controller/Main.jsx | 2 +- .../mobile/src/controller/Toolbar.jsx | 2 +- .../settings/ApplicationSettings.jsx | 2 +- .../src/controller/settings/Settings.jsx | 2 +- .../mobile/src/store/appOptions.js | 2 +- .../mobile/src/store/applicationSettings.js | 2 +- .../mobile/src/view/edit/EditText.jsx | 2 +- vendor/framework7-react/babel.config.js | 4 ++- vendor/framework7-react/build/build.js | 6 ++--- .../framework7-react/build/webpack.config.js | 27 ++++++++++--------- vendor/framework7-react/package.json | 8 +++--- 18 files changed, 44 insertions(+), 38 deletions(-) rename apps/common/mobile/utils/{LocalStorage.js => LocalStorage.mjs} (100%) diff --git a/apps/common/mobile/lib/controller/Themes.js b/apps/common/mobile/lib/controller/Themes.js index 2c076a15f..f71656086 100644 --- a/apps/common/mobile/lib/controller/Themes.js +++ b/apps/common/mobile/lib/controller/Themes.js @@ -1,5 +1,5 @@ import { Dom7 } from 'framework7' -import { LocalStorage } from "../../utils/LocalStorage"; +import { LocalStorage } from "../../utils/LocalStorage.mjs"; class ThemesController { constructor() { diff --git a/apps/common/mobile/lib/controller/collaboration/Collaboration.jsx b/apps/common/mobile/lib/controller/collaboration/Collaboration.jsx index 31e8b7b5f..f7eee5b16 100644 --- a/apps/common/mobile/lib/controller/collaboration/Collaboration.jsx +++ b/apps/common/mobile/lib/controller/collaboration/Collaboration.jsx @@ -1,7 +1,7 @@ import React, { Component } from 'react' import { f7 } from 'framework7-react'; import {observer, inject} from "mobx-react" -import { LocalStorage } from '../../../utils/LocalStorage'; +import { LocalStorage } from '../../../utils/LocalStorage.mjs'; import { withTranslation } from 'react-i18next'; class CollaborationController extends Component { diff --git a/apps/common/mobile/lib/controller/collaboration/Comments.jsx b/apps/common/mobile/lib/controller/collaboration/Comments.jsx index 47a72a6b6..55eae7387 100644 --- a/apps/common/mobile/lib/controller/collaboration/Comments.jsx +++ b/apps/common/mobile/lib/controller/collaboration/Comments.jsx @@ -3,7 +3,7 @@ import { inject, observer } from "mobx-react"; import { f7 } from 'framework7-react'; import {Device} from '../../../../../common/mobile/utils/device'; import { withTranslation} from 'react-i18next'; -import { LocalStorage } from '../../../utils/LocalStorage'; +import { LocalStorage } from '../../../utils/LocalStorage.mjs'; import {AddComment, EditComment, AddReply, EditReply, ViewComments, ViewCurrentComments} from '../../view/collaboration/Comments'; diff --git a/apps/common/mobile/lib/controller/collaboration/Review.jsx b/apps/common/mobile/lib/controller/collaboration/Review.jsx index 3fe87e560..d6db4d966 100644 --- a/apps/common/mobile/lib/controller/collaboration/Review.jsx +++ b/apps/common/mobile/lib/controller/collaboration/Review.jsx @@ -4,7 +4,7 @@ import {observer, inject} from "mobx-react" import { withTranslation } from 'react-i18next'; import {PageReview, PageReviewChange} from "../../view/collaboration/Review"; -import {LocalStorage} from "../../../utils/LocalStorage"; +import {LocalStorage} from "../../../utils/LocalStorage.mjs"; class InitReview extends Component { constructor(props){ diff --git a/apps/common/mobile/utils/LocalStorage.js b/apps/common/mobile/utils/LocalStorage.mjs similarity index 100% rename from apps/common/mobile/utils/LocalStorage.js rename to apps/common/mobile/utils/LocalStorage.mjs diff --git a/apps/documenteditor/mobile/src/app.js b/apps/documenteditor/mobile/src/app.js index 69b8ca7a6..9a7e2378d 100644 --- a/apps/documenteditor/mobile/src/app.js +++ b/apps/documenteditor/mobile/src/app.js @@ -3,7 +3,8 @@ import React, { Suspense } from 'react'; import { createRoot } from 'react-dom/client'; // Import Framework7 -import Framework7 from 'framework7/lite-bundle'; +// framework7/lite-bundle +import Framework7 from 'framework7'; import { Dom7 } from 'framework7'; window.$$ = Dom7; @@ -22,13 +23,13 @@ import('./less/app.less'); // Import App Component -import App from './view/app'; +import App from './view/app.jsx'; import { I18nextProvider } from 'react-i18next'; -import i18n from './lib/i18n'; +import i18n from './lib/i18n.js'; -import { Provider } from 'mobx-react' -import { stores } from './store/mainStore' -import { LocalStorage } from '../../../common/mobile/utils/LocalStorage'; +import { Provider } from 'mobx-react'; +import { stores } from './store/mainStore.js'; +// import { LocalStorage } from '../../../common/mobile/utils/LocalStorage'; const container = document.getElementById('app'); const root = createRoot(container); diff --git a/apps/documenteditor/mobile/src/controller/ContextMenu.jsx b/apps/documenteditor/mobile/src/controller/ContextMenu.jsx index 546d3e169..bf43216aa 100644 --- a/apps/documenteditor/mobile/src/controller/ContextMenu.jsx +++ b/apps/documenteditor/mobile/src/controller/ContextMenu.jsx @@ -2,7 +2,7 @@ import React, { useContext } from 'react'; import { f7 } from 'framework7-react'; import { inject, observer } from "mobx-react"; import { withTranslation} from 'react-i18next'; -import { LocalStorage } from '../../../../common/mobile/utils/LocalStorage'; +import { LocalStorage } from '../../../../common/mobile/utils/LocalStorage.mjs'; import ContextMenuController from '../../../../common/mobile/lib/controller/ContextMenu'; import { idContextMenuElement } from '../../../../common/mobile/lib/view/ContextMenu'; diff --git a/apps/documenteditor/mobile/src/controller/Main.jsx b/apps/documenteditor/mobile/src/controller/Main.jsx index 3706d958b..1d391185c 100644 --- a/apps/documenteditor/mobile/src/controller/Main.jsx +++ b/apps/documenteditor/mobile/src/controller/Main.jsx @@ -3,7 +3,7 @@ import React, {Component, Fragment} from 'react'; import {inject} from "mobx-react"; import { f7 } from "framework7-react"; import { withTranslation } from 'react-i18next'; -import { LocalStorage } from '../../../../common/mobile/utils/LocalStorage'; +import { LocalStorage } from '../../../../common/mobile/utils/LocalStorage.mjs'; import CollaborationController from '../../../../common/mobile/lib/controller/collaboration/Collaboration.jsx'; import {InitReviewController as ReviewController} from '../../../../common/mobile/lib/controller/collaboration/Review.jsx'; import { onAdvancedOptions } from './settings/Download.jsx'; diff --git a/apps/documenteditor/mobile/src/controller/Toolbar.jsx b/apps/documenteditor/mobile/src/controller/Toolbar.jsx index e863f8922..e896757d8 100644 --- a/apps/documenteditor/mobile/src/controller/Toolbar.jsx +++ b/apps/documenteditor/mobile/src/controller/Toolbar.jsx @@ -3,7 +3,7 @@ import { inject, observer } from 'mobx-react'; import { f7 } from 'framework7-react'; import { useTranslation } from 'react-i18next'; import ToolbarView from "../view/Toolbar"; -import {LocalStorage} from "../../../../common/mobile/utils/LocalStorage"; +import {LocalStorage} from "../../../../common/mobile/utils/LocalStorage.mjs"; const ToolbarController = inject('storeAppOptions', 'users', 'storeReview', 'storeFocusObjects', 'storeToolbarSettings','storeDocumentInfo')(observer(props => { const {t} = useTranslation(); diff --git a/apps/documenteditor/mobile/src/controller/settings/ApplicationSettings.jsx b/apps/documenteditor/mobile/src/controller/settings/ApplicationSettings.jsx index a57ec57e1..1d2f86028 100644 --- a/apps/documenteditor/mobile/src/controller/settings/ApplicationSettings.jsx +++ b/apps/documenteditor/mobile/src/controller/settings/ApplicationSettings.jsx @@ -1,6 +1,6 @@ import React, { Component } from "react"; import { ApplicationSettings } from "../../view/settings/ApplicationSettings"; -import { LocalStorage } from '../../../../../common/mobile/utils/LocalStorage'; +import { LocalStorage } from '../../../../../common/mobile/utils/LocalStorage.mjs'; import {observer, inject} from "mobx-react"; import { Themes } from '../../../../../common/mobile/lib/controller/Themes.js'; diff --git a/apps/documenteditor/mobile/src/controller/settings/Settings.jsx b/apps/documenteditor/mobile/src/controller/settings/Settings.jsx index 809bd1e28..8a319d35b 100644 --- a/apps/documenteditor/mobile/src/controller/settings/Settings.jsx +++ b/apps/documenteditor/mobile/src/controller/settings/Settings.jsx @@ -5,7 +5,7 @@ import { observer, inject } from "mobx-react"; import {Device} from '../../../../../common/mobile/utils/device'; import SettingsView from "../../view/settings/Settings"; -import {LocalStorage} from "../../../../../common/mobile/utils/LocalStorage"; +import {LocalStorage} from "../../../../../common/mobile/utils/LocalStorage.mjs"; const Settings = props => { useEffect(() => { diff --git a/apps/documenteditor/mobile/src/store/appOptions.js b/apps/documenteditor/mobile/src/store/appOptions.js index b71e1ccce..1dc50245c 100644 --- a/apps/documenteditor/mobile/src/store/appOptions.js +++ b/apps/documenteditor/mobile/src/store/appOptions.js @@ -1,5 +1,5 @@ import {makeObservable, action, observable} from 'mobx'; -import { LocalStorage } from '../../../../common/mobile/utils/LocalStorage'; +import { LocalStorage } from '../../../../common/mobile/utils/LocalStorage.mjs'; export class storeAppOptions { constructor() { diff --git a/apps/documenteditor/mobile/src/store/applicationSettings.js b/apps/documenteditor/mobile/src/store/applicationSettings.js index 16649d877..724084f0e 100644 --- a/apps/documenteditor/mobile/src/store/applicationSettings.js +++ b/apps/documenteditor/mobile/src/store/applicationSettings.js @@ -1,5 +1,5 @@ import {makeObservable, action, observable} from 'mobx'; -import { LocalStorage } from '../../../../common/mobile/utils/LocalStorage'; +import { LocalStorage } from '../../../../common/mobile/utils/LocalStorage.mjs'; export class storeApplicationSettings { constructor() { diff --git a/apps/documenteditor/mobile/src/view/edit/EditText.jsx b/apps/documenteditor/mobile/src/view/edit/EditText.jsx index 0a5506da0..01897e754 100644 --- a/apps/documenteditor/mobile/src/view/edit/EditText.jsx +++ b/apps/documenteditor/mobile/src/view/edit/EditText.jsx @@ -5,7 +5,7 @@ import { useTranslation } from 'react-i18next'; import {Device} from '../../../../../common/mobile/utils/device'; import { ThemeColorPalette, CustomColorPicker } from '../../../../../common/mobile/lib/component/ThemeColorPalette.jsx'; import HighlightColorPalette from '../../../../../common/mobile/lib/component/HighlightColorPalette.jsx'; -import { LocalStorage } from '../../../../../common/mobile/utils/LocalStorage'; +import { LocalStorage } from '../../../../../common/mobile/utils/LocalStorage.mjs'; const PageFonts = props => { const isAndroid = Device.android; diff --git a/vendor/framework7-react/babel.config.js b/vendor/framework7-react/babel.config.js index b6def8dbb..e1552254f 100644 --- a/vendor/framework7-react/babel.config.js +++ b/vendor/framework7-react/babel.config.js @@ -1,4 +1,4 @@ -module.exports = { +const config = { presets: [ '@babel/preset-react', ['@babel/preset-env', { @@ -12,3 +12,5 @@ module.exports = { ['@babel/plugin-proposal-class-properties',{'loose':false}], ], }; + +export default config; \ No newline at end of file diff --git a/vendor/framework7-react/build/build.js b/vendor/framework7-react/build/build.js index 5c0985858..50828275f 100644 --- a/vendor/framework7-react/build/build.js +++ b/vendor/framework7-react/build/build.js @@ -1,6 +1,6 @@ -const webpack = require('webpack'); -const rm = require('rimraf'); -const config = require('./webpack.config.js'); +import webpack from 'webpack'; +import rm from 'rimraf'; +import config from "./webpack.config.js"; const env = process.env.NODE_ENV || 'development'; const target = process.env.TARGET || 'web'; diff --git a/vendor/framework7-react/build/webpack.config.js b/vendor/framework7-react/build/webpack.config.js index ec3d574cb..83780098d 100644 --- a/vendor/framework7-react/build/webpack.config.js +++ b/vendor/framework7-react/build/webpack.config.js @@ -1,15 +1,14 @@ -const webpack = require('webpack'); -const CopyWebpackPlugin = require('copy-webpack-plugin'); -const HtmlWebpackPlugin = require('html-webpack-plugin'); -const { CleanWebpackPlugin } = require('clean-webpack-plugin'); +import webpack from 'webpack'; +import CopyWebpackPlugin from 'copy-webpack-plugin'; +import HtmlWebpackPlugin from 'html-webpack-plugin'; +import MiniCssExtractPlugin from "mini-css-extract-plugin"; +import CssMinimizerPlugin from "css-minimizer-webpack-plugin"; +import TerserPlugin from "terser-webpack-plugin"; +import fs from 'fs'; +import path from 'path'; +import { fileURLToPath } from "url"; -const MiniCssExtractPlugin = require('mini-css-extract-plugin'); -const CssMinimizerPlugin = require('css-minimizer-webpack-plugin'); -const TerserPlugin = require('terser-webpack-plugin'); -const WorkboxPlugin = require('workbox-webpack-plugin'); -const fs = require('fs') - -const path = require('path'); +const __dirname = path.dirname(fileURLToPath(import.meta.url)); function resolvePath(dir) { return path.join(__dirname, '..', dir); @@ -22,7 +21,7 @@ const editor = process.env.TARGET_EDITOR == 'cell' ? 'spreadsheeteditor' : const targetPatch = process.env.TARGET_EDITOR || 'word'; const addonPath = process.env.ADDON_ENV || 'path'; -module.exports = { +const config = { mode: env, entry: { app: `../../apps/${editor}/mobile/src/app.js`, @@ -260,4 +259,6 @@ module.exports = { //resource.request = `../../../${addonPath}/patch.jsx` : resource ), ], -}; \ No newline at end of file +}; + +export default config; \ No newline at end of file diff --git a/vendor/framework7-react/package.json b/vendor/framework7-react/package.json index f7ad68807..0d0d39ab3 100644 --- a/vendor/framework7-react/package.json +++ b/vendor/framework7-react/package.json @@ -18,6 +18,7 @@ "build-slide": "cross-env NODE_ENV=development TARGET_EDITOR=slide node ./build/build.js", "build-cell": "cross-env NODE_ENV=development TARGET_EDITOR=cell node ./build/build.js" }, + "type": "module", "browserslist": [ "Android >= 7", "IOS >= 11", @@ -28,9 +29,9 @@ ], "dependencies": { "dom7": "^3.0.0", - "framework7": "^6.0.4", + "framework7": "^7.0.8", "framework7-icons": "^3.0.1", - "framework7-react": "^6.0.4", + "framework7-react": "^7.0.8", "i18next": "^21.8.9", "i18next-fetch-backend": "^5.0.0", "postcss": "^8.4.12", @@ -40,7 +41,8 @@ "react-i18next": "^11.8.5", "react-transition-group": "^4.4.5", "swiper": "^8.2.4", - "template7": "^1.4.2" + "template7": "^1.4.2", + "url": "^0.11.0" }, "devDependencies": { "@babel/core": "^7.12.10", From b65436ed34d95a9866e3f6202d6084e826fcd34d Mon Sep 17 00:00:00 2001 From: SergeyEzhin Date: Mon, 17 Oct 2022 19:28:21 +0400 Subject: [PATCH 05/32] [SSE mobile] For Bug 59015 --- .../mobile/src/controller/ContextMenu.jsx | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/apps/spreadsheeteditor/mobile/src/controller/ContextMenu.jsx b/apps/spreadsheeteditor/mobile/src/controller/ContextMenu.jsx index ad47c5568..6ac707754 100644 --- a/apps/spreadsheeteditor/mobile/src/controller/ContextMenu.jsx +++ b/apps/spreadsheeteditor/mobile/src/controller/ContextMenu.jsx @@ -21,7 +21,8 @@ import EditorUIController from '../lib/patch'; wsProps: stores.storeWorksheets.wsProps, wsLock: stores.storeWorksheets.wsLock, objects: stores.storeFocusObjects.objects, - focusOn: stores.storeFocusObjects.focusOn + focusOn: stores.storeFocusObjects.focusOn, + isResolvedComments: stores.storeApplicationSettings.isResolvedComments })) class ContextMenu extends ContextMenuController { constructor(props) { @@ -248,7 +249,7 @@ class ContextMenu extends ContextMenuController { if (isEdit && EditorUIController.ContextMenu) { return EditorUIController.ContextMenu.mapMenuItems(this); } else { - const {canViewComments, canCoAuthoring, canComments} = this.props; + const {canViewComments, canCoAuthoring, canComments, isResolvedComments} = this.props; const api = Common.EditorApi.get(); const cellinfo = api.asc_getCellInfo(); @@ -258,7 +259,8 @@ class ContextMenu extends ContextMenuController { let iscellmenu, isrowmenu, iscolmenu, isallmenu, ischartmenu, isimagemenu, istextshapemenu, isshapemenu, istextchartmenu; const seltype = cellinfo.asc_getSelectionType(); - const hasComments = cellinfo.asc_getComments(); //prohibit adding multiple comments in one cell; + const comments = cellinfo.asc_getComments(); //prohibit adding multiple comments in one cell; + const isSolvedComment = comments[0].asc_getSolved(); switch (seltype) { case Asc.c_oAscSelectionType.RangeCells: iscellmenu = true; break; @@ -286,16 +288,16 @@ class ContextMenu extends ContextMenuController { caption: t("ContextMenu.menuEditLink"), event: 'editlink' }); - } + }`` if(!isDisconnected) { - if (canViewComments && hasComments && hasComments.length>0) { + if (canViewComments && comments && comments.length && ((!isSolvedComment && !isResolvedComments) || isResolvedComments)) { itemsText.push({ caption: _t.menuViewComment, event: 'viewcomment' }); } - if (iscellmenu && !api.isCellEdited && isRestrictedEdit && canCoAuthoring && canComments && hasComments && hasComments.length<1) { + if (iscellmenu && !api.isCellEdited && isRestrictedEdit && canCoAuthoring && canComments && comments && comments.length<1) { itemsText.push({ caption: _t.menuAddComment, event: 'addcomment' From 6314ed452c4e23ef0376ad49ca69cbaefe632b42 Mon Sep 17 00:00:00 2001 From: OVSharova Date: Tue, 18 Oct 2022 16:00:45 +0300 Subject: [PATCH 06/32] bug 55070 --- apps/common/main/resources/less/common.less | 1 + apps/common/main/resources/less/variables.less | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/common/main/resources/less/common.less b/apps/common/main/resources/less/common.less index cbb386fd0..ab60811d9 100644 --- a/apps/common/main/resources/less/common.less +++ b/apps/common/main/resources/less/common.less @@ -236,6 +236,7 @@ textarea { background-color: @background-normal; color: @text-normal-ie; color: @text-normal; + .placeholder(); } .btn-edit-table, diff --git a/apps/common/main/resources/less/variables.less b/apps/common/main/resources/less/variables.less index 5ebe3b98a..0660a8c87 100644 --- a/apps/common/main/resources/less/variables.less +++ b/apps/common/main/resources/less/variables.less @@ -194,7 +194,7 @@ //** Small `.form-control` border radius @input-border-radius-small: @border-radius-small; -@input-color-placeholder: #cfcfcf; // @gray; +@input-color-placeholder: @text-tertiary; //#cfcfcf; // @gray; @input-height-base: (floor(@font-size-base * @line-height-base) + (@padding-base-vertical * 2) + 5); @input-height-large: (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2); From 4d87c6d817a19810e0b9e7328a91cee4bb14785f Mon Sep 17 00:00:00 2001 From: Alexei Koshelev Date: Tue, 18 Oct 2022 16:41:55 +0300 Subject: [PATCH 07/32] Updating search in menu component --- apps/common/main/lib/component/Menu.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/common/main/lib/component/Menu.js b/apps/common/main/lib/component/Menu.js index 03e16cc01..580a73e72 100644 --- a/apps/common/main/lib/component/Menu.js +++ b/apps/common/main/lib/component/Menu.js @@ -1051,7 +1051,7 @@ define([ }, selectCandidate: function() { - var index = this._search.index || 0, + var index = (this._search.index && this._search.index != -1) ? this._search.index : 0, re = new RegExp('^' + ((this._search.full) ? this._search.text : this._search.char), 'i'), itemCandidate, idxCandidate; @@ -1061,6 +1061,8 @@ define([ if (!itemCandidate) { itemCandidate = item; idxCandidate = i; + if(!re.test(this.items[index].caption)) + break; } if (this._search.full && i==index || i>index) { itemCandidate = item; From 3bfca10bcd5ccb730d181336b24c556cbbb3bf3c Mon Sep 17 00:00:00 2001 From: SergeyEzhin Date: Tue, 18 Oct 2022 21:51:12 +0400 Subject: [PATCH 08/32] [DE mobile] Correct creating searchbar --- apps/common/mobile/lib/view/Search.jsx | 18 ++++++++++-------- apps/documenteditor/mobile/src/app.js | 8 ++++---- .../mobile/src/controller/Search.jsx | 12 ++++++------ 3 files changed, 20 insertions(+), 18 deletions(-) diff --git a/apps/common/mobile/lib/view/Search.jsx b/apps/common/mobile/lib/view/Search.jsx index a5a66cfb2..9b17fd19d 100644 --- a/apps/common/mobile/lib/view/Search.jsx +++ b/apps/common/mobile/lib/view/Search.jsx @@ -1,12 +1,13 @@ import React, { Component } from 'react'; -import { Searchbar, Popover, Popup, View, Page, List, ListItem, Navbar, NavRight, Link } from 'framework7-react'; +import { Popover, Popup, View, Page, List, ListItem, Navbar, NavRight, Link, f7 } from 'framework7-react'; import { Toggle } from 'framework7-react'; -import { f7 } from 'framework7-react'; -import { Dom7 } from 'framework7'; +// import { f7 } from 'framework7-react/shared/f7.js'; +// import { Dom7 } from 'framework7'; import { Device } from '../../../../common/mobile/utils/device'; import { observable, runInAction } from "mobx"; import { observer } from "mobx-react"; +import Searchbar from 'framework7/components/searchbar' const searchOptions = observable({ usereplace: false, @@ -105,12 +106,13 @@ class SearchView extends Component { $editor.on('pointerdown', this.onEditorTouchStart); $editor.on('pointerup', this.onEditorTouchEnd); - if( !this.searchbar ) { - this.searchbar = f7.searchbar.get('.searchbar'); - } + // if(!this.searchbar) { + // // f7.searchbar.get('.searchbar'); + // // this.searchbar = Searchbar.get('.searchbar'); + // } - if( !this.searchbar ) { - this.searchbar = f7.searchbar.create({ + if(!this.searchbar) { + this.searchbar = Searchbar.create({ el: '.searchbar', customSearch: true, expandable: true, diff --git a/apps/documenteditor/mobile/src/app.js b/apps/documenteditor/mobile/src/app.js index 9a7e2378d..52d790bfd 100644 --- a/apps/documenteditor/mobile/src/app.js +++ b/apps/documenteditor/mobile/src/app.js @@ -4,8 +4,8 @@ import { createRoot } from 'react-dom/client'; // Import Framework7 // framework7/lite-bundle -import Framework7 from 'framework7'; -import { Dom7 } from 'framework7'; +import Framework7 from 'framework7/lite'; +import { Dom7 } from 'framework7/lite'; window.$$ = Dom7; // Import Framework7-React Plugin @@ -23,9 +23,9 @@ import('./less/app.less'); // Import App Component -import App from './view/app.jsx'; import { I18nextProvider } from 'react-i18next'; import i18n from './lib/i18n.js'; +import App from './view/app.jsx'; import { Provider } from 'mobx-react'; import { stores } from './store/mainStore.js'; @@ -35,7 +35,7 @@ const container = document.getElementById('app'); const root = createRoot(container); // Init F7 React Plugin -Framework7.use(Framework7React) +Framework7.use(Framework7React); // Mount React App root.render( diff --git a/apps/documenteditor/mobile/src/controller/Search.jsx b/apps/documenteditor/mobile/src/controller/Search.jsx index a337ac6a4..ec53012a2 100644 --- a/apps/documenteditor/mobile/src/controller/Search.jsx +++ b/apps/documenteditor/mobile/src/controller/Search.jsx @@ -1,10 +1,10 @@ import React, { useEffect } from 'react'; -import { List, ListItem, Toggle, Page, Navbar, NavRight, Link } from 'framework7-react'; +import { List, ListItem, Toggle, Page, Navbar, NavRight, Link, f7 } from 'framework7-react'; import { SearchController, SearchView, SearchSettingsView } from '../../../../common/mobile/lib/controller/Search'; -import { f7 } from 'framework7-react'; import { withTranslation } from 'react-i18next'; import { Device } from '../../../../common/mobile/utils/device'; import { observer, inject } from "mobx-react"; +// import { f7 } from 'framework7-react/shared/f7.js'; class SearchSettings extends SearchSettingsView { constructor(props) { @@ -94,14 +94,14 @@ class DESearchView extends SearchView { const Search = withTranslation()(props => { const { t } = props; const _t = t('Settings', {returnObjects: true}); - + // f7.searchbar.get('.searchbar')?.enabled && useEffect(() => { - if (f7.searchbar.get('.searchbar')?.enabled && Device.phone) { + if(Device.phone) { const api = Common.EditorApi.get(); $$('.searchbar-input').focus(); - api.asc_enableKeyEvents(false); + // api.asc_enableKeyEvents(false); } - }); + }, []); const onSearchQuery = params => { const api = Common.EditorApi.get(); From a01b33e66a1d5d22ad328260d9c64941bd44f80c Mon Sep 17 00:00:00 2001 From: OVSharova Date: Wed, 19 Oct 2022 12:08:29 +0300 Subject: [PATCH 09/32] bug 59179 --- apps/spreadsheeteditor/main/app/view/FileMenuPanels.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/apps/spreadsheeteditor/main/app/view/FileMenuPanels.js b/apps/spreadsheeteditor/main/app/view/FileMenuPanels.js index 1e4c1c106..c59828827 100644 --- a/apps/spreadsheeteditor/main/app/view/FileMenuPanels.js +++ b/apps/spreadsheeteditor/main/app/view/FileMenuPanels.js @@ -893,6 +893,7 @@ define([ if (Common.UI.FeaturesManager.canChange('spellcheck') && this.mode.isEdit) { var arrLang = SSE.getController('Spellcheck').loadLanguages(), + defaultShortName = "en-US", allLangs = arrLang[0], langs = arrLang[1], change = arrLang[2]; @@ -912,6 +913,8 @@ define([ item = this.cmbDictionaryLanguage.store.find(function (model) { return model.get('shortName').indexOf(value) == 0; }); + if(!item) + item = this.cmbDictionaryLanguage.store.findWhere({shortName: defaultShortName}) } this.cmbDictionaryLanguage.setValue(item ? item.get('value') : langs[0].value); value = this.cmbDictionaryLanguage.getValue(); From 6f1d3f03a90090801a5dde010098dabbfa81d632 Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Wed, 19 Oct 2022 14:49:24 +0300 Subject: [PATCH 10/32] [DE] Lock document info for protected document and for other preview modes (view form, final/original) --- .../main/lib/controller/ReviewChanges.js | 2 +- .../main/app/controller/FormsTab.js | 2 +- apps/documenteditor/main/app/view/FileMenu.js | 5 ++ .../main/app/view/FileMenuPanels.js | 50 ++++++++++++++----- 4 files changed, 44 insertions(+), 15 deletions(-) diff --git a/apps/common/main/lib/controller/ReviewChanges.js b/apps/common/main/lib/controller/ReviewChanges.js index 102289694..3985682da 100644 --- a/apps/common/main/lib/controller/ReviewChanges.js +++ b/apps/common/main/lib/controller/ReviewChanges.js @@ -824,7 +824,7 @@ define([ rightMenu: {clear: disable, disable: true}, statusBar: true, leftMenu: {disable: false, previewMode: true}, - fileMenu: {protect: true}, + fileMenu: {protect: true, info: true}, navigation: {disable: false, previewMode: true}, comments: {disable: false, previewMode: true}, chat: false, diff --git a/apps/documenteditor/main/app/controller/FormsTab.js b/apps/documenteditor/main/app/controller/FormsTab.js index 0f73609fc..0a6809912 100644 --- a/apps/documenteditor/main/app/controller/FormsTab.js +++ b/apps/documenteditor/main/app/controller/FormsTab.js @@ -324,7 +324,7 @@ define([ rightMenu: {clear: disable, disable: true}, statusBar: true, leftMenu: {disable: false, previewMode: true}, - fileMenu: false, + fileMenu: {info: true}, navigation: {disable: false, previewMode: true}, comments: {disable: false, previewMode: true}, chat: false, diff --git a/apps/documenteditor/main/app/view/FileMenu.js b/apps/documenteditor/main/app/view/FileMenu.js index 8bf3fdb57..b9700e008 100644 --- a/apps/documenteditor/main/app/view/FileMenu.js +++ b/apps/documenteditor/main/app/view/FileMenu.js @@ -87,6 +87,9 @@ define([ }, initialize: function () { + this._state = { + infoPreviewMode: false + }; }, render: function () { @@ -363,6 +366,7 @@ define([ 'info' : (new DE.Views.FileMenuPanels.DocumentInfo({menu:this})).render(this.$el.find('#panel-info')), 'rights' : (new DE.Views.FileMenuPanels.DocumentRights({menu:this})).render(this.$el.find('#panel-rights')) }; + this._state.infoPreviewMode && this.panels['info'].setPreviewMode(this._state.infoPreviewMode); } if (!this.mode) return; @@ -568,6 +572,7 @@ define([ options && options.protect && _btn_protect.setDisabled(disable); options && options.history && _btn_history.setDisabled(disable); + options && options.info && (this.panels ? this.panels['info'].setPreviewMode(disable) : this._state.infoPreviewMode = disable ); }, isVisible: function () { diff --git a/apps/documenteditor/main/app/view/FileMenuPanels.js b/apps/documenteditor/main/app/view/FileMenuPanels.js index a4d0ee2cf..0f4faca22 100644 --- a/apps/documenteditor/main/app/view/FileMenuPanels.js +++ b/apps/documenteditor/main/app/view/FileMenuPanels.js @@ -1316,7 +1316,16 @@ define([ this.menu = options.menu; this.coreProps = null; this.authors = []; - this._locked = false; + this._state = { + _locked: false, + docProtection: { + isReadOnly: false, + isReviewOnly: false, + isFormsOnly: false, + isCommentsOnly: false + }, + disableEditing: false + }; }, render: function(node) { @@ -1601,7 +1610,7 @@ define([ me.authors.push(item); }); this.tblAuthor.find('.close').toggleClass('hidden', !this.mode.isEdit); - !this.mode.isEdit && this._ShowHideInfoItem(this.tblAuthor, !!this.authors.length); + this._ShowHideInfoItem(this.tblAuthor, this.mode.isEdit || !!this.authors.length); } this.SetDisabled(); }, @@ -1729,6 +1738,8 @@ define([ this.api.asc_registerCallback('asc_onGetDocInfoEnd', _.bind(this._onGetDocInfoEnd, this)); // this.api.asc_registerCallback('asc_onDocumentName', _.bind(this.onDocumentName, this)); this.api.asc_registerCallback('asc_onLockCore', _.bind(this.onLockCore, this)); + Common.NotificationCenter.on('protect:doclock', _.bind(this.onChangeProtectDocument, this)); + this.onChangeProtectDocument(); this.updateInfo(this.doc); return this; }, @@ -1738,17 +1749,19 @@ define([ this.inputAuthor.setVisible(mode.isEdit); this.pnlApply.toggleClass('hidden', !mode.isEdit); this.tblAuthor.find('.close').toggleClass('hidden', !mode.isEdit); - if (!mode.isEdit) { - this.inputTitle._input.attr('placeholder', ''); - this.inputTags._input.attr('placeholder', ''); - this.inputSubject._input.attr('placeholder', ''); - this.inputComment._input.attr('placeholder', ''); - this.inputAuthor._input.attr('placeholder', ''); - } + this.inputTitle._input.attr('placeholder', mode.isEdit ? this.txtAddText : ''); + this.inputTags._input.attr('placeholder', mode.isEdit ? this.txtAddText : ''); + this.inputSubject._input.attr('placeholder', mode.isEdit ? this.txtAddText : ''); + this.inputComment._input.attr('placeholder', mode.isEdit ? this.txtAddText : ''); + this.inputAuthor._input.attr('placeholder', mode.isEdit ? this.txtAddAuthor : ''); this.SetDisabled(); return this; }, + setPreviewMode: function(mode) { + this._state.disableEditing = mode; + }, + _onGetDocInfoStart: function() { var me = this; this.infoObj = {PageCount: 0, WordsCount: 0, ParagraphCount: 0, SymbolsCount: 0, SymbolsWSCount:0}; @@ -1804,20 +1817,31 @@ define([ }, onLockCore: function(lock) { - this._locked = lock; + this._state._locked = lock; this.updateFileInfo(); }, + onChangeProtectDocument: function(props) { + if (!props) { + var docprotect = DE.getController('DocProtection'); + props = docprotect ? docprotect.getDocProps() : null; + } + if (props) { + this._state.docProtection = props; + } + }, + SetDisabled: function() { - var disable = !this.mode.isEdit || this._locked; + var isProtected = this._state.docProtection.isReadOnly || this._state.docProtection.isFormsOnly || this._state.docProtection.isCommentsOnly; + var disable = !this.mode.isEdit || this._state._locked || isProtected || this._state.disableEditing; this.inputTitle.setDisabled(disable); this.inputTags.setDisabled(disable); this.inputSubject.setDisabled(disable); this.inputComment.setDisabled(disable); this.inputAuthor.setDisabled(disable); - this.tblAuthor.find('.close').toggleClass('disabled', this._locked); + this.tblAuthor.find('.close').toggleClass('disabled', this._state._locked); this.tblAuthor.toggleClass('disabled', disable); - this.btnApply.setDisabled(this._locked); + this.btnApply.setDisabled(this._state._locked); }, applySettings: function() { From 9ee9022c9e25908f5de5d3efc7966ec9fa1dbb6d Mon Sep 17 00:00:00 2001 From: OVSharova Date: Wed, 19 Oct 2022 21:46:51 +0300 Subject: [PATCH 11/32] bug 55070 --- apps/common/main/resources/less/common.less | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/apps/common/main/resources/less/common.less b/apps/common/main/resources/less/common.less index ab60811d9..f499c45b6 100644 --- a/apps/common/main/resources/less/common.less +++ b/apps/common/main/resources/less/common.less @@ -230,12 +230,18 @@ label { color: @text-normal; } } +input.form-control:-ms-input-placeholder { + color: @text-tertiary-ie; +} textarea { background-color: @background-normal-ie; background-color: @background-normal; color: @text-normal-ie; color: @text-normal; + &:-ms-input-placeholder { + color: @text-tertiary-ie; + } .placeholder(); } From 0ff0ed3a156f967dc62df7e2c905020f1c4478b1 Mon Sep 17 00:00:00 2001 From: OVSharova Date: Wed, 19 Oct 2022 22:32:08 +0300 Subject: [PATCH 12/32] bug 55070 --- apps/common/main/resources/less/common.less | 3 --- apps/common/main/resources/less/input.less | 4 ++++ 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/apps/common/main/resources/less/common.less b/apps/common/main/resources/less/common.less index f499c45b6..aee84bd0f 100644 --- a/apps/common/main/resources/less/common.less +++ b/apps/common/main/resources/less/common.less @@ -230,9 +230,6 @@ label { color: @text-normal; } } -input.form-control:-ms-input-placeholder { - color: @text-tertiary-ie; -} textarea { background-color: @background-normal-ie; diff --git a/apps/common/main/resources/less/input.less b/apps/common/main/resources/less/input.less index 9a2c93a5a..195250b64 100644 --- a/apps/common/main/resources/less/input.less +++ b/apps/common/main/resources/less/input.less @@ -116,6 +116,10 @@ input[type="text"]::selection, textarea::selection { color: @text-inverse; } +input.form-control:-ms-input-placeholder { + color: @text-tertiary-ie; +} + textarea.form-control:focus { //border-color: @border-control-focus; } From dd01e61d7db1bdf2eb6a16a449914cffb9429adc Mon Sep 17 00:00:00 2001 From: OVSharova Date: Wed, 19 Oct 2022 22:37:51 +0300 Subject: [PATCH 13/32] bug 55070 --- apps/common/main/resources/less/input.less | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/apps/common/main/resources/less/input.less b/apps/common/main/resources/less/input.less index 195250b64..f0478c568 100644 --- a/apps/common/main/resources/less/input.less +++ b/apps/common/main/resources/less/input.less @@ -9,7 +9,9 @@ border: @scaled-one-px-value solid @border-regular-control; background-color: @background-normal-ie; background-color: @background-normal; - + &:-ms-input-placeholder { + color: @text-tertiary-ie; + } &:focus { border-color: @border-control-focus-ie; border-color: @border-control-focus; @@ -116,10 +118,6 @@ input[type="text"]::selection, textarea::selection { color: @text-inverse; } -input.form-control:-ms-input-placeholder { - color: @text-tertiary-ie; -} - textarea.form-control:focus { //border-color: @border-control-focus; } From a067234b877e3ef2e7b50ef5ed446a71c3653294 Mon Sep 17 00:00:00 2001 From: SergeyEzhin Date: Thu, 20 Oct 2022 12:46:24 +0400 Subject: [PATCH 14/32] [DE mobile] Correct imports f7 and searchbar --- apps/common/mobile/lib/view/Search.jsx | 13 ++----------- apps/documenteditor/mobile/src/app.js | 5 ++--- .../documenteditor/mobile/src/controller/Search.jsx | 7 +++---- 3 files changed, 7 insertions(+), 18 deletions(-) diff --git a/apps/common/mobile/lib/view/Search.jsx b/apps/common/mobile/lib/view/Search.jsx index 9b17fd19d..7123cd6ed 100644 --- a/apps/common/mobile/lib/view/Search.jsx +++ b/apps/common/mobile/lib/view/Search.jsx @@ -1,13 +1,9 @@ import React, { Component } from 'react'; -import { Popover, Popup, View, Page, List, ListItem, Navbar, NavRight, Link, f7 } from 'framework7-react'; -import { Toggle } from 'framework7-react'; -// import { f7 } from 'framework7-react/shared/f7.js'; -// import { Dom7 } from 'framework7'; +import { Popover, Popup, View, f7 } from 'framework7-react'; import { Device } from '../../../../common/mobile/utils/device'; import { observable, runInAction } from "mobx"; import { observer } from "mobx-react"; -import Searchbar from 'framework7/components/searchbar' const searchOptions = observable({ usereplace: false, @@ -106,13 +102,8 @@ class SearchView extends Component { $editor.on('pointerdown', this.onEditorTouchStart); $editor.on('pointerup', this.onEditorTouchEnd); - // if(!this.searchbar) { - // // f7.searchbar.get('.searchbar'); - // // this.searchbar = Searchbar.get('.searchbar'); - // } - if(!this.searchbar) { - this.searchbar = Searchbar.create({ + this.searchbar = f7.searchbar.create({ el: '.searchbar', customSearch: true, expandable: true, diff --git a/apps/documenteditor/mobile/src/app.js b/apps/documenteditor/mobile/src/app.js index 52d790bfd..d7621a7ff 100644 --- a/apps/documenteditor/mobile/src/app.js +++ b/apps/documenteditor/mobile/src/app.js @@ -3,9 +3,8 @@ import React, { Suspense } from 'react'; import { createRoot } from 'react-dom/client'; // Import Framework7 -// framework7/lite-bundle -import Framework7 from 'framework7/lite'; -import { Dom7 } from 'framework7/lite'; +import Framework7 from 'framework7/lite-bundle'; +import { Dom7 } from 'framework7/lite-bundle'; window.$$ = Dom7; // Import Framework7-React Plugin diff --git a/apps/documenteditor/mobile/src/controller/Search.jsx b/apps/documenteditor/mobile/src/controller/Search.jsx index ec53012a2..412a7d774 100644 --- a/apps/documenteditor/mobile/src/controller/Search.jsx +++ b/apps/documenteditor/mobile/src/controller/Search.jsx @@ -4,7 +4,6 @@ import { SearchController, SearchView, SearchSettingsView } from '../../../../co import { withTranslation } from 'react-i18next'; import { Device } from '../../../../common/mobile/utils/device'; import { observer, inject } from "mobx-react"; -// import { f7 } from 'framework7-react/shared/f7.js'; class SearchSettings extends SearchSettingsView { constructor(props) { @@ -94,12 +93,12 @@ class DESearchView extends SearchView { const Search = withTranslation()(props => { const { t } = props; const _t = t('Settings', {returnObjects: true}); - // f7.searchbar.get('.searchbar')?.enabled && + useEffect(() => { - if(Device.phone) { + if(f7.searchbar.get('.searchbar')?.enabled && Device.phone) { const api = Common.EditorApi.get(); $$('.searchbar-input').focus(); - // api.asc_enableKeyEvents(false); + api.asc_enableKeyEvents(false); } }, []); From 8b438a0c15a8aa66dc0f47011a90cf0fadd3336c Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Thu, 20 Oct 2022 12:57:48 +0300 Subject: [PATCH 15/32] [PE] Fix position for special paste button (handle paste to slide list) --- .../main/app/controller/DocumentHolder.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/apps/presentationeditor/main/app/controller/DocumentHolder.js b/apps/presentationeditor/main/app/controller/DocumentHolder.js index 9ec97e84c..12e5e4da7 100644 --- a/apps/presentationeditor/main/app/controller/DocumentHolder.js +++ b/apps/presentationeditor/main/app/controller/DocumentHolder.js @@ -1178,7 +1178,7 @@ define([ pasteContainer = $('
'); - documentHolder.cmpEl.find('#id_main_view').append(pasteContainer); + documentHolder.cmpEl.append(pasteContainer); me.btnSpecialPaste = new Common.UI.Button({ parentEl: $('#id-document-holder-btn-special-paste'), @@ -1218,10 +1218,6 @@ define([ if (sdkPanelLeft.length) offsetLeft += (sdkPanelLeft.css('display') !== 'none') ? sdkPanelLeft.width() : 0; - var sdkPanelThumbs = documentHolder.cmpEl.find('#id_panel_thumbnails'); - if (sdkPanelThumbs.length) - offsetLeft += (sdkPanelThumbs.css('display') !== 'none') ? sdkPanelThumbs.width() : 0; - var showPoint = [Math.max(0, coord.asc_getX() + coord.asc_getWidth() + 3 - offsetLeft), coord.asc_getY() + coord.asc_getHeight() + 3]; pasteContainer.css({left: showPoint[0], top : showPoint[1]}); pasteContainer.show(); From b9b7a9d7e3e4b065ec109712fadc5a751fb3e9de Mon Sep 17 00:00:00 2001 From: SergeyEzhin Date: Thu, 20 Oct 2022 15:04:07 +0400 Subject: [PATCH 16/32] [PE SSE mobile] Corrected imports --- apps/presentationeditor/mobile/src/app.js | 12 ++++++------ .../mobile/src/controller/ContextMenu.jsx | 4 ++-- .../mobile/src/controller/Main.jsx | 2 +- .../src/controller/settings/ApplicationSettings.jsx | 2 +- .../mobile/src/store/appOptions.js | 2 +- .../mobile/src/view/edit/EditText.jsx | 2 +- .../mobile/src/view/settings/ApplicationSettings.jsx | 2 +- apps/spreadsheeteditor/mobile/src/app.js | 10 +++++----- .../mobile/src/controller/ContextMenu.jsx | 4 ++-- .../spreadsheeteditor/mobile/src/controller/Main.jsx | 2 +- .../mobile/src/controller/add/AddFunction.jsx | 4 +--- .../src/controller/settings/ApplicationSettings.jsx | 2 +- apps/spreadsheeteditor/mobile/src/page/app.jsx | 2 +- .../spreadsheeteditor/mobile/src/store/appOptions.js | 2 +- .../mobile/src/store/applicationSettings.js | 4 ++-- .../mobile/src/view/edit/EditCell.jsx | 2 +- .../mobile/src/view/edit/EditText.jsx | 2 +- 17 files changed, 29 insertions(+), 31 deletions(-) diff --git a/apps/presentationeditor/mobile/src/app.js b/apps/presentationeditor/mobile/src/app.js index 9a084c619..491d9bfa4 100644 --- a/apps/presentationeditor/mobile/src/app.js +++ b/apps/presentationeditor/mobile/src/app.js @@ -4,7 +4,7 @@ import { createRoot } from 'react-dom/client'; // Import Framework7 import Framework7 from 'framework7/lite-bundle'; -import { Dom7 } from 'framework7'; +import { Dom7 } from 'framework7/lite-bundle'; window.$$ = Dom7; // Import Framework7-React Plugin @@ -20,19 +20,19 @@ window.$ = jQuery; import('./less/app.less'); // Import App Component -import App from './page/app'; +import App from './page/app.jsx'; import { I18nextProvider } from 'react-i18next'; import i18n from './lib/i18n.js'; -import { Provider } from 'mobx-react' -import { stores } from './store/mainStore' -import { LocalStorage } from '../../../common/mobile/utils/LocalStorage'; +import { Provider } from 'mobx-react'; +import { stores } from './store/mainStore.js'; +// import { LocalStorage } from '../../../common/mobile/utils/LocalStorage'; const container = document.getElementById('app'); const root = createRoot(container); // Init F7 React Plugin -Framework7.use(Framework7React) +Framework7.use(Framework7React); // Mount React App root.render( diff --git a/apps/presentationeditor/mobile/src/controller/ContextMenu.jsx b/apps/presentationeditor/mobile/src/controller/ContextMenu.jsx index b49140d5b..478b8f917 100644 --- a/apps/presentationeditor/mobile/src/controller/ContextMenu.jsx +++ b/apps/presentationeditor/mobile/src/controller/ContextMenu.jsx @@ -2,11 +2,11 @@ import React, { useContext } from 'react'; import { f7 } from 'framework7-react'; import { inject, observer } from "mobx-react"; import { withTranslation} from 'react-i18next'; -import { LocalStorage } from '../../../../common/mobile/utils/LocalStorage'; +import { LocalStorage } from '../../../../common/mobile/utils/LocalStorage.mjs'; import ContextMenuController from '../../../../common/mobile/lib/controller/ContextMenu'; import { idContextMenuElement } from '../../../../common/mobile/lib/view/ContextMenu'; -import { Device } from '../../../../common/mobile/utils/device'; +// import { Device } from '../../../../common/mobile/utils/device'; import EditorUIController from '../lib/patch'; @inject ( stores => ({ diff --git a/apps/presentationeditor/mobile/src/controller/Main.jsx b/apps/presentationeditor/mobile/src/controller/Main.jsx index c9794e28a..dfaadb097 100644 --- a/apps/presentationeditor/mobile/src/controller/Main.jsx +++ b/apps/presentationeditor/mobile/src/controller/Main.jsx @@ -11,7 +11,7 @@ import { } from "../../../../common/mobile/lib/controller/collaboration/Comments"; import ErrorController from "./Error"; import LongActionsController from "./LongActions"; -import {LocalStorage} from "../../../../common/mobile/utils/LocalStorage"; +import {LocalStorage} from "../../../../common/mobile/utils/LocalStorage.mjs"; import About from '../../../../common/mobile/lib/view/About'; import PluginsController from '../../../../common/mobile/lib/controller/Plugins.jsx'; import { Device } from '../../../../common/mobile/utils/device'; diff --git a/apps/presentationeditor/mobile/src/controller/settings/ApplicationSettings.jsx b/apps/presentationeditor/mobile/src/controller/settings/ApplicationSettings.jsx index 93428d9e9..6a4682a7b 100644 --- a/apps/presentationeditor/mobile/src/controller/settings/ApplicationSettings.jsx +++ b/apps/presentationeditor/mobile/src/controller/settings/ApplicationSettings.jsx @@ -1,6 +1,6 @@ import React, { Component } from "react"; import { ApplicationSettings } from "../../view/settings/ApplicationSettings"; -import { LocalStorage } from '../../../../../common/mobile/utils/LocalStorage'; +import { LocalStorage } from '../../../../../common/mobile/utils/LocalStorage.mjs'; import {observer, inject} from "mobx-react"; import { Themes } from '../../../../../common/mobile/lib/controller/Themes.js'; diff --git a/apps/presentationeditor/mobile/src/store/appOptions.js b/apps/presentationeditor/mobile/src/store/appOptions.js index a79235abd..91c0077cb 100644 --- a/apps/presentationeditor/mobile/src/store/appOptions.js +++ b/apps/presentationeditor/mobile/src/store/appOptions.js @@ -1,5 +1,5 @@ import {action, observable, makeObservable} from 'mobx'; -import { LocalStorage } from '../../../../common/mobile/utils/LocalStorage'; +import { LocalStorage } from '../../../../common/mobile/utils/LocalStorage.mjs'; export class storeAppOptions { constructor() { diff --git a/apps/presentationeditor/mobile/src/view/edit/EditText.jsx b/apps/presentationeditor/mobile/src/view/edit/EditText.jsx index cf53d0d98..41e0d959f 100644 --- a/apps/presentationeditor/mobile/src/view/edit/EditText.jsx +++ b/apps/presentationeditor/mobile/src/view/edit/EditText.jsx @@ -4,7 +4,7 @@ import {f7, Swiper, View, SwiperSlide, List, ListItem, ListButton, ListInput, Ic import { useTranslation } from 'react-i18next'; import {Device} from '../../../../../common/mobile/utils/device'; import { ThemeColorPalette, CustomColorPicker } from '../../../../../common/mobile/lib/component/ThemeColorPalette.jsx'; -import { LocalStorage } from '../../../../../common/mobile/utils/LocalStorage'; +import { LocalStorage } from '../../../../../common/mobile/utils/LocalStorage.mjs'; import HighlightColorPalette from '../../../../../common/mobile/lib/component/HighlightColorPalette.jsx'; const EditText = props => { diff --git a/apps/presentationeditor/mobile/src/view/settings/ApplicationSettings.jsx b/apps/presentationeditor/mobile/src/view/settings/ApplicationSettings.jsx index 1133fd74a..d16ad8151 100644 --- a/apps/presentationeditor/mobile/src/view/settings/ApplicationSettings.jsx +++ b/apps/presentationeditor/mobile/src/view/settings/ApplicationSettings.jsx @@ -3,7 +3,7 @@ import { observer, inject } from "mobx-react"; import {f7, Page, Navbar, List, ListItem, BlockTitle, Toggle } from "framework7-react"; import { useTranslation } from "react-i18next"; import { Themes } from '../../../../../common/mobile/lib/controller/Themes.js'; -import { LocalStorage } from "../../../../../common/mobile/utils/LocalStorage.js"; +import { LocalStorage } from "../../../../../common/mobile/utils/LocalStorage.mjs"; const PageApplicationSettings = props => { const { t } = useTranslation(); diff --git a/apps/spreadsheeteditor/mobile/src/app.js b/apps/spreadsheeteditor/mobile/src/app.js index fb100c1a6..be9d16e5e 100644 --- a/apps/spreadsheeteditor/mobile/src/app.js +++ b/apps/spreadsheeteditor/mobile/src/app.js @@ -4,7 +4,7 @@ import { createRoot } from 'react-dom/client'; // Import Framework7 import Framework7 from 'framework7/lite-bundle'; -import { Dom7 } from 'framework7'; +import { Dom7 } from 'framework7/lite-bundle'; window.$$ = Dom7; // Import Framework7-React Plugin @@ -19,16 +19,16 @@ window.$ = jQuery; // Import App Custom Styles import('./less/app.less'); -import '../../../../../sdkjs/cell/css/main-mobile.css' +import '../../../../../sdkjs/cell/css/main-mobile.css'; // Import App Component -import App from './page/app'; +import App from './page/app.jsx'; import { I18nextProvider } from 'react-i18next'; import i18n from './lib/i18n.js'; import { Provider } from 'mobx-react'; -import { stores } from './store/mainStore'; -import { LocalStorage } from '../../../common/mobile/utils/LocalStorage'; +import { stores } from './store/mainStore.js'; +// import { LocalStorage } from '../../../common/mobile/utils/LocalStorage.mjs'; const container = document.getElementById('app'); const root = createRoot(container); diff --git a/apps/spreadsheeteditor/mobile/src/controller/ContextMenu.jsx b/apps/spreadsheeteditor/mobile/src/controller/ContextMenu.jsx index ad47c5568..ed1019384 100644 --- a/apps/spreadsheeteditor/mobile/src/controller/ContextMenu.jsx +++ b/apps/spreadsheeteditor/mobile/src/controller/ContextMenu.jsx @@ -2,11 +2,11 @@ import React, { useContext } from 'react'; import { f7 } from 'framework7-react'; import { inject, observer } from "mobx-react"; import { withTranslation} from 'react-i18next'; -import { LocalStorage } from '../../../../common/mobile/utils/LocalStorage'; +import { LocalStorage } from '../../../../common/mobile/utils/LocalStorage.mjs'; import ContextMenuController from '../../../../common/mobile/lib/controller/ContextMenu'; import { idContextMenuElement } from '../../../../common/mobile/lib/view/ContextMenu'; -import { Device } from '../../../../common/mobile/utils/device'; +// import { Device } from '../../../../common/mobile/utils/device'; import EditorUIController from '../lib/patch'; @inject (stores => ({ diff --git a/apps/spreadsheeteditor/mobile/src/controller/Main.jsx b/apps/spreadsheeteditor/mobile/src/controller/Main.jsx index 6eefa6a53..c6afe7618 100644 --- a/apps/spreadsheeteditor/mobile/src/controller/Main.jsx +++ b/apps/spreadsheeteditor/mobile/src/controller/Main.jsx @@ -12,7 +12,7 @@ import { EditCommentController, ViewCommentsSheetsController } from "../../../../common/mobile/lib/controller/collaboration/Comments"; -import {LocalStorage} from "../../../../common/mobile/utils/LocalStorage"; +import {LocalStorage} from "../../../../common/mobile/utils/LocalStorage.mjs"; import LongActionsController from "./LongActions"; import ErrorController from "./Error"; import app from "../page/app"; diff --git a/apps/spreadsheeteditor/mobile/src/controller/add/AddFunction.jsx b/apps/spreadsheeteditor/mobile/src/controller/add/AddFunction.jsx index 46e39c371..a6adeb1da 100644 --- a/apps/spreadsheeteditor/mobile/src/controller/add/AddFunction.jsx +++ b/apps/spreadsheeteditor/mobile/src/controller/add/AddFunction.jsx @@ -2,9 +2,7 @@ import React, {Component} from 'react'; import {observer, inject} from "mobx-react"; import { f7 } from 'framework7-react'; import {Device} from '../../../../../common/mobile/utils/device'; - -import {LocalStorage} from '../../../../../common/mobile/utils/LocalStorage'; - +import {LocalStorage} from '../../../../../common/mobile/utils/LocalStorage.mjs'; import {AddFunction} from '../../view/add/AddFunction'; class _FunctionGroups extends Component { diff --git a/apps/spreadsheeteditor/mobile/src/controller/settings/ApplicationSettings.jsx b/apps/spreadsheeteditor/mobile/src/controller/settings/ApplicationSettings.jsx index 1db802bf4..049a1142e 100644 --- a/apps/spreadsheeteditor/mobile/src/controller/settings/ApplicationSettings.jsx +++ b/apps/spreadsheeteditor/mobile/src/controller/settings/ApplicationSettings.jsx @@ -1,7 +1,7 @@ import React, { Component } from "react"; import { ApplicationSettings } from "../../view/settings/ApplicationSettings"; import {observer, inject} from "mobx-react"; -import { LocalStorage } from '../../../../../common/mobile/utils/LocalStorage'; +import { LocalStorage } from '../../../../../common/mobile/utils/LocalStorage.mjs'; import {FunctionGroups} from '../../controller/add/AddFunction'; class ApplicationSettingsController extends Component { diff --git a/apps/spreadsheeteditor/mobile/src/page/app.jsx b/apps/spreadsheeteditor/mobile/src/page/app.jsx index 02bd3f4f0..561f07c3c 100644 --- a/apps/spreadsheeteditor/mobile/src/page/app.jsx +++ b/apps/spreadsheeteditor/mobile/src/page/app.jsx @@ -12,7 +12,7 @@ import routes from '../router/routes.js'; import '../../../../common/main/lib/util/utils.js'; import '../../../../common/main/lib/util/LanguageInfo.js'; -import {LocalStorage} from '../../../../common/mobile/utils/LocalStorage.js'; +import {LocalStorage} from '../../../../common/mobile/utils/LocalStorage.mjs'; import Notifications from '../../../../common/mobile/utils/notifications.js'; import {MainController} from '../controller/Main'; import {Device} from '../../../../common/mobile/utils/device'; diff --git a/apps/spreadsheeteditor/mobile/src/store/appOptions.js b/apps/spreadsheeteditor/mobile/src/store/appOptions.js index 7c0c94181..0ce848826 100644 --- a/apps/spreadsheeteditor/mobile/src/store/appOptions.js +++ b/apps/spreadsheeteditor/mobile/src/store/appOptions.js @@ -1,5 +1,5 @@ import {action, observable, makeObservable} from 'mobx'; -import { LocalStorage } from '../../../../common/mobile/utils/LocalStorage'; +import { LocalStorage } from '../../../../common/mobile/utils/LocalStorage.mjs'; export class storeAppOptions { constructor() { diff --git a/apps/spreadsheeteditor/mobile/src/store/applicationSettings.js b/apps/spreadsheeteditor/mobile/src/store/applicationSettings.js index fdf83b3b3..5638cad5d 100644 --- a/apps/spreadsheeteditor/mobile/src/store/applicationSettings.js +++ b/apps/spreadsheeteditor/mobile/src/store/applicationSettings.js @@ -1,10 +1,10 @@ import {makeObservable, action, observable} from 'mobx'; -import { LocalStorage } from '../../../../common/mobile/utils/LocalStorage'; +import { LocalStorage } from '../../../../common/mobile/utils/LocalStorage.mjs'; export class storeApplicationSettings { constructor() { makeObservable(this, { - unitMeasurement: observable, + unitMeasurement: observable, macrosMode: observable, macrosRequest: observable, formulaLang: observable, diff --git a/apps/spreadsheeteditor/mobile/src/view/edit/EditCell.jsx b/apps/spreadsheeteditor/mobile/src/view/edit/EditCell.jsx index 80aaf3b24..df35c3045 100644 --- a/apps/spreadsheeteditor/mobile/src/view/edit/EditCell.jsx +++ b/apps/spreadsheeteditor/mobile/src/view/edit/EditCell.jsx @@ -4,7 +4,7 @@ import {f7, List, ListItem, Icon, Row, Button, Page, Navbar, Segmented, BlockTit import { useTranslation } from 'react-i18next'; import {Device} from '../../../../../common/mobile/utils/device'; import { ThemeColorPalette, CustomColorPicker } from '../../../../../common/mobile/lib/component/ThemeColorPalette.jsx'; -import { LocalStorage } from '../../../../../common/mobile/utils/LocalStorage'; +import { LocalStorage } from '../../../../../common/mobile/utils/LocalStorage.mjs'; const EditCell = props => { const isAndroid = Device.android; diff --git a/apps/spreadsheeteditor/mobile/src/view/edit/EditText.jsx b/apps/spreadsheeteditor/mobile/src/view/edit/EditText.jsx index 3676ba4ec..6d4ada536 100644 --- a/apps/spreadsheeteditor/mobile/src/view/edit/EditText.jsx +++ b/apps/spreadsheeteditor/mobile/src/view/edit/EditText.jsx @@ -4,7 +4,7 @@ import {f7, List, ListItem, Icon, Row, Button, Page, Navbar, NavRight, Segmented import { useTranslation } from 'react-i18next'; import {Device} from '../../../../../common/mobile/utils/device'; import { ThemeColorPalette, CustomColorPicker } from '../../../../../common/mobile/lib/component/ThemeColorPalette.jsx'; -import { LocalStorage } from '../../../../../common/mobile/utils/LocalStorage'; +import { LocalStorage } from '../../../../../common/mobile/utils/LocalStorage.mjs'; const EditText = props => { const isAndroid = Device.android; From 3b2162dc612760a790c77743f8124f2dac140bc7 Mon Sep 17 00:00:00 2001 From: Alexei Koshelev Date: Thu, 20 Oct 2022 14:49:59 +0300 Subject: [PATCH 17/32] Updating search in Combobox component --- apps/common/main/lib/component/ComboBox.js | 5 ++++- apps/common/main/lib/component/Menu.js | 8 ++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/apps/common/main/lib/component/ComboBox.js b/apps/common/main/lib/component/ComboBox.js index 63e7a524c..1eb060eb2 100644 --- a/apps/common/main/lib/component/ComboBox.js +++ b/apps/common/main/lib/component/ComboBox.js @@ -407,8 +407,9 @@ define([ }, selectCandidate: function() { - var index = this._search.index || 0, + var index = (this._search.index && this._search.index != -1) ? this._search.index : 0, re = new RegExp('^' + ((this._search.full) ? this._search.text : this._search.char), 'i'), + isFirstCharsEqual = re.test(this.store.at(index).get(this.displayField)), itemCandidate, idxCandidate; for (var i=0; iindex) { itemCandidate = item; diff --git a/apps/common/main/lib/component/Menu.js b/apps/common/main/lib/component/Menu.js index 580a73e72..c58a1b5f1 100644 --- a/apps/common/main/lib/component/Menu.js +++ b/apps/common/main/lib/component/Menu.js @@ -472,8 +472,9 @@ define([ }, selectCandidate: function() { - var index = this._search.index || 0, + var index = (this._search.index && this._search.index != -1) ? this._search.index : 0, re = new RegExp('^' + ((this._search.full) ? this._search.text : this._search.char), 'i'), + isFirstCharsEqual = re.test(this.items[index].caption), itemCandidate, idxCandidate; for (var i=0; iindex) { itemCandidate = item; @@ -1053,6 +1056,7 @@ define([ selectCandidate: function() { var index = (this._search.index && this._search.index != -1) ? this._search.index : 0, re = new RegExp('^' + ((this._search.full) ? this._search.text : this._search.char), 'i'), + isFirstCharsEqual = re.test(this.items[index].caption), itemCandidate, idxCandidate; for (var i=0; iindex) { From db8816c05fbe2ec990621d5728e44d760e31cd7d Mon Sep 17 00:00:00 2001 From: Alexei Koshelev Date: Sat, 22 Oct 2022 21:33:14 +0300 Subject: [PATCH 18/32] [SSE] Lock comments when selected not a cell --- apps/spreadsheeteditor/main/app/controller/Toolbar.js | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/apps/spreadsheeteditor/main/app/controller/Toolbar.js b/apps/spreadsheeteditor/main/app/controller/Toolbar.js index ef1487620..8568d7865 100644 --- a/apps/spreadsheeteditor/main/app/controller/Toolbar.js +++ b/apps/spreadsheeteditor/main/app/controller/Toolbar.js @@ -2879,6 +2879,13 @@ define([ toolbar.lockToolbar(Common.enumLock['Objects'], !!this._state.wsProps['Objects']); toolbar.lockToolbar(Common.enumLock['FormatCells'], !!this._state.wsProps['FormatCells']); + // info.asc_getComments()===null - has comment, but no permissions to view it + toolbar.lockToolbar(Common.enumLock.commentLock, + (selectionType == Asc.c_oAscSelectionType.RangeCells) && (!info.asc_getComments() || info.asc_getComments().length>0 || info.asc_getLocked()) + || this.toolbar.mode.compatibleFeatures && (selectionType != Asc.c_oAscSelectionType.RangeCells) + || selectionType != Asc.c_oAscSelectionType.RangeCells, + { array: this.btnsComment }); + if (editOptionsDisabled) return; /* read font params */ @@ -3234,10 +3241,6 @@ define([ } toolbar.lockToolbar(Common.enumLock.itemsDisabled, !enabled, {array: [toolbar.btnDeleteCell]}); - // info.asc_getComments()===null - has comment, but no permissions to view it - toolbar.lockToolbar(Common.enumLock.commentLock, (selectionType == Asc.c_oAscSelectionType.RangeCells) && (!info.asc_getComments() || info.asc_getComments().length>0 || info.asc_getLocked()) || - this.toolbar.mode.compatibleFeatures && (selectionType != Asc.c_oAscSelectionType.RangeCells), - { array: this.btnsComment }); toolbar.lockToolbar(Common.enumLock.headerLock, info.asc_getLockedHeaderFooter(), {array: this.toolbar.btnsEditHeader}); }, From 2870705ddf48535f7ba95b0bf1948bedce1815bc Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Mon, 24 Oct 2022 11:51:44 +0300 Subject: [PATCH 19/32] Update translation --- apps/documenteditor/main/locale/en.json | 10 +- apps/documenteditor/main/locale/id.json | 22 +++ apps/documenteditor/main/locale/it.json | 6 + apps/documenteditor/main/locale/ja.json | 113 ++++++++++++ apps/documenteditor/main/locale/pt-pt.json | 30 +++- apps/documenteditor/main/locale/pt.json | 57 ++++++ apps/documenteditor/main/locale/ru.json | 166 +++++++++++++++++- apps/documenteditor/main/locale/zh.json | 14 ++ apps/presentationeditor/main/locale/en.json | 10 +- apps/presentationeditor/main/locale/id.json | 37 +++- .../presentationeditor/main/locale/pt-pt.json | 35 ++++ apps/presentationeditor/main/locale/pt.json | 61 +++++++ apps/presentationeditor/main/locale/ru.json | 166 +++++++++++++++++- apps/spreadsheeteditor/main/locale/en.json | 10 +- apps/spreadsheeteditor/main/locale/id.json | 13 ++ apps/spreadsheeteditor/main/locale/ja.json | 4 +- apps/spreadsheeteditor/main/locale/pt-pt.json | 17 +- apps/spreadsheeteditor/main/locale/pt.json | 73 ++++++++ apps/spreadsheeteditor/main/locale/ru.json | 166 +++++++++++++++++- 19 files changed, 983 insertions(+), 27 deletions(-) diff --git a/apps/documenteditor/main/locale/en.json b/apps/documenteditor/main/locale/en.json index 2666dfc09..9bbcdba05 100644 --- a/apps/documenteditor/main/locale/en.json +++ b/apps/documenteditor/main/locale/en.json @@ -151,7 +151,7 @@ "Common.define.smartArt.textBendingPictureBlocks": "Bending Picture Blocks", "Common.define.smartArt.textBendingPictureCaption": "Bending Picture Caption", "Common.define.smartArt.textBendingPictureCaptionList": "Bending Picture Caption List", - "Common.define.smartArt.textBendingPictureSemiTranparentText": "Bending Picture Semi-Tranparent Text", + "Common.define.smartArt.textBendingPictureSemiTranparentText": "Bending Picture Semi-Transparent Text", "Common.define.smartArt.textBlockCycle": "Block Cycle", "Common.define.smartArt.textBubblePictureList": "Bubble Picture List", "Common.define.smartArt.textCaptionedPictures": "Captioned Pictures", @@ -715,6 +715,7 @@ "DE.Controllers.LeftMenu.warnReplaceString": "{0} is not a valid special character for the replacement field.", "DE.Controllers.Main.applyChangesTextText": "Loading the changes...", "DE.Controllers.Main.applyChangesTitleText": "Loading the Changes", + "DE.Controllers.Main.confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", "DE.Controllers.Main.convertationTimeoutText": "Conversion timeout exceeded.", "DE.Controllers.Main.criticalErrorExtText": "Press \"OK\" to return to document list.", "DE.Controllers.Main.criticalErrorTitle": "Error", @@ -804,6 +805,7 @@ "DE.Controllers.Main.textClose": "Close", "DE.Controllers.Main.textCloseTip": "Click to close the tip", "DE.Controllers.Main.textContactUs": "Contact sales", + "DE.Controllers.Main.textContinue": "Continue", "DE.Controllers.Main.textConvertEquation": "This equation was created with an old version of the equation editor which is no longer supported. To edit it, convert the equation to the Office Math ML format.
Convert now?", "DE.Controllers.Main.textCustomLoader": "Please note that according to the terms of the license you are not entitled to change the loader.
Please contact our Sales Department to get a quote.", "DE.Controllers.Main.textDisconnect": "Connection is lost", @@ -824,6 +826,7 @@ "DE.Controllers.Main.textStrict": "Strict mode", "DE.Controllers.Main.textTryUndoRedo": "The Undo/Redo functions are disabled for the Fast co-editing mode.
Click the 'Strict mode' button to switch to the Strict co-editing mode to edit the file without other users interference and send your changes only after you save them. You can switch between the co-editing modes using the editor Advanced settings.", "DE.Controllers.Main.textTryUndoRedoWarn": "The Undo/Redo functions are disabled for the Fast co-editing mode.", + "DE.Controllers.Main.textUndo": "Undo", "DE.Controllers.Main.titleLicenseExp": "License expired", "DE.Controllers.Main.titleServerVersion": "Editor updated", "DE.Controllers.Main.titleUpdateVersion": "Version changed", @@ -1092,9 +1095,6 @@ "DE.Controllers.Main.warnNoLicense": "You've reached the limit for simultaneous connections to %1 editors. This document will be opened for viewing only.
Contact %1 sales team for personal upgrade terms.", "DE.Controllers.Main.warnNoLicenseUsers": "You've reached the user limit for %1 editors. Contact %1 sales team for personal upgrade terms.", "DE.Controllers.Main.warnProcessRightsChange": "You have been denied the right to edit the file.", - "DE.Controllers.Main.confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "DE.Controllers.Main.textUndo": "Undo", - "DE.Controllers.Main.textContinue": "Continue", "DE.Controllers.Navigation.txtBeginning": "Beginning of document", "DE.Controllers.Navigation.txtGotoBeginning": "Go to the beginning of the document", "DE.Controllers.Search.notcriticalErrorTitle": "Warning", @@ -1950,8 +1950,8 @@ "DE.Views.FileMenuPanels.DocumentInfo.txtStatistics": "Statistics", "DE.Views.FileMenuPanels.DocumentInfo.txtSubject": "Subject", "DE.Views.FileMenuPanels.DocumentInfo.txtSymbols": "Symbols", - "DE.Views.FileMenuPanels.DocumentInfo.txtTitle": "Title", "DE.Views.FileMenuPanels.DocumentInfo.txtTags": "Tags", + "DE.Views.FileMenuPanels.DocumentInfo.txtTitle": "Title", "DE.Views.FileMenuPanels.DocumentInfo.txtUploaded": "Uploaded", "DE.Views.FileMenuPanels.DocumentInfo.txtWords": "Words", "DE.Views.FileMenuPanels.DocumentInfo.txtYes": "Yes", diff --git a/apps/documenteditor/main/locale/id.json b/apps/documenteditor/main/locale/id.json index 3417d7177..44f1a0351 100644 --- a/apps/documenteditor/main/locale/id.json +++ b/apps/documenteditor/main/locale/id.json @@ -588,6 +588,7 @@ "DE.Controllers.Main.errorMailMergeLoadFile": "Loading dokumen gagal. Silakan coba dengan file lain.", "DE.Controllers.Main.errorMailMergeSaveFile": "Merge gagal.", "DE.Controllers.Main.errorNoTOC": "Tidak ada daftar isi yang harus diperbarui. Anda dapat menyisipkan satu daftar isi dari tab Referensi.", + "DE.Controllers.Main.errorPasswordIsNotCorrect": "Kata sandi yang Anda masukkan tidak tepat.
Pastikan CAPS LOCK sudah mati dan pastikan telah menggunakan huruf besar dengan tepat.", "DE.Controllers.Main.errorProcessSaveResult": "Gagal menyimpan.", "DE.Controllers.Main.errorServerVersion": "Versi editor sudah di update. Halaman akan dimuat ulang untuk menerapkan perubahan.", "DE.Controllers.Main.errorSessionAbsolute": "Waktu edit dokumen sudah selesai. Silakan muat ulang halaman.", @@ -1447,6 +1448,13 @@ "DE.Views.DateTimeDialog.textLang": "Bahasa", "DE.Views.DateTimeDialog.textUpdate": "Update secara otomatis", "DE.Views.DateTimeDialog.txtTitle": "Tanggal & Jam", + "DE.Views.DocProtection.hintProtectDoc": "Proteksi dokumen", + "DE.Views.DocProtection.txtDocProtectedComment": "Dokumen terproteksi.
Anda hanya bisa menyisipkan komentar pada dokumen ini.", + "DE.Views.DocProtection.txtDocProtectedForms": "Dokumen terproteksi.
Anda hanya bisa mengisi formulir pada dokumen ini.", + "DE.Views.DocProtection.txtDocProtectedTrack": "Dokumen terproteksi.
Anda dapat menyunting dokumen ini, tapi semua perubahan akan dilacak.", + "DE.Views.DocProtection.txtDocProtectedView": "Dokumen terproteksi.
Anda hanya bisa melihat dokumen ini.", + "DE.Views.DocProtection.txtDocUnlockDescription": "Masukkan kata sandi untuk membuka proteksi dokumen", + "DE.Views.DocProtection.txtProtectDoc": "Proteksi Dokumen", "DE.Views.DocumentHolder.aboveText": "Di atas", "DE.Views.DocumentHolder.addCommentText": "Tambahkan Komentar", "DE.Views.DocumentHolder.advancedDropCapText": "Pengaturan Drop Cap", @@ -2401,6 +2409,18 @@ "DE.Views.ParagraphSettingsAdvanced.tipTop": "Buat Pembatas Atas Saja", "DE.Views.ParagraphSettingsAdvanced.txtAutoText": "Otomatis", "DE.Views.ParagraphSettingsAdvanced.txtNoBorders": "Tidak ada pembatas", + "DE.Views.ProtectDialog.textComments": "Komentar", + "DE.Views.ProtectDialog.textForms": "Formulir isian", + "DE.Views.ProtectDialog.textReview": "Perubahan terlacak", + "DE.Views.ProtectDialog.textView": "Tidak ada perubahan (Baca saja)", + "DE.Views.ProtectDialog.txtAllow": "Izinkan jenis penyuntingan ini saja pada dokumen", + "DE.Views.ProtectDialog.txtIncorrectPwd": "Kata sandi konfirmasi tidak sama", + "DE.Views.ProtectDialog.txtOptional": "opsional", + "DE.Views.ProtectDialog.txtPassword": "Kata Sandi", + "DE.Views.ProtectDialog.txtProtect": "Proteksi", + "DE.Views.ProtectDialog.txtRepeat": "Ulangi kata sandi", + "DE.Views.ProtectDialog.txtTitle": "Proteksi", + "DE.Views.ProtectDialog.txtWarning": "Peringatan: Tidak bisa dipulihkan jika Anda kehilangan atau lupa kata sandi. Simpan di tempat yang aman.", "DE.Views.RightMenu.txtChartSettings": "Pengaturan Bagan", "DE.Views.RightMenu.txtFormSettings": "Pengaturan Form", "DE.Views.RightMenu.txtHeaderFooterSettings": "Pengaturan Header dan Footer", @@ -2885,6 +2905,7 @@ "DE.Views.Toolbar.tipIncPrLeft": "Tambahkan Indentasi", "DE.Views.Toolbar.tipInsertChart": "Sisipkan Bagan", "DE.Views.Toolbar.tipInsertEquation": "Masukkan Persamaan", + "DE.Views.Toolbar.tipInsertHorizontalText": "Sisipkan kotak teks horizontal", "DE.Views.Toolbar.tipInsertImage": "Sisipkan Gambar", "DE.Views.Toolbar.tipInsertNum": "Sisipkan Nomor Halaman", "DE.Views.Toolbar.tipInsertShape": "Sisipkan Bentuk Otomatis", @@ -2892,6 +2913,7 @@ "DE.Views.Toolbar.tipInsertTable": "Sisipkan Tabel", "DE.Views.Toolbar.tipInsertText": "Sisipkan kotak teks", "DE.Views.Toolbar.tipInsertTextArt": "Sisipkan Text Art", + "DE.Views.Toolbar.tipInsertVerticalText": "Sisipkan kotak teks vertikal", "DE.Views.Toolbar.tipLineNumbers": "Tampilkan nomor garis", "DE.Views.Toolbar.tipLineSpace": "Spasi Antar Baris Paragraf", "DE.Views.Toolbar.tipMailRecepients": "Merge email", diff --git a/apps/documenteditor/main/locale/it.json b/apps/documenteditor/main/locale/it.json index 3ee00e229..af5e3f2ea 100644 --- a/apps/documenteditor/main/locale/it.json +++ b/apps/documenteditor/main/locale/it.json @@ -1838,6 +1838,7 @@ "DE.Views.FormSettings.textColor": "Colore bordo", "DE.Views.FormSettings.textComb": "Combinazione di caratteri", "DE.Views.FormSettings.textCombobox": "Casella combinata", + "DE.Views.FormSettings.textComplex": "Campo complesso", "DE.Views.FormSettings.textConnected": "Campi collegati", "DE.Views.FormSettings.textDelete": "Elimina", "DE.Views.FormSettings.textDisconnect": "Disconnetti", @@ -1876,11 +1877,13 @@ "DE.Views.FormSettings.textWidth": "‎Larghezza cella‎", "DE.Views.FormsTab.capBtnCheckBox": "Casella di controllo", "DE.Views.FormsTab.capBtnComboBox": "Casella combinata", + "DE.Views.FormsTab.capBtnComplex": "Campo complesso", "DE.Views.FormsTab.capBtnDownloadForm": "Scarica come oform", "DE.Views.FormsTab.capBtnDropDown": "Menù a discesca", "DE.Views.FormsTab.capBtnEmail": "Indirizzo email", "DE.Views.FormsTab.capBtnImage": "Immagine", "DE.Views.FormsTab.capBtnNext": "Campo successivo", + "DE.Views.FormsTab.capBtnPhone": "Numero di telefono", "DE.Views.FormsTab.capBtnPrev": "Campo precedente", "DE.Views.FormsTab.capBtnRadioBox": "Pulsante opzione", "DE.Views.FormsTab.capBtnSaveForm": "Salvare come oform", @@ -1897,10 +1900,13 @@ "DE.Views.FormsTab.textSubmited": "Modulo inviato con successo", "DE.Views.FormsTab.tipCheckBox": "Inserisci casella di controllo", "DE.Views.FormsTab.tipComboBox": "Inserisci una cella combinata", + "DE.Views.FormsTab.tipComplexField": "Inserisci campo complesso", "DE.Views.FormsTab.tipDownloadForm": "Scaricare un file come un documento OFORM compilabile", "DE.Views.FormsTab.tipDropDown": "Inserisci lista in basso espandibile", + "DE.Views.FormsTab.tipEmailField": " Inserisci indirizzo email", "DE.Views.FormsTab.tipImageField": "Inserisci immagine", "DE.Views.FormsTab.tipNextForm": "Vai al campo successivo", + "DE.Views.FormsTab.tipPhoneField": "Inserisci numero di telefono", "DE.Views.FormsTab.tipPrevForm": "Vai al campo precedente", "DE.Views.FormsTab.tipRadioBox": "Inserisci pulsante di opzione", "DE.Views.FormsTab.tipSaveForm": "Salvare un file come documento OFORM compilabile", diff --git a/apps/documenteditor/main/locale/ja.json b/apps/documenteditor/main/locale/ja.json index 2a3b6da15..a64aeb1e8 100644 --- a/apps/documenteditor/main/locale/ja.json +++ b/apps/documenteditor/main/locale/ja.json @@ -125,6 +125,84 @@ "Common.define.chartData.textScatterSmoothMarker": "マーカーと平滑線付き散布図", "Common.define.chartData.textStock": "株価チャート", "Common.define.chartData.textSurface": "表面", + "Common.define.smartArt.textAccentedPicture": "アクセント付きの図", + "Common.define.smartArt.textAccentProcess": "アクセント・プロセス", + "Common.define.smartArt.textAlternatingFlow": "波型ステップ", + "Common.define.smartArt.textAlternatingHexagons": "左右交替積み上げ六角形", + "Common.define.smartArt.textAlternatingPictureBlocks": "左右交替積み上げ画像ブロック", + "Common.define.smartArt.textAlternatingPictureCircles": "円形付き画像ジグザグ表示", + "Common.define.smartArt.textArchitectureLayout": "アーキテクチャ レイアウト", + "Common.define.smartArt.textArrowRibbon": "リボン状の矢印", + "Common.define.smartArt.textAscendingPictureAccentProcess": "アクセント画像付き上昇ステップ", + "Common.define.smartArt.textBalance": "バランス", + "Common.define.smartArt.textBasicBendingProcess": "基本蛇行ステップ", + "Common.define.smartArt.textBasicBlockList": "カード型リスト", + "Common.define.smartArt.textBasicChevronProcess": "プロセス", + "Common.define.smartArt.textBasicCycle": "基本の循環", + "Common.define.smartArt.textBasicMatrix": "基本マトリックス", + "Common.define.smartArt.textBasicPie": "円グラフ", + "Common.define.smartArt.textBasicProcess": "基本ステップ", + "Common.define.smartArt.textBasicPyramid": "基本ピラミッド", + "Common.define.smartArt.textBasicRadial": "基本放射", + "Common.define.smartArt.textBasicTarget": "ターゲット", + "Common.define.smartArt.textBasicTimeline": "タイムライン", + "Common.define.smartArt.textBasicVenn": "基本ベン図", + "Common.define.smartArt.textBendingPictureAccentList": "画像付きカード型リスト", + "Common.define.smartArt.textBendingPictureBlocks": "自動配置の画像ブロック", + "Common.define.smartArt.textBendingPictureCaption": "自動配置の表題付き画像", + "Common.define.smartArt.textBendingPictureCaptionList": "自動配置の表題付き画像レイアウト", + "Common.define.smartArt.textBendingPictureSemiTranparentText": "自動配置の半透明テキスト付き画像", + "Common.define.smartArt.textBlockCycle": "ボックス循環", + "Common.define.smartArt.textBubblePictureList": "バブル状画像リスト", + "Common.define.smartArt.textCaptionedPictures": "表題付き画像", + "Common.define.smartArt.textChevronAccentProcess": "アクセントステップ", + "Common.define.smartArt.textChevronList": "プロセス リスト", + "Common.define.smartArt.textCircleAccentTimeline": "円形組み合わせタイムライン", + "Common.define.smartArt.textCircleArrowProcess": "円形矢印プロセス", + "Common.define.smartArt.textCirclePictureHierarchy": "円形画像を使用した階層", + "Common.define.smartArt.textCircleProcess": "円形プロセス", + "Common.define.smartArt.textCircleRelationship": "円の関連付け", + "Common.define.smartArt.textCircularBendingProcess": "円形蛇行ステップ", + "Common.define.smartArt.textCircularPictureCallout": "円形画像を使った吹き出し", + "Common.define.smartArt.textClosedChevronProcess": "開始点強調型プロセス", + "Common.define.smartArt.textContinuousArrowProcess": "大きな矢印のプロセス", + "Common.define.smartArt.textContinuousBlockProcess": "矢印と長方形のプロセス", + "Common.define.smartArt.textContinuousCycle": "連続性強調循環", + "Common.define.smartArt.textContinuousPictureList": "矢印付き画像リスト", + "Common.define.smartArt.textConvergingArrows": "内向き矢印", + "Common.define.smartArt.textConvergingRadial": "集中", + "Common.define.smartArt.textConvergingText": "内向きテキスト", + "Common.define.smartArt.textCounterbalanceArrows": "対立とバランスの矢印", + "Common.define.smartArt.textCycle": "循環", + "Common.define.smartArt.textCycleMatrix": "循環マトリックス", + "Common.define.smartArt.textDescendingBlockList": "ブロックの降順リスト", + "Common.define.smartArt.textDescendingProcess": "降順プロセス", + "Common.define.smartArt.textDetailedProcess": "詳述プロセス", + "Common.define.smartArt.textDivergingArrows": "左右逆方向矢印", + "Common.define.smartArt.textDivergingRadial": "矢印付き放射", + "Common.define.smartArt.textEquation": "数式", + "Common.define.smartArt.textFramedTextPicture": "フレームに表示されるテキスト画像", + "Common.define.smartArt.textFunnel": "漏斗", + "Common.define.smartArt.textGear": "歯車", + "Common.define.smartArt.textGridMatrix": "グリッド マトリックス", + "Common.define.smartArt.textGroupedList": "グループ リスト", + "Common.define.smartArt.textHalfCircleOrganizationChart": "アーチ型線で飾られた組織図", + "Common.define.smartArt.textHexagonCluster": "蜂の巣状の六角形", + "Common.define.smartArt.textHexagonRadial": "六角形放射", + "Common.define.smartArt.textHierarchy": "階層", + "Common.define.smartArt.textHierarchyList": "階層リスト", + "Common.define.smartArt.textHorizontalBulletList": "横方向箇条書きリスト", + "Common.define.smartArt.textHorizontalHierarchy": "横方向階層", + "Common.define.smartArt.textHorizontalLabeledHierarchy": "ラベル付き横方向階層", + "Common.define.smartArt.textHorizontalMultiLevelHierarchy": "複数レベル対応の横方向階層", + "Common.define.smartArt.textHorizontalOrganizationChart": "水平方向の組織図", + "Common.define.smartArt.textHorizontalPictureList": "横方向画像リスト", + "Common.define.smartArt.textIncreasingArrowProcess": "上昇矢印のプロセス", + "Common.define.smartArt.textIncreasingCircleProcess": "上昇円プロセス", + "Common.define.smartArt.textInterconnectedBlockProcess": "相互接続された長方形のプロセス", + "Common.define.smartArt.textInterconnectedRings": "互いにつながったリング", + "Common.define.smartArt.textInvertedPyramid": "反転ピラミッド", + "Common.define.smartArt.textLabeledHierarchy": "ラベル付き階層", "Common.Translation.textMoreButton": "もっと", "Common.Translation.warnFileLocked": "このファイルは他のアプリで編集されているので、編集できません。", "Common.Translation.warnFileLockedBtnEdit": "コピーを作成する", @@ -288,6 +366,7 @@ "Common.Views.DocumentAccessDialog.textLoading": "読み込み中...", "Common.Views.DocumentAccessDialog.textTitle": "共有設定", "Common.Views.ExternalDiagramEditor.textTitle": "チャートのエディタ", + "Common.Views.ExternalEditor.textClose": "閉じる", "Common.Views.ExternalMergeEditor.textTitle": "差し込み印刷の宛先", "Common.Views.ExternalOleEditor.textTitle": "スプレッドシートエディター", "Common.Views.Header.labelCoUsersDescr": "ファイルを編集しているユーザー:", @@ -354,6 +433,7 @@ "Common.Views.Plugins.textStart": "開始", "Common.Views.Plugins.textStop": "停止", "Common.Views.Protection.hintAddPwd": "パスワードを使用して暗号化する", + "Common.Views.Protection.hintDelPwd": "パスワードを削除する", "Common.Views.Protection.hintPwd": "パスワードを変更か削除する", "Common.Views.Protection.hintSignature": "デジタル署名かデジタル署名行を追加", "Common.Views.Protection.txtAddPwd": "パスワードの追加", @@ -499,6 +579,7 @@ "Common.Views.SignDialog.tipFontName": "フォント名", "Common.Views.SignDialog.tipFontSize": "フォントのサイズ", "Common.Views.SignSettingsDialog.textAllowComment": "署名ダイアログで署名者がコメントを追加できるようにする", + "Common.Views.SignSettingsDialog.textDefInstruction": "このドキュメントに署名する前に、署名するコンテンツが正しいことを確認してください。", "Common.Views.SignSettingsDialog.textInfoEmail": "メール", "Common.Views.SignSettingsDialog.textInfoName": "名前", "Common.Views.SignSettingsDialog.textInfoTitle": "署名者の役職", @@ -640,6 +721,7 @@ "DE.Controllers.Main.textClose": "閉じる", "DE.Controllers.Main.textCloseTip": "クリックでヒントを閉じる", "DE.Controllers.Main.textContactUs": "営業部に連絡する", + "DE.Controllers.Main.textContinue": "続ける", "DE.Controllers.Main.textConvertEquation": "この数式は、サポートされなくなった古いバージョンの数式エディタで作成されました。 編集するには、方程式をOffice Math ML形式に変換します。
今すぐ変換しますか?", "DE.Controllers.Main.textCustomLoader": "ライセンス条項により、ローダーを変更する権利がないことにご注意ください。
見積もりについては、弊社営業部門にお問い合わせください。", "DE.Controllers.Main.textDisconnect": "接続が切断されました", @@ -1329,10 +1411,17 @@ "DE.Views.CellsAddDialog.textRow": "行", "DE.Views.CellsAddDialog.textTitle": "複数を挿入する", "DE.Views.CellsAddDialog.textUp": "カーソルより上", + "DE.Views.ChartSettings.text3dDepth": "深さ(ベースに対する割合)", + "DE.Views.ChartSettings.text3dHeight": "高さ(ベースに対する割合)", + "DE.Views.ChartSettings.text3dRotation": "3D回転", "DE.Views.ChartSettings.textAdvanced": "詳細設定を表示", + "DE.Views.ChartSettings.textAutoscale": "自動スケーリング", "DE.Views.ChartSettings.textChartType": "グラフの種類の変更", + "DE.Views.ChartSettings.textDefault": "デフォルト回転", + "DE.Views.ChartSettings.textDown": "下", "DE.Views.ChartSettings.textEditData": "データの編集", "DE.Views.ChartSettings.textHeight": "高さ", + "DE.Views.ChartSettings.textLeft": "左", "DE.Views.ChartSettings.textOriginalSize": "実際のサイズ", "DE.Views.ChartSettings.textSize": "サイズ", "DE.Views.ChartSettings.textStyle": "スタイル", @@ -1428,14 +1517,22 @@ "DE.Views.DateTimeDialog.textLang": "言語", "DE.Views.DateTimeDialog.textUpdate": "自動的に更新", "DE.Views.DateTimeDialog.txtTitle": "日付&時刻", + "DE.Views.DocProtection.txtDocProtectedComment": "文書は保護されています。
この文書には、コメントしか挿入できません。", + "DE.Views.DocProtection.txtDocProtectedForms": "文書は保護されています。
この文書では、フォームにのみ記入することができます。", + "DE.Views.DocProtection.txtDocProtectedTrack": "文書は保護されています。
この文書を編集することは可能ですが、すべての変更は追跡されます。", + "DE.Views.DocProtection.txtDocProtectedView": "ドキュメントが保護されています。
このドキュメントは閲覧のみ可能です。", + "DE.Views.DocProtection.txtDocUnlockDescription": "パスワードを入力すると、文書の保護が解除されます", "DE.Views.DocumentHolder.aboveText": "上", "DE.Views.DocumentHolder.addCommentText": "コメントの追加", "DE.Views.DocumentHolder.advancedDropCapText": "ドロップキャップの設定", + "DE.Views.DocumentHolder.advancedEquationText": "数式設定", "DE.Views.DocumentHolder.advancedFrameText": "フレームの詳細設定", "DE.Views.DocumentHolder.advancedParagraphText": "段落の詳細設定", "DE.Views.DocumentHolder.advancedTableText": "テーブルの詳細設定", "DE.Views.DocumentHolder.advancedText": "詳細設定", "DE.Views.DocumentHolder.alignmentText": "配置", + "DE.Views.DocumentHolder.allLinearText": "すべて - 線形", + "DE.Views.DocumentHolder.allProfText": "すべて - プロフェッショナル", "DE.Views.DocumentHolder.belowText": "下", "DE.Views.DocumentHolder.breakBeforeText": "前に改ページ", "DE.Views.DocumentHolder.bulletsText": "箇条書きと段落番号", @@ -1444,6 +1541,8 @@ "DE.Views.DocumentHolder.centerText": "中央揃え", "DE.Views.DocumentHolder.chartText": "チャートの詳細設定", "DE.Views.DocumentHolder.columnText": "列", + "DE.Views.DocumentHolder.currLinearText": "現在 - 線形", + "DE.Views.DocumentHolder.currProfText": "現在 - プロフェッショナル", "DE.Views.DocumentHolder.deleteColumnText": "列の削除", "DE.Views.DocumentHolder.deleteRowText": "行の削除", "DE.Views.DocumentHolder.deleteTableText": "表の削除", @@ -1456,6 +1555,7 @@ "DE.Views.DocumentHolder.editFooterText": "フッターの編集", "DE.Views.DocumentHolder.editHeaderText": "ヘッダーの編集", "DE.Views.DocumentHolder.editHyperlinkText": "ハイパーリンクの編集", + "DE.Views.DocumentHolder.eqToInlineText": "内臓に切り替える", "DE.Views.DocumentHolder.guestText": "ゲスト", "DE.Views.DocumentHolder.hyperlinkText": "ハイパーリンク", "DE.Views.DocumentHolder.ignoreAllSpellText": "全てを無視する", @@ -1470,6 +1570,7 @@ "DE.Views.DocumentHolder.insertText": "挿入", "DE.Views.DocumentHolder.keepLinesText": "段落を分割しない", "DE.Views.DocumentHolder.langText": "言語の選択", + "DE.Views.DocumentHolder.latexText": "LaTeX", "DE.Views.DocumentHolder.leftText": "左", "DE.Views.DocumentHolder.loadSpellText": "バリエーションの読み込み中...", "DE.Views.DocumentHolder.mergeCellsText": "セルの結合", @@ -2373,6 +2474,10 @@ "DE.Views.ParagraphSettingsAdvanced.tipTop": "上罫線だけを設定", "DE.Views.ParagraphSettingsAdvanced.txtAutoText": "自動", "DE.Views.ParagraphSettingsAdvanced.txtNoBorders": "罫線なし", + "DE.Views.ProtectDialog.textComments": "コメント", + "DE.Views.ProtectDialog.textForms": "フォームの入力", + "DE.Views.ProtectDialog.txtAllow": "ユーザーに許可する編集の種類を指定する", + "DE.Views.ProtectDialog.txtIncorrectPwd": "先に入力したパスワードと一致しません。", "DE.Views.RightMenu.txtChartSettings": "チャート設定", "DE.Views.RightMenu.txtFormSettings": "フォーム設定", "DE.Views.RightMenu.txtHeaderFooterSettings": "ヘッダーとフッターの設定", @@ -2563,8 +2668,13 @@ "DE.Views.TableSettings.tipOuter": "外枠の罫線だけを設定", "DE.Views.TableSettings.tipRight": "外部の罫線(右)だけを設定", "DE.Views.TableSettings.tipTop": "外部の罫線(上)だけを設定", + "DE.Views.TableSettings.txtGroupTable_BorderedAndLined": "境界&線付き表", + "DE.Views.TableSettings.txtGroupTable_Custom": "カスタム", + "DE.Views.TableSettings.txtGroupTable_Grid": "グリッド テーブル", "DE.Views.TableSettings.txtNoBorders": "罫線なし", "DE.Views.TableSettings.txtTable_Accent": "アクセント", + "DE.Views.TableSettings.txtTable_Bordered": "境界付き", + "DE.Views.TableSettings.txtTable_BorderedAndLined": "境界&線付き", "DE.Views.TableSettings.txtTable_Colorful": "カラフル", "DE.Views.TableSettings.txtTable_Dark": "暗い", "DE.Views.TableSettings.txtTable_GridTable": "グリッドテーブル", @@ -2849,13 +2959,16 @@ "DE.Views.Toolbar.tipIncPrLeft": "インデントを増やす", "DE.Views.Toolbar.tipInsertChart": "グラフの挿入", "DE.Views.Toolbar.tipInsertEquation": "数式の挿入", + "DE.Views.Toolbar.tipInsertHorizontalText": "横書きテキストボックスの挿入", "DE.Views.Toolbar.tipInsertImage": "画像の挿入", "DE.Views.Toolbar.tipInsertNum": "ページ番号の挿入", "DE.Views.Toolbar.tipInsertShape": "オートシェイプの挿入", + "DE.Views.Toolbar.tipInsertSmartArt": "SmartArtの挿入", "DE.Views.Toolbar.tipInsertSymbol": "記号の挿入", "DE.Views.Toolbar.tipInsertTable": "表の挿入", "DE.Views.Toolbar.tipInsertText": "テキストボックスの挿入", "DE.Views.Toolbar.tipInsertTextArt": "テキストアートの挿入", + "DE.Views.Toolbar.tipInsertVerticalText": "縦書きテキストボックスの挿入", "DE.Views.Toolbar.tipLineNumbers": "行番号を表示する", "DE.Views.Toolbar.tipLineSpace": "段落の行間", "DE.Views.Toolbar.tipMailRecepients": "差し込み印刷", diff --git a/apps/documenteditor/main/locale/pt-pt.json b/apps/documenteditor/main/locale/pt-pt.json index 5dfafa36a..31a5d12e9 100644 --- a/apps/documenteditor/main/locale/pt-pt.json +++ b/apps/documenteditor/main/locale/pt-pt.json @@ -503,9 +503,9 @@ "Common.Views.SignDialog.tipFontSize": "Tamanho do tipo de letra", "Common.Views.SignSettingsDialog.textAllowComment": "Permitir ao signatário inserir comentários no diálogo de assinatura", "Common.Views.SignSettingsDialog.textDefInstruction": "Antes de assinar este documento, verifique se o conteúdo que está a assinar está correto.", - "Common.Views.SignSettingsDialog.textInfoEmail": "E-mail", - "Common.Views.SignSettingsDialog.textInfoName": "Nome", - "Common.Views.SignSettingsDialog.textInfoTitle": "Título do Assinante", + "Common.Views.SignSettingsDialog.textInfoEmail": "E-mail do assinante sugerido", + "Common.Views.SignSettingsDialog.textInfoName": "Assinante sugerido", + "Common.Views.SignSettingsDialog.textInfoTitle": "Título do assinante", "Common.Views.SignSettingsDialog.textInstructions": "Instruções para o assinante", "Common.Views.SignSettingsDialog.textShowDate": "Mostrar data na linha de assinatura", "Common.Views.SignSettingsDialog.textTitle": "Definições de Assinatura", @@ -588,6 +588,7 @@ "DE.Controllers.Main.errorMailMergeLoadFile": "Não foi possível carregar o documento. Por favor escolha outro ficheiro.", "DE.Controllers.Main.errorMailMergeSaveFile": "Falha ao unir.", "DE.Controllers.Main.errorNoTOC": "Não existem alterações a fazer no índice remissivo. Pode introduzir alterações no separador Referências.", + "DE.Controllers.Main.errorPasswordIsNotCorrect": "A palavra-passe que introduziu não está correta.
Verifique se a tecla CAPS LOCK está desligada e não se esqueça de utilizar a capitalização correta.", "DE.Controllers.Main.errorProcessSaveResult": "Falha ao guardar.", "DE.Controllers.Main.errorServerVersion": "A versão do editor foi atualizada. A página será recarregada para aplicar as alterações.", "DE.Controllers.Main.errorSessionAbsolute": "A sessão de edição expirou. Tente recarregar a página.", @@ -940,7 +941,7 @@ "DE.Controllers.Search.textReplaceSuccess": "A pesquisa foi concluída. {0} ocorrências foram substituídas", "DE.Controllers.Search.warnReplaceString": "{0} não é um carácter especial válido para a janela Substituir com.", "DE.Controllers.Statusbar.textDisconnect": "Sem ligação
A tentar ligar. Por favor, verifique as definições da ligação.", - "DE.Controllers.Statusbar.textHasChanges": "Novas alterações foram encontradas", + "DE.Controllers.Statusbar.textHasChanges": "Novas alterações foram rastreadas", "DE.Controllers.Statusbar.textSetTrackChanges": "Está no modo Registar Alterações", "DE.Controllers.Statusbar.textTrackChanges": "The document is opened with the Track Changes mode enabled", "DE.Controllers.Statusbar.tipReview": "Rastrear alterações", @@ -1447,6 +1448,13 @@ "DE.Views.DateTimeDialog.textLang": "Idioma", "DE.Views.DateTimeDialog.textUpdate": "Atualizar automaticamente", "DE.Views.DateTimeDialog.txtTitle": "Data e Hora", + "DE.Views.DocProtection.hintProtectDoc": "Proteger o documento", + "DE.Views.DocProtection.txtDocProtectedComment": "O documento está protegido.
Apenas pode inserir comentários a este documento.", + "DE.Views.DocProtection.txtDocProtectedForms": "O documento está protegido.
Apenas pode preencher formulários neste documento.", + "DE.Views.DocProtection.txtDocProtectedTrack": "O documento está protegido.
Pode editar este documento, mas todas as alterações serão rastreadas.", + "DE.Views.DocProtection.txtDocProtectedView": "O documento está protegido.
Apenas pode ver este documento.", + "DE.Views.DocProtection.txtDocUnlockDescription": "Introduzir uma palavra-passe para desproteger documento", + "DE.Views.DocProtection.txtProtectDoc": "Proteger o documento", "DE.Views.DocumentHolder.aboveText": "Acima", "DE.Views.DocumentHolder.addCommentText": "Adicionar comentário", "DE.Views.DocumentHolder.advancedDropCapText": "Definições de capitulares", @@ -2401,6 +2409,18 @@ "DE.Views.ParagraphSettingsAdvanced.tipTop": "Definir apenas contorno superior", "DE.Views.ParagraphSettingsAdvanced.txtAutoText": "Automático", "DE.Views.ParagraphSettingsAdvanced.txtNoBorders": "Sem contornos", + "DE.Views.ProtectDialog.textComments": "Comentários", + "DE.Views.ProtectDialog.textForms": "Preenchimento de formulários", + "DE.Views.ProtectDialog.textReview": "Alterações rastreadas", + "DE.Views.ProtectDialog.textView": "Sem alterações (apenas leitura)", + "DE.Views.ProtectDialog.txtAllow": "Permitir apenas este tipo de edição no documento", + "DE.Views.ProtectDialog.txtIncorrectPwd": "A palavra-passe de confirmação não é idêntica", + "DE.Views.ProtectDialog.txtOptional": "opcional", + "DE.Views.ProtectDialog.txtPassword": "Palavra-passe", + "DE.Views.ProtectDialog.txtProtect": "Proteger", + "DE.Views.ProtectDialog.txtRepeat": "Repetir palavra-passe", + "DE.Views.ProtectDialog.txtTitle": "Proteger", + "DE.Views.ProtectDialog.txtWarning": "Aviso: se perder ou esquecer a palavra-passe, não será possível recuperá-la. Guarde-a num local seguro.", "DE.Views.RightMenu.txtChartSettings": "Definições de gráfico", "DE.Views.RightMenu.txtFormSettings": "Definições de formulários", "DE.Views.RightMenu.txtHeaderFooterSettings": "Definições de cabeçalho/rodapé", @@ -2885,6 +2905,7 @@ "DE.Views.Toolbar.tipIncPrLeft": "Aumentar recuo", "DE.Views.Toolbar.tipInsertChart": "Inserir gráfico", "DE.Views.Toolbar.tipInsertEquation": "Inserir equação", + "DE.Views.Toolbar.tipInsertHorizontalText": "Inserir caixa de texto horizontal", "DE.Views.Toolbar.tipInsertImage": "Inserir imagem", "DE.Views.Toolbar.tipInsertNum": "Inserir número da página", "DE.Views.Toolbar.tipInsertShape": "Inserir forma automática", @@ -2892,6 +2913,7 @@ "DE.Views.Toolbar.tipInsertTable": "Inserir tabela", "DE.Views.Toolbar.tipInsertText": "Inserir caixa de texto", "DE.Views.Toolbar.tipInsertTextArt": "Inserir arte de texto", + "DE.Views.Toolbar.tipInsertVerticalText": "Inserir caixa de texto vertical", "DE.Views.Toolbar.tipLineNumbers": "Mostrar número das linhas", "DE.Views.Toolbar.tipLineSpace": "Espaçamento entre linhas do parágrafo", "DE.Views.Toolbar.tipMailRecepients": "Select Recepients", diff --git a/apps/documenteditor/main/locale/pt.json b/apps/documenteditor/main/locale/pt.json index 4a0af3d0d..bd9eef6e6 100644 --- a/apps/documenteditor/main/locale/pt.json +++ b/apps/documenteditor/main/locale/pt.json @@ -288,6 +288,8 @@ "Common.Views.DocumentAccessDialog.textLoading": "Carregando...", "Common.Views.DocumentAccessDialog.textTitle": "Configurações de compartilhamento", "Common.Views.ExternalDiagramEditor.textTitle": "Editor de gráfico", + "Common.Views.ExternalEditor.textClose": "Fechar", + "Common.Views.ExternalEditor.textSave": "Salvar e Sair", "Common.Views.ExternalMergeEditor.textTitle": "Mail Merge Recepients", "Common.Views.ExternalOleEditor.textTitle": "Editor de planilhas", "Common.Views.Header.labelCoUsersDescr": "Usuários que estão editando o arquivo:", @@ -354,6 +356,7 @@ "Common.Views.Plugins.textStart": "Iniciar", "Common.Views.Plugins.textStop": "Parar", "Common.Views.Protection.hintAddPwd": "Criptografar com senha", + "Common.Views.Protection.hintDelPwd": "Excluir senha", "Common.Views.Protection.hintPwd": "Alterar ou excluir senha", "Common.Views.Protection.hintSignature": "Inserir assinatura digital ou linha de assinatura", "Common.Views.Protection.txtAddPwd": "Inserir a senha", @@ -499,6 +502,7 @@ "Common.Views.SignDialog.tipFontName": "Nome da Fonte", "Common.Views.SignDialog.tipFontSize": "Tamanho da fonte", "Common.Views.SignSettingsDialog.textAllowComment": "Permitir ao signatário inserir comentários no diálogo de assinatura", + "Common.Views.SignSettingsDialog.textDefInstruction": "Antes de assinar este documento, verifique se o conteúdo que está a assinar está correto.", "Common.Views.SignSettingsDialog.textInfoEmail": "E-mail", "Common.Views.SignSettingsDialog.textInfoName": "Nome", "Common.Views.SignSettingsDialog.textInfoTitle": "Título do Signatário", @@ -584,6 +588,7 @@ "DE.Controllers.Main.errorMailMergeLoadFile": "Carregamento falhou. Por favor, selecione um arquivo diferente.", "DE.Controllers.Main.errorMailMergeSaveFile": "Merge failed.", "DE.Controllers.Main.errorNoTOC": "Não há índice para atualizar. Você pode inserir um na guia Referências.", + "DE.Controllers.Main.errorPasswordIsNotCorrect": "A senha fornecida não está correta.
Verifique se a tecla CAPS LOCK está desligada e use a capitalização correta.", "DE.Controllers.Main.errorProcessSaveResult": "Salvamento falhou.", "DE.Controllers.Main.errorServerVersion": "A versão do editor foi atualizada. A página será recarregada para aplicar as alterações.", "DE.Controllers.Main.errorSessionAbsolute": "A sessão de edição de documentos expirou. Por Favor atualize a página.", @@ -1329,17 +1334,31 @@ "DE.Views.CellsAddDialog.textRow": "Linhas", "DE.Views.CellsAddDialog.textTitle": "Insira vários", "DE.Views.CellsAddDialog.textUp": "Acima do cursor", + "DE.Views.ChartSettings.text3dDepth": "Profundidade (% da base)", + "DE.Views.ChartSettings.text3dHeight": "Altura (% da base)", + "DE.Views.ChartSettings.text3dRotation": "Rotação 3D", "DE.Views.ChartSettings.textAdvanced": "Exibir configurações avançadas", "DE.Views.ChartSettings.textAutoscale": "Autoescala", "DE.Views.ChartSettings.textChartType": "Alterar tipo de gráfico", + "DE.Views.ChartSettings.textDefault": "Rotação padrão", + "DE.Views.ChartSettings.textDown": "Abaixo", "DE.Views.ChartSettings.textEditData": "Editar dados", "DE.Views.ChartSettings.textHeight": "Altura", + "DE.Views.ChartSettings.textLeft": "Esquerda", + "DE.Views.ChartSettings.textNarrow": "Campo de visão estreito", "DE.Views.ChartSettings.textOriginalSize": "Tamanho atual", + "DE.Views.ChartSettings.textPerspective": "Perspectiva", + "DE.Views.ChartSettings.textRight": "Direita", + "DE.Views.ChartSettings.textRightAngle": "Eixos de ângulo reto", "DE.Views.ChartSettings.textSize": "Tamanho", "DE.Views.ChartSettings.textStyle": "Estilo", "DE.Views.ChartSettings.textUndock": "Desencaixar do painel", + "DE.Views.ChartSettings.textUp": "Para cima", + "DE.Views.ChartSettings.textWiden": "Ampliar o campo de visão", "DE.Views.ChartSettings.textWidth": "Largura", "DE.Views.ChartSettings.textWrap": "Estilo da quebra automática", + "DE.Views.ChartSettings.textX": "Rotação X", + "DE.Views.ChartSettings.textY": "Rotação Y", "DE.Views.ChartSettings.txtBehind": "Atrás", "DE.Views.ChartSettings.txtInFront": "Em frente", "DE.Views.ChartSettings.txtInline": "Em linha", @@ -1429,14 +1448,24 @@ "DE.Views.DateTimeDialog.textLang": "Idioma", "DE.Views.DateTimeDialog.textUpdate": "Atualizar automaticamente", "DE.Views.DateTimeDialog.txtTitle": "Data e Hora", + "DE.Views.DocProtection.hintProtectDoc": "Proteger o Documento", + "DE.Views.DocProtection.txtDocProtectedComment": "O documento está protegido.
Você só pode inserir comentários neste documento.", + "DE.Views.DocProtection.txtDocProtectedForms": "O documento está protegido.
Você só pode preencher formulários neste documento.", + "DE.Views.DocProtection.txtDocProtectedTrack": "O documento está protegido.
Você pode editar este documento, mas todas as alterações serão rastreadas.", + "DE.Views.DocProtection.txtDocProtectedView": "O documento está protegido.
Você só pode visualizar este documento.", + "DE.Views.DocProtection.txtDocUnlockDescription": "Digite uma senha para desproteger o documento", + "DE.Views.DocProtection.txtProtectDoc": "Proteger o Documento", "DE.Views.DocumentHolder.aboveText": "Acima", "DE.Views.DocumentHolder.addCommentText": "Adicionar comentário", "DE.Views.DocumentHolder.advancedDropCapText": "Configurações de capitulação", + "DE.Views.DocumentHolder.advancedEquationText": "Definições de equações", "DE.Views.DocumentHolder.advancedFrameText": "Configurações avançadas de moldura", "DE.Views.DocumentHolder.advancedParagraphText": "Configurações avançadas de parágrafo", "DE.Views.DocumentHolder.advancedTableText": "Configurações avançadas de tabela", "DE.Views.DocumentHolder.advancedText": "Configurações avançadas", "DE.Views.DocumentHolder.alignmentText": "Alinhamento", + "DE.Views.DocumentHolder.allLinearText": "Tudo - Linear", + "DE.Views.DocumentHolder.allProfText": "Tudo - Profissional", "DE.Views.DocumentHolder.belowText": "Abaixo", "DE.Views.DocumentHolder.breakBeforeText": "Quebra de página antes", "DE.Views.DocumentHolder.bulletsText": "Marcadores e numeração", @@ -1445,6 +1474,8 @@ "DE.Views.DocumentHolder.centerText": "Centro", "DE.Views.DocumentHolder.chartText": "Configurações avançadas de gráfico", "DE.Views.DocumentHolder.columnText": "Coluna", + "DE.Views.DocumentHolder.currLinearText": "Atual - Linear", + "DE.Views.DocumentHolder.currProfText": "Atual - Profissional", "DE.Views.DocumentHolder.deleteColumnText": "Excluir coluna", "DE.Views.DocumentHolder.deleteRowText": "Excluir linha", "DE.Views.DocumentHolder.deleteTableText": "Excluir tabela", @@ -1457,6 +1488,7 @@ "DE.Views.DocumentHolder.editFooterText": "Editar rodapé", "DE.Views.DocumentHolder.editHeaderText": "Editar cabeçalho", "DE.Views.DocumentHolder.editHyperlinkText": "Editar hiperlink", + "DE.Views.DocumentHolder.eqToInlineText": "Alterar para em linha", "DE.Views.DocumentHolder.guestText": "Visitante", "DE.Views.DocumentHolder.hyperlinkText": "Hiperlink", "DE.Views.DocumentHolder.ignoreAllSpellText": "Ignorar tudo", @@ -1471,6 +1503,7 @@ "DE.Views.DocumentHolder.insertText": "Inserir", "DE.Views.DocumentHolder.keepLinesText": "Manter as linhas juntas", "DE.Views.DocumentHolder.langText": "Selecionar idioma", + "DE.Views.DocumentHolder.latexText": "LaTex", "DE.Views.DocumentHolder.leftText": "Esquerda", "DE.Views.DocumentHolder.loadSpellText": "Carregando variantes...", "DE.Views.DocumentHolder.mergeCellsText": "Mesclar células", @@ -1658,6 +1691,7 @@ "DE.Views.DocumentHolder.txtUnderbar": "Barra abaixo de texto", "DE.Views.DocumentHolder.txtUngroup": "Desagrupar", "DE.Views.DocumentHolder.txtWarnUrl": "Clicar neste link pode ser prejudicial ao seu dispositivo e dados.
Você tem certeza de que quer continuar?", + "DE.Views.DocumentHolder.unicodeText": "Unicode", "DE.Views.DocumentHolder.updateStyleText": "Update %1 style", "DE.Views.DocumentHolder.vertAlignText": "Alinhamento vertical", "DE.Views.DropcapSettingsAdvanced.strBorders": "Bordas e preenchimento", @@ -2067,6 +2101,7 @@ "DE.Views.LeftMenu.tipComments": "Comentários", "DE.Views.LeftMenu.tipNavigation": "Navegação", "DE.Views.LeftMenu.tipOutline": "Cabeçalhos", + "DE.Views.LeftMenu.tipPageThumbnails": "Miniaturas de página", "DE.Views.LeftMenu.tipPlugins": "Plug-ins", "DE.Views.LeftMenu.tipSearch": "Pesquisar", "DE.Views.LeftMenu.tipSupport": "Feedback e Suporte", @@ -2374,6 +2409,18 @@ "DE.Views.ParagraphSettingsAdvanced.tipTop": "Definir apenas borda superior", "DE.Views.ParagraphSettingsAdvanced.txtAutoText": "Automático", "DE.Views.ParagraphSettingsAdvanced.txtNoBorders": "Sem bordas", + "DE.Views.ProtectDialog.textComments": "Comentários", + "DE.Views.ProtectDialog.textForms": "Preenchimento de formulários", + "DE.Views.ProtectDialog.textReview": "Mudanças rastreadas", + "DE.Views.ProtectDialog.textView": "Sem alterações (somente leitura)", + "DE.Views.ProtectDialog.txtAllow": "Permitir apenas este tipo de edição no documento", + "DE.Views.ProtectDialog.txtIncorrectPwd": "A confirmação da senha não é idêntica", + "DE.Views.ProtectDialog.txtOptional": "Opcional", + "DE.Views.ProtectDialog.txtPassword": "Senha", + "DE.Views.ProtectDialog.txtProtect": "Proteger", + "DE.Views.ProtectDialog.txtRepeat": "Repetir a senha", + "DE.Views.ProtectDialog.txtTitle": "Proteger", + "DE.Views.ProtectDialog.txtWarning": "Cuidado: se você perder ou esquecer a senha, não será possível recuperá-la. Guarde-o em local seguro.", "DE.Views.RightMenu.txtChartSettings": "Configurações de gráfico", "DE.Views.RightMenu.txtFormSettings": "Configurações do formulário", "DE.Views.RightMenu.txtHeaderFooterSettings": "Configurações de cabeçalho e rodapé", @@ -2564,12 +2611,20 @@ "DE.Views.TableSettings.tipOuter": "Definir apenas borda externa", "DE.Views.TableSettings.tipRight": "Definir apenas borda direita externa", "DE.Views.TableSettings.tipTop": "Definir apenas borda superior externa", + "DE.Views.TableSettings.txtGroupTable_BorderedAndLined": "Tabelas Contornadas e Alinhadas", + "DE.Views.TableSettings.txtGroupTable_Custom": "Personalizado", + "DE.Views.TableSettings.txtGroupTable_Grid": "Tabelas de grade", + "DE.Views.TableSettings.txtGroupTable_List": "Listar tabelas", + "DE.Views.TableSettings.txtGroupTable_Plain": "Tabelas simples", "DE.Views.TableSettings.txtNoBorders": "Sem bordas", "DE.Views.TableSettings.txtTable_Accent": "Destacar", + "DE.Views.TableSettings.txtTable_Bordered": "Delimitado", + "DE.Views.TableSettings.txtTable_BorderedAndLined": "Contornado e Alinhado", "DE.Views.TableSettings.txtTable_Colorful": "Colorido", "DE.Views.TableSettings.txtTable_Dark": "Escuro", "DE.Views.TableSettings.txtTable_GridTable": "Tabela de grade", "DE.Views.TableSettings.txtTable_Light": "Claro", + "DE.Views.TableSettings.txtTable_Lined": "Alinhado", "DE.Views.TableSettings.txtTable_ListTable": "Tabela de Lista", "DE.Views.TableSettings.txtTable_PlainTable": "Tabela Normal", "DE.Views.TableSettings.txtTable_TableGrid": "Grid da Tabela", @@ -2850,6 +2905,7 @@ "DE.Views.Toolbar.tipIncPrLeft": "Aumentar recuo", "DE.Views.Toolbar.tipInsertChart": "Inserir gráfico", "DE.Views.Toolbar.tipInsertEquation": "Inserir equação", + "DE.Views.Toolbar.tipInsertHorizontalText": "Inserir caixa de texto horizontal", "DE.Views.Toolbar.tipInsertImage": "Inserir imagem", "DE.Views.Toolbar.tipInsertNum": "Inserir número da página", "DE.Views.Toolbar.tipInsertShape": "Inserir forma automática", @@ -2857,6 +2913,7 @@ "DE.Views.Toolbar.tipInsertTable": "Inserir tabela", "DE.Views.Toolbar.tipInsertText": "Inserir caixa de texto", "DE.Views.Toolbar.tipInsertTextArt": "Inserir arte de texto", + "DE.Views.Toolbar.tipInsertVerticalText": "Inserir caixa de texto vertical", "DE.Views.Toolbar.tipLineNumbers": "Mostrar números de linha", "DE.Views.Toolbar.tipLineSpace": "Espaçamento entre linhas do parágrafo", "DE.Views.Toolbar.tipMailRecepients": "Select Recepients", diff --git a/apps/documenteditor/main/locale/ru.json b/apps/documenteditor/main/locale/ru.json index cb6f92115..1dd9edcd6 100644 --- a/apps/documenteditor/main/locale/ru.json +++ b/apps/documenteditor/main/locale/ru.json @@ -125,6 +125,165 @@ "Common.define.chartData.textScatterSmoothMarker": "Точечная с гладкими кривыми и маркерами", "Common.define.chartData.textStock": "Биржевая", "Common.define.chartData.textSurface": "Поверхность", + "Common.define.smartArt.textAccentedPicture": "Акцентируемый рисунок", + "Common.define.smartArt.textAccentProcess": "Процесс со смещением", + "Common.define.smartArt.textAlternatingFlow": "Переменный поток", + "Common.define.smartArt.textAlternatingHexagons": "Чередующиеся шестиугольники", + "Common.define.smartArt.textAlternatingPictureBlocks": "Чередующиеся блоки рисунков", + "Common.define.smartArt.textAlternatingPictureCircles": "Чередующиеся круги рисунков", + "Common.define.smartArt.textArchitectureLayout": "Архитектурный макет", + "Common.define.smartArt.textArrowRibbon": "Лента со стрелками", + "Common.define.smartArt.textAscendingPictureAccentProcess": "Процесс со смещенными по возрастанию рисунками", + "Common.define.smartArt.textBalance": "Баланс", + "Common.define.smartArt.textBasicBendingProcess": "Простой ломаный процесс", + "Common.define.smartArt.textBasicBlockList": "Простой блочный список", + "Common.define.smartArt.textBasicChevronProcess": "Простой уголковый процесс", + "Common.define.smartArt.textBasicCycle": "Простой цикл", + "Common.define.smartArt.textBasicMatrix": "Простая матрица", + "Common.define.smartArt.textBasicPie": "Простая круговая", + "Common.define.smartArt.textBasicProcess": "Простой процесс", + "Common.define.smartArt.textBasicPyramid": "Простая пирамида", + "Common.define.smartArt.textBasicRadial": "Простая радиальная", + "Common.define.smartArt.textBasicTarget": "Простая целевая", + "Common.define.smartArt.textBasicTimeline": "Простая временная шкала", + "Common.define.smartArt.textBasicVenn": "Простая Венна", + "Common.define.smartArt.textBendingPictureAccentList": "Ломаный список со смещенными рисунками", + "Common.define.smartArt.textBendingPictureBlocks": "Нелинейные рисунки с блоками", + "Common.define.smartArt.textBendingPictureCaption": "Нелинейные рисунки с подписями", + "Common.define.smartArt.textBendingPictureCaptionList": "Ломаный список рисунков с подписями", + "Common.define.smartArt.textBendingPictureSemiTranparentText": "Нелинейные рисунки с полупрозрачным текстом", + "Common.define.smartArt.textBlockCycle": "Блочный цикл", + "Common.define.smartArt.textBubblePictureList": "Список рисунков с выносками", + "Common.define.smartArt.textCaptionedPictures": "Подписанные рисунки", + "Common.define.smartArt.textChevronAccentProcess": "Уголковый процесс со смещением", + "Common.define.smartArt.textChevronList": "Уголковый список", + "Common.define.smartArt.textCircleAccentTimeline": "Круглая временная шкала", + "Common.define.smartArt.textCircleArrowProcess": "Стрелка процесса с кругами", + "Common.define.smartArt.textCirclePictureHierarchy": "Иерархия с круглыми рисунками", + "Common.define.smartArt.textCircleProcess": "Процесс с кругами", + "Common.define.smartArt.textCircleRelationship": "Круг связей", + "Common.define.smartArt.textCircularBendingProcess": "Круглый ломаный процесс", + "Common.define.smartArt.textCircularPictureCallout": "Выноска с круглыми рисунками", + "Common.define.smartArt.textClosedChevronProcess": "Закрытый уголковый процесс", + "Common.define.smartArt.textContinuousArrowProcess": "Стрелка непрерывного процесса", + "Common.define.smartArt.textContinuousBlockProcess": "Непрерывный блочный процесс", + "Common.define.smartArt.textContinuousCycle": "Непрерывный цикл", + "Common.define.smartArt.textContinuousPictureList": "Непрерывный список с рисунками", + "Common.define.smartArt.textConvergingArrows": "Сходящиеся стрелки", + "Common.define.smartArt.textConvergingRadial": "Сходящаяся радиальная", + "Common.define.smartArt.textConvergingText": "Сходящийся текст", + "Common.define.smartArt.textCounterbalanceArrows": "Уравновешивающие стрелки", + "Common.define.smartArt.textCycle": "Цикл", + "Common.define.smartArt.textCycleMatrix": "Циклическая матрица", + "Common.define.smartArt.textDescendingBlockList": "Нисходящий блочный список", + "Common.define.smartArt.textDescendingProcess": "Убывающий процесс", + "Common.define.smartArt.textDetailedProcess": "Подробный процесс", + "Common.define.smartArt.textDivergingArrows": "Расходящиеся стрелки", + "Common.define.smartArt.textDivergingRadial": "Расходящаяся радиальная", + "Common.define.smartArt.textEquation": "Уравнение", + "Common.define.smartArt.textFramedTextPicture": "Рисунок с текстом в рамке", + "Common.define.smartArt.textFunnel": "Воронка", + "Common.define.smartArt.textGear": "Шестеренка", + "Common.define.smartArt.textGridMatrix": "Сетчатая матрица", + "Common.define.smartArt.textGroupedList": "Сгруппированный список", + "Common.define.smartArt.textHalfCircleOrganizationChart": "Полукруглая организационная диаграмма", + "Common.define.smartArt.textHexagonCluster": "Кластер шестиугольников", + "Common.define.smartArt.textHexagonRadial": "Радиальный шестиугольник", + "Common.define.smartArt.textHierarchy": "Иерархия", + "Common.define.smartArt.textHierarchyList": "Иерархический список", + "Common.define.smartArt.textHorizontalBulletList": "Горизонтальный маркированный список", + "Common.define.smartArt.textHorizontalHierarchy": "Горизонтальная иерархия", + "Common.define.smartArt.textHorizontalLabeledHierarchy": "Горизонтальная иерархия с подписями", + "Common.define.smartArt.textHorizontalMultiLevelHierarchy": "Горизонтальная многоуровневая иерархия", + "Common.define.smartArt.textHorizontalOrganizationChart": "Горизонтальная организационная диаграмма", + "Common.define.smartArt.textHorizontalPictureList": "Горизонтальный список рисунков", + "Common.define.smartArt.textIncreasingArrowProcess": "Стрелка нарастающего процесса", + "Common.define.smartArt.textIncreasingCircleProcess": "Нарастающий процесс с кругами", + "Common.define.smartArt.textInterconnectedBlockProcess": "Процесс со взаимосвязанными блоками", + "Common.define.smartArt.textInterconnectedRings": "Взаимосвязанные кольца", + "Common.define.smartArt.textInvertedPyramid": "Инвертированная пирамида", + "Common.define.smartArt.textLabeledHierarchy": "Иерархия с подписями", + "Common.define.smartArt.textLinearVenn": "Линейная Венна", + "Common.define.smartArt.textLinedList": "Список с линиями", + "Common.define.smartArt.textList": "Список", + "Common.define.smartArt.textMatrix": "Матрица", + "Common.define.smartArt.textMultidirectionalCycle": "Разнонаправленный цикл", + "Common.define.smartArt.textNameAndTitleOrganizationChart": "Организационная диаграмма с именами и должностями", + "Common.define.smartArt.textNestedTarget": "Вложенная целевая", + "Common.define.smartArt.textNondirectionalCycle": "Ненаправленный цикл", + "Common.define.smartArt.textOpposingArrows": "Противостоящие стрелки", + "Common.define.smartArt.textOpposingIdeas": "Противоположные идеи", + "Common.define.smartArt.textOrganizationChart": "Организационная диаграмма", + "Common.define.smartArt.textOther": "Другое", + "Common.define.smartArt.textPhasedProcess": "Поэтапный процесс", + "Common.define.smartArt.textPicture": "Рисунок", + "Common.define.smartArt.textPictureAccentBlocks": "Блоки со смещенными рисунками", + "Common.define.smartArt.textPictureAccentList": "Список со смещенными рисунками", + "Common.define.smartArt.textPictureAccentProcess": "Процесс со смещенными рисунками", + "Common.define.smartArt.textPictureCaptionList": "Список названий рисунков", + "Common.define.smartArt.textPictureFrame": "Фоторамка", + "Common.define.smartArt.textPictureGrid": "Сетка рисунков", + "Common.define.smartArt.textPictureLineup": "Линия рисунков", + "Common.define.smartArt.textPictureOrganizationChart": "Организационная диаграмма с рисунками", + "Common.define.smartArt.textPictureStrips": "Полосы рисунков", + "Common.define.smartArt.textPieProcess": "Процесс с круговой диаграммой", + "Common.define.smartArt.textPlusAndMinus": "Плюс и минус", + "Common.define.smartArt.textProcess": "Процесс", + "Common.define.smartArt.textProcessArrows": "Стрелки процесса", + "Common.define.smartArt.textProcessList": "Список процессов", + "Common.define.smartArt.textPyramid": "Пирамида", + "Common.define.smartArt.textPyramidList": "Пирамидальный список", + "Common.define.smartArt.textRadialCluster": "Радиальный кластер", + "Common.define.smartArt.textRadialCycle": "Радиальная циклическая", + "Common.define.smartArt.textRadialList": "Радиальный список", + "Common.define.smartArt.textRadialPictureList": "Радиальный список рисунков", + "Common.define.smartArt.textRadialVenn": "Радиальная Венна", + "Common.define.smartArt.textRandomToResultProcess": "Процесс от случайности к результату", + "Common.define.smartArt.textRelationship": "Связь", + "Common.define.smartArt.textRepeatingBendingProcess": "Повторяющийся ломаный процесс", + "Common.define.smartArt.textReverseList": "Обратный список", + "Common.define.smartArt.textSegmentedCycle": "Сегментированный цикл", + "Common.define.smartArt.textSegmentedProcess": "Сегментированный процесс", + "Common.define.smartArt.textSegmentedPyramid": "Сегментированная пирамида", + "Common.define.smartArt.textSnapshotPictureList": "Список со снимками", + "Common.define.smartArt.textSpiralPicture": "Спираль рисунков", + "Common.define.smartArt.textSquareAccentList": "Список с квадратиками", + "Common.define.smartArt.textStackedList": "Список в столбик", + "Common.define.smartArt.textStackedVenn": "Венна в столбик", + "Common.define.smartArt.textStaggeredProcess": "Ступенчатый процесс", + "Common.define.smartArt.textStepDownProcess": "Нисходящий процесс", + "Common.define.smartArt.textStepUpProcess": "Восходящий процесс", + "Common.define.smartArt.textSubStepProcess": "Процесс с вложенными шагами", + "Common.define.smartArt.textTabbedArc": "Дуга с вкладками", + "Common.define.smartArt.textTableHierarchy": "Табличная иерархия", + "Common.define.smartArt.textTableList": "Табличный список", + "Common.define.smartArt.textTabList": "Список вкладок", + "Common.define.smartArt.textTargetList": "Целевой список", + "Common.define.smartArt.textTextCycle": "Текстовый цикл", + "Common.define.smartArt.textThemePictureAccent": "Смещенные рисунки темы", + "Common.define.smartArt.textThemePictureAlternatingAccent": "Чередующиеся смещенные рисунки темы", + "Common.define.smartArt.textThemePictureGrid": "Сетка рисунков темы", + "Common.define.smartArt.textTitledMatrix": "Матрица с заголовками", + "Common.define.smartArt.textTitledPictureAccentList": "Список со смещенными рисунками и заголовком", + "Common.define.smartArt.textTitledPictureBlocks": "Блоки рисунков с названиями", + "Common.define.smartArt.textTitlePictureLineup": "Линия рисунков с названиями", + "Common.define.smartArt.textTrapezoidList": "Трапециевидный список", + "Common.define.smartArt.textUpwardArrow": "Восходящая стрелка", + "Common.define.smartArt.textVaryingWidthList": "Список переменной ширины", + "Common.define.smartArt.textVerticalAccentList": "Вертикальный список со смещением", + "Common.define.smartArt.textVerticalArrowList": "Вертикальный список со стрелкой", + "Common.define.smartArt.textVerticalBendingProcess": "Вертикальный ломаный процесс", + "Common.define.smartArt.textVerticalBlockList": "Вертикальный блочный список", + "Common.define.smartArt.textVerticalBoxList": "Вертикальный список", + "Common.define.smartArt.textVerticalBracketList": "Вертикальный список со скобками", + "Common.define.smartArt.textVerticalBulletList": "Вертикальный маркированный список", + "Common.define.smartArt.textVerticalChevronList": "Вертикальный уголковый список", + "Common.define.smartArt.textVerticalCircleList": "Вертикальный список с кругами", + "Common.define.smartArt.textVerticalCurvedList": "Вертикальный нелинейный список", + "Common.define.smartArt.textVerticalEquation": "Вертикальное уравнение", + "Common.define.smartArt.textVerticalPictureAccentList": "Вертикальный список со смещенными рисунками", + "Common.define.smartArt.textVerticalPictureList": "Вертикальный список рисунков", + "Common.define.smartArt.textVerticalProcess": "Вертикальный процесс", "Common.Translation.textMoreButton": "Ещё", "Common.Translation.warnFileLocked": "Вы не можете редактировать этот файл, потому что он уже редактируется в другом приложении.", "Common.Translation.warnFileLockedBtnEdit": "Создать копию", @@ -556,6 +715,7 @@ "DE.Controllers.LeftMenu.warnReplaceString": "{0} нельзя использовать как специальный символ в поле замены.", "DE.Controllers.Main.applyChangesTextText": "Загрузка изменений...", "DE.Controllers.Main.applyChangesTitleText": "Загрузка изменений", + "DE.Controllers.Main.confirmMaxChangesSize": "Размер внесенных изменений превышает ограничение, установленное для вашего сервера.
Нажмите \"Отменить\" для отмены последнего действия или нажмите \"Продолжить\", чтобы сохранить действие локально (потребуется скачать файл или скопировать его содержимое чтобы ничего не потерялось).", "DE.Controllers.Main.convertationTimeoutText": "Превышено время ожидания конвертации.", "DE.Controllers.Main.criticalErrorExtText": "Нажмите \"OK\", чтобы вернуться к списку документов.", "DE.Controllers.Main.criticalErrorTitle": "Ошибка", @@ -645,6 +805,7 @@ "DE.Controllers.Main.textClose": "Закрыть", "DE.Controllers.Main.textCloseTip": "Щелкните, чтобы закрыть эту подсказку", "DE.Controllers.Main.textContactUs": "Связаться с отделом продаж", + "DE.Controllers.Main.textContinue": "Продолжить", "DE.Controllers.Main.textConvertEquation": "Это уравнение создано в старой версии редактора уравнений, которая больше не поддерживается. Чтобы изменить это уравнение, его необходимо преобразовать в формат Office Math ML.
Преобразовать сейчас?", "DE.Controllers.Main.textCustomLoader": "Обратите внимание, что по условиям лицензии у вас нет прав изменять экран, отображаемый при загрузке.
Пожалуйста, обратитесь в наш отдел продаж, чтобы сделать запрос.", "DE.Controllers.Main.textDisconnect": "Соединение потеряно", @@ -665,6 +826,7 @@ "DE.Controllers.Main.textStrict": "Строгий режим", "DE.Controllers.Main.textTryUndoRedo": "Функции отмены и повтора действий отключены в Быстром режиме совместного редактирования.
Нажмите на кнопку 'Строгий режим' для переключения в Строгий режим совместного редактирования, чтобы редактировать файл без вмешательства других пользователей и отправлять изменения только после того, как вы их сохраните. Переключаться между режимами совместного редактирования можно с помощью Дополнительных параметров редактора.", "DE.Controllers.Main.textTryUndoRedoWarn": "Функции отмены и повтора действий отключены в Быстром режиме совместного редактирования.", + "DE.Controllers.Main.textUndo": "Отменить", "DE.Controllers.Main.titleLicenseExp": "Истек срок действия лицензии", "DE.Controllers.Main.titleServerVersion": "Редактор обновлен", "DE.Controllers.Main.titleUpdateVersion": "Версия изменилась", @@ -1788,8 +1950,8 @@ "DE.Views.FileMenuPanels.DocumentInfo.txtStatistics": "Статистика", "DE.Views.FileMenuPanels.DocumentInfo.txtSubject": "Тема", "DE.Views.FileMenuPanels.DocumentInfo.txtSymbols": "Символы", - "DE.Views.FileMenuPanels.DocumentInfo.txtTitle": "Название", "DE.Views.FileMenuPanels.DocumentInfo.txtTags": "Теги", + "DE.Views.FileMenuPanels.DocumentInfo.txtTitle": "Название", "DE.Views.FileMenuPanels.DocumentInfo.txtUploaded": "Загружен", "DE.Views.FileMenuPanels.DocumentInfo.txtWords": "Слова", "DE.Views.FileMenuPanels.DocumentInfo.txtYes": "Да", @@ -2760,6 +2922,7 @@ "DE.Views.Toolbar.capBtnInsImage": "Изображение", "DE.Views.Toolbar.capBtnInsPagebreak": "Разрывы", "DE.Views.Toolbar.capBtnInsShape": "Фигура", + "DE.Views.Toolbar.capBtnInsSmartArt": "SmartArt", "DE.Views.Toolbar.capBtnInsSymbol": "Символ", "DE.Views.Toolbar.capBtnInsTable": "Таблица", "DE.Views.Toolbar.capBtnInsTextart": "Text Art", @@ -2910,6 +3073,7 @@ "DE.Views.Toolbar.tipInsertImage": "Вставить изображение", "DE.Views.Toolbar.tipInsertNum": "Вставить номер страницы", "DE.Views.Toolbar.tipInsertShape": "Вставить автофигуру", + "DE.Views.Toolbar.tipInsertSmartArt": "Вставить SmartArt", "DE.Views.Toolbar.tipInsertSymbol": "Вставить символ", "DE.Views.Toolbar.tipInsertTable": "Вставить таблицу", "DE.Views.Toolbar.tipInsertText": "Вставить надпись", diff --git a/apps/documenteditor/main/locale/zh.json b/apps/documenteditor/main/locale/zh.json index 4b6514d0b..d8a1ef466 100644 --- a/apps/documenteditor/main/locale/zh.json +++ b/apps/documenteditor/main/locale/zh.json @@ -125,6 +125,19 @@ "Common.define.chartData.textScatterSmoothMarker": "带平滑线和数据标记的散点图", "Common.define.chartData.textStock": "股价图", "Common.define.chartData.textSurface": "平面", + "Common.define.smartArt.textAccentedPicture": "重音图片", + "Common.define.smartArt.textAccentProcess": "重点流程", + "Common.define.smartArt.textAlternatingFlow": "交替流", + "Common.define.smartArt.textAlternatingHexagons": "交替六边形", + "Common.define.smartArt.textAlternatingPictureBlocks": "交替图片块", + "Common.define.smartArt.textAlternatingPictureCircles": "交替图片圆形", + "Common.define.smartArt.textArchitectureLayout": "结构布局", + "Common.define.smartArt.textArrowRibbon": "带形箭头", + "Common.define.smartArt.textAscendingPictureAccentProcess": "升序图片重点流程", + "Common.define.smartArt.textBalance": "平衡", + "Common.define.smartArt.textBasicBendingProcess": "基本蛇形流程", + "Common.define.smartArt.textBasicBlockList": "基本列表", + "Common.define.smartArt.textBasicChevronProcess": "基本 V 形流程", "Common.Translation.textMoreButton": "更多", "Common.Translation.warnFileLocked": "您不能编辑此文件,因为它正在另一个应用程序中被编辑。", "Common.Translation.warnFileLockedBtnEdit": "建立副本", @@ -2401,6 +2414,7 @@ "DE.Views.ParagraphSettingsAdvanced.tipTop": "仅限顶部边框", "DE.Views.ParagraphSettingsAdvanced.txtAutoText": "自动", "DE.Views.ParagraphSettingsAdvanced.txtNoBorders": "没有边框", + "DE.Views.ProtectDialog.txtAllow": "仅允许在文档中进行此类型的编辑", "DE.Views.RightMenu.txtChartSettings": "图表设置", "DE.Views.RightMenu.txtFormSettings": "表单设置", "DE.Views.RightMenu.txtHeaderFooterSettings": "页眉和页脚设置", diff --git a/apps/presentationeditor/main/locale/en.json b/apps/presentationeditor/main/locale/en.json index 6fd9c5ef0..fe12ef131 100644 --- a/apps/presentationeditor/main/locale/en.json +++ b/apps/presentationeditor/main/locale/en.json @@ -276,7 +276,7 @@ "Common.define.smartArt.textBendingPictureBlocks": "Bending Picture Blocks", "Common.define.smartArt.textBendingPictureCaption": "Bending Picture Caption", "Common.define.smartArt.textBendingPictureCaptionList": "Bending Picture Caption List", - "Common.define.smartArt.textBendingPictureSemiTranparentText": "Bending Picture Semi-Tranparent Text", + "Common.define.smartArt.textBendingPictureSemiTranparentText": "Bending Picture Semi-Transparent Text", "Common.define.smartArt.textBlockCycle": "Block Cycle", "Common.define.smartArt.textBubblePictureList": "Bubble Picture List", "Common.define.smartArt.textCaptionedPictures": "Captioned Pictures", @@ -797,6 +797,7 @@ "PE.Controllers.LeftMenu.txtUntitled": "Untitled", "PE.Controllers.Main.applyChangesTextText": "Loading data...", "PE.Controllers.Main.applyChangesTitleText": "Loading Data", + "PE.Controllers.Main.confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", "PE.Controllers.Main.convertationTimeoutText": "Conversion timeout exceeded.", "PE.Controllers.Main.criticalErrorExtText": "Press \"OK\" to return to document list.", "PE.Controllers.Main.criticalErrorTitle": "Error", @@ -874,6 +875,7 @@ "PE.Controllers.Main.textClose": "Close", "PE.Controllers.Main.textCloseTip": "Click to close the tip", "PE.Controllers.Main.textContactUs": "Contact sales", + "PE.Controllers.Main.textContinue": "Continue", "PE.Controllers.Main.textConvertEquation": "This equation was created with an old version of the equation editor which is no longer supported. To edit it, convert the equation to the Office Math ML format.
Convert now?", "PE.Controllers.Main.textCustomLoader": "Please note that according to the terms of the license you are not entitled to change the loader.
Please contact our Sales Department to get a quote.", "PE.Controllers.Main.textDisconnect": "Connection is lost", @@ -894,6 +896,7 @@ "PE.Controllers.Main.textStrict": "Strict mode", "PE.Controllers.Main.textTryUndoRedo": "The Undo/Redo functions are disabled for the Fast co-editing mode.
Click the 'Strict mode' button to switch to the Strict co-editing mode to edit the file without other users interference and send your changes only after you save them. You can switch between the co-editing modes using the editor Advanced settings.", "PE.Controllers.Main.textTryUndoRedoWarn": "The Undo/Redo functions are disabled for the Fast co-editing mode.", + "PE.Controllers.Main.textUndo": "Undo", "PE.Controllers.Main.titleLicenseExp": "License expired", "PE.Controllers.Main.titleServerVersion": "Editor updated", "PE.Controllers.Main.txtAddFirstSlide": "Click to add the first slide", @@ -1168,9 +1171,6 @@ "PE.Controllers.Main.warnNoLicense": "You've reached the limit for simultaneous connections to %1 editors. This document will be opened for viewing only.
Contact %1 sales team for personal upgrade terms.", "PE.Controllers.Main.warnNoLicenseUsers": "You've reached the user limit for %1 editors. Contact %1 sales team for personal upgrade terms.", "PE.Controllers.Main.warnProcessRightsChange": "You have been denied the right to edit the file.", - "PE.Controllers.Main.confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "PE.Controllers.Main.textUndo": "Undo", - "PE.Controllers.Main.textContinue": "Continue", "PE.Controllers.Search.notcriticalErrorTitle": "Warning", "PE.Controllers.Search.textNoTextFound": "The data you have been searching for could not be found. Please adjust your search options.", "PE.Controllers.Search.textReplaceSkipped": "The replacement has been made. {0} occurrences were skipped.", @@ -1836,8 +1836,8 @@ "PE.Views.FileMenuPanels.DocumentInfo.txtPlacement": "Location", "PE.Views.FileMenuPanels.DocumentInfo.txtRights": "Persons who have rights", "PE.Views.FileMenuPanels.DocumentInfo.txtSubject": "Subject", - "PE.Views.FileMenuPanels.DocumentInfo.txtTitle": "Title", "PE.Views.FileMenuPanels.DocumentInfo.txtTags": "Tags", + "PE.Views.FileMenuPanels.DocumentInfo.txtTitle": "Title", "PE.Views.FileMenuPanels.DocumentInfo.txtUploaded": "Uploaded", "PE.Views.FileMenuPanels.DocumentRights.txtBtnAccessRights": "Change access rights", "PE.Views.FileMenuPanels.DocumentRights.txtRights": "Persons who have rights", diff --git a/apps/presentationeditor/main/locale/id.json b/apps/presentationeditor/main/locale/id.json index bfe2fd377..967f37719 100644 --- a/apps/presentationeditor/main/locale/id.json +++ b/apps/presentationeditor/main/locale/id.json @@ -248,6 +248,8 @@ "Common.define.effectData.textWipe": "Wipe", "Common.define.effectData.textZigzag": "Zigzag", "Common.define.effectData.textZoom": "Pembesaran", + "Common.define.gridlineData.txtCm": "cm", + "Common.define.gridlineData.txtPt": "pt", "Common.Translation.textMoreButton": "Lainnya", "Common.Translation.warnFileLocked": "File sedang diedit di aplikasi lain. Anda bisa melanjutkan edit dan menyimpannya sebagai salinan.", "Common.Translation.warnFileLockedBtnEdit": "Buat salinan", @@ -1477,15 +1479,21 @@ "PE.Views.DocumentHolder.splitCellsText": "Pisahkan Sel...", "PE.Views.DocumentHolder.splitCellTitleText": "Pisahkan Sel", "PE.Views.DocumentHolder.tableText": "Tabel", + "PE.Views.DocumentHolder.textAddHGuides": "Tambahkan Pemandu Horizontal", + "PE.Views.DocumentHolder.textAddVGuides": "Tambahkan Pemandu Vertikal", "PE.Views.DocumentHolder.textArrangeBack": "Jalankan di Background", "PE.Views.DocumentHolder.textArrangeBackward": "Mundurkan", "PE.Views.DocumentHolder.textArrangeForward": "Majukan", "PE.Views.DocumentHolder.textArrangeFront": "Tampilkan di Halaman Muka", + "PE.Views.DocumentHolder.textClearGuides": "Hapus Pemandu", + "PE.Views.DocumentHolder.textCm": "cm", "PE.Views.DocumentHolder.textCopy": "Salin", "PE.Views.DocumentHolder.textCrop": "Isian", "PE.Views.DocumentHolder.textCropFill": "Isi", "PE.Views.DocumentHolder.textCropFit": "Fit", + "PE.Views.DocumentHolder.textCustom": "Kustom", "PE.Views.DocumentHolder.textCut": "Potong", + "PE.Views.DocumentHolder.textDeleteGuide": "Hapus Pemandu", "PE.Views.DocumentHolder.textDistributeCols": "Distribusikan kolom", "PE.Views.DocumentHolder.textDistributeRows": "Distribusikan baris", "PE.Views.DocumentHolder.textEditPoints": "Edit Titik", @@ -1494,6 +1502,8 @@ "PE.Views.DocumentHolder.textFromFile": "Dari File", "PE.Views.DocumentHolder.textFromStorage": "Dari Penyimpanan", "PE.Views.DocumentHolder.textFromUrl": "Dari URL", + "PE.Views.DocumentHolder.textGridlines": "Garis Kisi", + "PE.Views.DocumentHolder.textGuides": "Pemandu", "PE.Views.DocumentHolder.textNextPage": "Slide Berikutnya", "PE.Views.DocumentHolder.textPaste": "Tempel", "PE.Views.DocumentHolder.textPrevPage": "Slide sebelumnya", @@ -1501,14 +1511,20 @@ "PE.Views.DocumentHolder.textRotate": "Rotasi", "PE.Views.DocumentHolder.textRotate270": "Rotasi 90° Berlawanan Jarum Jam", "PE.Views.DocumentHolder.textRotate90": "Rotasi 90° Searah Jarum Jam", + "PE.Views.DocumentHolder.textRulers": "Penggaris", "PE.Views.DocumentHolder.textShapeAlignBottom": "Rata Bawah", "PE.Views.DocumentHolder.textShapeAlignCenter": "Rata Tengah", "PE.Views.DocumentHolder.textShapeAlignLeft": "Rata Kiri", "PE.Views.DocumentHolder.textShapeAlignMiddle": "Rata di Tengah", "PE.Views.DocumentHolder.textShapeAlignRight": "Rata Kanan", "PE.Views.DocumentHolder.textShapeAlignTop": "Rata Atas", + "PE.Views.DocumentHolder.textShowGridlines": "Tampilkan Garis Kisi", + "PE.Views.DocumentHolder.textShowGuides": "Tampilkan Pemandu", "PE.Views.DocumentHolder.textSlideSettings": "Pengaturan slide", + "PE.Views.DocumentHolder.textSmartGuides": "Pemandu Pintar", + "PE.Views.DocumentHolder.textSnapObjects": "Posisikan Objek pada Kisi", "PE.Views.DocumentHolder.textUndo": "Batalkan", + "PE.Views.DocumentHolder.tipGuides": "Tampilkan pemandu", "PE.Views.DocumentHolder.tipIsLocked": "Elemen ini sedang diedit oleh pengguna lain.", "PE.Views.DocumentHolder.toDictionaryText": "Tambah ke Kamus", "PE.Views.DocumentHolder.txtAddBottom": "Tambah pembatas bawah", @@ -1689,7 +1705,7 @@ "PE.Views.FileMenuPanels.Settings.text30Minutes": "Tiap 30 Menit", "PE.Views.FileMenuPanels.Settings.text5Minutes": "Tiap 5 Menit", "PE.Views.FileMenuPanels.Settings.text60Minutes": "Tiap Jam", - "PE.Views.FileMenuPanels.Settings.textAlignGuides": "Panduan Penjajaran", + "PE.Views.FileMenuPanels.Settings.textAlignGuides": "Pemandu Penjajaran", "PE.Views.FileMenuPanels.Settings.textAutoRecover": "Recover otmoatis", "PE.Views.FileMenuPanels.Settings.textAutoSave": "Simpan otomatis", "PE.Views.FileMenuPanels.Settings.textDisabled": "Nonaktif", @@ -1723,6 +1739,10 @@ "PE.Views.FileMenuPanels.Settings.txtWarnMacrosDesc": "Nonaktifkan semua macros dengan notifikasi", "PE.Views.FileMenuPanels.Settings.txtWin": "sebagai Windows", "PE.Views.FileMenuPanels.Settings.txtWorkspace": "Ruang Kerja", + "PE.Views.GridSettings.textCm": "cm", + "PE.Views.GridSettings.textCustom": "Kustom", + "PE.Views.GridSettings.textSpacing": "Spasi", + "PE.Views.GridSettings.textTitle": "Pengaturan Kisi", "PE.Views.HeaderFooterDialog.applyAllText": "Terapkan untuk Semua", "PE.Views.HeaderFooterDialog.applyText": "Terapkan", "PE.Views.HeaderFooterDialog.diffLanguage": "Anda tidak dapat menggunakan format tanggal dalam bahasa yang berbeda dari master slide.
Untuk mengubah master, klik 'Terapkan ke semua' bukan 'Terapkan'", @@ -2294,6 +2314,7 @@ "PE.Views.Toolbar.tipInsertAudio": "Sisipkan audio", "PE.Views.Toolbar.tipInsertChart": "Sisipkan Bagan", "PE.Views.Toolbar.tipInsertEquation": "Masukkan Persamaan", + "PE.Views.Toolbar.tipInsertHorizontalText": "Sisipkan kotak teks horizontal", "PE.Views.Toolbar.tipInsertHyperlink": "Tambahkan hyperlink", "PE.Views.Toolbar.tipInsertImage": "Sisipkan Gambar", "PE.Views.Toolbar.tipInsertShape": "Sisipkan Bentuk Otomatis", @@ -2301,6 +2322,7 @@ "PE.Views.Toolbar.tipInsertTable": "Sisipkan Tabel", "PE.Views.Toolbar.tipInsertText": "Sisipkan Teks", "PE.Views.Toolbar.tipInsertTextArt": "Sisipkan Text Art", + "PE.Views.Toolbar.tipInsertVerticalText": "Sisipkan kotak teks vertikal", "PE.Views.Toolbar.tipInsertVideo": "Sisipkan video", "PE.Views.Toolbar.tipLineSpace": "Spasi Antar Baris", "PE.Views.Toolbar.tipMarkers": "Butir", @@ -2394,15 +2416,28 @@ "PE.Views.Transitions.txtParameters": "Parameter", "PE.Views.Transitions.txtPreview": "Pratinjau", "PE.Views.Transitions.txtSec": "s", + "PE.Views.ViewTab.textAddHGuides": "Tambahkan Pemandu Horizontal", + "PE.Views.ViewTab.textAddVGuides": "Tambahkan Pemandu Vertikal", "PE.Views.ViewTab.textAlwaysShowToolbar": "Selalu tampilkan toolbar", + "PE.Views.ViewTab.textClearGuides": "Hapus Pemandu", + "PE.Views.ViewTab.textCm": "cm", + "PE.Views.ViewTab.textCustom": "Kustom", "PE.Views.ViewTab.textFitToSlide": "Fit Slide", "PE.Views.ViewTab.textFitToWidth": "Sesuaikan Lebar", + "PE.Views.ViewTab.textGridlines": "Garis Kisi", + "PE.Views.ViewTab.textGuides": "Pemandu", "PE.Views.ViewTab.textInterfaceTheme": "Tema interface", "PE.Views.ViewTab.textNotes": "Catatan", "PE.Views.ViewTab.textRulers": "Penggaris", + "PE.Views.ViewTab.textShowGridlines": "Tampilkan Garis Kisi", + "PE.Views.ViewTab.textShowGuides": "Tampilkan Pemandu", + "PE.Views.ViewTab.textSmartGuides": "Pemandu Pintar", + "PE.Views.ViewTab.textSnapObjects": "Posisikan Objek pada Kisi", "PE.Views.ViewTab.textStatusBar": "Bar Status", "PE.Views.ViewTab.textZoom": "Pembesaran", "PE.Views.ViewTab.tipFitToSlide": "Paskan dengan slide", "PE.Views.ViewTab.tipFitToWidth": "Paskan sesuai lebar", + "PE.Views.ViewTab.tipGridlines": "Tampilkan garis kisi", + "PE.Views.ViewTab.tipGuides": "Tampilkan Pemandu", "PE.Views.ViewTab.tipInterfaceTheme": "Tema antarmuka" } \ No newline at end of file diff --git a/apps/presentationeditor/main/locale/pt-pt.json b/apps/presentationeditor/main/locale/pt-pt.json index cda0f1c82..453ed3826 100644 --- a/apps/presentationeditor/main/locale/pt-pt.json +++ b/apps/presentationeditor/main/locale/pt-pt.json @@ -248,6 +248,8 @@ "Common.define.effectData.textWipe": "Revelar", "Common.define.effectData.textZigzag": "Zigzag", "Common.define.effectData.textZoom": "Zoom", + "Common.define.gridlineData.txtCm": "cm", + "Common.define.gridlineData.txtPt": "pt", "Common.Translation.textMoreButton": "Mais", "Common.Translation.warnFileLocked": "O ficheiro está a ser editado por outra aplicação. Pode continuar a trabalhar mas terá que guardar uma cópia.", "Common.Translation.warnFileLockedBtnEdit": "Criar uma cópia", @@ -1477,15 +1479,21 @@ "PE.Views.DocumentHolder.splitCellsText": "Dividir célula...", "PE.Views.DocumentHolder.splitCellTitleText": "Dividir célula", "PE.Views.DocumentHolder.tableText": "Tabela", + "PE.Views.DocumentHolder.textAddHGuides": "Adicionar guia horizontal", + "PE.Views.DocumentHolder.textAddVGuides": "Adicionar guia vertical", "PE.Views.DocumentHolder.textArrangeBack": "Enviar para plano de fundo", "PE.Views.DocumentHolder.textArrangeBackward": "Enviar para trás", "PE.Views.DocumentHolder.textArrangeForward": "Trazer para frente", "PE.Views.DocumentHolder.textArrangeFront": "Trazer para primeiro plano", + "PE.Views.DocumentHolder.textClearGuides": "Limpar guias", + "PE.Views.DocumentHolder.textCm": "cm", "PE.Views.DocumentHolder.textCopy": "Copiar", "PE.Views.DocumentHolder.textCrop": "Cortar", "PE.Views.DocumentHolder.textCropFill": "Preencher", "PE.Views.DocumentHolder.textCropFit": "Ajustar", + "PE.Views.DocumentHolder.textCustom": "Personalizado", "PE.Views.DocumentHolder.textCut": "Cortar", + "PE.Views.DocumentHolder.textDeleteGuide": "Eliminar guia", "PE.Views.DocumentHolder.textDistributeCols": "Distribuir colunas", "PE.Views.DocumentHolder.textDistributeRows": "Distribuir linhas", "PE.Views.DocumentHolder.textEditPoints": "Editar Pontos", @@ -1494,6 +1502,8 @@ "PE.Views.DocumentHolder.textFromFile": "De um ficheiro", "PE.Views.DocumentHolder.textFromStorage": "De um armazenamento", "PE.Views.DocumentHolder.textFromUrl": "De um URL", + "PE.Views.DocumentHolder.textGridlines": "Linhas da grelha", + "PE.Views.DocumentHolder.textGuides": "Guias", "PE.Views.DocumentHolder.textNextPage": "Diapositivo seguinte", "PE.Views.DocumentHolder.textPaste": "Colar", "PE.Views.DocumentHolder.textPrevPage": "Diapositivo anterior", @@ -1501,14 +1511,20 @@ "PE.Views.DocumentHolder.textRotate": "Rodar", "PE.Views.DocumentHolder.textRotate270": "Rodar 90º à esquerda", "PE.Views.DocumentHolder.textRotate90": "Rodar 90º à direita", + "PE.Views.DocumentHolder.textRulers": "Réguas", "PE.Views.DocumentHolder.textShapeAlignBottom": "Alinhar em baixo", "PE.Views.DocumentHolder.textShapeAlignCenter": "Alinhar ao centro", "PE.Views.DocumentHolder.textShapeAlignLeft": "Alinhar à esquerda", "PE.Views.DocumentHolder.textShapeAlignMiddle": "Alinhar ao meio", "PE.Views.DocumentHolder.textShapeAlignRight": "Alinhar à direita", "PE.Views.DocumentHolder.textShapeAlignTop": "Alinhar em cima", + "PE.Views.DocumentHolder.textShowGridlines": "Mostrar linhas da grelha", + "PE.Views.DocumentHolder.textShowGuides": "Mostrar guias", "PE.Views.DocumentHolder.textSlideSettings": "Definições de diapositivo", + "PE.Views.DocumentHolder.textSmartGuides": "Guias inteligentes", + "PE.Views.DocumentHolder.textSnapObjects": "Ajustar objeto à grelha", "PE.Views.DocumentHolder.textUndo": "Desfazer", + "PE.Views.DocumentHolder.tipGuides": "Mostrar guias", "PE.Views.DocumentHolder.tipIsLocked": "Este elemento está a ser editado por outro utilizador.", "PE.Views.DocumentHolder.toDictionaryText": "Incluir no Dicionário", "PE.Views.DocumentHolder.txtAddBottom": "Adicionar contorno inferior", @@ -1723,6 +1739,10 @@ "PE.Views.FileMenuPanels.Settings.txtWarnMacrosDesc": "Desativar todas as macros com uma notificação", "PE.Views.FileMenuPanels.Settings.txtWin": "como Windows", "PE.Views.FileMenuPanels.Settings.txtWorkspace": "Área de trabalho", + "PE.Views.GridSettings.textCm": "cm", + "PE.Views.GridSettings.textCustom": "Personalizado", + "PE.Views.GridSettings.textSpacing": "Espaçamento", + "PE.Views.GridSettings.textTitle": "Definições da grelha", "PE.Views.HeaderFooterDialog.applyAllText": "Aplicar a todos", "PE.Views.HeaderFooterDialog.applyText": "Aplicar", "PE.Views.HeaderFooterDialog.diffLanguage": "Não pode utilizar um formato de data que seja diferente do formato utilizado no modelo global.
Para alterar o modelo global, clique \"Aplicar a todos\" em vez de \"Aplicar\".", @@ -2294,6 +2314,7 @@ "PE.Views.Toolbar.tipInsertAudio": "Inserir áudio", "PE.Views.Toolbar.tipInsertChart": "Inserir gráfico", "PE.Views.Toolbar.tipInsertEquation": "Inserir equação", + "PE.Views.Toolbar.tipInsertHorizontalText": "Inserir caixa de texto horizontal", "PE.Views.Toolbar.tipInsertHyperlink": "Adicionar hiperligação", "PE.Views.Toolbar.tipInsertImage": "Inserir imagem", "PE.Views.Toolbar.tipInsertShape": "Inserir forma automática", @@ -2301,6 +2322,7 @@ "PE.Views.Toolbar.tipInsertTable": "Inserir tabela", "PE.Views.Toolbar.tipInsertText": "Inserir caixa de texto", "PE.Views.Toolbar.tipInsertTextArt": "Inserir arte de texto", + "PE.Views.Toolbar.tipInsertVerticalText": "Inserir caixa de texto vertical", "PE.Views.Toolbar.tipInsertVideo": "Inserir vídeo", "PE.Views.Toolbar.tipLineSpace": "Espaçamento de linha", "PE.Views.Toolbar.tipMarkers": "Marcadores", @@ -2394,15 +2416,28 @@ "PE.Views.Transitions.txtParameters": "Parâmetros", "PE.Views.Transitions.txtPreview": "Pré-visualizar", "PE.Views.Transitions.txtSec": "S", + "PE.Views.ViewTab.textAddHGuides": "Adicionar guia horizontal", + "PE.Views.ViewTab.textAddVGuides": "Adicionar guia vertical", "PE.Views.ViewTab.textAlwaysShowToolbar": "Mostrar sempre a barra de ferramentas", + "PE.Views.ViewTab.textClearGuides": "Limpar guias", + "PE.Views.ViewTab.textCm": "cm", + "PE.Views.ViewTab.textCustom": "Personalizado", "PE.Views.ViewTab.textFitToSlide": "Ajustar ao diapositivo", "PE.Views.ViewTab.textFitToWidth": "Ajustar à Largura", + "PE.Views.ViewTab.textGridlines": "Linhas da grelha", + "PE.Views.ViewTab.textGuides": "Guias", "PE.Views.ViewTab.textInterfaceTheme": "Tema da interface", "PE.Views.ViewTab.textNotes": "Notas", "PE.Views.ViewTab.textRulers": "Réguas", + "PE.Views.ViewTab.textShowGridlines": "Mostrar linhas da grelha", + "PE.Views.ViewTab.textShowGuides": "Mostrar guias", + "PE.Views.ViewTab.textSmartGuides": "Guias inteligentes", + "PE.Views.ViewTab.textSnapObjects": "Ajustar objeto à grelha", "PE.Views.ViewTab.textStatusBar": "Barra de estado", "PE.Views.ViewTab.textZoom": "Zoom", "PE.Views.ViewTab.tipFitToSlide": "Ajustar ao diapositivo", "PE.Views.ViewTab.tipFitToWidth": "Ajustar à Largura", + "PE.Views.ViewTab.tipGridlines": "Mostrar linhas da grelha", + "PE.Views.ViewTab.tipGuides": "Mostrar guias", "PE.Views.ViewTab.tipInterfaceTheme": "Tema da interface" } \ No newline at end of file diff --git a/apps/presentationeditor/main/locale/pt.json b/apps/presentationeditor/main/locale/pt.json index aa969fa60..86e99be79 100644 --- a/apps/presentationeditor/main/locale/pt.json +++ b/apps/presentationeditor/main/locale/pt.json @@ -248,6 +248,8 @@ "Common.define.effectData.textWipe": "Revelar", "Common.define.effectData.textZigzag": "ziguezague", "Common.define.effectData.textZoom": "Zoom", + "Common.define.gridlineData.txtCm": "cm", + "Common.define.gridlineData.txtPt": "Pt", "Common.Translation.textMoreButton": "Mais", "Common.Translation.warnFileLocked": "Documento está em uso por outra aplicação. Você pode continuar editando e salvá-lo como uma cópia.", "Common.Translation.warnFileLockedBtnEdit": "Criar uma cópia", @@ -378,6 +380,8 @@ "Common.Views.DocumentAccessDialog.textLoading": "Carregando...", "Common.Views.DocumentAccessDialog.textTitle": "Configurações de compartilhamento", "Common.Views.ExternalDiagramEditor.textTitle": "Editor de gráfico", + "Common.Views.ExternalEditor.textClose": "Encerrar", + "Common.Views.ExternalEditor.textSave": "Salvar e Sair", "Common.Views.ExternalOleEditor.textTitle": "Editor de planilhas", "Common.Views.Header.labelCoUsersDescr": "O documento atualmente está sendo editado por vários usuários.", "Common.Views.Header.textAddFavorite": "Marcar como favorito", @@ -468,6 +472,7 @@ "Common.Views.Plugins.textStart": "Iniciar", "Common.Views.Plugins.textStop": "Parar", "Common.Views.Protection.hintAddPwd": "Criptografar com senha", + "Common.Views.Protection.hintDelPwd": "Excluir senha", "Common.Views.Protection.hintPwd": "Alterar ou excluir senha", "Common.Views.Protection.hintSignature": "Inserir assinatura digital ou linha de assinatura", "Common.Views.Protection.txtAddPwd": "Adicionar senha", @@ -584,6 +589,7 @@ "Common.Views.SignDialog.tipFontName": "Nome da Fonte", "Common.Views.SignDialog.tipFontSize": "Tamanho da fonte", "Common.Views.SignSettingsDialog.textAllowComment": "Permitir que o assinante adicione um comentário na caixa de diálogo de assinatura", + "Common.Views.SignSettingsDialog.textDefInstruction": "Antes de assinar este documento, verifique se o conteúdo que está a assinar está correto.", "Common.Views.SignSettingsDialog.textInfoEmail": "E-mail", "Common.Views.SignSettingsDialog.textInfoName": "Nome", "Common.Views.SignSettingsDialog.textInfoTitle": "Título do Signatário", @@ -647,6 +653,7 @@ "PE.Controllers.Main.errorDataEncrypted": "Alteração criptografadas foram recebidas, e não podem ser decifradas.", "PE.Controllers.Main.errorDataRange": "Intervalo de dados incorreto.", "PE.Controllers.Main.errorDefaultMessage": "Código do erro: %1", + "PE.Controllers.Main.errorDirectUrl": "Por favor, verifique o link para o documento.
Este link deve ser o link direto para baixar o arquivo.", "PE.Controllers.Main.errorEditingDownloadas": "Ocorreu um erro.
Use a opção 'Transferir como' para gravar a cópia de backup em seu computador.", "PE.Controllers.Main.errorEditingSaveas": "Ocorreu um erro durante o trabalho com o documento.
Use a opção 'Salvar como ...' para salvar a cópia de backup do arquivo no disco rígido do computador.", "PE.Controllers.Main.errorEmailClient": "Nenhum cliente de e-mail foi encontrado.", @@ -1377,14 +1384,29 @@ "PE.Views.Animation.txtSec": "S", "PE.Views.AnimationDialog.textPreviewEffect": "Efeito de visualização", "PE.Views.AnimationDialog.textTitle": "Mais efeitos", + "PE.Views.ChartSettings.text3dDepth": "Profundidade (% da base)", + "PE.Views.ChartSettings.text3dHeight": "Altura (% da base)", + "PE.Views.ChartSettings.text3dRotation": "Rotação 3D", "PE.Views.ChartSettings.textAdvanced": "Exibir configurações avançadas", + "PE.Views.ChartSettings.textAutoscale": "Autoescala", "PE.Views.ChartSettings.textChartType": "Alterar tipo de gráfico", + "PE.Views.ChartSettings.textDefault": "Rotação padrão", + "PE.Views.ChartSettings.textDown": "Abaixo", "PE.Views.ChartSettings.textEditData": "Editar dados", "PE.Views.ChartSettings.textHeight": "Altura", "PE.Views.ChartSettings.textKeepRatio": "Proporções constantes", + "PE.Views.ChartSettings.textLeft": "Esquerda", + "PE.Views.ChartSettings.textNarrow": "Campo de visão estreito", + "PE.Views.ChartSettings.textPerspective": "Perspectiva", + "PE.Views.ChartSettings.textRight": "Direita", + "PE.Views.ChartSettings.textRightAngle": "Eixos de ângulo reto", "PE.Views.ChartSettings.textSize": "Tamanho", "PE.Views.ChartSettings.textStyle": "Estilo", + "PE.Views.ChartSettings.textUp": "Para cima", + "PE.Views.ChartSettings.textWiden": "Ampliar o campo de visão", "PE.Views.ChartSettings.textWidth": "Largura", + "PE.Views.ChartSettings.textX": "Rotação X", + "PE.Views.ChartSettings.textY": "Rotação Y", "PE.Views.ChartSettingsAdvanced.textAlt": "Texto Alternativo", "PE.Views.ChartSettingsAdvanced.textAltDescription": "Descrição", "PE.Views.ChartSettingsAdvanced.textAltTip": "A representação alternativa baseada em texto da informação visual do objeto, que será lida para as pessoas com deficiências visuais ou cognitivas para ajudá-las a entender melhor que informação, forma automática, gráfico ou tabela existe na imagem.", @@ -1410,6 +1432,7 @@ "PE.Views.DocumentHolder.aboveText": "Acima", "PE.Views.DocumentHolder.addCommentText": "Adicionar comentário", "PE.Views.DocumentHolder.addToLayoutText": "Adicionar ao Layout", + "PE.Views.DocumentHolder.advancedChartText": "Configurações avançadas de gráfico", "PE.Views.DocumentHolder.advancedImageText": "Configurações avançadas de imagem", "PE.Views.DocumentHolder.advancedParagraphText": "Configurações avançadas de parágrafo", "PE.Views.DocumentHolder.advancedShapeText": "Configurações avançadas de forma", @@ -1456,15 +1479,21 @@ "PE.Views.DocumentHolder.splitCellsText": "Dividir célula...", "PE.Views.DocumentHolder.splitCellTitleText": "Dividir célula", "PE.Views.DocumentHolder.tableText": "Tabela", + "PE.Views.DocumentHolder.textAddHGuides": "Adicionar guia horizontal", + "PE.Views.DocumentHolder.textAddVGuides": "Adicionar guia vertical", "PE.Views.DocumentHolder.textArrangeBack": "Enviar para plano de fundo", "PE.Views.DocumentHolder.textArrangeBackward": "Enviar para trás", "PE.Views.DocumentHolder.textArrangeForward": "Trazer para frente", "PE.Views.DocumentHolder.textArrangeFront": "Trazer para primeiro plano", + "PE.Views.DocumentHolder.textClearGuides": "Limpar guias", + "PE.Views.DocumentHolder.textCm": "cm", "PE.Views.DocumentHolder.textCopy": "Copiar", "PE.Views.DocumentHolder.textCrop": "Cortar", "PE.Views.DocumentHolder.textCropFill": "Preencher", "PE.Views.DocumentHolder.textCropFit": "Ajustar", + "PE.Views.DocumentHolder.textCustom": "Personalizado", "PE.Views.DocumentHolder.textCut": "Cortar", + "PE.Views.DocumentHolder.textDeleteGuide": "Excluir guia", "PE.Views.DocumentHolder.textDistributeCols": "Distribuir colunas", "PE.Views.DocumentHolder.textDistributeRows": "Distribuir linhas", "PE.Views.DocumentHolder.textEditPoints": "Editar Pontos", @@ -1473,6 +1502,8 @@ "PE.Views.DocumentHolder.textFromFile": "Do Arquivo", "PE.Views.DocumentHolder.textFromStorage": "De armazenamento", "PE.Views.DocumentHolder.textFromUrl": "Da URL", + "PE.Views.DocumentHolder.textGridlines": "Linhas de grade", + "PE.Views.DocumentHolder.textGuides": "Guias", "PE.Views.DocumentHolder.textNextPage": "Próximo slide", "PE.Views.DocumentHolder.textPaste": "Colar", "PE.Views.DocumentHolder.textPrevPage": "Slide anterior", @@ -1480,14 +1511,20 @@ "PE.Views.DocumentHolder.textRotate": "Girar", "PE.Views.DocumentHolder.textRotate270": "Girar 90º no sentido anti-horário.", "PE.Views.DocumentHolder.textRotate90": "Girar 90º no sentido horário", + "PE.Views.DocumentHolder.textRulers": "Regras", "PE.Views.DocumentHolder.textShapeAlignBottom": "Alinhar à parte inferior", "PE.Views.DocumentHolder.textShapeAlignCenter": "Alinhar ao centro", "PE.Views.DocumentHolder.textShapeAlignLeft": "Alinhar à esquerda", "PE.Views.DocumentHolder.textShapeAlignMiddle": "Alinhar ao meio", "PE.Views.DocumentHolder.textShapeAlignRight": "Alinhar à direita", "PE.Views.DocumentHolder.textShapeAlignTop": "Alinhar à parte superior", + "PE.Views.DocumentHolder.textShowGridlines": "Mostrar linhas de grade", + "PE.Views.DocumentHolder.textShowGuides": "Mostrar guias", "PE.Views.DocumentHolder.textSlideSettings": "Configurações de slide", + "PE.Views.DocumentHolder.textSmartGuides": "Guias inteligentes", + "PE.Views.DocumentHolder.textSnapObjects": "Ajustar Objeto à Grade", "PE.Views.DocumentHolder.textUndo": "Desfazer", + "PE.Views.DocumentHolder.tipGuides": "Mostrar guias", "PE.Views.DocumentHolder.tipIsLocked": "Este elemento está sendo atualmente editado por outro usuário.", "PE.Views.DocumentHolder.toDictionaryText": "Adicionar ao dicionário", "PE.Views.DocumentHolder.txtAddBottom": "Adicionar borda inferior", @@ -1702,6 +1739,10 @@ "PE.Views.FileMenuPanels.Settings.txtWarnMacrosDesc": "Desativar todas as macros com uma notificação", "PE.Views.FileMenuPanels.Settings.txtWin": "como Windows", "PE.Views.FileMenuPanels.Settings.txtWorkspace": "Área de trabalho", + "PE.Views.GridSettings.textCm": "cm", + "PE.Views.GridSettings.textCustom": "Personalizado", + "PE.Views.GridSettings.textSpacing": "Espaçamento", + "PE.Views.GridSettings.textTitle": "Configurações de grade", "PE.Views.HeaderFooterDialog.applyAllText": "Aplicar a Todos", "PE.Views.HeaderFooterDialog.applyText": "Aplicar", "PE.Views.HeaderFooterDialog.diffLanguage": "Não é possível usar um formato de data em um idioma diferente do slide mestre.
Para alterar o mestre, clique em 'Aplicar a todos' em vez de 'Aplicar'", @@ -2089,6 +2130,11 @@ "PE.Views.TableSettings.tipOuter": "Definir apenas borda externa", "PE.Views.TableSettings.tipRight": "Definir apenas borda direita externa", "PE.Views.TableSettings.tipTop": "Definir apenas borda superior externa", + "PE.Views.TableSettings.txtGroupTable_Custom": "Personalizado", + "PE.Views.TableSettings.txtGroupTable_Dark": "Escuro", + "PE.Views.TableSettings.txtGroupTable_Light": "Claro", + "PE.Views.TableSettings.txtGroupTable_Medium": "Médio", + "PE.Views.TableSettings.txtGroupTable_Optimal": "Melhor correspondência para documento", "PE.Views.TableSettings.txtNoBorders": "Sem bordas", "PE.Views.TableSettings.txtTable_Accent": "Acentuação", "PE.Views.TableSettings.txtTable_DarkStyle": "Estilo Escuro", @@ -2268,6 +2314,7 @@ "PE.Views.Toolbar.tipInsertAudio": "Inserir áudio", "PE.Views.Toolbar.tipInsertChart": "Inserir gráfico", "PE.Views.Toolbar.tipInsertEquation": "Inserir equação", + "PE.Views.Toolbar.tipInsertHorizontalText": "Inserir caixa de texto horizontal", "PE.Views.Toolbar.tipInsertHyperlink": "Adicionar hiperlink", "PE.Views.Toolbar.tipInsertImage": "Inserir imagem", "PE.Views.Toolbar.tipInsertShape": "Inserir forma automática", @@ -2275,6 +2322,7 @@ "PE.Views.Toolbar.tipInsertTable": "Inserir tabela", "PE.Views.Toolbar.tipInsertText": "Inserir caixa de texto", "PE.Views.Toolbar.tipInsertTextArt": "Inserir arte de texto", + "PE.Views.Toolbar.tipInsertVerticalText": "Inserir caixa de texto vertical", "PE.Views.Toolbar.tipInsertVideo": "Inserir Vídeo", "PE.Views.Toolbar.tipLineSpace": "Espaçamento de linha", "PE.Views.Toolbar.tipMarkers": "Marcadores", @@ -2368,15 +2416,28 @@ "PE.Views.Transitions.txtParameters": "Parâmetros", "PE.Views.Transitions.txtPreview": "Pré-visualizar", "PE.Views.Transitions.txtSec": "S", + "PE.Views.ViewTab.textAddHGuides": "Adicionar guia horizontal", + "PE.Views.ViewTab.textAddVGuides": "Adicionar guia vertical", "PE.Views.ViewTab.textAlwaysShowToolbar": "Sempre mostrar a barra de ferramentas", + "PE.Views.ViewTab.textClearGuides": "Limpar guias", + "PE.Views.ViewTab.textCm": "cm", + "PE.Views.ViewTab.textCustom": "Personalizado", "PE.Views.ViewTab.textFitToSlide": "Ajustar slide", "PE.Views.ViewTab.textFitToWidth": "Ajustar largura", + "PE.Views.ViewTab.textGridlines": "Linhas de grade", + "PE.Views.ViewTab.textGuides": "Guias", "PE.Views.ViewTab.textInterfaceTheme": "Tema de interface", "PE.Views.ViewTab.textNotes": "Notas", "PE.Views.ViewTab.textRulers": "Regras", + "PE.Views.ViewTab.textShowGridlines": "Mostrar linhas de grade", + "PE.Views.ViewTab.textShowGuides": "Mostrar guias", + "PE.Views.ViewTab.textSmartGuides": "Guias inteligentes", + "PE.Views.ViewTab.textSnapObjects": "Ajustar Objeto à Grade", "PE.Views.ViewTab.textStatusBar": "Barra de status", "PE.Views.ViewTab.textZoom": "Zoom", "PE.Views.ViewTab.tipFitToSlide": "Ajustar slide", "PE.Views.ViewTab.tipFitToWidth": "Ajustar largura", + "PE.Views.ViewTab.tipGridlines": "Mostrar linhas de grade", + "PE.Views.ViewTab.tipGuides": "Mostrar guias", "PE.Views.ViewTab.tipInterfaceTheme": "Tema de interface" } \ No newline at end of file diff --git a/apps/presentationeditor/main/locale/ru.json b/apps/presentationeditor/main/locale/ru.json index aae37b827..2a6f5dea6 100644 --- a/apps/presentationeditor/main/locale/ru.json +++ b/apps/presentationeditor/main/locale/ru.json @@ -250,6 +250,165 @@ "Common.define.effectData.textZoom": "Масштабирование", "Common.define.gridlineData.txtCm": "см", "Common.define.gridlineData.txtPt": "пт", + "Common.define.smartArt.textAccentedPicture": "Акцентируемый рисунок", + "Common.define.smartArt.textAccentProcess": "Процесс со смещением", + "Common.define.smartArt.textAlternatingFlow": "Переменный поток", + "Common.define.smartArt.textAlternatingHexagons": "Чередующиеся шестиугольники", + "Common.define.smartArt.textAlternatingPictureBlocks": "Чередующиеся блоки рисунков", + "Common.define.smartArt.textAlternatingPictureCircles": "Чередующиеся круги рисунков", + "Common.define.smartArt.textArchitectureLayout": "Архитектурный макет", + "Common.define.smartArt.textArrowRibbon": "Лента со стрелками", + "Common.define.smartArt.textAscendingPictureAccentProcess": "Процесс со смещенными по возрастанию рисунками", + "Common.define.smartArt.textBalance": "Баланс", + "Common.define.smartArt.textBasicBendingProcess": "Простой ломаный процесс", + "Common.define.smartArt.textBasicBlockList": "Простой блочный список", + "Common.define.smartArt.textBasicChevronProcess": "Простой уголковый процесс", + "Common.define.smartArt.textBasicCycle": "Простой цикл", + "Common.define.smartArt.textBasicMatrix": "Простая матрица", + "Common.define.smartArt.textBasicPie": "Простая круговая", + "Common.define.smartArt.textBasicProcess": "Простой процесс", + "Common.define.smartArt.textBasicPyramid": "Простая пирамида", + "Common.define.smartArt.textBasicRadial": "Простая радиальная", + "Common.define.smartArt.textBasicTarget": "Простая целевая", + "Common.define.smartArt.textBasicTimeline": "Простая временная шкала", + "Common.define.smartArt.textBasicVenn": "Простая Венна", + "Common.define.smartArt.textBendingPictureAccentList": "Ломаный список со смещенными рисунками", + "Common.define.smartArt.textBendingPictureBlocks": "Нелинейные рисунки с блоками", + "Common.define.smartArt.textBendingPictureCaption": "Нелинейные рисунки с подписями", + "Common.define.smartArt.textBendingPictureCaptionList": "Ломаный список рисунков с подписями", + "Common.define.smartArt.textBendingPictureSemiTranparentText": "Нелинейные рисунки с полупрозрачным текстом", + "Common.define.smartArt.textBlockCycle": "Блочный цикл", + "Common.define.smartArt.textBubblePictureList": "Список рисунков с выносками", + "Common.define.smartArt.textCaptionedPictures": "Подписанные рисунки", + "Common.define.smartArt.textChevronAccentProcess": "Уголковый процесс со смещением", + "Common.define.smartArt.textChevronList": "Уголковый список", + "Common.define.smartArt.textCircleAccentTimeline": "Круглая временная шкала", + "Common.define.smartArt.textCircleArrowProcess": "Стрелка процесса с кругами", + "Common.define.smartArt.textCirclePictureHierarchy": "Иерархия с круглыми рисунками", + "Common.define.smartArt.textCircleProcess": "Процесс с кругами", + "Common.define.smartArt.textCircleRelationship": "Круг связей", + "Common.define.smartArt.textCircularBendingProcess": "Круглый ломаный процесс", + "Common.define.smartArt.textCircularPictureCallout": "Выноска с круглыми рисунками", + "Common.define.smartArt.textClosedChevronProcess": "Закрытый уголковый процесс", + "Common.define.smartArt.textContinuousArrowProcess": "Стрелка непрерывного процесса", + "Common.define.smartArt.textContinuousBlockProcess": "Непрерывный блочный процесс", + "Common.define.smartArt.textContinuousCycle": "Непрерывный цикл", + "Common.define.smartArt.textContinuousPictureList": "Непрерывный список с рисунками", + "Common.define.smartArt.textConvergingArrows": "Сходящиеся стрелки", + "Common.define.smartArt.textConvergingRadial": "Сходящаяся радиальная", + "Common.define.smartArt.textConvergingText": "Сходящийся текст", + "Common.define.smartArt.textCounterbalanceArrows": "Уравновешивающие стрелки", + "Common.define.smartArt.textCycle": "Цикл", + "Common.define.smartArt.textCycleMatrix": "Циклическая матрица", + "Common.define.smartArt.textDescendingBlockList": "Нисходящий блочный список", + "Common.define.smartArt.textDescendingProcess": "Убывающий процесс", + "Common.define.smartArt.textDetailedProcess": "Подробный процесс", + "Common.define.smartArt.textDivergingArrows": "Расходящиеся стрелки", + "Common.define.smartArt.textDivergingRadial": "Расходящаяся радиальная", + "Common.define.smartArt.textEquation": "Уравнение", + "Common.define.smartArt.textFramedTextPicture": "Рисунок с текстом в рамке", + "Common.define.smartArt.textFunnel": "Воронка", + "Common.define.smartArt.textGear": "Шестеренка", + "Common.define.smartArt.textGridMatrix": "Сетчатая матрица", + "Common.define.smartArt.textGroupedList": "Сгруппированный список", + "Common.define.smartArt.textHalfCircleOrganizationChart": "Полукруглая организационная диаграмма", + "Common.define.smartArt.textHexagonCluster": "Кластер шестиугольников", + "Common.define.smartArt.textHexagonRadial": "Радиальный шестиугольник", + "Common.define.smartArt.textHierarchy": "Иерархия", + "Common.define.smartArt.textHierarchyList": "Иерархический список", + "Common.define.smartArt.textHorizontalBulletList": "Горизонтальный маркированный список", + "Common.define.smartArt.textHorizontalHierarchy": "Горизонтальная иерархия", + "Common.define.smartArt.textHorizontalLabeledHierarchy": "Горизонтальная иерархия с подписями", + "Common.define.smartArt.textHorizontalMultiLevelHierarchy": "Горизонтальная многоуровневая иерархия", + "Common.define.smartArt.textHorizontalOrganizationChart": "Горизонтальная организационная диаграмма", + "Common.define.smartArt.textHorizontalPictureList": "Горизонтальный список рисунков", + "Common.define.smartArt.textIncreasingArrowProcess": "Стрелка нарастающего процесса", + "Common.define.smartArt.textIncreasingCircleProcess": "Нарастающий процесс с кругами", + "Common.define.smartArt.textInterconnectedBlockProcess": "Процесс со взаимосвязанными блоками", + "Common.define.smartArt.textInterconnectedRings": "Взаимосвязанные кольца", + "Common.define.smartArt.textInvertedPyramid": "Инвертированная пирамида", + "Common.define.smartArt.textLabeledHierarchy": "Иерархия с подписями", + "Common.define.smartArt.textLinearVenn": "Линейная Венна", + "Common.define.smartArt.textLinedList": "Список с линиями", + "Common.define.smartArt.textList": "Список", + "Common.define.smartArt.textMatrix": "Матрица", + "Common.define.smartArt.textMultidirectionalCycle": "Разнонаправленный цикл", + "Common.define.smartArt.textNameAndTitleOrganizationChart": "Организационная диаграмма с именами и должностями", + "Common.define.smartArt.textNestedTarget": "Вложенная целевая", + "Common.define.smartArt.textNondirectionalCycle": "Ненаправленный цикл", + "Common.define.smartArt.textOpposingArrows": "Противостоящие стрелки", + "Common.define.smartArt.textOpposingIdeas": "Противоположные идеи", + "Common.define.smartArt.textOrganizationChart": "Организационная диаграмма", + "Common.define.smartArt.textOther": "Другое", + "Common.define.smartArt.textPhasedProcess": "Поэтапный процесс", + "Common.define.smartArt.textPicture": "Рисунок", + "Common.define.smartArt.textPictureAccentBlocks": "Блоки со смещенными рисунками", + "Common.define.smartArt.textPictureAccentList": "Список со смещенными рисунками", + "Common.define.smartArt.textPictureAccentProcess": "Процесс со смещенными рисунками", + "Common.define.smartArt.textPictureCaptionList": "Список названий рисунков", + "Common.define.smartArt.textPictureFrame": "Фоторамка", + "Common.define.smartArt.textPictureGrid": "Сетка рисунков", + "Common.define.smartArt.textPictureLineup": "Линия рисунков", + "Common.define.smartArt.textPictureOrganizationChart": "Организационная диаграмма с рисунками", + "Common.define.smartArt.textPictureStrips": "Полосы рисунков", + "Common.define.smartArt.textPieProcess": "Процесс с круговой диаграммой", + "Common.define.smartArt.textPlusAndMinus": "Плюс и минус", + "Common.define.smartArt.textProcess": "Процесс", + "Common.define.smartArt.textProcessArrows": "Стрелки процесса", + "Common.define.smartArt.textProcessList": "Список процессов", + "Common.define.smartArt.textPyramid": "Пирамида", + "Common.define.smartArt.textPyramidList": "Пирамидальный список", + "Common.define.smartArt.textRadialCluster": "Радиальный кластер", + "Common.define.smartArt.textRadialCycle": "Радиальная циклическая", + "Common.define.smartArt.textRadialList": "Радиальный список", + "Common.define.smartArt.textRadialPictureList": "Радиальный список рисунков", + "Common.define.smartArt.textRadialVenn": "Радиальная Венна", + "Common.define.smartArt.textRandomToResultProcess": "Процесс от случайности к результату", + "Common.define.smartArt.textRelationship": "Связь", + "Common.define.smartArt.textRepeatingBendingProcess": "Повторяющийся ломаный процесс", + "Common.define.smartArt.textReverseList": "Обратный список", + "Common.define.smartArt.textSegmentedCycle": "Сегментированный цикл", + "Common.define.smartArt.textSegmentedProcess": "Сегментированный процесс", + "Common.define.smartArt.textSegmentedPyramid": "Сегментированная пирамида", + "Common.define.smartArt.textSnapshotPictureList": "Список со снимками", + "Common.define.smartArt.textSpiralPicture": "Спираль рисунков", + "Common.define.smartArt.textSquareAccentList": "Список с квадратиками", + "Common.define.smartArt.textStackedList": "Список в столбик", + "Common.define.smartArt.textStackedVenn": "Венна в столбик", + "Common.define.smartArt.textStaggeredProcess": "Ступенчатый процесс", + "Common.define.smartArt.textStepDownProcess": "Нисходящий процесс", + "Common.define.smartArt.textStepUpProcess": "Восходящий процесс", + "Common.define.smartArt.textSubStepProcess": "Процесс с вложенными шагами", + "Common.define.smartArt.textTabbedArc": "Дуга с вкладками", + "Common.define.smartArt.textTableHierarchy": "Табличная иерархия", + "Common.define.smartArt.textTableList": "Табличный список", + "Common.define.smartArt.textTabList": "Список вкладок", + "Common.define.smartArt.textTargetList": "Целевой список", + "Common.define.smartArt.textTextCycle": "Текстовый цикл", + "Common.define.smartArt.textThemePictureAccent": "Смещенные рисунки темы", + "Common.define.smartArt.textThemePictureAlternatingAccent": "Чередующиеся смещенные рисунки темы", + "Common.define.smartArt.textThemePictureGrid": "Сетка рисунков темы", + "Common.define.smartArt.textTitledMatrix": "Матрица с заголовками", + "Common.define.smartArt.textTitledPictureAccentList": "Список со смещенными рисунками и заголовком", + "Common.define.smartArt.textTitledPictureBlocks": "Блоки рисунков с названиями", + "Common.define.smartArt.textTitlePictureLineup": "Линия рисунков с названиями", + "Common.define.smartArt.textTrapezoidList": "Трапециевидный список", + "Common.define.smartArt.textUpwardArrow": "Восходящая стрелка", + "Common.define.smartArt.textVaryingWidthList": "Список переменной ширины", + "Common.define.smartArt.textVerticalAccentList": "Вертикальный список со смещением", + "Common.define.smartArt.textVerticalArrowList": "Вертикальный список со стрелкой", + "Common.define.smartArt.textVerticalBendingProcess": "Вертикальный ломаный процесс", + "Common.define.smartArt.textVerticalBlockList": "Вертикальный блочный список", + "Common.define.smartArt.textVerticalBoxList": "Вертикальный список", + "Common.define.smartArt.textVerticalBracketList": "Вертикальный список со скобками", + "Common.define.smartArt.textVerticalBulletList": "Вертикальный маркированный список", + "Common.define.smartArt.textVerticalChevronList": "Вертикальный уголковый список", + "Common.define.smartArt.textVerticalCircleList": "Вертикальный список с кругами", + "Common.define.smartArt.textVerticalCurvedList": "Вертикальный нелинейный список", + "Common.define.smartArt.textVerticalEquation": "Вертикальное уравнение", + "Common.define.smartArt.textVerticalPictureAccentList": "Вертикальный список со смещенными рисунками", + "Common.define.smartArt.textVerticalPictureList": "Вертикальный список рисунков", + "Common.define.smartArt.textVerticalProcess": "Вертикальный процесс", "Common.Translation.textMoreButton": "Ещё", "Common.Translation.warnFileLocked": "Файл редактируется в другом приложении. Вы можете продолжить редактирование и сохранить его как копию.", "Common.Translation.warnFileLockedBtnEdit": "Создать копию", @@ -638,6 +797,7 @@ "PE.Controllers.LeftMenu.txtUntitled": "Без имени", "PE.Controllers.Main.applyChangesTextText": "Загрузка данных...", "PE.Controllers.Main.applyChangesTitleText": "Загрузка данных", + "PE.Controllers.Main.confirmMaxChangesSize": "Размер внесенных изменений превышает ограничение, установленное для вашего сервера.
Нажмите \"Отменить\" для отмены последнего действия или нажмите \"Продолжить\", чтобы сохранить действие локально (потребуется скачать файл или скопировать его содержимое чтобы ничего не потерялось).", "PE.Controllers.Main.convertationTimeoutText": "Превышено время ожидания конвертации.", "PE.Controllers.Main.criticalErrorExtText": "Нажмите \"OK\", чтобы вернуться к списку документов.", "PE.Controllers.Main.criticalErrorTitle": "Ошибка", @@ -715,6 +875,7 @@ "PE.Controllers.Main.textClose": "Закрыть", "PE.Controllers.Main.textCloseTip": "Щелкните, чтобы закрыть эту подсказку", "PE.Controllers.Main.textContactUs": "Связаться с отделом продаж", + "PE.Controllers.Main.textContinue": "Продолжить", "PE.Controllers.Main.textConvertEquation": "Это уравнение создано в старой версии редактора уравнений, которая больше не поддерживается. Чтобы изменить это уравнение, его необходимо преобразовать в формат Office Math ML.
Преобразовать сейчас?", "PE.Controllers.Main.textCustomLoader": "Обратите внимание, что по условиям лицензии у вас нет прав изменять экран, отображаемый при загрузке.
Пожалуйста, обратитесь в наш отдел продаж, чтобы сделать запрос.", "PE.Controllers.Main.textDisconnect": "Соединение потеряно", @@ -735,6 +896,7 @@ "PE.Controllers.Main.textStrict": "Строгий режим", "PE.Controllers.Main.textTryUndoRedo": "Функции отмены и повтора действий отключены в Быстром режиме совместного редактирования.
Нажмите на кнопку 'Строгий режим' для переключения в Строгий режим совместного редактирования, чтобы редактировать файл без вмешательства других пользователей и отправлять изменения только после того, как вы их сохраните. Переключаться между режимами совместного редактирования можно с помощью Дополнительных параметров редактора.", "PE.Controllers.Main.textTryUndoRedoWarn": "Функции отмены и повтора действий отключены в Быстром режиме совместного редактирования.", + "PE.Controllers.Main.textUndo": "Отменить", "PE.Controllers.Main.titleLicenseExp": "Истек срок действия лицензии", "PE.Controllers.Main.titleServerVersion": "Редактор обновлен", "PE.Controllers.Main.txtAddFirstSlide": "Нажмите, чтобы добавить первый слайд", @@ -1674,8 +1836,8 @@ "PE.Views.FileMenuPanels.DocumentInfo.txtPlacement": "Размещение", "PE.Views.FileMenuPanels.DocumentInfo.txtRights": "Люди, имеющие права", "PE.Views.FileMenuPanels.DocumentInfo.txtSubject": "Тема", - "PE.Views.FileMenuPanels.DocumentInfo.txtTitle": "Название", "PE.Views.FileMenuPanels.DocumentInfo.txtTags": "Теги", + "PE.Views.FileMenuPanels.DocumentInfo.txtTitle": "Название", "PE.Views.FileMenuPanels.DocumentInfo.txtUploaded": "Загружена", "PE.Views.FileMenuPanels.DocumentRights.txtBtnAccessRights": "Изменить права доступа", "PE.Views.FileMenuPanels.DocumentRights.txtRights": "Люди, имеющие права", @@ -2219,6 +2381,7 @@ "PE.Views.Toolbar.capBtnComment": "Комментарий", "PE.Views.Toolbar.capBtnDateTime": "Дата и время", "PE.Views.Toolbar.capBtnInsHeader": "Колонтитул", + "PE.Views.Toolbar.capBtnInsSmartArt": "SmartArt", "PE.Views.Toolbar.capBtnInsSymbol": "Символ", "PE.Views.Toolbar.capBtnSlideNum": "Номер слайда", "PE.Views.Toolbar.capInsertAudio": "Аудио", @@ -2319,6 +2482,7 @@ "PE.Views.Toolbar.tipInsertHyperlink": "Добавить гиперссылку", "PE.Views.Toolbar.tipInsertImage": "Вставить изображение", "PE.Views.Toolbar.tipInsertShape": "Вставить автофигуру", + "PE.Views.Toolbar.tipInsertSmartArt": "Вставить SmartArt", "PE.Views.Toolbar.tipInsertSymbol": "Вставить символ", "PE.Views.Toolbar.tipInsertTable": "Вставить таблицу", "PE.Views.Toolbar.tipInsertText": "Вставить надпись", diff --git a/apps/spreadsheeteditor/main/locale/en.json b/apps/spreadsheeteditor/main/locale/en.json index a279d12bd..5f7e33fce 100644 --- a/apps/spreadsheeteditor/main/locale/en.json +++ b/apps/spreadsheeteditor/main/locale/en.json @@ -126,7 +126,7 @@ "Common.define.smartArt.textBendingPictureBlocks": "Bending Picture Blocks", "Common.define.smartArt.textBendingPictureCaption": "Bending Picture Caption", "Common.define.smartArt.textBendingPictureCaptionList": "Bending Picture Caption List", - "Common.define.smartArt.textBendingPictureSemiTranparentText": "Bending Picture Semi-Tranparent Text", + "Common.define.smartArt.textBendingPictureSemiTranparentText": "Bending Picture Semi-Transparent Text", "Common.define.smartArt.textBlockCycle": "Block Cycle", "Common.define.smartArt.textBubblePictureList": "Bubble Picture List", "Common.define.smartArt.textCaptionedPictures": "Captioned Pictures", @@ -854,6 +854,7 @@ "SSE.Controllers.LeftMenu.warnDownloadAs": "If you continue saving in this format all features except the text will be lost.
Are you sure you want to continue?", "SSE.Controllers.Main.confirmAddCellWatches": "This action will add {0} cell watches.
Do you want to continue?", "SSE.Controllers.Main.confirmAddCellWatchesMax": "This action will add only {0} cell watches by memory save reason.
Do you want to continue?", + "SSE.Controllers.Main.confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", "SSE.Controllers.Main.confirmMoveCellRange": "The destination cell range can contain data. Continue the operation?", "SSE.Controllers.Main.confirmPutMergeRange": "The source data contained merged cells.
They had been unmerged before they were pasted into the table.", "SSE.Controllers.Main.confirmReplaceFormulaInTable": "Formulas in the header row will be removed and converted to static text.
Do you want to continue?", @@ -986,6 +987,7 @@ "SSE.Controllers.Main.textCloseTip": "Click to close the tip", "SSE.Controllers.Main.textConfirm": "Confirmation", "SSE.Controllers.Main.textContactUs": "Contact sales", + "SSE.Controllers.Main.textContinue": "Continue", "SSE.Controllers.Main.textConvertEquation": "This equation was created with an old version of the equation editor which is no longer supported. To edit it, convert the equation to the Office Math ML format.
Convert now?", "SSE.Controllers.Main.textCustomLoader": "Please note that according to the terms of the license you are not entitled to change the loader.
Please contact our Sales Department to get a quote.", "SSE.Controllers.Main.textDisconnect": "Connection is lost", @@ -1014,6 +1016,7 @@ "SSE.Controllers.Main.textStrict": "Strict mode", "SSE.Controllers.Main.textTryUndoRedo": "The Undo/Redo functions are disabled for the Fast co-editing mode.
Click the 'Strict mode' button to switch to the Strict co-editing mode to edit the file without other users interference and send your changes only after you save them. You can switch between the co-editing modes using the editor Advanced settings.", "SSE.Controllers.Main.textTryUndoRedoWarn": "The Undo/Redo functions are disabled for the Fast co-editing mode.", + "SSE.Controllers.Main.textUndo": "Undo", "SSE.Controllers.Main.textYes": "Yes", "SSE.Controllers.Main.titleLicenseExp": "License expired", "SSE.Controllers.Main.titleServerVersion": "Editor updated", @@ -1283,9 +1286,6 @@ "SSE.Controllers.Main.warnNoLicense": "You've reached the limit for simultaneous connections to %1 editors. This document will be opened for viewing only.
Contact %1 sales team for personal upgrade terms.", "SSE.Controllers.Main.warnNoLicenseUsers": "You've reached the user limit for %1 editors. Contact %1 sales team for personal upgrade terms.", "SSE.Controllers.Main.warnProcessRightsChange": "You have been denied the right to edit the file.", - "SSE.Controllers.Main.confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "SSE.Controllers.Main.textUndo": "Undo", - "SSE.Controllers.Main.textContinue": "Continue", "SSE.Controllers.Print.strAllSheets": "All Sheets", "SSE.Controllers.Print.textFirstCol": "First column", "SSE.Controllers.Print.textFirstRow": "First row", @@ -2332,8 +2332,8 @@ "SSE.Views.FileMenuPanels.DocumentInfo.txtPlacement": "Location", "SSE.Views.FileMenuPanels.DocumentInfo.txtRights": "Persons who have rights", "SSE.Views.FileMenuPanels.DocumentInfo.txtSubject": "Subject", - "SSE.Views.FileMenuPanels.DocumentInfo.txtTitle": "Title", "SSE.Views.FileMenuPanels.DocumentInfo.txtTags": "Tags", + "SSE.Views.FileMenuPanels.DocumentInfo.txtTitle": "Title", "SSE.Views.FileMenuPanels.DocumentInfo.txtUploaded": "Uploaded", "SSE.Views.FileMenuPanels.DocumentRights.txtBtnAccessRights": "Change access rights", "SSE.Views.FileMenuPanels.DocumentRights.txtRights": "Persons who have rights", diff --git a/apps/spreadsheeteditor/main/locale/id.json b/apps/spreadsheeteditor/main/locale/id.json index 8b4023de2..890728308 100644 --- a/apps/spreadsheeteditor/main/locale/id.json +++ b/apps/spreadsheeteditor/main/locale/id.json @@ -1849,6 +1849,7 @@ "SSE.Views.DataTab.capBtnTextRemDuplicates": "Hapus duplikat", "SSE.Views.DataTab.capBtnTextToCol": "Teks ke Kolom", "SSE.Views.DataTab.capBtnUngroup": "Pisahkan dari grup", + "SSE.Views.DataTab.capDataExternalLinks": "Tautan Eksternal", "SSE.Views.DataTab.capDataFromText": "Dapatkan data", "SSE.Views.DataTab.mniFromFile": "Dari TXT/CSV lokal", "SSE.Views.DataTab.mniFromUrl": "Dari alamat web TXT/CSV", @@ -1862,6 +1863,7 @@ "SSE.Views.DataTab.tipCustomSort": "Atur sortasi", "SSE.Views.DataTab.tipDataFromText": "Dapatkan data dari file Text/CSV", "SSE.Views.DataTab.tipDataValidation": "Validasi data", + "SSE.Views.DataTab.tipExternalLinks": "Lihat file lain yang ditautkan ke spreadsheet ini", "SSE.Views.DataTab.tipGroup": "Kelompokkan rentang dari sel", "SSE.Views.DataTab.tipRemDuplicates": "Hapus baris duplikat dari sheet", "SSE.Views.DataTab.tipToColumns": "Pisahkan teks sel menjadi kolom", @@ -2098,6 +2100,13 @@ "SSE.Views.DocumentHolder.txtUngroup": "Pisahkan dari grup", "SSE.Views.DocumentHolder.txtWidth": "Lebar", "SSE.Views.DocumentHolder.vertAlignText": "Perataan Vertikal", + "SSE.Views.ExternalLinksDlg.closeButtonText": "Tutup", + "SSE.Views.ExternalLinksDlg.textDelete": "Putuskan Tautan", + "SSE.Views.ExternalLinksDlg.textDeleteAll": "Putuskan Semua Tautan", + "SSE.Views.ExternalLinksDlg.textSource": "Sumber", + "SSE.Views.ExternalLinksDlg.textUpdate": "Perbarui Nilai", + "SSE.Views.ExternalLinksDlg.textUpdateAll": "Perbarui Semua", + "SSE.Views.ExternalLinksDlg.txtTitle": "Tautan Eksternal", "SSE.Views.FieldSettingsDialog.strLayout": "Layout", "SSE.Views.FieldSettingsDialog.strSubtotals": "Subtotals", "SSE.Views.FieldSettingsDialog.textReport": "Form Laporan", @@ -2803,6 +2812,7 @@ "SSE.Views.PivotTable.tipCreatePivot": "Sisipkan Tabel Pivot", "SSE.Views.PivotTable.tipGrandTotals": "Tampilkan atau sembunyikan total keseluruhan", "SSE.Views.PivotTable.tipRefresh": "Update informasi dari sumber data", + "SSE.Views.PivotTable.tipRefreshCurrent": "Perbarui informasi dari sumber data untuk tabel saat ini", "SSE.Views.PivotTable.tipSelect": "Pilih seluruh tabel pivot", "SSE.Views.PivotTable.tipSubtotals": "Tampilkan atau sembunyikan subtotal", "SSE.Views.PivotTable.txtCreate": "Sisipkan Tabel", @@ -2812,6 +2822,7 @@ "SSE.Views.PivotTable.txtGroupPivot_Medium": "Medium", "SSE.Views.PivotTable.txtPivotTable": "Tabel Pivot", "SSE.Views.PivotTable.txtRefresh": "Refresh", + "SSE.Views.PivotTable.txtRefreshAll": "Segarkan Semuanya", "SSE.Views.PivotTable.txtSelect": "Pilih", "SSE.Views.PivotTable.txtTable_PivotStyleDark": "Tabel Pivot Gaya Gelap", "SSE.Views.PivotTable.txtTable_PivotStyleLight": "Tabel Pivot Gaya Terang", @@ -3556,6 +3567,7 @@ "SSE.Views.Toolbar.tipInsertChart": "Sisipkan Bagan", "SSE.Views.Toolbar.tipInsertChartSpark": "Sisipkan Bagan", "SSE.Views.Toolbar.tipInsertEquation": "Masukkan Persamaan", + "SSE.Views.Toolbar.tipInsertHorizontalText": "Sisipkan kotak teks horizontal", "SSE.Views.Toolbar.tipInsertHyperlink": "Tambahkan hyperlink", "SSE.Views.Toolbar.tipInsertImage": "Sisipkan Gambar", "SSE.Views.Toolbar.tipInsertOpt": "Sisipkan sel", @@ -3566,6 +3578,7 @@ "SSE.Views.Toolbar.tipInsertTable": "Sisipkan Tabel", "SSE.Views.Toolbar.tipInsertText": "Sisipkan Teks", "SSE.Views.Toolbar.tipInsertTextart": "Sisipkan Text Art", + "SSE.Views.Toolbar.tipInsertVerticalText": "Sisipkan kotak teks vertikal", "SSE.Views.Toolbar.tipMerge": "Merge dan center", "SSE.Views.Toolbar.tipNone": "Tidak ada", "SSE.Views.Toolbar.tipNumFormat": "Format nomor", diff --git a/apps/spreadsheeteditor/main/locale/ja.json b/apps/spreadsheeteditor/main/locale/ja.json index bf2afd10b..a818e0d88 100644 --- a/apps/spreadsheeteditor/main/locale/ja.json +++ b/apps/spreadsheeteditor/main/locale/ja.json @@ -1818,7 +1818,7 @@ "SSE.Views.DataTab.capBtnTextRemDuplicates": "重複データを削除", "SSE.Views.DataTab.capBtnTextToCol": "テキスト区切り", "SSE.Views.DataTab.capBtnUngroup": "グループ解除", - "SSE.Views.DataTab.capDataFromText": "データを受ける", + "SSE.Views.DataTab.capDataFromText": "データの挿入", "SSE.Views.DataTab.mniFromFile": "ローカルTXT/CSVから", "SSE.Views.DataTab.mniFromUrl": "TXT/CSVWeb アドレスから", "SSE.Views.DataTab.textBelow": "詳細の下の要約行", @@ -1829,7 +1829,7 @@ "SSE.Views.DataTab.textRightOf": "詳細の右側にある要約列", "SSE.Views.DataTab.textRows": "行のグループを解除", "SSE.Views.DataTab.tipCustomSort": "ユーザー設定の並べ替え", - "SSE.Views.DataTab.tipDataFromText": "テキスト/CSVファイルからデータを受ける", + "SSE.Views.DataTab.tipDataFromText": "テキスト/CSVファイルからデータ挿入", "SSE.Views.DataTab.tipDataValidation": "データの入力規則", "SSE.Views.DataTab.tipGroup": "セルの範囲をグループ化する", "SSE.Views.DataTab.tipRemDuplicates": "シート内の重複を削除", diff --git a/apps/spreadsheeteditor/main/locale/pt-pt.json b/apps/spreadsheeteditor/main/locale/pt-pt.json index cfd0584dd..5276849c4 100644 --- a/apps/spreadsheeteditor/main/locale/pt-pt.json +++ b/apps/spreadsheeteditor/main/locale/pt-pt.json @@ -771,7 +771,7 @@ "SSE.Controllers.Main.errorPasteSlicerError": "As segmentações de dados não podem ser copiadas de um livro para outro.", "SSE.Controllers.Main.errorPivotGroup": "Não foi possível agrupar essa seleção.", "SSE.Controllers.Main.errorPivotOverlap": "O relatório da tabela dinâmica não se pode sobrepor a uma tabela.", - "SSE.Controllers.Main.errorPivotWithoutUnderlying": "O relatório da Tabela Pivot foi guardado sem os dados subjacentes.
Utilize o botão 'Atualizar' para atualizar o relatório.", + "SSE.Controllers.Main.errorPivotWithoutUnderlying": "O relatório da Tabela Pivot foi guardado sem os dados subjacentes.
Utilize o botão 'Recarregar' para atualizar o relatório.", "SSE.Controllers.Main.errorPrintMaxPagesCount": "Infelizmente, não é possível imprimir mais do que 1500 páginas de uma vez na atual versão do programa.
Esta restrição será removida em versões futuras.", "SSE.Controllers.Main.errorProcessSaveResult": "Falha ao guardar", "SSE.Controllers.Main.errorServerVersion": "A versão do editor foi atualizada. A página será recarregada para aplicar as alterações.", @@ -1849,6 +1849,7 @@ "SSE.Views.DataTab.capBtnTextRemDuplicates": "Remover duplicados", "SSE.Views.DataTab.capBtnTextToCol": "Texto para Colunas", "SSE.Views.DataTab.capBtnUngroup": "Desagrupar", + "SSE.Views.DataTab.capDataExternalLinks": "Ligações externas", "SSE.Views.DataTab.capDataFromText": "Obter dados", "SSE.Views.DataTab.mniFromFile": "De um TXT/CSV local", "SSE.Views.DataTab.mniFromUrl": "Do endereço da web TXT/CSV", @@ -1862,6 +1863,7 @@ "SSE.Views.DataTab.tipCustomSort": "Ordenação personalizada", "SSE.Views.DataTab.tipDataFromText": "Obter dados a partir de um ficheiro de texto/CSV", "SSE.Views.DataTab.tipDataValidation": "Validação dos dados", + "SSE.Views.DataTab.tipExternalLinks": "Ver outros ficheiros a que esta folha de cálculo está ligada", "SSE.Views.DataTab.tipGroup": "Agrupar intervalo de células", "SSE.Views.DataTab.tipRemDuplicates": "Remover linhas duplicadas na folha", "SSE.Views.DataTab.tipToColumns": "Separar o texto da célula em colunas", @@ -2098,6 +2100,13 @@ "SSE.Views.DocumentHolder.txtUngroup": "Desagrupar", "SSE.Views.DocumentHolder.txtWidth": "Largura", "SSE.Views.DocumentHolder.vertAlignText": "Alinhamento vertical", + "SSE.Views.ExternalLinksDlg.closeButtonText": "Fechar", + "SSE.Views.ExternalLinksDlg.textDelete": "Quebrar ligações", + "SSE.Views.ExternalLinksDlg.textDeleteAll": "Quebra todas as ligações", + "SSE.Views.ExternalLinksDlg.textSource": "Fonte", + "SSE.Views.ExternalLinksDlg.textUpdate": "Atualizar valores", + "SSE.Views.ExternalLinksDlg.textUpdateAll": "Atualizar tudo", + "SSE.Views.ExternalLinksDlg.txtTitle": "Ligações externas", "SSE.Views.FieldSettingsDialog.strLayout": "Disposição", "SSE.Views.FieldSettingsDialog.strSubtotals": "Subtotais", "SSE.Views.FieldSettingsDialog.textReport": "Reportar Forma", @@ -2803,6 +2812,7 @@ "SSE.Views.PivotTable.tipCreatePivot": "Inserir tabela dinâmica", "SSE.Views.PivotTable.tipGrandTotals": "Mostrar ou esconder os totais gerais", "SSE.Views.PivotTable.tipRefresh": "Atualizar informação da origem de dados", + "SSE.Views.PivotTable.tipRefreshCurrent": "Atualizar a informação da fonte de dados para a tabela atual", "SSE.Views.PivotTable.tipSelect": "Selecionar toda a tabela dinâmica", "SSE.Views.PivotTable.tipSubtotals": "Mostrar ou esconder subtotais", "SSE.Views.PivotTable.txtCreate": "Inserir tabela", @@ -2811,7 +2821,8 @@ "SSE.Views.PivotTable.txtGroupPivot_Light": "Claro", "SSE.Views.PivotTable.txtGroupPivot_Medium": "Médio", "SSE.Views.PivotTable.txtPivotTable": "Tabela dinâmica", - "SSE.Views.PivotTable.txtRefresh": "Atualizar", + "SSE.Views.PivotTable.txtRefresh": "Recarregar", + "SSE.Views.PivotTable.txtRefreshAll": "Recarregar tudo", "SSE.Views.PivotTable.txtSelect": "Selecionar", "SSE.Views.PivotTable.txtTable_PivotStyleDark": "Pivot Table de estilo escuro", "SSE.Views.PivotTable.txtTable_PivotStyleLight": "Pivot Table de estilo claro", @@ -3556,6 +3567,7 @@ "SSE.Views.Toolbar.tipInsertChart": "Inserir gráfico", "SSE.Views.Toolbar.tipInsertChartSpark": "Inserir gráfico", "SSE.Views.Toolbar.tipInsertEquation": "Inserir equação", + "SSE.Views.Toolbar.tipInsertHorizontalText": "Inserir caixa de texto horizontal", "SSE.Views.Toolbar.tipInsertHyperlink": "Adicionar hiperligação", "SSE.Views.Toolbar.tipInsertImage": "Inserir imagem", "SSE.Views.Toolbar.tipInsertOpt": "Inserir células", @@ -3566,6 +3578,7 @@ "SSE.Views.Toolbar.tipInsertTable": "Inserir tabela", "SSE.Views.Toolbar.tipInsertText": "Inserir caixa de texto", "SSE.Views.Toolbar.tipInsertTextart": "Inserir arte de texto", + "SSE.Views.Toolbar.tipInsertVerticalText": "Inserir caixa de texto vertical", "SSE.Views.Toolbar.tipMerge": "Unir e centrar", "SSE.Views.Toolbar.tipNone": "Nenhum", "SSE.Views.Toolbar.tipNumFormat": "Formato de número", diff --git a/apps/spreadsheeteditor/main/locale/pt.json b/apps/spreadsheeteditor/main/locale/pt.json index d0380e2ac..8030cf760 100644 --- a/apps/spreadsheeteditor/main/locale/pt.json +++ b/apps/spreadsheeteditor/main/locale/pt.json @@ -318,6 +318,7 @@ "Common.Views.Plugins.textStart": "Iniciar", "Common.Views.Plugins.textStop": "Parar", "Common.Views.Protection.hintAddPwd": "Criptografar com senha", + "Common.Views.Protection.hintDelPwd": "Excluir senha", "Common.Views.Protection.hintPwd": "Alterar ou excluir senha", "Common.Views.Protection.hintSignature": "Adicionar assinatura digital ou linha de assinatura", "Common.Views.Protection.txtAddPwd": "Adicionar senha", @@ -451,6 +452,7 @@ "Common.Views.SignDialog.tipFontName": "Nome da fonte", "Common.Views.SignDialog.tipFontSize": "Tamanho da fonte", "Common.Views.SignSettingsDialog.textAllowComment": "Permitir que o assinante adicione um comentário na caixa de diálogo de assinatura", + "Common.Views.SignSettingsDialog.textDefInstruction": "Antes de assinar este documento, verifique se o conteúdo que está a assinar está correto.", "Common.Views.SignSettingsDialog.textInfoEmail": "E-mail", "Common.Views.SignSettingsDialog.textInfoName": "Nome", "Common.Views.SignSettingsDialog.textInfoTitle": "Título do assinante", @@ -691,6 +693,8 @@ "SSE.Controllers.LeftMenu.textWorkbook": "Pasta de trabalho", "SSE.Controllers.LeftMenu.txtUntitled": "Sem título", "SSE.Controllers.LeftMenu.warnDownloadAs": "Se você continuar salvando neste formato, todos os recursos exceto o texto serão perdidos.
Você tem certeza que quer continuar?", + "SSE.Controllers.Main.confirmAddCellWatches": "Esta ação adicionará {0} células de observação.
Quer continuar?", + "SSE.Controllers.Main.confirmAddCellWatchesMax": "Esta ação adicionará apenas {0} células de observação por motivo de poupança da memória.
Quer continuar?", "SSE.Controllers.Main.confirmMoveCellRange": "O intervalo de célula de destino pode conter dados. Continuar a operação?", "SSE.Controllers.Main.confirmPutMergeRange": "Os dados fontes contêm células mescladas.
Elas foram desmescladas antes de serem coladas na tabela.", "SSE.Controllers.Main.confirmReplaceFormulaInTable": "As fórmulas na linha do cabeçalho serão removidas e convertidas em texto estático.
Deseja continuar?", @@ -726,6 +730,7 @@ "SSE.Controllers.Main.errorDefaultMessage": "Código do erro: %1", "SSE.Controllers.Main.errorDeleteColumnContainsLockedCell": "Você está tentando excluir uma coluna que contém uma célula bloqueada. As células bloqueadas não podem ser excluídas enquanto a planilha está protegida.
Para excluir uma célula bloqueada, desproteja a planilha. Você pode ser solicitado a inserir uma senha.", "SSE.Controllers.Main.errorDeleteRowContainsLockedCell": "Você está tentando apagar uma linha que contém uma célula trancada. As células bloqueadas não podem ser apagadas enquanto a folha de trabalho estiver protegida.
Para apagar uma célula bloqueada, desproteja a folha. Você poderá ser solicitado a digitar uma senha.", + "SSE.Controllers.Main.errorDirectUrl": "Por favor, verifique o link para o documento.
Este link deve ser o link direto para baixar o arquivo.", "SSE.Controllers.Main.errorEditingDownloadas": "Ocorreu um erro.
Use a opção 'Transferir como' para gravar a cópia de backup em seu computador.", "SSE.Controllers.Main.errorEditingSaveas": "Ocorreu um erro durante o trabalho com o documento.
Use a opção 'Salvar como ...' para salvar a cópia de backup do arquivo no disco rígido do computador.", "SSE.Controllers.Main.errorEditView": "A vista de folha existente não pode ser editada e as novas não podem ser criadas no momento, pois algumas delas estão sendo editadas.", @@ -1276,6 +1281,17 @@ "SSE.Controllers.Toolbar.txtFunction_Sinh": "Função seno hiperbólico", "SSE.Controllers.Toolbar.txtFunction_Tan": "Função da tangente", "SSE.Controllers.Toolbar.txtFunction_Tanh": "Função tangente hiperbólica", + "SSE.Controllers.Toolbar.txtGroupCell_Custom": "Personalizado", + "SSE.Controllers.Toolbar.txtGroupCell_DataAndModel": "Dados e Modelo", + "SSE.Controllers.Toolbar.txtGroupCell_GoodBadAndNeutral": "Bom, Mau e Neutro", + "SSE.Controllers.Toolbar.txtGroupCell_NoName": "Sem nome", + "SSE.Controllers.Toolbar.txtGroupCell_NumberFormat": "Formato de número", + "SSE.Controllers.Toolbar.txtGroupCell_ThemedCallStyles": "Estilos de células temáticas", + "SSE.Controllers.Toolbar.txtGroupCell_TitlesAndHeadings": "Títulos e Cabeçalhos", + "SSE.Controllers.Toolbar.txtGroupTable_Custom": "Personalizado", + "SSE.Controllers.Toolbar.txtGroupTable_Dark": "Escuro", + "SSE.Controllers.Toolbar.txtGroupTable_Light": "Claro", + "SSE.Controllers.Toolbar.txtGroupTable_Medium": "Médio", "SSE.Controllers.Toolbar.txtInsertCells": "Inserir células", "SSE.Controllers.Toolbar.txtIntegral": "Integral", "SSE.Controllers.Toolbar.txtIntegral_dtheta": "Teta diferencial", @@ -1645,27 +1661,42 @@ "SSE.Views.ChartSettings.strLineWeight": "Espessura da linha", "SSE.Views.ChartSettings.strSparkColor": "Cor", "SSE.Views.ChartSettings.strTemplate": "Modelo", + "SSE.Views.ChartSettings.text3dDepth": "Profundidade (% da base)", + "SSE.Views.ChartSettings.text3dHeight": "Altura (% da base)", + "SSE.Views.ChartSettings.text3dRotation": "Rotação 3D", "SSE.Views.ChartSettings.textAdvanced": "Exibir configurações avançadas", + "SSE.Views.ChartSettings.textAutoscale": "Autoescala", "SSE.Views.ChartSettings.textBorderSizeErr": "O valor inserido está incorreto.
Insira um valor entre 0 pt e 1.584 pt.", "SSE.Views.ChartSettings.textChangeType": "Alterar Tipo", "SSE.Views.ChartSettings.textChartType": "Alterar tipo de gráfico", + "SSE.Views.ChartSettings.textDefault": "Rotação padrão", + "SSE.Views.ChartSettings.textDown": "Abaixo", "SSE.Views.ChartSettings.textEditData": "Editar dados", "SSE.Views.ChartSettings.textFirstPoint": "Primeiro ponto", "SSE.Views.ChartSettings.textHeight": "Altura", "SSE.Views.ChartSettings.textHighPoint": "Ponto alto", "SSE.Views.ChartSettings.textKeepRatio": "Proporções constantes", "SSE.Views.ChartSettings.textLastPoint": "Último ponto", + "SSE.Views.ChartSettings.textLeft": "Esquerda", "SSE.Views.ChartSettings.textLowPoint": "Ponto baixo", "SSE.Views.ChartSettings.textMarkers": "Marcadores", + "SSE.Views.ChartSettings.textNarrow": "Campo de visão estreito", "SSE.Views.ChartSettings.textNegativePoint": "Ponto negativo", + "SSE.Views.ChartSettings.textPerspective": "Perspectiva", "SSE.Views.ChartSettings.textRanges": "Intervalo de dados", + "SSE.Views.ChartSettings.textRight": "Direita", + "SSE.Views.ChartSettings.textRightAngle": "Eixos de ângulo reto", "SSE.Views.ChartSettings.textSelectData": "Selecionar dados", "SSE.Views.ChartSettings.textShow": "Exibir", "SSE.Views.ChartSettings.textSize": "Tamanho", "SSE.Views.ChartSettings.textStyle": "Estilo", "SSE.Views.ChartSettings.textSwitch": "Mudar linha / coluna", "SSE.Views.ChartSettings.textType": "Tipo", + "SSE.Views.ChartSettings.textUp": "Para cima", + "SSE.Views.ChartSettings.textWiden": "Ampliar o campo de visão", "SSE.Views.ChartSettings.textWidth": "Largura", + "SSE.Views.ChartSettings.textX": "Rotação X", + "SSE.Views.ChartSettings.textY": "Rotação Y", "SSE.Views.ChartSettingsDlg.errorMaxPoints": "ERRO! O número máximo de pontos em série por gráfico é 4096.", "SSE.Views.ChartSettingsDlg.errorMaxRows": "ERRO! O número máximo de séries de dado por gráfico é 255", "SSE.Views.ChartSettingsDlg.errorStockChart": "Ordem da linha incorreta. Para criar um gráfico de ações coloque os dados na planilha na seguinte ordem:
preço de abertura, preço máx., preço mín., preço de fechamento.", @@ -1818,6 +1849,7 @@ "SSE.Views.DataTab.capBtnTextRemDuplicates": "Remover duplicatas", "SSE.Views.DataTab.capBtnTextToCol": "Texto para colunas", "SSE.Views.DataTab.capBtnUngroup": "Desagrupar", + "SSE.Views.DataTab.capDataExternalLinks": "Links externos", "SSE.Views.DataTab.capDataFromText": "Obter dados", "SSE.Views.DataTab.mniFromFile": "De TXT / CSV local", "SSE.Views.DataTab.mniFromUrl": "Do endereço da web TXT/CSV", @@ -1831,6 +1863,7 @@ "SSE.Views.DataTab.tipCustomSort": "Classificação personalizada", "SSE.Views.DataTab.tipDataFromText": "Obtenha dados do arquivo Texto/CSV", "SSE.Views.DataTab.tipDataValidation": "Validação de dados", + "SSE.Views.DataTab.tipExternalLinks": "Ver outros arquivos aos quais esta planilha está vinculada", "SSE.Views.DataTab.tipGroup": "Agrupar intervalo de células", "SSE.Views.DataTab.tipRemDuplicates": "Remover linhas duplicadas de uma planilha", "SSE.Views.DataTab.tipToColumns": "Separe o texto da célula em colunas", @@ -2067,6 +2100,13 @@ "SSE.Views.DocumentHolder.txtUngroup": "Desagrupar", "SSE.Views.DocumentHolder.txtWidth": "Largura", "SSE.Views.DocumentHolder.vertAlignText": "Alinhamento vertical", + "SSE.Views.ExternalLinksDlg.closeButtonText": "Encerrar", + "SSE.Views.ExternalLinksDlg.textDelete": "Quebrar links", + "SSE.Views.ExternalLinksDlg.textDeleteAll": "Quebrar todos os links", + "SSE.Views.ExternalLinksDlg.textSource": "Fonte", + "SSE.Views.ExternalLinksDlg.textUpdate": "Atualizar valores", + "SSE.Views.ExternalLinksDlg.textUpdateAll": "Atualize tudo", + "SSE.Views.ExternalLinksDlg.txtTitle": "Links externos", "SSE.Views.FieldSettingsDialog.strLayout": "Layout", "SSE.Views.FieldSettingsDialog.strSubtotals": "Subtotais", "SSE.Views.FieldSettingsDialog.textReport": "Formulário de relatório", @@ -2422,6 +2462,7 @@ "SSE.Views.FormulaTab.textManual": "Manual", "SSE.Views.FormulaTab.tipCalculate": "Calcular", "SSE.Views.FormulaTab.tipCalculateTheEntireWorkbook": "Calcular a pasta de trabalho inteira", + "SSE.Views.FormulaTab.tipWatch": "Adicionar células à lista da Janela de observação", "SSE.Views.FormulaTab.txtAdditional": "Adicional", "SSE.Views.FormulaTab.txtAutosum": "Soma automática", "SSE.Views.FormulaTab.txtAutosumTip": "Somatório", @@ -2430,6 +2471,7 @@ "SSE.Views.FormulaTab.txtFormulaTip": "Inserir função", "SSE.Views.FormulaTab.txtMore": "Mais formatos", "SSE.Views.FormulaTab.txtRecent": "Usado recentemente", + "SSE.Views.FormulaTab.txtWatch": "Janela de observação", "SSE.Views.FormulaWizard.textAny": "Qualquer", "SSE.Views.FormulaWizard.textArgument": "Argumento", "SSE.Views.FormulaWizard.textFunction": "Função", @@ -2770,12 +2812,21 @@ "SSE.Views.PivotTable.tipCreatePivot": "Inserir tabela dinâmica", "SSE.Views.PivotTable.tipGrandTotals": "Mostrar ou ocultar totais gerais", "SSE.Views.PivotTable.tipRefresh": "Atualize as informações da fonte de dados", + "SSE.Views.PivotTable.tipRefreshCurrent": "Atualizar as informações da fonte de dados para a tabela atual", "SSE.Views.PivotTable.tipSelect": "Selecionar tabela dinâmica inteira", "SSE.Views.PivotTable.tipSubtotals": "Mostrar ou ocultar subtotais", "SSE.Views.PivotTable.txtCreate": "Inserir Tabela", + "SSE.Views.PivotTable.txtGroupPivot_Custom": "Personalizado", + "SSE.Views.PivotTable.txtGroupPivot_Dark": "Escuro", + "SSE.Views.PivotTable.txtGroupPivot_Light": "Claro", + "SSE.Views.PivotTable.txtGroupPivot_Medium": "Médio", "SSE.Views.PivotTable.txtPivotTable": "Tabela Dinâmica", "SSE.Views.PivotTable.txtRefresh": "Atualizar", + "SSE.Views.PivotTable.txtRefreshAll": "Atualize tudo", "SSE.Views.PivotTable.txtSelect": "Selecionar", + "SSE.Views.PivotTable.txtTable_PivotStyleDark": "Pivot Table de estilo escuro", + "SSE.Views.PivotTable.txtTable_PivotStyleLight": "Pivot Table de estilo claro", + "SSE.Views.PivotTable.txtTable_PivotStyleMedium": "Pivot table de estilo médio", "SSE.Views.PrintSettings.btnDownload": "Salvar & Transferir", "SSE.Views.PrintSettings.btnPrint": "Salvar e Imprimir", "SSE.Views.PrintSettings.strBottom": "Inferior", @@ -3302,6 +3353,13 @@ "SSE.Views.TableSettingsAdvanced.textAltTip": "A representação alternativa baseada em texto da informação visual do objeto, que será lida para as pessoas com deficiências visuais ou cognitivas para ajudá-las a entender melhor que informação, forma automática, gráfico ou tabela existe na imagem.", "SSE.Views.TableSettingsAdvanced.textAltTitle": "Título", "SSE.Views.TableSettingsAdvanced.textTitle": "Tabela - Configurações avançadas", + "SSE.Views.TableSettingsAdvanced.txtGroupTable_Custom": "Personalizado", + "SSE.Views.TableSettingsAdvanced.txtGroupTable_Dark": "Escuro", + "SSE.Views.TableSettingsAdvanced.txtGroupTable_Light": "Claro", + "SSE.Views.TableSettingsAdvanced.txtGroupTable_Medium": "Médio", + "SSE.Views.TableSettingsAdvanced.txtTable_TableStyleDark": "Estilo escuro da tabela", + "SSE.Views.TableSettingsAdvanced.txtTable_TableStyleLight": "Estilo Claro da tabela", + "SSE.Views.TableSettingsAdvanced.txtTable_TableStyleMedium": "Estilo de Tabela Médio", "SSE.Views.TextArtSettings.strBackground": "Background color", "SSE.Views.TextArtSettings.strColor": "Color", "SSE.Views.TextArtSettings.strFill": "Fill", @@ -3397,6 +3455,7 @@ "SSE.Views.Toolbar.textClockwise": "Ângulo no sentido horário", "SSE.Views.Toolbar.textColorScales": "Escalas de cores", "SSE.Views.Toolbar.textCounterCw": "Ângulo no sentido antihorário", + "SSE.Views.Toolbar.textCustom": "Personalizado", "SSE.Views.Toolbar.textDataBars": "Barras de dados", "SSE.Views.Toolbar.textDelLeft": "Deslocar células para a esquerda", "SSE.Views.Toolbar.textDelUp": "Deslocar células para cima", @@ -3508,6 +3567,7 @@ "SSE.Views.Toolbar.tipInsertChart": "Inserir gráfico", "SSE.Views.Toolbar.tipInsertChartSpark": "Inserir gráfico", "SSE.Views.Toolbar.tipInsertEquation": "Inserir equação", + "SSE.Views.Toolbar.tipInsertHorizontalText": "Inserir caixa de texto horizontal", "SSE.Views.Toolbar.tipInsertHyperlink": "Adicionar hiperlink", "SSE.Views.Toolbar.tipInsertImage": "Inserir imagem", "SSE.Views.Toolbar.tipInsertOpt": "Inserir células", @@ -3518,6 +3578,7 @@ "SSE.Views.Toolbar.tipInsertTable": "Inserir tabela", "SSE.Views.Toolbar.tipInsertText": "Inserir caixa de texto", "SSE.Views.Toolbar.tipInsertTextart": "Inserir arte de texto", + "SSE.Views.Toolbar.tipInsertVerticalText": "Inserir caixa de texto vertical", "SSE.Views.Toolbar.tipMerge": "Mesclar e centralizar", "SSE.Views.Toolbar.tipNone": "Nenhum", "SSE.Views.Toolbar.tipNumFormat": "Formato de número", @@ -3547,6 +3608,7 @@ "SSE.Views.Toolbar.txtAdditional": "Adicional", "SSE.Views.Toolbar.txtAscending": "Crescente", "SSE.Views.Toolbar.txtAutosumTip": "Somatório", + "SSE.Views.Toolbar.txtCellStyle": "Estilo da célula", "SSE.Views.Toolbar.txtClearAll": "Todos", "SSE.Views.Toolbar.txtClearComments": "Comentários", "SSE.Views.Toolbar.txtClearFilter": "Limpar filtro", @@ -3689,6 +3751,17 @@ "SSE.Views.ViewTab.tipFreeze": "Congelar painéis", "SSE.Views.ViewTab.tipInterfaceTheme": "Tema de interface", "SSE.Views.ViewTab.tipSheetView": "Visualização de folha", + "SSE.Views.WatchDialog.closeButtonText": "Encerrar", + "SSE.Views.WatchDialog.textAdd": "Adicionar observação", + "SSE.Views.WatchDialog.textBook": "Livro", + "SSE.Views.WatchDialog.textCell": "Célula", + "SSE.Views.WatchDialog.textDelete": "Eliminar observação", + "SSE.Views.WatchDialog.textDeleteAll": "Excluir tudo", + "SSE.Views.WatchDialog.textFormula": "Fórmula", + "SSE.Views.WatchDialog.textName": "Nome", + "SSE.Views.WatchDialog.textSheet": "Folha", + "SSE.Views.WatchDialog.textValue": "Valor", + "SSE.Views.WatchDialog.txtTitle": "Janela de observação", "SSE.Views.WBProtection.hintAllowRanges": "Permitir editar intervalos", "SSE.Views.WBProtection.hintProtectSheet": "Proteger folha", "SSE.Views.WBProtection.hintProtectWB": "Proteger a pasta de trabalho", diff --git a/apps/spreadsheeteditor/main/locale/ru.json b/apps/spreadsheeteditor/main/locale/ru.json index 08bc0cbe4..586eed1ff 100644 --- a/apps/spreadsheeteditor/main/locale/ru.json +++ b/apps/spreadsheeteditor/main/locale/ru.json @@ -100,6 +100,165 @@ "Common.define.conditionalData.textUnique": "Уникальное", "Common.define.conditionalData.textValue": "Значение равно", "Common.define.conditionalData.textYesterday": "Вчера", + "Common.define.smartArt.textAccentedPicture": "Акцентируемый рисунок", + "Common.define.smartArt.textAccentProcess": "Процесс со смещением", + "Common.define.smartArt.textAlternatingFlow": "Переменный поток", + "Common.define.smartArt.textAlternatingHexagons": "Чередующиеся шестиугольники", + "Common.define.smartArt.textAlternatingPictureBlocks": "Чередующиеся блоки рисунков", + "Common.define.smartArt.textAlternatingPictureCircles": "Чередующиеся круги рисунков", + "Common.define.smartArt.textArchitectureLayout": "Архитектурный макет", + "Common.define.smartArt.textArrowRibbon": "Лента со стрелками", + "Common.define.smartArt.textAscendingPictureAccentProcess": "Процесс со смещенными по возрастанию рисунками", + "Common.define.smartArt.textBalance": "Баланс", + "Common.define.smartArt.textBasicBendingProcess": "Простой ломаный процесс", + "Common.define.smartArt.textBasicBlockList": "Простой блочный список", + "Common.define.smartArt.textBasicChevronProcess": "Простой уголковый процесс", + "Common.define.smartArt.textBasicCycle": "Простой цикл", + "Common.define.smartArt.textBasicMatrix": "Простая матрица", + "Common.define.smartArt.textBasicPie": "Простая круговая", + "Common.define.smartArt.textBasicProcess": "Простой процесс", + "Common.define.smartArt.textBasicPyramid": "Простая пирамида", + "Common.define.smartArt.textBasicRadial": "Простая радиальная", + "Common.define.smartArt.textBasicTarget": "Простая целевая", + "Common.define.smartArt.textBasicTimeline": "Простая временная шкала", + "Common.define.smartArt.textBasicVenn": "Простая Венна", + "Common.define.smartArt.textBendingPictureAccentList": "Ломаный список со смещенными рисунками", + "Common.define.smartArt.textBendingPictureBlocks": "Нелинейные рисунки с блоками", + "Common.define.smartArt.textBendingPictureCaption": "Нелинейные рисунки с подписями", + "Common.define.smartArt.textBendingPictureCaptionList": "Ломаный список рисунков с подписями", + "Common.define.smartArt.textBendingPictureSemiTranparentText": "Нелинейные рисунки с полупрозрачным текстом", + "Common.define.smartArt.textBlockCycle": "Блочный цикл", + "Common.define.smartArt.textBubblePictureList": "Список рисунков с выносками", + "Common.define.smartArt.textCaptionedPictures": "Подписанные рисунки", + "Common.define.smartArt.textChevronAccentProcess": "Уголковый процесс со смещением", + "Common.define.smartArt.textChevronList": "Уголковый список", + "Common.define.smartArt.textCircleAccentTimeline": "Круглая временная шкала", + "Common.define.smartArt.textCircleArrowProcess": "Стрелка процесса с кругами", + "Common.define.smartArt.textCirclePictureHierarchy": "Иерархия с круглыми рисунками", + "Common.define.smartArt.textCircleProcess": "Процесс с кругами", + "Common.define.smartArt.textCircleRelationship": "Круг связей", + "Common.define.smartArt.textCircularBendingProcess": "Круглый ломаный процесс", + "Common.define.smartArt.textCircularPictureCallout": "Выноска с круглыми рисунками", + "Common.define.smartArt.textClosedChevronProcess": "Закрытый уголковый процесс", + "Common.define.smartArt.textContinuousArrowProcess": "Стрелка непрерывного процесса", + "Common.define.smartArt.textContinuousBlockProcess": "Непрерывный блочный процесс", + "Common.define.smartArt.textContinuousCycle": "Непрерывный цикл", + "Common.define.smartArt.textContinuousPictureList": "Непрерывный список с рисунками", + "Common.define.smartArt.textConvergingArrows": "Сходящиеся стрелки", + "Common.define.smartArt.textConvergingRadial": "Сходящаяся радиальная", + "Common.define.smartArt.textConvergingText": "Сходящийся текст", + "Common.define.smartArt.textCounterbalanceArrows": "Уравновешивающие стрелки", + "Common.define.smartArt.textCycle": "Цикл", + "Common.define.smartArt.textCycleMatrix": "Циклическая матрица", + "Common.define.smartArt.textDescendingBlockList": "Нисходящий блочный список", + "Common.define.smartArt.textDescendingProcess": "Убывающий процесс", + "Common.define.smartArt.textDetailedProcess": "Подробный процесс", + "Common.define.smartArt.textDivergingArrows": "Расходящиеся стрелки", + "Common.define.smartArt.textDivergingRadial": "Расходящаяся радиальная", + "Common.define.smartArt.textEquation": "Уравнение", + "Common.define.smartArt.textFramedTextPicture": "Рисунок с текстом в рамке", + "Common.define.smartArt.textFunnel": "Воронка", + "Common.define.smartArt.textGear": "Шестеренка", + "Common.define.smartArt.textGridMatrix": "Сетчатая матрица", + "Common.define.smartArt.textGroupedList": "Сгруппированный список", + "Common.define.smartArt.textHalfCircleOrganizationChart": "Полукруглая организационная диаграмма", + "Common.define.smartArt.textHexagonCluster": "Кластер шестиугольников", + "Common.define.smartArt.textHexagonRadial": "Радиальный шестиугольник", + "Common.define.smartArt.textHierarchy": "Иерархия", + "Common.define.smartArt.textHierarchyList": "Иерархический список", + "Common.define.smartArt.textHorizontalBulletList": "Горизонтальный маркированный список", + "Common.define.smartArt.textHorizontalHierarchy": "Горизонтальная иерархия", + "Common.define.smartArt.textHorizontalLabeledHierarchy": "Горизонтальная иерархия с подписями", + "Common.define.smartArt.textHorizontalMultiLevelHierarchy": "Горизонтальная многоуровневая иерархия", + "Common.define.smartArt.textHorizontalOrganizationChart": "Горизонтальная организационная диаграмма", + "Common.define.smartArt.textHorizontalPictureList": "Горизонтальный список рисунков", + "Common.define.smartArt.textIncreasingArrowProcess": "Стрелка нарастающего процесса", + "Common.define.smartArt.textIncreasingCircleProcess": "Нарастающий процесс с кругами", + "Common.define.smartArt.textInterconnectedBlockProcess": "Процесс со взаимосвязанными блоками", + "Common.define.smartArt.textInterconnectedRings": "Взаимосвязанные кольца", + "Common.define.smartArt.textInvertedPyramid": "Инвертированная пирамида", + "Common.define.smartArt.textLabeledHierarchy": "Иерархия с подписями", + "Common.define.smartArt.textLinearVenn": "Линейная Венна", + "Common.define.smartArt.textLinedList": "Список с линиями", + "Common.define.smartArt.textList": "Список", + "Common.define.smartArt.textMatrix": "Матрица", + "Common.define.smartArt.textMultidirectionalCycle": "Разнонаправленный цикл", + "Common.define.smartArt.textNameAndTitleOrganizationChart": "Организационная диаграмма с именами и должностями", + "Common.define.smartArt.textNestedTarget": "Вложенная целевая", + "Common.define.smartArt.textNondirectionalCycle": "Ненаправленный цикл", + "Common.define.smartArt.textOpposingArrows": "Противостоящие стрелки", + "Common.define.smartArt.textOpposingIdeas": "Противоположные идеи", + "Common.define.smartArt.textOrganizationChart": "Организационная диаграмма", + "Common.define.smartArt.textOther": "Другое", + "Common.define.smartArt.textPhasedProcess": "Поэтапный процесс", + "Common.define.smartArt.textPicture": "Рисунок", + "Common.define.smartArt.textPictureAccentBlocks": "Блоки со смещенными рисунками", + "Common.define.smartArt.textPictureAccentList": "Список со смещенными рисунками", + "Common.define.smartArt.textPictureAccentProcess": "Процесс со смещенными рисунками", + "Common.define.smartArt.textPictureCaptionList": "Список названий рисунков", + "Common.define.smartArt.textPictureFrame": "Фоторамка", + "Common.define.smartArt.textPictureGrid": "Сетка рисунков", + "Common.define.smartArt.textPictureLineup": "Линия рисунков", + "Common.define.smartArt.textPictureOrganizationChart": "Организационная диаграмма с рисунками", + "Common.define.smartArt.textPictureStrips": "Полосы рисунков", + "Common.define.smartArt.textPieProcess": "Процесс с круговой диаграммой", + "Common.define.smartArt.textPlusAndMinus": "Плюс и минус", + "Common.define.smartArt.textProcess": "Процесс", + "Common.define.smartArt.textProcessArrows": "Стрелки процесса", + "Common.define.smartArt.textProcessList": "Список процессов", + "Common.define.smartArt.textPyramid": "Пирамида", + "Common.define.smartArt.textPyramidList": "Пирамидальный список", + "Common.define.smartArt.textRadialCluster": "Радиальный кластер", + "Common.define.smartArt.textRadialCycle": "Радиальная циклическая", + "Common.define.smartArt.textRadialList": "Радиальный список", + "Common.define.smartArt.textRadialPictureList": "Радиальный список рисунков", + "Common.define.smartArt.textRadialVenn": "Радиальная Венна", + "Common.define.smartArt.textRandomToResultProcess": "Процесс от случайности к результату", + "Common.define.smartArt.textRelationship": "Связь", + "Common.define.smartArt.textRepeatingBendingProcess": "Повторяющийся ломаный процесс", + "Common.define.smartArt.textReverseList": "Обратный список", + "Common.define.smartArt.textSegmentedCycle": "Сегментированный цикл", + "Common.define.smartArt.textSegmentedProcess": "Сегментированный процесс", + "Common.define.smartArt.textSegmentedPyramid": "Сегментированная пирамида", + "Common.define.smartArt.textSnapshotPictureList": "Список со снимками", + "Common.define.smartArt.textSpiralPicture": "Спираль рисунков", + "Common.define.smartArt.textSquareAccentList": "Список с квадратиками", + "Common.define.smartArt.textStackedList": "Список в столбик", + "Common.define.smartArt.textStackedVenn": "Венна в столбик", + "Common.define.smartArt.textStaggeredProcess": "Ступенчатый процесс", + "Common.define.smartArt.textStepDownProcess": "Нисходящий процесс", + "Common.define.smartArt.textStepUpProcess": "Восходящий процесс", + "Common.define.smartArt.textSubStepProcess": "Процесс с вложенными шагами", + "Common.define.smartArt.textTabbedArc": "Дуга с вкладками", + "Common.define.smartArt.textTableHierarchy": "Табличная иерархия", + "Common.define.smartArt.textTableList": "Табличный список", + "Common.define.smartArt.textTabList": "Список вкладок", + "Common.define.smartArt.textTargetList": "Целевой список", + "Common.define.smartArt.textTextCycle": "Текстовый цикл", + "Common.define.smartArt.textThemePictureAccent": "Смещенные рисунки темы", + "Common.define.smartArt.textThemePictureAlternatingAccent": "Чередующиеся смещенные рисунки темы", + "Common.define.smartArt.textThemePictureGrid": "Сетка рисунков темы", + "Common.define.smartArt.textTitledMatrix": "Матрица с заголовками", + "Common.define.smartArt.textTitledPictureAccentList": "Список со смещенными рисунками и заголовком", + "Common.define.smartArt.textTitledPictureBlocks": "Блоки рисунков с названиями", + "Common.define.smartArt.textTitlePictureLineup": "Линия рисунков с названиями", + "Common.define.smartArt.textTrapezoidList": "Трапециевидный список", + "Common.define.smartArt.textUpwardArrow": "Восходящая стрелка", + "Common.define.smartArt.textVaryingWidthList": "Список переменной ширины", + "Common.define.smartArt.textVerticalAccentList": "Вертикальный список со смещением", + "Common.define.smartArt.textVerticalArrowList": "Вертикальный список со стрелкой", + "Common.define.smartArt.textVerticalBendingProcess": "Вертикальный ломаный процесс", + "Common.define.smartArt.textVerticalBlockList": "Вертикальный блочный список", + "Common.define.smartArt.textVerticalBoxList": "Вертикальный список", + "Common.define.smartArt.textVerticalBracketList": "Вертикальный список со скобками", + "Common.define.smartArt.textVerticalBulletList": "Вертикальный маркированный список", + "Common.define.smartArt.textVerticalChevronList": "Вертикальный уголковый список", + "Common.define.smartArt.textVerticalCircleList": "Вертикальный список с кругами", + "Common.define.smartArt.textVerticalCurvedList": "Вертикальный нелинейный список", + "Common.define.smartArt.textVerticalEquation": "Вертикальное уравнение", + "Common.define.smartArt.textVerticalPictureAccentList": "Вертикальный список со смещенными рисунками", + "Common.define.smartArt.textVerticalPictureList": "Вертикальный список рисунков", + "Common.define.smartArt.textVerticalProcess": "Вертикальный процесс", "Common.Translation.textMoreButton": "Ещё", "Common.Translation.warnFileLocked": "Файл редактируется в другом приложении. Вы можете продолжить редактирование и сохранить его как копию.", "Common.Translation.warnFileLockedBtnEdit": "Создать копию", @@ -695,6 +854,7 @@ "SSE.Controllers.LeftMenu.warnDownloadAs": "Если Вы продолжите сохранение в этот формат, вcя функциональность, кроме текста, будет потеряна.
Вы действительно хотите продолжить?", "SSE.Controllers.Main.confirmAddCellWatches": "Эта операция добавит {0} контрольных значений ячеек.
Вы хотите продолжить?", "SSE.Controllers.Main.confirmAddCellWatchesMax": "Эта операция добавит только {0} контрольных значений ячеек для экономии памяти.
Вы хотите продолжить?", + "SSE.Controllers.Main.confirmMaxChangesSize": "Размер внесенных изменений превышает ограничение, установленное для вашего сервера.
Нажмите \"Отменить\" для отмены последнего действия или нажмите \"Продолжить\", чтобы сохранить действие локально (потребуется скачать файл или скопировать его содержимое чтобы ничего не потерялось).", "SSE.Controllers.Main.confirmMoveCellRange": "Конечный диапазон ячеек может содержать данные. Продолжить операцию?", "SSE.Controllers.Main.confirmPutMergeRange": "Исходные данные содержали объединенные ячейки.
Перед вставкой этих ячеек в таблицу объединение было отменено.", "SSE.Controllers.Main.confirmReplaceFormulaInTable": "Формулы в строке заголовка будут удалены и преобразованы в статический текст.
Вы хотите продолжить?", @@ -827,6 +987,7 @@ "SSE.Controllers.Main.textCloseTip": "Щелкните, чтобы закрыть эту подсказку", "SSE.Controllers.Main.textConfirm": "Подтверждение", "SSE.Controllers.Main.textContactUs": "Связаться с отделом продаж", + "SSE.Controllers.Main.textContinue": "Продолжить", "SSE.Controllers.Main.textConvertEquation": "Это уравнение создано в старой версии редактора уравнений, которая больше не поддерживается. Чтобы изменить это уравнение, его необходимо преобразовать в формат Office Math ML.
Преобразовать сейчас?", "SSE.Controllers.Main.textCustomLoader": "Обратите внимание, что по условиям лицензии у вас нет прав изменять экран, отображаемый при загрузке.
Пожалуйста, обратитесь в наш отдел продаж, чтобы сделать запрос.", "SSE.Controllers.Main.textDisconnect": "Соединение потеряно", @@ -855,6 +1016,7 @@ "SSE.Controllers.Main.textStrict": "Строгий режим", "SSE.Controllers.Main.textTryUndoRedo": "Функции отмены и повтора действий отключены в Быстром режиме совместного редактирования.
Нажмите на кнопку 'Строгий режим' для переключения в Строгий режим совместного редактирования, чтобы редактировать файл без вмешательства других пользователей и отправлять изменения только после того, как вы их сохраните. Переключаться между режимами совместного редактирования можно с помощью Дополнительных параметров редактора.", "SSE.Controllers.Main.textTryUndoRedoWarn": "Функции отмены и повтора действий отключены в Быстром режиме совместного редактирования.", + "SSE.Controllers.Main.textUndo": "Отменить", "SSE.Controllers.Main.textYes": "Да", "SSE.Controllers.Main.titleLicenseExp": "Истек срок действия лицензии", "SSE.Controllers.Main.titleServerVersion": "Редактор обновлен", @@ -2170,8 +2332,8 @@ "SSE.Views.FileMenuPanels.DocumentInfo.txtPlacement": "Размещение", "SSE.Views.FileMenuPanels.DocumentInfo.txtRights": "Люди, имеющие права", "SSE.Views.FileMenuPanels.DocumentInfo.txtSubject": "Тема", - "SSE.Views.FileMenuPanels.DocumentInfo.txtTitle": "Название", "SSE.Views.FileMenuPanels.DocumentInfo.txtTags": "Теги", + "SSE.Views.FileMenuPanels.DocumentInfo.txtTitle": "Название", "SSE.Views.FileMenuPanels.DocumentInfo.txtUploaded": "Загружена", "SSE.Views.FileMenuPanels.DocumentRights.txtBtnAccessRights": "Изменить права доступа", "SSE.Views.FileMenuPanels.DocumentRights.txtRights": "Люди, имеющие права", @@ -3411,6 +3573,7 @@ "SSE.Views.Toolbar.capBtnComment": "Комментарий", "SSE.Views.Toolbar.capBtnInsHeader": "Колонтитулы", "SSE.Views.Toolbar.capBtnInsSlicer": "Срез", + "SSE.Views.Toolbar.capBtnInsSmartArt": "SmartArt", "SSE.Views.Toolbar.capBtnInsSymbol": "Символ", "SSE.Views.Toolbar.capBtnMargins": "Поля", "SSE.Views.Toolbar.capBtnPageOrient": "Ориентация", @@ -3574,6 +3737,7 @@ "SSE.Views.Toolbar.tipInsertOpt": "Вставить ячейки", "SSE.Views.Toolbar.tipInsertShape": "Вставить автофигуру", "SSE.Views.Toolbar.tipInsertSlicer": "Вставить срез", + "SSE.Views.Toolbar.tipInsertSmartArt": "Вставить SmartArt", "SSE.Views.Toolbar.tipInsertSpark": "Вставить спарклайн", "SSE.Views.Toolbar.tipInsertSymbol": "Вставить символ", "SSE.Views.Toolbar.tipInsertTable": "Вставить таблицу", From e525e97edea92d125e20245e0095d48349230acf Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Mon, 24 Oct 2022 12:00:08 +0300 Subject: [PATCH 20/32] [Mobile] Update translation --- apps/documenteditor/mobile/locale/az.json | 4 +- apps/documenteditor/mobile/locale/be.json | 4 +- apps/documenteditor/mobile/locale/ca.json | 4 +- apps/documenteditor/mobile/locale/cs.json | 4 +- apps/documenteditor/mobile/locale/de.json | 4 +- apps/documenteditor/mobile/locale/el.json | 4 +- apps/documenteditor/mobile/locale/en.json | 8 ++-- apps/documenteditor/mobile/locale/es.json | 4 +- apps/documenteditor/mobile/locale/eu.json | 4 +- apps/documenteditor/mobile/locale/fr.json | 4 +- apps/documenteditor/mobile/locale/gl.json | 4 +- apps/documenteditor/mobile/locale/hu.json | 4 +- apps/documenteditor/mobile/locale/hy.json | 4 +- apps/documenteditor/mobile/locale/id.json | 8 ++-- apps/documenteditor/mobile/locale/it.json | 4 +- apps/documenteditor/mobile/locale/ja.json | 4 +- apps/documenteditor/mobile/locale/ko.json | 4 +- apps/documenteditor/mobile/locale/lo.json | 4 +- apps/documenteditor/mobile/locale/ms.json | 4 +- apps/documenteditor/mobile/locale/nl.json | 4 +- apps/documenteditor/mobile/locale/pt-pt.json | 4 +- apps/documenteditor/mobile/locale/pt.json | 40 ++++++++--------- apps/documenteditor/mobile/locale/ro.json | 4 +- apps/documenteditor/mobile/locale/ru.json | 8 ++-- apps/documenteditor/mobile/locale/sk.json | 4 +- apps/documenteditor/mobile/locale/sl.json | 8 ++-- apps/documenteditor/mobile/locale/tr.json | 4 +- apps/documenteditor/mobile/locale/uk.json | 4 +- apps/documenteditor/mobile/locale/zh-tw.json | 4 +- apps/documenteditor/mobile/locale/zh.json | 4 +- apps/presentationeditor/mobile/locale/az.json | 4 +- apps/presentationeditor/mobile/locale/be.json | 4 +- apps/presentationeditor/mobile/locale/ca.json | 4 +- apps/presentationeditor/mobile/locale/cs.json | 4 +- apps/presentationeditor/mobile/locale/de.json | 4 +- apps/presentationeditor/mobile/locale/el.json | 4 +- apps/presentationeditor/mobile/locale/en.json | 8 ++-- apps/presentationeditor/mobile/locale/es.json | 4 +- apps/presentationeditor/mobile/locale/eu.json | 4 +- apps/presentationeditor/mobile/locale/fr.json | 4 +- apps/presentationeditor/mobile/locale/gl.json | 4 +- apps/presentationeditor/mobile/locale/hu.json | 4 +- apps/presentationeditor/mobile/locale/hy.json | 4 +- apps/presentationeditor/mobile/locale/id.json | 8 ++-- apps/presentationeditor/mobile/locale/it.json | 4 +- apps/presentationeditor/mobile/locale/ja.json | 4 +- apps/presentationeditor/mobile/locale/ko.json | 4 +- apps/presentationeditor/mobile/locale/lo.json | 4 +- apps/presentationeditor/mobile/locale/ms.json | 4 +- apps/presentationeditor/mobile/locale/nl.json | 4 +- .../mobile/locale/pt-pt.json | 4 +- apps/presentationeditor/mobile/locale/pt.json | 42 +++++++++--------- apps/presentationeditor/mobile/locale/ro.json | 4 +- apps/presentationeditor/mobile/locale/ru.json | 8 ++-- apps/presentationeditor/mobile/locale/sk.json | 4 +- apps/presentationeditor/mobile/locale/sl.json | 8 ++-- apps/presentationeditor/mobile/locale/tr.json | 4 +- apps/presentationeditor/mobile/locale/uk.json | 8 ++-- .../mobile/locale/zh-tw.json | 4 +- apps/presentationeditor/mobile/locale/zh.json | 4 +- apps/spreadsheeteditor/mobile/locale/az.json | 4 +- apps/spreadsheeteditor/mobile/locale/be.json | 8 ++-- apps/spreadsheeteditor/mobile/locale/ca.json | 4 +- apps/spreadsheeteditor/mobile/locale/cs.json | 4 +- apps/spreadsheeteditor/mobile/locale/da.json | 8 ++-- apps/spreadsheeteditor/mobile/locale/de.json | 4 +- apps/spreadsheeteditor/mobile/locale/el.json | 4 +- apps/spreadsheeteditor/mobile/locale/en.json | 8 ++-- apps/spreadsheeteditor/mobile/locale/es.json | 4 +- apps/spreadsheeteditor/mobile/locale/eu.json | 4 +- apps/spreadsheeteditor/mobile/locale/fr.json | 4 +- apps/spreadsheeteditor/mobile/locale/gl.json | 4 +- apps/spreadsheeteditor/mobile/locale/hu.json | 4 +- apps/spreadsheeteditor/mobile/locale/hy.json | 4 +- apps/spreadsheeteditor/mobile/locale/id.json | 8 ++-- apps/spreadsheeteditor/mobile/locale/it.json | 4 +- apps/spreadsheeteditor/mobile/locale/ja.json | 4 +- apps/spreadsheeteditor/mobile/locale/ko.json | 4 +- apps/spreadsheeteditor/mobile/locale/lo.json | 4 +- apps/spreadsheeteditor/mobile/locale/ms.json | 4 +- apps/spreadsheeteditor/mobile/locale/nl.json | 4 +- .../mobile/locale/pt-pt.json | 4 +- apps/spreadsheeteditor/mobile/locale/pt.json | 44 +++++++++---------- apps/spreadsheeteditor/mobile/locale/ro.json | 4 +- apps/spreadsheeteditor/mobile/locale/ru.json | 8 ++-- apps/spreadsheeteditor/mobile/locale/sk.json | 4 +- apps/spreadsheeteditor/mobile/locale/sl.json | 8 ++-- apps/spreadsheeteditor/mobile/locale/tr.json | 4 +- apps/spreadsheeteditor/mobile/locale/uk.json | 8 ++-- .../mobile/locale/zh-tw.json | 4 +- apps/spreadsheeteditor/mobile/locale/zh.json | 4 +- 91 files changed, 271 insertions(+), 271 deletions(-) diff --git a/apps/documenteditor/mobile/locale/az.json b/apps/documenteditor/mobile/locale/az.json index 313356edf..303e32b14 100644 --- a/apps/documenteditor/mobile/locale/az.json +++ b/apps/documenteditor/mobile/locale/az.json @@ -457,8 +457,8 @@ "uploadImageTitleText": "Təsvir Yüklənir", "waitText": "Lütfən, gözləyin...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Main": { "criticalErrorTitle": "Xəta", diff --git a/apps/documenteditor/mobile/locale/be.json b/apps/documenteditor/mobile/locale/be.json index 3287ce453..b3fa8fa3d 100644 --- a/apps/documenteditor/mobile/locale/be.json +++ b/apps/documenteditor/mobile/locale/be.json @@ -457,8 +457,8 @@ "uploadImageTitleText": "Запампоўванне выявы", "waitText": "Калі ласка, пачакайце...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Main": { "criticalErrorTitle": "Памылка", diff --git a/apps/documenteditor/mobile/locale/ca.json b/apps/documenteditor/mobile/locale/ca.json index 11ac82295..345bcc2e8 100644 --- a/apps/documenteditor/mobile/locale/ca.json +++ b/apps/documenteditor/mobile/locale/ca.json @@ -457,8 +457,8 @@ "uploadImageTitleText": "S'està carregant la imatge", "waitText": "Espereu...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Main": { "criticalErrorTitle": "Error", diff --git a/apps/documenteditor/mobile/locale/cs.json b/apps/documenteditor/mobile/locale/cs.json index eaa5633c9..a2e816f71 100644 --- a/apps/documenteditor/mobile/locale/cs.json +++ b/apps/documenteditor/mobile/locale/cs.json @@ -457,8 +457,8 @@ "uploadImageTitleText": "Nahrávání obrázku", "waitText": "Čekejte prosím...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Main": { "criticalErrorTitle": "Chyba", diff --git a/apps/documenteditor/mobile/locale/de.json b/apps/documenteditor/mobile/locale/de.json index 6e8a14242..e6fb09dff 100644 --- a/apps/documenteditor/mobile/locale/de.json +++ b/apps/documenteditor/mobile/locale/de.json @@ -457,8 +457,8 @@ "uploadImageTitleText": "Bild wird hochgeladen", "waitText": "Bitte warten...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Main": { "criticalErrorTitle": "Fehler", diff --git a/apps/documenteditor/mobile/locale/el.json b/apps/documenteditor/mobile/locale/el.json index 43522a700..13d052642 100644 --- a/apps/documenteditor/mobile/locale/el.json +++ b/apps/documenteditor/mobile/locale/el.json @@ -457,8 +457,8 @@ "uploadImageTitleText": "Μεταφόρτωση Εικόνας", "waitText": "Παρακαλούμε, περιμένετε...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Main": { "criticalErrorTitle": "Σφάλμα", diff --git a/apps/documenteditor/mobile/locale/en.json b/apps/documenteditor/mobile/locale/en.json index 2b1e3a315..5baa1d7fc 100644 --- a/apps/documenteditor/mobile/locale/en.json +++ b/apps/documenteditor/mobile/locale/en.json @@ -425,6 +425,7 @@ "LongActions": { "applyChangesTextText": "Loading data...", "applyChangesTitleText": "Loading Data", + "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", "downloadMergeText": "Downloading...", "downloadMergeTitle": "Downloading", "downloadTextText": "Downloading document...", @@ -451,14 +452,13 @@ "saveTitleText": "Saving Document", "sendMergeText": "Sending Merge...", "sendMergeTitle": "Sending Merge", + "textContinue": "Continue", "textLoadingDocument": "Loading document", + "textUndo": "Undo", "txtEditingMode": "Set editing mode...", "uploadImageTextText": "Uploading image...", "uploadImageTitleText": "Uploading Image", - "waitText": "Please, wait...", - "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "waitText": "Please, wait..." }, "Main": { "criticalErrorTitle": "Error", diff --git a/apps/documenteditor/mobile/locale/es.json b/apps/documenteditor/mobile/locale/es.json index 34937bdc7..842217e88 100644 --- a/apps/documenteditor/mobile/locale/es.json +++ b/apps/documenteditor/mobile/locale/es.json @@ -457,8 +457,8 @@ "uploadImageTitleText": "Cargando imagen", "waitText": "Por favor, espere...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Main": { "criticalErrorTitle": "Error", diff --git a/apps/documenteditor/mobile/locale/eu.json b/apps/documenteditor/mobile/locale/eu.json index 3ffc2eff1..9ca4b2e40 100644 --- a/apps/documenteditor/mobile/locale/eu.json +++ b/apps/documenteditor/mobile/locale/eu.json @@ -457,8 +457,8 @@ "uploadImageTitleText": "Irudia kargatzen", "waitText": "Mesedez, itxaron...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Main": { "criticalErrorTitle": "Errorea", diff --git a/apps/documenteditor/mobile/locale/fr.json b/apps/documenteditor/mobile/locale/fr.json index f04ecefb7..d495fd121 100644 --- a/apps/documenteditor/mobile/locale/fr.json +++ b/apps/documenteditor/mobile/locale/fr.json @@ -457,8 +457,8 @@ "uploadImageTitleText": "Chargement d'une image", "waitText": "Veuillez patienter...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Main": { "criticalErrorTitle": "Erreur", diff --git a/apps/documenteditor/mobile/locale/gl.json b/apps/documenteditor/mobile/locale/gl.json index 35fa042e8..ecef1fe8e 100644 --- a/apps/documenteditor/mobile/locale/gl.json +++ b/apps/documenteditor/mobile/locale/gl.json @@ -457,8 +457,8 @@ "uploadImageTitleText": "Cargando imaxe", "waitText": "Agarde...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Main": { "criticalErrorTitle": "Erro", diff --git a/apps/documenteditor/mobile/locale/hu.json b/apps/documenteditor/mobile/locale/hu.json index dc67cb614..46f49bb5b 100644 --- a/apps/documenteditor/mobile/locale/hu.json +++ b/apps/documenteditor/mobile/locale/hu.json @@ -457,8 +457,8 @@ "uploadImageTitleText": "Kép feltöltése", "waitText": "Kérjük, várjon...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Main": { "criticalErrorTitle": "Hiba", diff --git a/apps/documenteditor/mobile/locale/hy.json b/apps/documenteditor/mobile/locale/hy.json index e84c06d52..897f5c45d 100644 --- a/apps/documenteditor/mobile/locale/hy.json +++ b/apps/documenteditor/mobile/locale/hy.json @@ -457,8 +457,8 @@ "uploadImageTitleText": "Նկարի վերբեռնում", "waitText": "Խնդրում ենք սպասել...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Main": { "criticalErrorTitle": "Սխալ", diff --git a/apps/documenteditor/mobile/locale/id.json b/apps/documenteditor/mobile/locale/id.json index 6916e2d30..346f502be 100644 --- a/apps/documenteditor/mobile/locale/id.json +++ b/apps/documenteditor/mobile/locale/id.json @@ -425,6 +425,7 @@ "LongActions": { "applyChangesTextText": "Memuat data...", "applyChangesTitleText": "Memuat Data", + "confirmMaxChangesSize": "Ukuran tindakan melebihi batas yang ditetapkan untuk server Anda.
Tekan \"Batalkan\" untuk membatalkan tindakan terakhir Anda atau tekan \"Lanjutkan\" untuk menyimpan tindakan secara lokal (Anda perlu mengunduh file atau menyalin isinya untuk memastikan tidak ada yang hilang).", "downloadMergeText": "Downloading...", "downloadMergeTitle": "Mengunduh", "downloadTextText": "Mengunduh dokumen...", @@ -451,14 +452,13 @@ "saveTitleText": "Menyimpan Dokumen", "sendMergeText": "Mengirim Merge...", "sendMergeTitle": "Mengirim Merge", + "textContinue": "Lanjutkan", "textLoadingDocument": "Memuat dokumen", + "textUndo": "Batalkan", "txtEditingMode": "Atur mode editing...", "uploadImageTextText": "Mengunggah gambar...", "uploadImageTitleText": "Mengunggah Gambar", - "waitText": "Silahkan menunggu", - "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "waitText": "Silahkan menunggu" }, "Main": { "criticalErrorTitle": "Kesalahan", diff --git a/apps/documenteditor/mobile/locale/it.json b/apps/documenteditor/mobile/locale/it.json index d357ec3be..f2ccfc6bf 100644 --- a/apps/documenteditor/mobile/locale/it.json +++ b/apps/documenteditor/mobile/locale/it.json @@ -457,8 +457,8 @@ "uploadImageTitleText": "Caricamento dell'immagine", "waitText": "Attendere prego...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Main": { "criticalErrorTitle": "Errore", diff --git a/apps/documenteditor/mobile/locale/ja.json b/apps/documenteditor/mobile/locale/ja.json index 96b15b25e..5b3d30371 100644 --- a/apps/documenteditor/mobile/locale/ja.json +++ b/apps/documenteditor/mobile/locale/ja.json @@ -457,8 +457,8 @@ "uploadImageTitleText": "イメージのアップロード中", "waitText": "少々お待ちください...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Main": { "criticalErrorTitle": "エラー", diff --git a/apps/documenteditor/mobile/locale/ko.json b/apps/documenteditor/mobile/locale/ko.json index 41ec23573..727c7db81 100644 --- a/apps/documenteditor/mobile/locale/ko.json +++ b/apps/documenteditor/mobile/locale/ko.json @@ -457,8 +457,8 @@ "uploadImageTitleText": "이미지 업로드 중", "waitText": "잠시만 기다려주세요...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Main": { "criticalErrorTitle": "오류", diff --git a/apps/documenteditor/mobile/locale/lo.json b/apps/documenteditor/mobile/locale/lo.json index 982a382ff..b61c1eac9 100644 --- a/apps/documenteditor/mobile/locale/lo.json +++ b/apps/documenteditor/mobile/locale/lo.json @@ -457,8 +457,8 @@ "uploadImageTitleText": "ກໍາລັງອັບໂຫລດຮູບພາບ", "waitText": "ກະລຸນາລໍຖ້າ...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Main": { "criticalErrorTitle": "ຂໍ້ຜິດພາດ", diff --git a/apps/documenteditor/mobile/locale/ms.json b/apps/documenteditor/mobile/locale/ms.json index 0ee7413f8..7cd4461e9 100644 --- a/apps/documenteditor/mobile/locale/ms.json +++ b/apps/documenteditor/mobile/locale/ms.json @@ -457,8 +457,8 @@ "uploadImageTitleText": "Imej dimuat naik", "waitText": "Sila, tunggu…", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Main": { "criticalErrorTitle": "Ralat", diff --git a/apps/documenteditor/mobile/locale/nl.json b/apps/documenteditor/mobile/locale/nl.json index b80e5585d..efbea29fc 100644 --- a/apps/documenteditor/mobile/locale/nl.json +++ b/apps/documenteditor/mobile/locale/nl.json @@ -457,8 +457,8 @@ "uploadImageTitleText": "Afbeelding wordt geüpload", "waitText": "Een moment geduld...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Main": { "criticalErrorTitle": "Fout", diff --git a/apps/documenteditor/mobile/locale/pt-pt.json b/apps/documenteditor/mobile/locale/pt-pt.json index b8a8f2028..93a23c626 100644 --- a/apps/documenteditor/mobile/locale/pt-pt.json +++ b/apps/documenteditor/mobile/locale/pt-pt.json @@ -457,8 +457,8 @@ "uploadImageTitleText": "A carregar imagem", "waitText": "Aguarde...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Main": { "criticalErrorTitle": "Erro", diff --git a/apps/documenteditor/mobile/locale/pt.json b/apps/documenteditor/mobile/locale/pt.json index 3bc437dfd..babe90687 100644 --- a/apps/documenteditor/mobile/locale/pt.json +++ b/apps/documenteditor/mobile/locale/pt.json @@ -26,6 +26,7 @@ "textContinuousPage": "Página contínua", "textCurrentPosition": "Posição Atual", "textDisplay": "Exibir", + "textDone": "Concluído", "textEmptyImgUrl": "Você precisa especificar uma URL de imagem.", "textEvenPage": "Página par", "textFootnote": "Nota de rodapé", @@ -49,6 +50,8 @@ "textPictureFromLibrary": "Imagem da biblioteca", "textPictureFromURL": "Imagem da URL", "textPosition": "Posição", + "textRecommended": "Recomendado", + "textRequired": "Necessário", "textRightBottom": "Parte inferior direita", "textRightTop": "Parte superior direita", "textRows": "Linhas", @@ -61,10 +64,7 @@ "textTableSize": "Tamanho da tabela", "textWithBlueLinks": "Com links azuis", "textWithPageNumbers": "Com números de página", - "txtNotUrl": "Este campo deve ser uma URL no formato \"http://www.example.com\"", - "textDone": "Done", - "textRecommended": "Recommended", - "textRequired": "Required" + "txtNotUrl": "Este campo deve ser uma URL no formato \"http://www.example.com\"" }, "Common": { "Collaboration": { @@ -147,6 +147,7 @@ "textReviewChange": "Rever Alterações", "textRight": "Alinhar à direita", "textShape": "Forma", + "textSharingSettings": "Configurações de compartilhamento", "textShd": "Cor do plano de fundo", "textSmallCaps": "Versalete", "textSpacing": "Espaçamento", @@ -163,8 +164,7 @@ "textTryUndoRedo": "As funções Desfazer/Refazer estão desabilitadas para o modo de coedição rápido", "textUnderline": "Sublinhado", "textUsers": "Usuários", - "textWidow": "Controle de linhas órfãs/viúvas.", - "textSharingSettings": "Sharing Settings" + "textWidow": "Controle de linhas órfãs/viúvas." }, "HighlightColorPalette": { "textNoFill": "Sem preenchimento" @@ -184,6 +184,7 @@ "menuDelete": "Excluir", "menuDeleteTable": "Excluir tabela", "menuEdit": "Editar", + "menuEditLink": "Editar Link", "menuJoinList": "Junta-se à lista anterior", "menuMerge": "Mesclar", "menuMore": "Mais", @@ -204,8 +205,7 @@ "textRefreshEntireTable": "Atualizar tabela inteira", "textRefreshPageNumbersOnly": "Atualizar apenas números de página", "textRows": "Linhas", - "txtWarnUrl": "Clicar neste link pode ser prejudicial ao seu dispositivo e dados.
Você tem certeza de que quer continuar?", - "menuEditLink": "Edit Link" + "txtWarnUrl": "Clicar neste link pode ser prejudicial ao seu dispositivo e dados.
Você tem certeza de que quer continuar?" }, "Edit": { "notcriticalErrorTitle": "Aviso", @@ -238,6 +238,7 @@ "textCancel": "Cancelar", "textCellMargins": "Margens da célula", "textCentered": "Centralizado", + "textChangeShape": "Mudar forma", "textChart": "Gráfico", "textClassic": "Clássico", "textClose": "Fechar", @@ -246,7 +247,10 @@ "textCreateTextStyle": "Criar um novo estilo de texto", "textCurrent": "Atual", "textCustomColor": "Cor personalizada", + "textCustomStyle": "Estilo personalizado", "textDecember": "Dezembro", + "textDeleteImage": "Eliminar imagem", + "textDeleteLink": "Excluir Link", "textDesign": "Design", "textDifferentFirstPage": "Primeira página diferente", "textDifferentOddAndEvenPages": "Páginas pares e ímpares diferentes", @@ -319,6 +323,7 @@ "textPictureFromLibrary": "Imagem da biblioteca", "textPictureFromURL": "Imagem da URL", "textPt": "Pt", + "textRecommended": "Recomendado", "textRefresh": "Atualizar", "textRefreshEntireTable": "Atualizar tabela inteira", "textRefreshPageNumbersOnly": "Atualizar apenas números de página", @@ -330,6 +335,7 @@ "textRepeatAsHeaderRow": "Repetir como linha de cabeçalho", "textReplace": "Substituir", "textReplaceImage": "Substituir imagem", + "textRequired": "Necessário", "textResizeToFitContent": "Redimensionar para ajustar o conteúdo", "textRightAlign": "Alinhar à direita", "textSa": "Sáb", @@ -359,6 +365,7 @@ "textTableOfCont": "Índice", "textTableOptions": "Opções de tabela", "textText": "Тexto", + "textTextWrapping": "Disposição do texto", "textTh": "Qui.", "textThrough": "Através", "textTight": "Justo", @@ -369,14 +376,7 @@ "textType": "Tipo", "textWe": "Qua", "textWrap": "Encapsulamento", - "textChangeShape": "Change Shape", - "textCustomStyle": "Custom Style", - "textDeleteImage": "Delete Image", - "textDeleteLink": "Delete Link", - "textRecommended": "Recommended", - "textRequired": "Required", - "textTextWrapping": "Text Wrapping", - "textWrappingStyle": "Wrapping Style" + "textWrappingStyle": "Estilo da quebra" }, "Error": { "convertationTimeoutText": "Tempo limite de conversão excedido.", @@ -390,6 +390,7 @@ "errorDataEncrypted": "Alteração criptografadas foram recebidas, e não podem ser decifradas.", "errorDataRange": "Intervalo de dados incorreto.", "errorDefaultMessage": "Código do erro: %1", + "errorDirectUrl": "Por favor, verifique o link para o documento.
Este link deve ser o link direto para baixar o arquivo.", "errorEditingDownloadas": "Ocorreu um erro durante o trabalho com o documento.
Baixe o documento para salvar a cópia de backup do arquivo localmente.", "errorEmptyTOC": "Comece a criar um sumário aplicando um estilo de título da galeria Estilos ao texto selecionado.", "errorFilePassProtect": "O arquivo é protegido por senha e não pôde ser aberto.", @@ -419,8 +420,7 @@ "unknownErrorText": "Erro desconhecido.", "uploadImageExtMessage": "Formato de imagem desconhecido.", "uploadImageFileCountMessage": "Sem imagens carregadas.", - "uploadImageSizeMessage": "Tamanho limite máximo da imagem excedido. O tamanho máximo é de 25 MB.", - "errorDirectUrl": "Please verify the link to the document.
This link must be a direct link to the file for downloading." + "uploadImageSizeMessage": "Tamanho limite máximo da imagem excedido. O tamanho máximo é de 25 MB." }, "LongActions": { "applyChangesTextText": "Carregando dados...", @@ -457,8 +457,8 @@ "uploadImageTitleText": "Carregando imagem", "waitText": "Por favor, aguarde...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Main": { "criticalErrorTitle": "Erro", diff --git a/apps/documenteditor/mobile/locale/ro.json b/apps/documenteditor/mobile/locale/ro.json index 0757f8184..bcb17a665 100644 --- a/apps/documenteditor/mobile/locale/ro.json +++ b/apps/documenteditor/mobile/locale/ro.json @@ -457,8 +457,8 @@ "uploadImageTitleText": "Încărcarea imaginii", "waitText": "Vă rugăm să așteptați...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Main": { "criticalErrorTitle": "Eroare", diff --git a/apps/documenteditor/mobile/locale/ru.json b/apps/documenteditor/mobile/locale/ru.json index d2065a672..7b33a4d08 100644 --- a/apps/documenteditor/mobile/locale/ru.json +++ b/apps/documenteditor/mobile/locale/ru.json @@ -425,6 +425,7 @@ "LongActions": { "applyChangesTextText": "Загрузка данных...", "applyChangesTitleText": "Загрузка данных", + "confirmMaxChangesSize": "Размер внесенных изменений превышает ограничение, установленное для вашего сервера.
Нажмите \"Отменить\" для отмены последнего действия или нажмите \"Продолжить\", чтобы сохранить действие локально (потребуется скачать файл или скопировать его содержимое чтобы ничего не потерялось).", "downloadMergeText": "Загрузка...", "downloadMergeTitle": "Загрузка", "downloadTextText": "Загрузка документа...", @@ -451,14 +452,13 @@ "saveTitleText": "Сохранение документа", "sendMergeText": "Отправка результатов слияния...", "sendMergeTitle": "Отправка результатов слияния", + "textContinue": "Продолжить", "textLoadingDocument": "Загрузка документа", + "textUndo": "Отменить", "txtEditingMode": "Установка режима редактирования...", "uploadImageTextText": "Загрузка рисунка...", "uploadImageTitleText": "Загрузка рисунка", - "waitText": "Пожалуйста, подождите...", - "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "waitText": "Пожалуйста, подождите..." }, "Main": { "criticalErrorTitle": "Ошибка", diff --git a/apps/documenteditor/mobile/locale/sk.json b/apps/documenteditor/mobile/locale/sk.json index 976999568..ece5571ac 100644 --- a/apps/documenteditor/mobile/locale/sk.json +++ b/apps/documenteditor/mobile/locale/sk.json @@ -457,8 +457,8 @@ "uploadImageTitleText": "Nahrávanie obrázku", "waitText": "Čakajte, prosím...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Main": { "criticalErrorTitle": "Chyba", diff --git a/apps/documenteditor/mobile/locale/sl.json b/apps/documenteditor/mobile/locale/sl.json index 9b04449cc..e20a604ca 100644 --- a/apps/documenteditor/mobile/locale/sl.json +++ b/apps/documenteditor/mobile/locale/sl.json @@ -653,6 +653,7 @@ "LongActions": { "applyChangesTextText": "Loading data...", "applyChangesTitleText": "Loading Data", + "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", "downloadMergeText": "Downloading...", "downloadMergeTitle": "Downloading", "downloadTextText": "Downloading document...", @@ -679,14 +680,13 @@ "saveTitleText": "Saving Document", "sendMergeText": "Sending Merge...", "sendMergeTitle": "Sending Merge", + "textContinue": "Continue", "textLoadingDocument": "Loading document", + "textUndo": "Undo", "txtEditingMode": "Set editing mode...", "uploadImageTextText": "Uploading image...", "uploadImageTitleText": "Uploading Image", - "waitText": "Please, wait...", - "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "waitText": "Please, wait..." }, "Toolbar": { "dlgLeaveMsgText": "You have unsaved changes. Click 'Stay on this Page' to wait for autosave. Click 'Leave this Page' to discard all the unsaved changes.", diff --git a/apps/documenteditor/mobile/locale/tr.json b/apps/documenteditor/mobile/locale/tr.json index b90d43459..2eacfe819 100644 --- a/apps/documenteditor/mobile/locale/tr.json +++ b/apps/documenteditor/mobile/locale/tr.json @@ -457,8 +457,8 @@ "uploadImageTitleText": "Resim Yükleniyor", "waitText": "Lütfen bekleyin...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Main": { "criticalErrorTitle": "Hata", diff --git a/apps/documenteditor/mobile/locale/uk.json b/apps/documenteditor/mobile/locale/uk.json index d806cd333..84deb7514 100644 --- a/apps/documenteditor/mobile/locale/uk.json +++ b/apps/documenteditor/mobile/locale/uk.json @@ -457,8 +457,8 @@ "uploadImageTitleText": "Завантаження зображення", "waitText": "Будь ласка, зачекайте...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Main": { "criticalErrorTitle": "Помилка", diff --git a/apps/documenteditor/mobile/locale/zh-tw.json b/apps/documenteditor/mobile/locale/zh-tw.json index 63c92a110..ee5ce8bfa 100644 --- a/apps/documenteditor/mobile/locale/zh-tw.json +++ b/apps/documenteditor/mobile/locale/zh-tw.json @@ -457,8 +457,8 @@ "uploadImageTitleText": "上傳圖片中", "waitText": "請耐心等待...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Main": { "criticalErrorTitle": "錯誤", diff --git a/apps/documenteditor/mobile/locale/zh.json b/apps/documenteditor/mobile/locale/zh.json index 2656e600b..dc4b98332 100644 --- a/apps/documenteditor/mobile/locale/zh.json +++ b/apps/documenteditor/mobile/locale/zh.json @@ -457,8 +457,8 @@ "uploadImageTitleText": "图片上传中", "waitText": "请稍候...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Main": { "criticalErrorTitle": "错误", diff --git a/apps/presentationeditor/mobile/locale/az.json b/apps/presentationeditor/mobile/locale/az.json index 281438365..afce4f7d5 100644 --- a/apps/presentationeditor/mobile/locale/az.json +++ b/apps/presentationeditor/mobile/locale/az.json @@ -205,8 +205,8 @@ "uploadImageTitleText": "Təsvir Yüklənir", "waitText": "Lütfən, gözləyin...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Toolbar": { "dlgLeaveMsgText": "Bu sənəddə saxlanmamış dəyişiklikləriniz var. Avtomatik saxlanmanı gözləmək üçün \"Bu Səhifədə Qalın\" hissəsinin üzərinə klikləyin. Bütün saxlanmamış dəyişiklikləri ləğv etmək üçün \"Bu səhifədən Çıxın\" hissəsinin üzərinə klikləyin.", diff --git a/apps/presentationeditor/mobile/locale/be.json b/apps/presentationeditor/mobile/locale/be.json index e0e86f399..4597cb3e2 100644 --- a/apps/presentationeditor/mobile/locale/be.json +++ b/apps/presentationeditor/mobile/locale/be.json @@ -205,8 +205,8 @@ "uploadImageTitleText": "Запампоўванне выявы", "waitText": "Калі ласка, пачакайце...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Toolbar": { "leaveButtonText": "Сысці са старонкі", diff --git a/apps/presentationeditor/mobile/locale/ca.json b/apps/presentationeditor/mobile/locale/ca.json index b64e1d1b0..3632684d5 100644 --- a/apps/presentationeditor/mobile/locale/ca.json +++ b/apps/presentationeditor/mobile/locale/ca.json @@ -205,8 +205,8 @@ "uploadImageTitleText": "S'està carregant la imatge", "waitText": "Espereu...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Toolbar": { "dlgLeaveMsgText": "Teniu canvis no desats en aquest document. Feu clic a \"Queda't en aquesta pàgina\" per esperar al desament automàtic. Feu clic a \"Deixa aquesta pàgina\" per descartar tots els canvis no desats.", diff --git a/apps/presentationeditor/mobile/locale/cs.json b/apps/presentationeditor/mobile/locale/cs.json index bd8e621f9..526f44a3d 100644 --- a/apps/presentationeditor/mobile/locale/cs.json +++ b/apps/presentationeditor/mobile/locale/cs.json @@ -205,8 +205,8 @@ "uploadImageTitleText": "Nahrávání obrázku", "waitText": "Čekejte prosím...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Toolbar": { "dlgLeaveMsgText": "V tomto dokumentu máte neuložené změny. Klikněte na 'Zůstat na této stránce' a počkejte dokud nedojde k automatickému uložení. Klikněte na 'Opustit tuto stránku' pro zahození neuložených změn.", diff --git a/apps/presentationeditor/mobile/locale/de.json b/apps/presentationeditor/mobile/locale/de.json index 801addb9c..2c8d25238 100644 --- a/apps/presentationeditor/mobile/locale/de.json +++ b/apps/presentationeditor/mobile/locale/de.json @@ -205,8 +205,8 @@ "uploadImageTitleText": "Bild wird hochgeladen", "waitText": "Bitte warten...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Toolbar": { "dlgLeaveMsgText": "Sie haben nicht gespeicherte Änderungen. Klicken Sie auf \"Auf dieser Seite bleiben\" und warten Sie, bis die Datei automatisch gespeichert wird. Klicken Sie auf \"Seite verlassen\", um nicht gespeicherte Änderungen zu verwerfen.", diff --git a/apps/presentationeditor/mobile/locale/el.json b/apps/presentationeditor/mobile/locale/el.json index 37f897b64..bdca81ff4 100644 --- a/apps/presentationeditor/mobile/locale/el.json +++ b/apps/presentationeditor/mobile/locale/el.json @@ -205,8 +205,8 @@ "uploadImageTitleText": "Μεταφόρτωση Εικόνας", "waitText": "Παρακαλούμε, περιμένετε...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Toolbar": { "dlgLeaveMsgText": "Έχετε μη αποθηκευμένες αλλαγές στο έγγραφο. Πατήστε 'Παραμονή στη Σελίδα' για να περιμένετε την αυτόματη αποθήκευση. Πατήστε 'Έξοδος από τη Σελίδα' για να απορρίψετε όλες τις μη αποθηκευμένες αλλαγές.", diff --git a/apps/presentationeditor/mobile/locale/en.json b/apps/presentationeditor/mobile/locale/en.json index 8d4a64abd..4a656be44 100644 --- a/apps/presentationeditor/mobile/locale/en.json +++ b/apps/presentationeditor/mobile/locale/en.json @@ -177,6 +177,7 @@ "LongActions": { "applyChangesTextText": "Loading data...", "applyChangesTitleText": "Loading Data", + "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", "downloadTextText": "Downloading document...", "downloadTitleText": "Downloading Document", "loadFontsTextText": "Loading data...", @@ -199,14 +200,13 @@ "savePreparingTitle": "Preparing to save. Please wait...", "saveTextText": "Saving document...", "saveTitleText": "Saving Document", + "textContinue": "Continue", "textLoadingDocument": "Loading document", + "textUndo": "Undo", "txtEditingMode": "Set editing mode...", "uploadImageTextText": "Uploading image...", "uploadImageTitleText": "Uploading Image", - "waitText": "Please, wait...", - "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "waitText": "Please, wait..." }, "Toolbar": { "dlgLeaveMsgText": "You have unsaved changes in this document. Click 'Stay on this Page' to wait for autosave. Click 'Leave this Page' to discard all the unsaved changes.", diff --git a/apps/presentationeditor/mobile/locale/es.json b/apps/presentationeditor/mobile/locale/es.json index 0815ec068..42ff565b4 100644 --- a/apps/presentationeditor/mobile/locale/es.json +++ b/apps/presentationeditor/mobile/locale/es.json @@ -205,8 +205,8 @@ "uploadImageTitleText": "Cargando imagen", "waitText": "Por favor, espere...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Toolbar": { "dlgLeaveMsgText": "Tiene cambios no guardados en este documento. Haga clic en \"Quedarse en esta página\" para esperar hasta que se guarden automáticamente. Haga clic en \"Salir de esta página\" para descartar todos los cambios no guardados.", diff --git a/apps/presentationeditor/mobile/locale/eu.json b/apps/presentationeditor/mobile/locale/eu.json index 80b4c74e8..c7062f4c9 100644 --- a/apps/presentationeditor/mobile/locale/eu.json +++ b/apps/presentationeditor/mobile/locale/eu.json @@ -205,8 +205,8 @@ "uploadImageTitleText": "Irudia kargatzen", "waitText": "Mesedez, itxaron...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Toolbar": { "dlgLeaveMsgText": "Gorde gabeko aldaketak dituzu dokumentu honetan. Egin klik \"Jarraitu orri honetan\" gordetze automatikoari itxaroteko. Egin klik \"Utzi orri hau\" gorde gabeko aldaketa guztiak baztertzeko.", diff --git a/apps/presentationeditor/mobile/locale/fr.json b/apps/presentationeditor/mobile/locale/fr.json index 1a81e8b6e..59c217aa3 100644 --- a/apps/presentationeditor/mobile/locale/fr.json +++ b/apps/presentationeditor/mobile/locale/fr.json @@ -205,8 +205,8 @@ "uploadImageTitleText": "Chargement d'une image", "waitText": "Veuillez patienter...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Toolbar": { "dlgLeaveMsgText": "Vous avez des modifications non enregistrées dans ce document. Cliquez sur Rester sur cette page et attendez l'enregistrement automatique. Cliquez sur Quitter cette page pour annuler toutes les modifications non enregistrées.", diff --git a/apps/presentationeditor/mobile/locale/gl.json b/apps/presentationeditor/mobile/locale/gl.json index 5826b9c72..8ce1357ea 100644 --- a/apps/presentationeditor/mobile/locale/gl.json +++ b/apps/presentationeditor/mobile/locale/gl.json @@ -205,8 +205,8 @@ "uploadImageTitleText": "Cargando imaxe", "waitText": "Agarde...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Toolbar": { "dlgLeaveMsgText": "Ten cambios non gardados neste documento. Prema en \"Quedarse nesta páxina\" para esperar ata que se garden automaticamente. Prema en \"Saír desta pa´xina\" para descartar todos os cambios non gardados.", diff --git a/apps/presentationeditor/mobile/locale/hu.json b/apps/presentationeditor/mobile/locale/hu.json index 1c2eaee92..d30999650 100644 --- a/apps/presentationeditor/mobile/locale/hu.json +++ b/apps/presentationeditor/mobile/locale/hu.json @@ -205,8 +205,8 @@ "uploadImageTitleText": "Kép feltöltése", "waitText": "Kérjük várjon...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Toolbar": { "dlgLeaveMsgText": "Nem mentett módosításai vannak ebben a dokumentumban. Kattintson a „Maradj ezen az oldalon” gombra az automatikus mentés megvárásához. Kattintson a \"Hagyja el ezt az oldalt\" gombra az összes nem mentett módosítás elvetéséhez.", diff --git a/apps/presentationeditor/mobile/locale/hy.json b/apps/presentationeditor/mobile/locale/hy.json index 703ec15e0..9373b38be 100644 --- a/apps/presentationeditor/mobile/locale/hy.json +++ b/apps/presentationeditor/mobile/locale/hy.json @@ -205,8 +205,8 @@ "uploadImageTitleText": "Նկարի վերբեռնում", "waitText": "Խնդրում ենք սպասել...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Toolbar": { "dlgLeaveMsgText": "Դուք այս փաստաթղթում չպահված փոփոխություններ ունեք:Սեղմեք «Մնալ այս էջում»՝ սպասելու ավտոմատ պահպանմանը:Սեղմեք «Լքել այս էջը»՝ չպահված բոլոր փոփոխությունները մերժելու համար:", diff --git a/apps/presentationeditor/mobile/locale/id.json b/apps/presentationeditor/mobile/locale/id.json index de59dcdd0..c430c6d47 100644 --- a/apps/presentationeditor/mobile/locale/id.json +++ b/apps/presentationeditor/mobile/locale/id.json @@ -177,6 +177,7 @@ "LongActions": { "applyChangesTextText": "Memuat data...", "applyChangesTitleText": "Memuat Data", + "confirmMaxChangesSize": "Ukuran tindakan melebihi batas yang ditetapkan untuk server Anda.
Tekan \"Batalkan\" untuk membatalkan tindakan terakhir Anda atau tekan \"Lanjutkan\" untuk menyimpan tindakan secara lokal (Anda perlu mengunduh file atau menyalin isinya untuk memastikan tidak ada yang hilang).", "downloadTextText": "Mengunduh dokumen...", "downloadTitleText": "Mengunduh Dokumen", "loadFontsTextText": "Memuat data...", @@ -199,14 +200,13 @@ "savePreparingTitle": "Bersiap untuk menyimpan. Silahkan menunggu...", "saveTextText": "Menyimpan dokumen...", "saveTitleText": "Menyimpan Dokumen", + "textContinue": "Lanjutkan", "textLoadingDocument": "Memuat dokumen", + "textUndo": "Batalkan", "txtEditingMode": "Atur mode editing...", "uploadImageTextText": "Mengunggah gambar...", "uploadImageTitleText": "Mengunggah Gambar", - "waitText": "Silahkan menunggu", - "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "waitText": "Silahkan menunggu" }, "Toolbar": { "dlgLeaveMsgText": "Ada perubahan yang belum disimpan dalam dokumen ini. Klik 'Tetap di Halaman Ini' untuk menunggu simpan otomatis. Klik ‘Tinggalkan Halaman Ini’ untuk membatalkan semua perubahan yang belum disimpan.", diff --git a/apps/presentationeditor/mobile/locale/it.json b/apps/presentationeditor/mobile/locale/it.json index 72b87c85b..f36d4e0c8 100644 --- a/apps/presentationeditor/mobile/locale/it.json +++ b/apps/presentationeditor/mobile/locale/it.json @@ -205,8 +205,8 @@ "uploadImageTitleText": "Caricamento dell'immagine", "waitText": "Si prega di attendere", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Toolbar": { "dlgLeaveMsgText": "Ci sono i cambiamenti non salvati in questo documento. Fai clic su \"Rimanere su questa pagina\" per attendere il salvataggio automatico. Fai clic su \"Lasciare questa pagina\" per eliminare tutti i cambiamenti non salvati.", diff --git a/apps/presentationeditor/mobile/locale/ja.json b/apps/presentationeditor/mobile/locale/ja.json index 305319f27..7123ccd58 100644 --- a/apps/presentationeditor/mobile/locale/ja.json +++ b/apps/presentationeditor/mobile/locale/ja.json @@ -205,8 +205,8 @@ "uploadImageTitleText": "イメージのアップロード中", "waitText": "少々お待ちください...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Toolbar": { "dlgLeaveMsgText": "保存されていない変更があります。自動保存を待つように「このページから移動しない」をクリックしてください。保存されていない変更を破棄ように「このページから移動する」をクリックしてください。", diff --git a/apps/presentationeditor/mobile/locale/ko.json b/apps/presentationeditor/mobile/locale/ko.json index 63cfb6206..f80181703 100644 --- a/apps/presentationeditor/mobile/locale/ko.json +++ b/apps/presentationeditor/mobile/locale/ko.json @@ -205,8 +205,8 @@ "uploadImageTitleText": "이미지 업로드 중", "waitText": "잠시만 기다려주세요...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Toolbar": { "dlgLeaveMsgText": "이 문서에 저장되지 않은 변경 사항이 있습니다. 자동 저장을 활성화하려면 \"이 페이지에서 나가기\"를 클릭하십시오. \"이 페이지에서 나가기\"를 클릭하면 저장되지 않은 모든 편집 내용이 삭제됩니다.", diff --git a/apps/presentationeditor/mobile/locale/lo.json b/apps/presentationeditor/mobile/locale/lo.json index 5fb611f2f..b5ce61d0c 100644 --- a/apps/presentationeditor/mobile/locale/lo.json +++ b/apps/presentationeditor/mobile/locale/lo.json @@ -205,8 +205,8 @@ "uploadImageTitleText": "ກໍາລັງອັບໂຫລດຮູບພາບ", "waitText": "ກະລຸນາລໍຖ້າ...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Toolbar": { "dlgLeaveMsgText": "ທ່ານມີການປ່ຽນແປງທີ່ຍັງບໍ່ໄດ້ບັນທຶກໄວ້ໃນເອກະສານນີ້. ຄລິກທີ່ 'ຢູ່ໃນໜ້ານີ້' ເພື່ອລໍຖ້າການບັນທຶກອັດຕະໂນມັດ. ຄລິກ 'ອອກຈາກໜ້ານີ້' ເພື່ອຍົກເລີກການປ່ຽນແປງທີ່ບໍ່ໄດ້ບັນທຶກໄວ້ທັງໝົດ.", diff --git a/apps/presentationeditor/mobile/locale/ms.json b/apps/presentationeditor/mobile/locale/ms.json index df99a51fa..5bbfbbb95 100644 --- a/apps/presentationeditor/mobile/locale/ms.json +++ b/apps/presentationeditor/mobile/locale/ms.json @@ -205,8 +205,8 @@ "uploadImageTitleText": "Imej dimuat naik", "waitText": "Sila, tunggu…", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Toolbar": { "dlgLeaveMsgText": "Anda mempunyai perubahan yang tidak disimpan dalam dokumen ini. Klik 'Stay on this Page’ untuk menunggu autosimpan. Klik 'Leave this Page' untuk membuang semua perubahan yang tidak disimpan.", diff --git a/apps/presentationeditor/mobile/locale/nl.json b/apps/presentationeditor/mobile/locale/nl.json index 6173fa0d0..6b965d672 100644 --- a/apps/presentationeditor/mobile/locale/nl.json +++ b/apps/presentationeditor/mobile/locale/nl.json @@ -205,8 +205,8 @@ "uploadImageTitleText": "Afbeelding wordt geüpload", "waitText": "Een moment geduld...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Toolbar": { "dlgLeaveMsgText": "U hebt niet-opgeslagen wijzigingen in dit document. Klik op 'Blijf op deze pagina' om te wachten op automatisch opslaan. Klik op 'Verlaat deze pagina' om alle niet-opgeslagen wijzigingen te verwijderen.", diff --git a/apps/presentationeditor/mobile/locale/pt-pt.json b/apps/presentationeditor/mobile/locale/pt-pt.json index f85d67eca..e5d88752c 100644 --- a/apps/presentationeditor/mobile/locale/pt-pt.json +++ b/apps/presentationeditor/mobile/locale/pt-pt.json @@ -205,8 +205,8 @@ "uploadImageTitleText": "A carregar imagem", "waitText": "Aguarde…", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Toolbar": { "dlgLeaveMsgText": "Este documento tem alterações não guardadas. Clique 'Ficar na página' para que o documento seja guardado automaticamente. Clique 'Sair da página' para rejeitar todas as alterações.", diff --git a/apps/presentationeditor/mobile/locale/pt.json b/apps/presentationeditor/mobile/locale/pt.json index 4c74e1642..39153e306 100644 --- a/apps/presentationeditor/mobile/locale/pt.json +++ b/apps/presentationeditor/mobile/locale/pt.json @@ -31,9 +31,9 @@ "textOk": "OK", "textReopen": "Reabrir", "textResolve": "Resolver", + "textSharingSettings": "Configurações de compartilhamento", "textTryUndoRedo": "As funções Desfazer/Refazer estão desabilitadas para o modo de coedição rápido.", - "textUsers": "Usuários", - "textSharingSettings": "Sharing Settings" + "textUsers": "Usuários" }, "HighlightColorPalette": { "textNoFill": "Sem preenchimento" @@ -52,6 +52,7 @@ "menuDelete": "Excluir", "menuDeleteTable": "Excluir tabela", "menuEdit": "Editar", + "menuEditLink": "Editar Link", "menuMerge": "Mesclar", "menuMore": "Mais", "menuOpenLink": "Abrir link", @@ -62,8 +63,7 @@ "textDoNotShowAgain": "Não volte a aparecer", "textOk": "OK", "textRows": "Linhas", - "txtWarnUrl": "Clicar neste link pode ser prejudicial ao seu dispositivo e dados.
Você tem certeza de que quer continuar?", - "menuEditLink": "Edit Link" + "txtWarnUrl": "Clicar neste link pode ser prejudicial ao seu dispositivo e dados.
Você tem certeza de que quer continuar?" }, "Controller": { "Main": { @@ -147,6 +147,7 @@ "errorDataEncrypted": "Alteração criptografadas foram recebidas, e não podem ser decifradas.", "errorDataRange": "Intervalo de dados incorreto.", "errorDefaultMessage": "Código do erro: %1", + "errorDirectUrl": "Por favor, verifique o link para o documento.
Este link deve ser o link direto para baixar o arquivo.", "errorEditingDownloadas": "Ocorreu um erro durante o trabalho com o documento.
Use a opção 'Download' para salvar a cópia de backup do arquivo localmente.", "errorFilePassProtect": "O arquivo é protegido por senha e não pôde ser aberto.", "errorFileSizeExceed": "O tamanho do arquivo excede o limite do servidor.
Entre em contato com o administrador.", @@ -171,8 +172,7 @@ "unknownErrorText": "Erro desconhecido.", "uploadImageExtMessage": "Formato de imagem desconhecido.", "uploadImageFileCountMessage": "Sem imagens carregadas.", - "uploadImageSizeMessage": "Tamanho limite máximo da imagem excedido. O tamanho máximo é de 25 MB.", - "errorDirectUrl": "Please verify the link to the document.
This link must be a direct link to the file for downloading." + "uploadImageSizeMessage": "Tamanho limite máximo da imagem excedido. O tamanho máximo é de 25 MB." }, "LongActions": { "applyChangesTextText": "Carregando dados...", @@ -205,8 +205,8 @@ "uploadImageTitleText": "Carregando imagem", "waitText": "Por favor, aguarde...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Toolbar": { "dlgLeaveMsgText": "Você tem alterações não salvas neste documento. Clique em 'Permanecer nesta página' para aguardar o salvamento automático. Clique em 'Sair desta página' para descartar todas as alterações não salvas.", @@ -225,6 +225,7 @@ "textComment": "Comente", "textDefault": "Texto selecionado", "textDisplay": "Exibir", + "textDone": "Concluído", "textEmptyImgUrl": "Você precisa especificar o URL da imagem.", "textExternalLink": "Link externo", "textFirstSlide": "Primeiro slide", @@ -243,6 +244,8 @@ "textPictureFromLibrary": "Imagem da biblioteca", "textPictureFromURL": "Imagem da URL", "textPreviousSlide": "Slide anterior", + "textRecommended": "Recomendado", + "textRequired": "Necessário", "textRows": "Linhas", "textScreenTip": "Dica de tela", "textShape": "Forma", @@ -251,10 +254,7 @@ "textSlideNumber": "Número do slide", "textTable": "Tabela", "textTableSize": "Tamanho da tabela", - "txtNotUrl": "Este campo deve ser uma URL no formato \"http://www.example.com\"", - "textDone": "Done", - "textRecommended": "Recommended", - "textRequired": "Required" + "txtNotUrl": "Este campo deve ser uma URL no formato \"http://www.example.com\"" }, "Edit": { "notcriticalErrorTitle": "Atenção", @@ -273,6 +273,7 @@ "textAlignTop": "Alinhar em cima", "textAllCaps": "Todas maiúsculas", "textApplyAll": "Aplicar a todos os slides", + "textArrange": "Organizar", "textAuto": "Automático", "textAutomatic": "Automático", "textBack": "Voltar", @@ -287,8 +288,10 @@ "textBringToForeground": "Trazer para primeiro plano", "textBullets": "Marcadores", "textBulletsAndNumbers": "Marcadores e Numerações", + "textCancel": "Cancelar", "textCaseSensitive": "Maiúsculas e Minúsculas", "textCellMargins": "Margens da célula", + "textChangeShape": "Mudar forma", "textChart": "Gráfico", "textClock": "Relógio", "textClockwise": "Sentido horário", @@ -298,6 +301,8 @@ "textCustomColor": "Personalizar cor", "textDefault": "Texto selecionado", "textDelay": "Atraso", + "textDeleteImage": "Eliminar imagem", + "textDeleteLink": "Excluir Link", "textDeleteSlide": "Excluir slide", "textDesign": "Design", "textDisplay": "Exibir", @@ -333,6 +338,7 @@ "textHyperlink": "Hiperlink", "textImage": "Imagem", "textImageURL": "URL da imagem", + "textInsertImage": "Inserir imagem", "textLastColumn": "Última coluna", "textLastSlide": "Último slide", "textLayout": "Layout", @@ -359,12 +365,14 @@ "textPreviousSlide": "Slide anterior", "textPt": "Pt", "textPush": "Empurrar", + "textRecommended": "Recomendado", "textRemoveChart": "Remover gráfico", "textRemoveShape": "Remover forma", "textRemoveTable": "Remover tabela", "textReplace": "Substituir", "textReplaceAll": "Substituir tudo", "textReplaceImage": "Substituir imagem", + "textRequired": "Necessário", "textRight": "Direita", "textScreenTip": "Dica de tela", "textSearch": "Pesquisar", @@ -402,15 +410,7 @@ "textZoom": "Zoom", "textZoomIn": "Ampliar", "textZoomOut": "Reduzir", - "textZoomRotate": "Zoom e Rotação", - "textArrange": "Arrange", - "textCancel": "Cancel", - "textChangeShape": "Change Shape", - "textDeleteImage": "Delete Image", - "textDeleteLink": "Delete Link", - "textInsertImage": "Insert Image", - "textRecommended": "Recommended", - "textRequired": "Required" + "textZoomRotate": "Zoom e Rotação" }, "Settings": { "mniSlideStandard": "Padrão (4:3)", diff --git a/apps/presentationeditor/mobile/locale/ro.json b/apps/presentationeditor/mobile/locale/ro.json index 4790f7429..fd1824bd8 100644 --- a/apps/presentationeditor/mobile/locale/ro.json +++ b/apps/presentationeditor/mobile/locale/ro.json @@ -205,8 +205,8 @@ "uploadImageTitleText": "Încărcare imagine", "waitText": "Vă rugăm să așteptați...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Toolbar": { "dlgLeaveMsgText": "Nu ați salvat modificările din documentul. Faceți clic pe Rămâi în pagină și așteptați la salvare automată. Faceți clic pe Părăsește aceasta pagina ca să renunțați la toate modificările nesalvate.", diff --git a/apps/presentationeditor/mobile/locale/ru.json b/apps/presentationeditor/mobile/locale/ru.json index 909834552..afc5ed7b9 100644 --- a/apps/presentationeditor/mobile/locale/ru.json +++ b/apps/presentationeditor/mobile/locale/ru.json @@ -177,6 +177,7 @@ "LongActions": { "applyChangesTextText": "Загрузка данных...", "applyChangesTitleText": "Загрузка данных", + "confirmMaxChangesSize": "Размер внесенных изменений превышает ограничение, установленное для вашего сервера.
Нажмите \"Отменить\" для отмены последнего действия или нажмите \"Продолжить\", чтобы сохранить действие локально (потребуется скачать файл или скопировать его содержимое чтобы ничего не потерялось).", "downloadTextText": "Загрузка документа...", "downloadTitleText": "Загрузка документа", "loadFontsTextText": "Загрузка данных...", @@ -199,14 +200,13 @@ "savePreparingTitle": "Подготовка к сохранению. Пожалуйста, подождите...", "saveTextText": "Сохранение документа...", "saveTitleText": "Сохранение документа", + "textContinue": "Продолжить", "textLoadingDocument": "Загрузка документа", + "textUndo": "Отменить", "txtEditingMode": "Установка режима редактирования...", "uploadImageTextText": "Загрузка рисунка...", "uploadImageTitleText": "Загрузка рисунка", - "waitText": "Пожалуйста, подождите...", - "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "waitText": "Пожалуйста, подождите..." }, "Toolbar": { "dlgLeaveMsgText": "В документе есть несохраненные изменения. Нажмите 'Остаться на странице', чтобы дождаться автосохранения. Нажмите 'Уйти со страницы', чтобы сбросить все несохраненные изменения.", diff --git a/apps/presentationeditor/mobile/locale/sk.json b/apps/presentationeditor/mobile/locale/sk.json index f5c61b33d..d84fc5027 100644 --- a/apps/presentationeditor/mobile/locale/sk.json +++ b/apps/presentationeditor/mobile/locale/sk.json @@ -205,8 +205,8 @@ "uploadImageTitleText": "Nahrávanie obrázku", "waitText": "Prosím čakajte...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Toolbar": { "dlgLeaveMsgText": "V tomto dokumente máte neuložené zmeny. Kliknite na „Zostať na tejto stránke“ a počkajte na automatické uloženie. Kliknutím na „Opustiť túto stránku“ zahodíte všetky neuložené zmeny.", diff --git a/apps/presentationeditor/mobile/locale/sl.json b/apps/presentationeditor/mobile/locale/sl.json index 724d7c025..9a1578208 100644 --- a/apps/presentationeditor/mobile/locale/sl.json +++ b/apps/presentationeditor/mobile/locale/sl.json @@ -461,6 +461,7 @@ "LongActions": { "applyChangesTextText": "Loading data...", "applyChangesTitleText": "Loading Data", + "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", "downloadTextText": "Downloading document...", "downloadTitleText": "Downloading Document", "loadFontsTextText": "Loading data...", @@ -483,14 +484,13 @@ "savePreparingTitle": "Preparing to save. Please wait...", "saveTextText": "Saving document...", "saveTitleText": "Saving Document", + "textContinue": "Continue", "textLoadingDocument": "Loading document", + "textUndo": "Undo", "txtEditingMode": "Set editing mode...", "uploadImageTextText": "Uploading image...", "uploadImageTitleText": "Uploading Image", - "waitText": "Please, wait...", - "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "waitText": "Please, wait..." }, "Toolbar": { "dlgLeaveMsgText": "You have unsaved changes in this document. Click 'Stay on this Page' to wait for autosave. Click 'Leave this Page' to discard all the unsaved changes.", diff --git a/apps/presentationeditor/mobile/locale/tr.json b/apps/presentationeditor/mobile/locale/tr.json index 856fc3a81..79b77db71 100644 --- a/apps/presentationeditor/mobile/locale/tr.json +++ b/apps/presentationeditor/mobile/locale/tr.json @@ -205,8 +205,8 @@ "uploadImageTitleText": "Resim Yükleniyor", "waitText": "Lütfen bekleyin...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Toolbar": { "dlgLeaveMsgText": "Bu belgede kaydedilmemiş değişiklikleriniz var. Otomatik kaydetmeyi beklemek için 'Bu Sayfada Kal' seçeneğini tıklayın. Kaydedilmemiş tüm değişiklikleri atmak için 'Bu Sayfadan Ayrıl'ı tıklayın.", diff --git a/apps/presentationeditor/mobile/locale/uk.json b/apps/presentationeditor/mobile/locale/uk.json index 87780fb6d..35952154a 100644 --- a/apps/presentationeditor/mobile/locale/uk.json +++ b/apps/presentationeditor/mobile/locale/uk.json @@ -461,6 +461,7 @@ "LongActions": { "applyChangesTextText": "Loading data...", "applyChangesTitleText": "Loading Data", + "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", "downloadTextText": "Downloading document...", "downloadTitleText": "Downloading Document", "loadFontsTextText": "Loading data...", @@ -483,14 +484,13 @@ "savePreparingTitle": "Preparing to save. Please wait...", "saveTextText": "Saving document...", "saveTitleText": "Saving Document", + "textContinue": "Continue", "textLoadingDocument": "Loading document", + "textUndo": "Undo", "txtEditingMode": "Set editing mode...", "uploadImageTextText": "Uploading image...", "uploadImageTitleText": "Uploading Image", - "waitText": "Please, wait...", - "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "waitText": "Please, wait..." }, "Toolbar": { "dlgLeaveMsgText": "You have unsaved changes in this document. Click 'Stay on this Page' to wait for autosave. Click 'Leave this Page' to discard all the unsaved changes.", diff --git a/apps/presentationeditor/mobile/locale/zh-tw.json b/apps/presentationeditor/mobile/locale/zh-tw.json index dd5b730a5..079b9d7ad 100644 --- a/apps/presentationeditor/mobile/locale/zh-tw.json +++ b/apps/presentationeditor/mobile/locale/zh-tw.json @@ -205,8 +205,8 @@ "uploadImageTitleText": "上載圖片", "waitText": "請耐心等待...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Toolbar": { "dlgLeaveMsgText": "您在此文件中有未儲存的變更。點擊\"留在此頁面\"以等待自動儲存。點擊\"離開此頁面\"以放棄所有未儲存的變更。", diff --git a/apps/presentationeditor/mobile/locale/zh.json b/apps/presentationeditor/mobile/locale/zh.json index 60e04ab2c..a30c3734b 100644 --- a/apps/presentationeditor/mobile/locale/zh.json +++ b/apps/presentationeditor/mobile/locale/zh.json @@ -205,8 +205,8 @@ "uploadImageTitleText": "图片上传中", "waitText": "请稍候...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Toolbar": { "dlgLeaveMsgText": "你在该文档中有未保存的修改。点击“留在该页”来等待自动保存。点击“离开该页”将舍弃全部未保存的更改。", diff --git a/apps/spreadsheeteditor/mobile/locale/az.json b/apps/spreadsheeteditor/mobile/locale/az.json index 4f983dcb2..839a6d5aa 100644 --- a/apps/spreadsheeteditor/mobile/locale/az.json +++ b/apps/spreadsheeteditor/mobile/locale/az.json @@ -286,8 +286,8 @@ "uploadImageTitleText": "Təsvir Yüklənir", "waitText": "Lütfən, gözləyin...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Statusbar": { "notcriticalErrorTitle": "Xəbərdarlıq", diff --git a/apps/spreadsheeteditor/mobile/locale/be.json b/apps/spreadsheeteditor/mobile/locale/be.json index f1e009219..849c4626e 100644 --- a/apps/spreadsheeteditor/mobile/locale/be.json +++ b/apps/spreadsheeteditor/mobile/locale/be.json @@ -659,6 +659,7 @@ "advDRMPassword": "Password", "applyChangesTextText": "Loading data...", "applyChangesTitleText": "Loading Data", + "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", "confirmMoveCellRange": "The destination cells range can contain data. Continue the operation?", "confirmPutMergeRange": "The source data contains merged cells.
They will be unmerged before they are pasted into the table.", "confirmReplaceFormulaInTable": "Formulas in the header row will be removed and converted to static text.
Do you want to continue?", @@ -684,20 +685,19 @@ "saveTextText": "Saving document...", "saveTitleText": "Saving Document", "textCancel": "Cancel", + "textContinue": "Continue", "textErrorWrongPassword": "The password you supplied is not correct.", "textLoadingDocument": "Loading document", "textNo": "No", "textOk": "Ok", + "textUndo": "Undo", "textUnlockRange": "Unlock Range", "textUnlockRangeWarning": "A range you are trying to change is password protected.", "textYes": "Yes", "txtEditingMode": "Set editing mode...", "uploadImageTextText": "Uploading image...", "uploadImageTitleText": "Uploading Image", - "waitText": "Please, wait...", - "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "waitText": "Please, wait..." }, "Toolbar": { "dlgLeaveMsgText": "You have unsaved changes in this document. Click 'Stay on this Page' to wait for autosave. Click 'Leave this Page' to discard all the unsaved changes.", diff --git a/apps/spreadsheeteditor/mobile/locale/ca.json b/apps/spreadsheeteditor/mobile/locale/ca.json index 1c67a43b0..0898aa017 100644 --- a/apps/spreadsheeteditor/mobile/locale/ca.json +++ b/apps/spreadsheeteditor/mobile/locale/ca.json @@ -286,8 +286,8 @@ "uploadImageTitleText": "S'està carregant la imatge", "waitText": "Espereu...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Statusbar": { "notcriticalErrorTitle": "Advertiment", diff --git a/apps/spreadsheeteditor/mobile/locale/cs.json b/apps/spreadsheeteditor/mobile/locale/cs.json index 047cf6ed4..29ff445e2 100644 --- a/apps/spreadsheeteditor/mobile/locale/cs.json +++ b/apps/spreadsheeteditor/mobile/locale/cs.json @@ -286,8 +286,8 @@ "uploadImageTitleText": "Nahrávání obrázku", "waitText": "Čekejte prosím...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Statusbar": { "notcriticalErrorTitle": "Varování", diff --git a/apps/spreadsheeteditor/mobile/locale/da.json b/apps/spreadsheeteditor/mobile/locale/da.json index a1690990d..b9df245d0 100644 --- a/apps/spreadsheeteditor/mobile/locale/da.json +++ b/apps/spreadsheeteditor/mobile/locale/da.json @@ -275,19 +275,19 @@ "textUnlockRangeWarning": "Et område, du forsøger at ændre, er beskyttet med adgangskode.", "textYes": "Ja", "waitText": "Vent venligst...", + "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", "confirmMoveCellRange": "The destination cells range can contain data. Continue the operation?", "confirmPutMergeRange": "The source data contains merged cells.
They will be unmerged before they are pasted into the table.", "notcriticalErrorTitle": "Warning", "saveTextText": "Saving document...", "saveTitleText": "Saving Document", + "textContinue": "Continue", "textErrorWrongPassword": "The password you supplied is not correct.", + "textUndo": "Undo", "textUnlockRange": "Unlock Range", "txtEditingMode": "Set editing mode...", "uploadImageTextText": "Uploading image...", - "uploadImageTitleText": "Uploading Image", - "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "uploadImageTitleText": "Uploading Image" }, "Statusbar": { "textCancel": "Annuller", diff --git a/apps/spreadsheeteditor/mobile/locale/de.json b/apps/spreadsheeteditor/mobile/locale/de.json index 87cb9cea7..2de351e4d 100644 --- a/apps/spreadsheeteditor/mobile/locale/de.json +++ b/apps/spreadsheeteditor/mobile/locale/de.json @@ -286,8 +286,8 @@ "uploadImageTitleText": "Bild wird hochgeladen", "waitText": "Bitte warten...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Statusbar": { "notcriticalErrorTitle": "Warnung", diff --git a/apps/spreadsheeteditor/mobile/locale/el.json b/apps/spreadsheeteditor/mobile/locale/el.json index 7c2c8e45d..24a3db31d 100644 --- a/apps/spreadsheeteditor/mobile/locale/el.json +++ b/apps/spreadsheeteditor/mobile/locale/el.json @@ -286,8 +286,8 @@ "uploadImageTitleText": "Μεταφόρτωση Εικόνας", "waitText": "Παρακαλούμε, περιμένετε...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Statusbar": { "notcriticalErrorTitle": "Προειδοποίηση", diff --git a/apps/spreadsheeteditor/mobile/locale/en.json b/apps/spreadsheeteditor/mobile/locale/en.json index 9db650d33..bdc286c80 100644 --- a/apps/spreadsheeteditor/mobile/locale/en.json +++ b/apps/spreadsheeteditor/mobile/locale/en.json @@ -249,6 +249,7 @@ "advDRMPassword": "Password", "applyChangesTextText": "Loading data...", "applyChangesTitleText": "Loading Data", + "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", "confirmMoveCellRange": "The destination cells range can contain data. Continue the operation?", "confirmPutMergeRange": "The source data contains merged cells.
They will be unmerged before they are pasted into the table.", "confirmReplaceFormulaInTable": "Formulas in the header row will be removed and converted to static text.
Do you want to continue?", @@ -274,20 +275,19 @@ "saveTextText": "Saving document...", "saveTitleText": "Saving Document", "textCancel": "Cancel", + "textContinue": "Continue", "textErrorWrongPassword": "The password you supplied is not correct.", "textLoadingDocument": "Loading document", "textNo": "No", "textOk": "Ok", + "textUndo": "Undo", "textUnlockRange": "Unlock Range", "textUnlockRangeWarning": "A range you are trying to change is password protected.", "textYes": "Yes", "txtEditingMode": "Set editing mode...", "uploadImageTextText": "Uploading image...", "uploadImageTitleText": "Uploading Image", - "waitText": "Please, wait...", - "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "waitText": "Please, wait..." }, "Statusbar": { "notcriticalErrorTitle": "Warning", diff --git a/apps/spreadsheeteditor/mobile/locale/es.json b/apps/spreadsheeteditor/mobile/locale/es.json index d69847ac5..6f684299a 100644 --- a/apps/spreadsheeteditor/mobile/locale/es.json +++ b/apps/spreadsheeteditor/mobile/locale/es.json @@ -286,8 +286,8 @@ "uploadImageTitleText": "Subiendo imagen", "waitText": "Por favor, espere...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Statusbar": { "notcriticalErrorTitle": "Advertencia", diff --git a/apps/spreadsheeteditor/mobile/locale/eu.json b/apps/spreadsheeteditor/mobile/locale/eu.json index 847e0e3b3..f92c1786a 100644 --- a/apps/spreadsheeteditor/mobile/locale/eu.json +++ b/apps/spreadsheeteditor/mobile/locale/eu.json @@ -286,8 +286,8 @@ "uploadImageTitleText": "Irudia kargatzen", "waitText": "Mesedez, itxaron...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Statusbar": { "notcriticalErrorTitle": "Abisua", diff --git a/apps/spreadsheeteditor/mobile/locale/fr.json b/apps/spreadsheeteditor/mobile/locale/fr.json index 41d1156b7..742d0fd86 100644 --- a/apps/spreadsheeteditor/mobile/locale/fr.json +++ b/apps/spreadsheeteditor/mobile/locale/fr.json @@ -286,8 +286,8 @@ "uploadImageTitleText": "Chargement d'une image", "waitText": "Veuillez patienter...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Statusbar": { "notcriticalErrorTitle": "Avertissement", diff --git a/apps/spreadsheeteditor/mobile/locale/gl.json b/apps/spreadsheeteditor/mobile/locale/gl.json index e3a328b4a..9ea5e1dd8 100644 --- a/apps/spreadsheeteditor/mobile/locale/gl.json +++ b/apps/spreadsheeteditor/mobile/locale/gl.json @@ -286,8 +286,8 @@ "uploadImageTitleText": "Cargando imaxe", "waitText": "Agarde...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Statusbar": { "notcriticalErrorTitle": "Aviso", diff --git a/apps/spreadsheeteditor/mobile/locale/hu.json b/apps/spreadsheeteditor/mobile/locale/hu.json index 7440e6da2..454a97ad7 100644 --- a/apps/spreadsheeteditor/mobile/locale/hu.json +++ b/apps/spreadsheeteditor/mobile/locale/hu.json @@ -286,8 +286,8 @@ "uploadImageTitleText": "Kép feltöltése", "waitText": "Kérjük várjon...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Statusbar": { "notcriticalErrorTitle": "Figyelmeztetés", diff --git a/apps/spreadsheeteditor/mobile/locale/hy.json b/apps/spreadsheeteditor/mobile/locale/hy.json index 13f3ae87a..71b5f86fc 100644 --- a/apps/spreadsheeteditor/mobile/locale/hy.json +++ b/apps/spreadsheeteditor/mobile/locale/hy.json @@ -286,8 +286,8 @@ "uploadImageTitleText": "Նկարի վերբեռնում", "waitText": "Խնդրում ենք սպասել...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Statusbar": { "notcriticalErrorTitle": "Զգուշացում", diff --git a/apps/spreadsheeteditor/mobile/locale/id.json b/apps/spreadsheeteditor/mobile/locale/id.json index fee166e75..93168b541 100644 --- a/apps/spreadsheeteditor/mobile/locale/id.json +++ b/apps/spreadsheeteditor/mobile/locale/id.json @@ -249,6 +249,7 @@ "advDRMPassword": "Kata Sandi", "applyChangesTextText": "Memuat data...", "applyChangesTitleText": "Memuat Data", + "confirmMaxChangesSize": "Ukuran tindakan melebihi batas yang ditetapkan untuk server Anda.
Tekan \"Batalkan\" untuk membatalkan tindakan terakhir Anda atau tekan \"Lanjutkan\" untuk menyimpan tindakan secara lokal (Anda perlu mengunduh file atau menyalin isinya untuk memastikan tidak ada yang hilang).", "confirmMoveCellRange": "Rentang sel yang dituju bisa berisi data. Lanjutkan operasi?", "confirmPutMergeRange": "Data sumber memiliki sel merge.
Data ini akan di unmerge sebelum di paste ke tabel.", "confirmReplaceFormulaInTable": "Formula di baris header akan dihilangkan dan dikonversi menjadi teks statis.
Apakah Anda ingin melanjutkan?", @@ -274,20 +275,19 @@ "saveTextText": "Menyimpan dokumen...", "saveTitleText": "Menyimpan Dokumen", "textCancel": "Batalkan", + "textContinue": "Lanjutkan", "textErrorWrongPassword": "Password yang Anda sediakan tidak tepat.", "textLoadingDocument": "Memuat dokumen", "textNo": "Tidak", "textOk": "OK", + "textUndo": "Batalkan", "textUnlockRange": "Buka Kunci Rentang", "textUnlockRangeWarning": "Rentang yang ingin Anda ubah dilindungi password", "textYes": "Ya", "txtEditingMode": "Mengatur mode editing...", "uploadImageTextText": "Mengunggah gambar...", "uploadImageTitleText": "Mengunggah Gambar", - "waitText": "Silahkan menunggu", - "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "waitText": "Silahkan menunggu" }, "Statusbar": { "notcriticalErrorTitle": "Peringatan", diff --git a/apps/spreadsheeteditor/mobile/locale/it.json b/apps/spreadsheeteditor/mobile/locale/it.json index d81618176..352fb9cec 100644 --- a/apps/spreadsheeteditor/mobile/locale/it.json +++ b/apps/spreadsheeteditor/mobile/locale/it.json @@ -286,8 +286,8 @@ "uploadImageTitleText": "Caricamento immagine", "waitText": "Si prega di attendere", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Statusbar": { "notcriticalErrorTitle": "Avvertimento", diff --git a/apps/spreadsheeteditor/mobile/locale/ja.json b/apps/spreadsheeteditor/mobile/locale/ja.json index 9ade45d49..dd07bf521 100644 --- a/apps/spreadsheeteditor/mobile/locale/ja.json +++ b/apps/spreadsheeteditor/mobile/locale/ja.json @@ -286,8 +286,8 @@ "uploadImageTitleText": "イメージのアップロード中", "waitText": "少々お待ちください...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Statusbar": { "notcriticalErrorTitle": " 警告", diff --git a/apps/spreadsheeteditor/mobile/locale/ko.json b/apps/spreadsheeteditor/mobile/locale/ko.json index acd98d56b..99f2a4061 100644 --- a/apps/spreadsheeteditor/mobile/locale/ko.json +++ b/apps/spreadsheeteditor/mobile/locale/ko.json @@ -286,8 +286,8 @@ "uploadImageTitleText": "이미지 업로드 중", "waitText": "잠시만 기다려주세요...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Statusbar": { "notcriticalErrorTitle": "경고", diff --git a/apps/spreadsheeteditor/mobile/locale/lo.json b/apps/spreadsheeteditor/mobile/locale/lo.json index 7aaf6b6dc..3253cfbaa 100644 --- a/apps/spreadsheeteditor/mobile/locale/lo.json +++ b/apps/spreadsheeteditor/mobile/locale/lo.json @@ -286,8 +286,8 @@ "uploadImageTitleText": "ກໍາລັງອັບໂຫລດຮູບພາບ", "waitText": "ກະລຸນາລໍຖ້າ...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Statusbar": { "notcriticalErrorTitle": "ເຕືອນ", diff --git a/apps/spreadsheeteditor/mobile/locale/ms.json b/apps/spreadsheeteditor/mobile/locale/ms.json index 537760b33..78cf19104 100644 --- a/apps/spreadsheeteditor/mobile/locale/ms.json +++ b/apps/spreadsheeteditor/mobile/locale/ms.json @@ -286,8 +286,8 @@ "uploadImageTitleText": "Imej dimuat naik", "waitText": "Sila, tunggu…", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Statusbar": { "notcriticalErrorTitle": "Amaran", diff --git a/apps/spreadsheeteditor/mobile/locale/nl.json b/apps/spreadsheeteditor/mobile/locale/nl.json index 1d9962523..2139acd09 100644 --- a/apps/spreadsheeteditor/mobile/locale/nl.json +++ b/apps/spreadsheeteditor/mobile/locale/nl.json @@ -286,8 +286,8 @@ "uploadImageTitleText": "Afbeelding wordt geüpload", "waitText": "Een moment geduld...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Statusbar": { "notcriticalErrorTitle": "Waarschuwing", diff --git a/apps/spreadsheeteditor/mobile/locale/pt-pt.json b/apps/spreadsheeteditor/mobile/locale/pt-pt.json index 5b8e584b3..16439a8fc 100644 --- a/apps/spreadsheeteditor/mobile/locale/pt-pt.json +++ b/apps/spreadsheeteditor/mobile/locale/pt-pt.json @@ -286,8 +286,8 @@ "uploadImageTitleText": "A carregar imagem", "waitText": "Aguarde...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Statusbar": { "notcriticalErrorTitle": "Aviso", diff --git a/apps/spreadsheeteditor/mobile/locale/pt.json b/apps/spreadsheeteditor/mobile/locale/pt.json index 3567d62c5..e0bbebbf3 100644 --- a/apps/spreadsheeteditor/mobile/locale/pt.json +++ b/apps/spreadsheeteditor/mobile/locale/pt.json @@ -31,9 +31,9 @@ "textOk": "OK", "textReopen": "Reabrir", "textResolve": "Resolver", + "textSharingSettings": "Configurações de compartilhamento", "textTryUndoRedo": "As funções Desfazer/Refazer estão desabilitadas para o modo de coedição rápido.", - "textUsers": "Usuários", - "textSharingSettings": "Sharing Settings" + "textUsers": "Usuários" }, "ThemeColorPalette": { "textCustomColors": "Cores personalizadas", @@ -50,6 +50,7 @@ "menuCell": "Célula", "menuDelete": "Excluir", "menuEdit": "Editar", + "menuEditLink": "Editar Link", "menuFreezePanes": "Congelar painéis", "menuHide": "Ocultar", "menuMerge": "Mesclar", @@ -66,8 +67,7 @@ "textDoNotShowAgain": "Não volte a aparecer", "textOk": "OK", "txtWarnUrl": "Clicar neste link pode ser prejudicial ao seu dispositivo e dados.
Você tem certeza de que quer continuar?", - "warnMergeLostData": "Apenas os dados da célula superior esquerda permanecerá na célula mesclada.
Você tem certeza de que deseja continuar? ", - "menuEditLink": "Edit Link" + "warnMergeLostData": "Apenas os dados da célula superior esquerda permanecerá na célula mesclada.
Você tem certeza de que deseja continuar? " }, "Controller": { "Main": { @@ -158,17 +158,17 @@ "textReplaceSuccess": "A pesquisa foi realizada. Ocorrências substituídas: {0}", "textRequestMacros": "Uma macro faz uma solicitação para URL. Deseja permitir a solicitação para %1?", "textYes": "Sim", + "titleLicenseExp": "A licença expirou", "titleServerVersion": "Editor atualizado", "titleUpdateVersion": "Versão alterada", "warnLicenseExceeded": "Você atingiu o limite de conexões simultâneas para% 1 editores. Este documento será aberto apenas para visualização. Contate seu administrador para saber mais.", + "warnLicenseExp": "Sua licença expirou. Por favor, atualize sua licença e atualize a página.", "warnLicenseLimitedNoAccess": "A licença expirou. Você não tem acesso à funcionalidade de edição de documentos. Por favor, entre em contato com seu administrador.", "warnLicenseLimitedRenewed": "A licença precisa ser renovada. Você tem acesso limitado à funcionalidade de edição de documentos.
Por favor, contate seu administrador para obter acesso total", "warnLicenseUsersExceeded": "Você atingiu o limite de usuários para editores %1. Entre em contato com seu administrador para saber mais.", "warnNoLicense": "Você atingiu o limite de conexões simultâneas para% 1 editores. Este documento será aberto apenas para visualização. Contate a equipe de vendas% 1 para termos de atualização pessoal.", "warnNoLicenseUsers": "Você atingiu o limite de usuários para editores %1.
Entre em contato com a equipe de vendas da %1 para obter os termos de atualização pessoais.", - "warnProcessRightsChange": "Você não tem permissão para editar o arquivo.", - "titleLicenseExp": "License expired", - "warnLicenseExp": "Your license has expired. Please, update your license and refresh the page." + "warnProcessRightsChange": "Você não tem permissão para editar o arquivo." } }, "Error": { @@ -196,6 +196,7 @@ "errorDataRange": "Intervalo de dados incorreto.", "errorDataValidate": "O valor que você digitou não é válido.
Um usuário restringiu valores que podem ser inseridos nesta célula.", "errorDefaultMessage": "Código do erro: %1", + "errorDirectUrl": "Por favor, verifique o link para o documento.
Este link deve ser o link direto para baixar o arquivo.", "errorEditingDownloadas": "Ocorreu um erro durante o trabalho com o documento.
Use a opção 'Download' para salvar a cópia de backup do arquivo localmente.", "errorFilePassProtect": "O arquivo é protegido por senha e não pôde ser aberto.", "errorFileRequest": "Erro externo.
Solicitação de arquivo. Por favor, contate o suporte.", @@ -242,8 +243,7 @@ "unknownErrorText": "Erro desconhecido.", "uploadImageExtMessage": "Formato de imagem desconhecido.", "uploadImageFileCountMessage": "Sem imagens carregadas.", - "uploadImageSizeMessage": "Tamanho limite máximo da imagem excedido. O tamanho máximo é de 25 MB.", - "errorDirectUrl": "Please verify the link to the document.
This link must be a direct link to the file for downloading." + "uploadImageSizeMessage": "Tamanho limite máximo da imagem excedido. O tamanho máximo é de 25 MB." }, "LongActions": { "advDRMPassword": "Senha", @@ -286,8 +286,8 @@ "uploadImageTitleText": "Carregando imagem", "waitText": "Por favor, aguarde...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Statusbar": { "notcriticalErrorTitle": "Aviso", @@ -343,6 +343,7 @@ "textComment": "Comente", "textDataTableHint": "Retorna as células de dados da tabela ou colunas de tabela especificadas", "textDisplay": "Exibir", + "textDone": "Concluído", "textEmptyImgUrl": "Você precisa especificar o URL da imagem.", "textExternalLink": "Link externo", "textFilter": "Filtro", @@ -363,6 +364,7 @@ "textPictureFromLibrary": "Imagem da biblioteca", "textPictureFromURL": "Imagem da URL", "textRange": "Intervalo", + "textRecommended": "Recomendado", "textRequired": "Necessário", "textScreenTip": "Dica de tela", "textSelectedRange": "Intervalo selecionado", @@ -378,9 +380,7 @@ "txtNotUrl": "Este campo deve ser uma URL no formato \"http://www.example.com\"", "txtSorting": "Classificação", "txtSortSelected": "Classificar selecionado", - "txtYes": "Sim", - "textDone": "Done", - "textRecommended": "Recommended" + "txtYes": "Sim" }, "Edit": { "notcriticalErrorTitle": "Aviso", @@ -398,6 +398,7 @@ "textAllBorders": "Todas as bordas", "textAngleClockwise": "Ângulo no sentido horário", "textAngleCounterclockwise": "Ângulo no sentido antihorário", + "textArrange": "Organizar", "textAuto": "Automático", "textAutomatic": "Automático", "textAxisCrosses": "Eixos cruzam", @@ -412,9 +413,11 @@ "textBottom": "Inferior", "textBottomBorder": "Limite inferior", "textBringToForeground": "Trazer para primeiro plano", + "textCancel": "Cancelar", "textCell": "Célula", "textCellStyle": "Estilo da célula", "textCenter": "Centro", + "textChangeShape": "Mudar forma", "textChart": "Gráfico", "textChartTitle": "Título do Gráfico", "textClearFilter": "Limpar filtro", @@ -427,12 +430,15 @@ "textDate": "Data", "textDefault": "Intervalo selecionado", "textDeleteFilter": "Excluir Filtro", + "textDeleteImage": "Eliminar imagem", + "textDeleteLink": "Excluir Link", "textDesign": "Design", "textDiagonalDownBorder": "Borda inferior diagonal", "textDiagonalUpBorder": "Borda superior diagonal", "textDisplay": "Exibir", "textDisplayUnits": "Exibir unidades", "textDollar": "Dólar", + "textDone": "Concluído", "textEditLink": "Editar Link", "textEffects": "Efeitos", "textEmptyImgUrl": "Você precisa especificar o URL da imagem.", @@ -513,6 +519,7 @@ "textPound": "Libra", "textPt": "Pt", "textRange": "Intervalo", + "textRecommended": "Recomendado", "textRemoveChart": "Remover gráfico", "textRemoveShape": "Remover forma", "textReplace": "Substituir", @@ -559,14 +566,7 @@ "textYen": "Iene", "txtNotUrl": "Este campo deve ser uma URL no formato \"http://www.example.com\"", "txtSortHigh2Low": "Classificar do maior para o menor", - "txtSortLow2High": "Classificar do menor para o maior", - "textArrange": "Arrange", - "textCancel": "Cancel", - "textChangeShape": "Change Shape", - "textDeleteImage": "Delete Image", - "textDeleteLink": "Delete Link", - "textDone": "Done", - "textRecommended": "Recommended" + "txtSortLow2High": "Classificar do menor para o maior" }, "Settings": { "advCSVOptions": "Escolher opções CSV", diff --git a/apps/spreadsheeteditor/mobile/locale/ro.json b/apps/spreadsheeteditor/mobile/locale/ro.json index 070c51933..6412dc862 100644 --- a/apps/spreadsheeteditor/mobile/locale/ro.json +++ b/apps/spreadsheeteditor/mobile/locale/ro.json @@ -286,8 +286,8 @@ "uploadImageTitleText": "Încărcarea imaginii", "waitText": "Vă rugăm să așteptați...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Statusbar": { "notcriticalErrorTitle": "Avertisment", diff --git a/apps/spreadsheeteditor/mobile/locale/ru.json b/apps/spreadsheeteditor/mobile/locale/ru.json index ec796fe5a..27734a7e5 100644 --- a/apps/spreadsheeteditor/mobile/locale/ru.json +++ b/apps/spreadsheeteditor/mobile/locale/ru.json @@ -249,6 +249,7 @@ "advDRMPassword": "Пароль", "applyChangesTextText": "Загрузка данных...", "applyChangesTitleText": "Загрузка данных", + "confirmMaxChangesSize": "Размер внесенных изменений превышает ограничение, установленное для вашего сервера.
Нажмите \"Отменить\" для отмены последнего действия или нажмите \"Продолжить\", чтобы сохранить действие локально (потребуется скачать файл или скопировать его содержимое чтобы ничего не потерялось).", "confirmMoveCellRange": "Конечный диапазон ячеек может содержать данные. Продолжить операцию?", "confirmPutMergeRange": "Исходные данные содержат объединенные ячейки.
Перед вставкой в таблицу они будут разделены.", "confirmReplaceFormulaInTable": "Формулы в строке заголовка будут удалены и преобразованы в статический текст.
Вы хотите продолжить?", @@ -274,20 +275,19 @@ "saveTextText": "Сохранение документа...", "saveTitleText": "Сохранение документа", "textCancel": "Отмена", + "textContinue": "Продолжить", "textErrorWrongPassword": "Неверный пароль.", "textLoadingDocument": "Загрузка документа", "textNo": "Нет", "textOk": "Ok", + "textUndo": "Отменить", "textUnlockRange": "Разблокировать диапазон", "textUnlockRangeWarning": "Диапазон, который вы пытаетесь изменить, защищен с помощью пароля.", "textYes": "Да", "txtEditingMode": "Установка режима редактирования...", "uploadImageTextText": "Загрузка рисунка...", "uploadImageTitleText": "Загрузка рисунка", - "waitText": "Пожалуйста, подождите...", - "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "waitText": "Пожалуйста, подождите..." }, "Statusbar": { "notcriticalErrorTitle": "Внимание", diff --git a/apps/spreadsheeteditor/mobile/locale/sk.json b/apps/spreadsheeteditor/mobile/locale/sk.json index 7c9853bd1..ceaf7a402 100644 --- a/apps/spreadsheeteditor/mobile/locale/sk.json +++ b/apps/spreadsheeteditor/mobile/locale/sk.json @@ -286,8 +286,8 @@ "uploadImageTitleText": "Nahrávanie obrázku", "waitText": "Prosím čakajte...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Statusbar": { "notcriticalErrorTitle": "Upozornenie", diff --git a/apps/spreadsheeteditor/mobile/locale/sl.json b/apps/spreadsheeteditor/mobile/locale/sl.json index 2a94cb812..7d4b037b4 100644 --- a/apps/spreadsheeteditor/mobile/locale/sl.json +++ b/apps/spreadsheeteditor/mobile/locale/sl.json @@ -249,6 +249,7 @@ "advDRMPassword": "Password", "applyChangesTextText": "Loading data...", "applyChangesTitleText": "Loading Data", + "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", "confirmMoveCellRange": "The destination cells range can contain data. Continue the operation?", "confirmPutMergeRange": "The source data contains merged cells.
They will be unmerged before they are pasted into the table.", "confirmReplaceFormulaInTable": "Formulas in the header row will be removed and converted to static text.
Do you want to continue?", @@ -274,20 +275,19 @@ "saveTextText": "Saving document...", "saveTitleText": "Saving Document", "textCancel": "Cancel", + "textContinue": "Continue", "textErrorWrongPassword": "The password you supplied is not correct.", "textLoadingDocument": "Loading document", "textNo": "No", "textOk": "Ok", + "textUndo": "Undo", "textUnlockRange": "Unlock Range", "textUnlockRangeWarning": "A range you are trying to change is password protected.", "textYes": "Yes", "txtEditingMode": "Set editing mode...", "uploadImageTextText": "Uploading image...", "uploadImageTitleText": "Uploading Image", - "waitText": "Please, wait...", - "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "waitText": "Please, wait..." }, "Statusbar": { "notcriticalErrorTitle": "Warning", diff --git a/apps/spreadsheeteditor/mobile/locale/tr.json b/apps/spreadsheeteditor/mobile/locale/tr.json index 477c74600..bfcd4a065 100644 --- a/apps/spreadsheeteditor/mobile/locale/tr.json +++ b/apps/spreadsheeteditor/mobile/locale/tr.json @@ -286,8 +286,8 @@ "uploadImageTitleText": "Resim Yükleniyor", "waitText": "Lütfen bekleyin...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Statusbar": { "notcriticalErrorTitle": "Uyarı", diff --git a/apps/spreadsheeteditor/mobile/locale/uk.json b/apps/spreadsheeteditor/mobile/locale/uk.json index 63367469f..104e06819 100644 --- a/apps/spreadsheeteditor/mobile/locale/uk.json +++ b/apps/spreadsheeteditor/mobile/locale/uk.json @@ -249,6 +249,7 @@ "advDRMPassword": "Password", "applyChangesTextText": "Loading data...", "applyChangesTitleText": "Loading Data", + "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", "confirmMoveCellRange": "The destination cells range can contain data. Continue the operation?", "confirmPutMergeRange": "The source data contains merged cells.
They will be unmerged before they are pasted into the table.", "confirmReplaceFormulaInTable": "Formulas in the header row will be removed and converted to static text.
Do you want to continue?", @@ -274,20 +275,19 @@ "saveTextText": "Saving document...", "saveTitleText": "Saving Document", "textCancel": "Cancel", + "textContinue": "Continue", "textErrorWrongPassword": "The password you supplied is not correct.", "textLoadingDocument": "Loading document", "textNo": "No", "textOk": "Ok", + "textUndo": "Undo", "textUnlockRange": "Unlock Range", "textUnlockRangeWarning": "A range you are trying to change is password protected.", "textYes": "Yes", "txtEditingMode": "Set editing mode...", "uploadImageTextText": "Uploading image...", "uploadImageTitleText": "Uploading Image", - "waitText": "Please, wait...", - "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "waitText": "Please, wait..." }, "Statusbar": { "notcriticalErrorTitle": "Warning", diff --git a/apps/spreadsheeteditor/mobile/locale/zh-tw.json b/apps/spreadsheeteditor/mobile/locale/zh-tw.json index 2b7a89ed7..91ccb6930 100644 --- a/apps/spreadsheeteditor/mobile/locale/zh-tw.json +++ b/apps/spreadsheeteditor/mobile/locale/zh-tw.json @@ -286,8 +286,8 @@ "uploadImageTitleText": "上載圖片", "waitText": "請耐心等待...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Statusbar": { "notcriticalErrorTitle": "警告", diff --git a/apps/spreadsheeteditor/mobile/locale/zh.json b/apps/spreadsheeteditor/mobile/locale/zh.json index bd385b454..e20ebcf88 100644 --- a/apps/spreadsheeteditor/mobile/locale/zh.json +++ b/apps/spreadsheeteditor/mobile/locale/zh.json @@ -286,8 +286,8 @@ "uploadImageTitleText": "图片上传中", "waitText": "请稍候...", "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" + "textContinue": "Continue", + "textUndo": "Undo" }, "Statusbar": { "notcriticalErrorTitle": "警告", From e9b04b91fbe273a45df83f544f0bbee01e10e41c Mon Sep 17 00:00:00 2001 From: Alexei Koshelev Date: Mon, 24 Oct 2022 18:49:15 +0300 Subject: [PATCH 21/32] [SSE] Lock comments when selected not a cell for comment editor --- apps/spreadsheeteditor/main/app/controller/Toolbar.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/spreadsheeteditor/main/app/controller/Toolbar.js b/apps/spreadsheeteditor/main/app/controller/Toolbar.js index 8568d7865..a0bf42e0a 100644 --- a/apps/spreadsheeteditor/main/app/controller/Toolbar.js +++ b/apps/spreadsheeteditor/main/app/controller/Toolbar.js @@ -2882,7 +2882,6 @@ define([ // info.asc_getComments()===null - has comment, but no permissions to view it toolbar.lockToolbar(Common.enumLock.commentLock, (selectionType == Asc.c_oAscSelectionType.RangeCells) && (!info.asc_getComments() || info.asc_getComments().length>0 || info.asc_getLocked()) - || this.toolbar.mode.compatibleFeatures && (selectionType != Asc.c_oAscSelectionType.RangeCells) || selectionType != Asc.c_oAscSelectionType.RangeCells, { array: this.btnsComment }); @@ -3249,9 +3248,10 @@ define([ if (!this.appConfig.isRestrictedEdit) return; var selectionType = info.asc_getSelectionType(); - this.toolbar.lockToolbar(Common.enumLock.commentLock, (selectionType == Asc.c_oAscSelectionType.RangeCells) && (!info.asc_getComments() || info.asc_getComments().length>0 || info.asc_getLocked()) || - this.appConfig && this.appConfig.compatibleFeatures && (selectionType != Asc.c_oAscSelectionType.RangeCells), - { array: this.btnsComment }); + this.toolbar.lockToolbar(Common.enumLock.commentLock, + (selectionType == Asc.c_oAscSelectionType.RangeCells) && (!info.asc_getComments() || info.asc_getComments().length>0 || info.asc_getLocked()) + || selectionType != Asc.c_oAscSelectionType.RangeCells, + { array: this.btnsComment }); this.toolbar.lockToolbar(Common.enumLock['Objects'], !!this._state.wsProps['Objects'], { array: this.btnsComment }); }, From ea0d07ad896534f94fb118573594176a28b4ab92 Mon Sep 17 00:00:00 2001 From: JuliaSvinareva Date: Mon, 24 Oct 2022 20:52:46 +0300 Subject: [PATCH 22/32] [SSE] Fix bug 59466 --- apps/spreadsheeteditor/main/app/controller/Print.js | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/spreadsheeteditor/main/app/controller/Print.js b/apps/spreadsheeteditor/main/app/controller/Print.js index d2a21bd82..5b5fa13b9 100644 --- a/apps/spreadsheeteditor/main/app/controller/Print.js +++ b/apps/spreadsheeteditor/main/app/controller/Print.js @@ -424,6 +424,7 @@ define([ this.printSettings.applySettings(); if (print) { + var view = SSE.getController('Toolbar').getView('Toolbar'); var printType = this.printSettings.getRange(); this.adjPrintParams.asc_setPrintType(printType); this.adjPrintParams.asc_setPageOptionsMap(this._changedProps); From 9a6034b611f48b80b7907e9bc76bafdcee5a2ffa Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Mon, 24 Oct 2022 20:55:55 +0300 Subject: [PATCH 23/32] [DE] Fix opening protected document (show comment buttons after unprotect) --- apps/common/main/lib/view/ReviewChanges.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/common/main/lib/view/ReviewChanges.js b/apps/common/main/lib/view/ReviewChanges.js index fb1336691..4c4c1239f 100644 --- a/apps/common/main/lib/view/ReviewChanges.js +++ b/apps/common/main/lib/view/ReviewChanges.js @@ -449,6 +449,7 @@ define([ } if ( this.appConfig.canCoAuthoring && this.appConfig.canComments ) { + this.canComments = true; // fix for loading protected document this.btnCommentRemove = new Common.UI.Button({ cls: 'btn-toolbar x-huge icon-top', caption: this.txtCommentRemove, @@ -660,7 +661,7 @@ define([ } var separator_sharing = !(me.btnSharing || me.btnCoAuthMode) ? me.$el.find('.separator.sharing') : '.separator.sharing', - separator_comments = !(config.canComments && config.canCoAuthoring) ? me.$el.find('.separator.comments') : '.separator.comments', + separator_comments = !(me.btnCommentRemove || me.btnCommentResolve) ? me.$el.find('.separator.comments') : '.separator.comments', separator_review = !(config.canReview || config.canViewReview) ? me.$el.find('.separator.review') : '.separator.review', separator_compare = !(config.canReview && config.canFeatureComparison) ? me.$el.find('.separator.compare') : '.separator.compare', separator_chat = !me.btnChat ? me.$el.find('.separator.chat') : '.separator.chat', @@ -694,7 +695,7 @@ define([ if (!me.btnHistory && separator_last) me.$el.find(separator_last).hide(); - Common.NotificationCenter.trigger('tab:visible', 'review', (config.isEdit || config.canViewReview || config.canCoAuthoring && config.canComments) && Common.UI.LayoutManager.isElementVisible('toolbar-collaboration')); + Common.NotificationCenter.trigger('tab:visible', 'review', (config.isEdit || config.canViewReview || me.canComments) && Common.UI.LayoutManager.isElementVisible('toolbar-collaboration')); setEvents.call(me); }); }, From b01dca86e575402851db911a223881216dfb8a5f Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Mon, 24 Oct 2022 21:48:19 +0300 Subject: [PATCH 24/32] Use socketio --- apps/api/documents/cache-scripts.html | 2 +- apps/documenteditor/embed/index.html | 2 +- apps/documenteditor/embed/index.html.deploy | 2 +- apps/documenteditor/embed/index_loader.html | 2 +- .../embed/index_loader.html.deploy | 2 +- apps/documenteditor/forms/app.js | 4 +- apps/documenteditor/forms/app_dev.js | 4 +- apps/documenteditor/main/app.js | 4 +- apps/documenteditor/main/app_dev.js | 4 +- .../mobile/src/controller/Main.jsx | 2 +- apps/presentationeditor/embed/index.html | 2 +- .../embed/index.html.deploy | 2 +- .../embed/index_loader.html | 2 +- .../embed/index_loader.html.deploy | 2 +- apps/presentationeditor/main/app.js | 4 +- apps/presentationeditor/main/app.reporter.js | 4 +- apps/presentationeditor/main/app_dev.js | 4 +- .../main/app_dev.reporter.js | 6 +- .../mobile/src/controller/Main.jsx | 2 +- apps/spreadsheeteditor/embed/index.html | 2 +- .../spreadsheeteditor/embed/index.html.deploy | 2 +- .../spreadsheeteditor/embed/index_loader.html | 2 +- .../embed/index_loader.html.deploy | 2 +- apps/spreadsheeteditor/main/app.js | 4 +- apps/spreadsheeteditor/main/app_dev.js | 4 +- .../mobile/src/controller/Main.jsx | 2 +- vendor/socketio/socket.io.esm.min.js | 7 + vendor/socketio/socket.io.esm.min.js.map | 1 + vendor/socketio/socket.io.js | 4560 +++++++++++++++++ vendor/socketio/socket.io.js.map | 1 + vendor/socketio/socket.io.min.js | 7 + vendor/socketio/socket.io.min.js.map | 1 + vendor/socketio/socket.io.msgpack.min.js | 7 + vendor/socketio/socket.io.msgpack.min.js.map | 1 + 34 files changed, 4622 insertions(+), 37 deletions(-) create mode 100644 vendor/socketio/socket.io.esm.min.js create mode 100644 vendor/socketio/socket.io.esm.min.js.map create mode 100644 vendor/socketio/socket.io.js create mode 100644 vendor/socketio/socket.io.js.map create mode 100644 vendor/socketio/socket.io.min.js create mode 100644 vendor/socketio/socket.io.min.js.map create mode 100644 vendor/socketio/socket.io.msgpack.min.js create mode 100644 vendor/socketio/socket.io.msgpack.min.js.map diff --git a/apps/api/documents/cache-scripts.html b/apps/api/documents/cache-scripts.html index 8f1b4efbe..4ef772077 100644 --- a/apps/api/documents/cache-scripts.html +++ b/apps/api/documents/cache-scripts.html @@ -10,7 +10,7 @@ - + diff --git a/apps/documenteditor/embed/index.html b/apps/documenteditor/embed/index.html index da514210f..c28c66285 100644 --- a/apps/documenteditor/embed/index.html +++ b/apps/documenteditor/embed/index.html @@ -229,7 +229,7 @@ - + diff --git a/apps/documenteditor/embed/index.html.deploy b/apps/documenteditor/embed/index.html.deploy index 0bc36adf3..f2ec69cef 100644 --- a/apps/documenteditor/embed/index.html.deploy +++ b/apps/documenteditor/embed/index.html.deploy @@ -220,7 +220,7 @@ - + - + diff --git a/apps/documenteditor/embed/index_loader.html.deploy b/apps/documenteditor/embed/index_loader.html.deploy index a944efbb8..f7ffdb523 100644 --- a/apps/documenteditor/embed/index_loader.html.deploy +++ b/apps/documenteditor/embed/index_loader.html.deploy @@ -320,7 +320,7 @@ - + diff --git a/apps/documenteditor/forms/app.js b/apps/documenteditor/forms/app.js index 99b5479f7..de1001615 100644 --- a/apps/documenteditor/forms/app.js +++ b/apps/documenteditor/forms/app.js @@ -46,7 +46,7 @@ require.config({ perfectscrollbar: 'common/main/lib/mods/perfect-scrollbar', jmousewheel : '../vendor/perfect-scrollbar/src/jquery.mousewheel', xregexp : '../vendor/xregexp/xregexp-all-min', - sockjs : '../vendor/sockjs/sockjs.min', + socketio : '../vendor/socketio/socket.io.min.js', allfonts : '../../sdkjs/common/AllFonts', sdk : '../../sdkjs/word/sdk-all-min', api : 'api/documents/api', @@ -100,7 +100,7 @@ require.config({ 'underscore', 'allfonts', 'xregexp', - 'sockjs' + 'socketio' ] }, gateway: { diff --git a/apps/documenteditor/forms/app_dev.js b/apps/documenteditor/forms/app_dev.js index 5511ef754..5cdc1d891 100644 --- a/apps/documenteditor/forms/app_dev.js +++ b/apps/documenteditor/forms/app_dev.js @@ -46,7 +46,7 @@ require.config({ perfectscrollbar: 'common/main/lib/mods/perfect-scrollbar', jmousewheel : '../vendor/perfect-scrollbar/src/jquery.mousewheel', xregexp : '../vendor/xregexp/xregexp-all-min', - sockjs : '../vendor/sockjs/sockjs.min', + socketio : '../vendor/socketio/socket.io.min.js', api : 'api/documents/api', core : 'common/main/lib/core/application', notification : 'common/main/lib/core/NotificationCenter', @@ -113,7 +113,7 @@ require([ 'analytics', 'gateway', 'locale', - 'sockjs', + 'socketio', 'underscore' ], function (Backbone, Bootstrap, Core) { if (Backbone.History && Backbone.History.started) diff --git a/apps/documenteditor/main/app.js b/apps/documenteditor/main/app.js index 4d7b05f6d..45607f0e9 100644 --- a/apps/documenteditor/main/app.js +++ b/apps/documenteditor/main/app.js @@ -53,7 +53,7 @@ require.config({ perfectscrollbar: 'common/main/lib/mods/perfect-scrollbar', jmousewheel : '../vendor/perfect-scrollbar/src/jquery.mousewheel', xregexp : '../vendor/xregexp/xregexp-all-min', - sockjs : '../vendor/sockjs/sockjs.min', + socketio : '../vendor/socketio/socket.io.min.js', allfonts : '../../sdkjs/common/AllFonts', sdk : '../../sdkjs/word/sdk-all-min', api : 'api/documents/api', @@ -107,7 +107,7 @@ require.config({ 'underscore', 'allfonts', 'xregexp', - 'sockjs' + 'socketio' ] }, gateway: { diff --git a/apps/documenteditor/main/app_dev.js b/apps/documenteditor/main/app_dev.js index 89276f32b..93f883f46 100644 --- a/apps/documenteditor/main/app_dev.js +++ b/apps/documenteditor/main/app_dev.js @@ -53,7 +53,7 @@ require.config({ perfectscrollbar: 'common/main/lib/mods/perfect-scrollbar', jmousewheel : '../vendor/perfect-scrollbar/src/jquery.mousewheel', xregexp : '../vendor/xregexp/xregexp-all-min', - sockjs : '../vendor/sockjs/sockjs.min', + socketio : '../vendor/socketio/socket.io.min.js', api : 'api/documents/api', core : 'common/main/lib/core/application', notification : 'common/main/lib/core/NotificationCenter', @@ -120,7 +120,7 @@ require([ 'analytics', 'gateway', 'locale', - 'sockjs', + 'socketio', 'underscore' ], function (Backbone, Bootstrap, Core) { if (Backbone.History && Backbone.History.started) diff --git a/apps/documenteditor/mobile/src/controller/Main.jsx b/apps/documenteditor/mobile/src/controller/Main.jsx index 1d391185c..f424804c3 100644 --- a/apps/documenteditor/mobile/src/controller/Main.jsx +++ b/apps/documenteditor/mobile/src/controller/Main.jsx @@ -61,7 +61,7 @@ class MainController extends Component { !window.sdk_scripts && (window.sdk_scripts = ['../../../../sdkjs/common/AllFonts.js', '../../../../sdkjs/word/sdk-all-min.js']); let dep_scripts = ['../../../vendor/xregexp/xregexp-all-min.js', - '../../../vendor/sockjs/sockjs.min.js']; + '../../../vendor/socketio/socket.io.min.js']; dep_scripts.push(...window.sdk_scripts); const promise_get_script = (scriptpath) => { diff --git a/apps/presentationeditor/embed/index.html b/apps/presentationeditor/embed/index.html index c39744115..c0f34d399 100644 --- a/apps/presentationeditor/embed/index.html +++ b/apps/presentationeditor/embed/index.html @@ -279,7 +279,7 @@ - + diff --git a/apps/presentationeditor/embed/index.html.deploy b/apps/presentationeditor/embed/index.html.deploy index 9bc17c3b2..0f2e9e779 100644 --- a/apps/presentationeditor/embed/index.html.deploy +++ b/apps/presentationeditor/embed/index.html.deploy @@ -273,7 +273,7 @@ - + - + diff --git a/apps/presentationeditor/embed/index_loader.html.deploy b/apps/presentationeditor/embed/index_loader.html.deploy index 574297d38..372df0eee 100644 --- a/apps/presentationeditor/embed/index_loader.html.deploy +++ b/apps/presentationeditor/embed/index_loader.html.deploy @@ -320,7 +320,7 @@ - + diff --git a/apps/presentationeditor/main/app.js b/apps/presentationeditor/main/app.js index b34a9cd72..e5a3e3e8a 100644 --- a/apps/presentationeditor/main/app.js +++ b/apps/presentationeditor/main/app.js @@ -53,7 +53,7 @@ require.config({ perfectscrollbar: 'common/main/lib/mods/perfect-scrollbar', jmousewheel : '../vendor/perfect-scrollbar/src/jquery.mousewheel', xregexp : '../vendor/xregexp/xregexp-all-min', - sockjs : '../vendor/sockjs/sockjs.min', + socketio : '../vendor/socketio/socket.io.min.js', allfonts : '../../sdkjs/common/AllFonts', sdk : '../../sdkjs/slide/sdk-all-min', api : 'api/documents/api', @@ -106,7 +106,7 @@ require.config({ 'underscore', 'allfonts', 'xregexp', - 'sockjs' + 'socketio' ] }, gateway: { diff --git a/apps/presentationeditor/main/app.reporter.js b/apps/presentationeditor/main/app.reporter.js index 1c5efdb6b..4fd41f738 100644 --- a/apps/presentationeditor/main/app.reporter.js +++ b/apps/presentationeditor/main/app.reporter.js @@ -48,7 +48,7 @@ require.config({ jquery : '../vendor/jquery/jquery.min', underscore : '../vendor/underscore/underscore-min', xregexp : '../vendor/xregexp/xregexp-all-min', - sockjs : '../vendor/sockjs/sockjs.min', + socketio : '../vendor/socketio/socket.io.min.js', allfonts : '../../sdkjs/common/AllFonts', sdk : '../../sdkjs/slide/sdk-all-min' }, @@ -62,7 +62,7 @@ require.config({ 'underscore', 'allfonts', 'xregexp', - 'sockjs' + 'socketio' ] } } diff --git a/apps/presentationeditor/main/app_dev.js b/apps/presentationeditor/main/app_dev.js index 8d7c9c55e..74b97e47f 100644 --- a/apps/presentationeditor/main/app_dev.js +++ b/apps/presentationeditor/main/app_dev.js @@ -53,7 +53,7 @@ require.config({ perfectscrollbar: 'common/main/lib/mods/perfect-scrollbar', jmousewheel : '../vendor/perfect-scrollbar/src/jquery.mousewheel', xregexp : '../vendor/xregexp/xregexp-all-min', - sockjs : '../vendor/sockjs/sockjs.min', + socketio : '../vendor/socketio/socket.io.min.js', api : 'api/documents/api', core : 'common/main/lib/core/application', notification : 'common/main/lib/core/NotificationCenter', @@ -119,7 +119,7 @@ require([ 'analytics', 'gateway', 'locale', - 'sockjs', + 'socketio', 'xregexp', 'underscore' ], function (Backbone, Bootstrap, Core) { diff --git a/apps/presentationeditor/main/app_dev.reporter.js b/apps/presentationeditor/main/app_dev.reporter.js index 04aac16cf..9dcbaa11d 100644 --- a/apps/presentationeditor/main/app_dev.reporter.js +++ b/apps/presentationeditor/main/app_dev.reporter.js @@ -48,7 +48,7 @@ require.config({ jquery : '../vendor/jquery/jquery', underscore : '../vendor/underscore/underscore', xregexp : '../vendor/xregexp/xregexp-all-min', - sockjs : '../vendor/sockjs/sockjs.min', + socketio : '../vendor/socketio/socket.io.min.js', allfonts : '../../sdkjs/common/AllFonts' }, shim: { @@ -61,14 +61,14 @@ require.config({ 'underscore', 'allfonts', 'xregexp', - 'sockjs' + 'socketio' ] } } }); require([ - 'sockjs', + 'socketio', 'xregexp', 'underscore' ], function () { diff --git a/apps/presentationeditor/mobile/src/controller/Main.jsx b/apps/presentationeditor/mobile/src/controller/Main.jsx index dfaadb097..5a458ea10 100644 --- a/apps/presentationeditor/mobile/src/controller/Main.jsx +++ b/apps/presentationeditor/mobile/src/controller/Main.jsx @@ -55,7 +55,7 @@ class MainController extends Component { !window.sdk_scripts && (window.sdk_scripts = ['../../../../sdkjs/common/AllFonts.js', '../../../../sdkjs/slide/sdk-all-min.js']); let dep_scripts = ['../../../vendor/xregexp/xregexp-all-min.js', - '../../../vendor/sockjs/sockjs.min.js']; + '../../../vendor/socketio/socket.io.min.js']; dep_scripts.push(...window.sdk_scripts); const promise_get_script = (scriptpath) => { diff --git a/apps/spreadsheeteditor/embed/index.html b/apps/spreadsheeteditor/embed/index.html index 01aae5619..63222e9ba 100644 --- a/apps/spreadsheeteditor/embed/index.html +++ b/apps/spreadsheeteditor/embed/index.html @@ -252,7 +252,7 @@ - + diff --git a/apps/spreadsheeteditor/embed/index.html.deploy b/apps/spreadsheeteditor/embed/index.html.deploy index 3bf4b42b7..cc75bed5b 100644 --- a/apps/spreadsheeteditor/embed/index.html.deploy +++ b/apps/spreadsheeteditor/embed/index.html.deploy @@ -244,7 +244,7 @@ - + diff --git a/apps/spreadsheeteditor/embed/index_loader.html b/apps/spreadsheeteditor/embed/index_loader.html index 3c4f5a914..5777a43a0 100644 --- a/apps/spreadsheeteditor/embed/index_loader.html +++ b/apps/spreadsheeteditor/embed/index_loader.html @@ -326,7 +326,7 @@ - + diff --git a/apps/spreadsheeteditor/embed/index_loader.html.deploy b/apps/spreadsheeteditor/embed/index_loader.html.deploy index dc420fead..9857c016e 100644 --- a/apps/spreadsheeteditor/embed/index_loader.html.deploy +++ b/apps/spreadsheeteditor/embed/index_loader.html.deploy @@ -318,7 +318,7 @@ - + diff --git a/apps/spreadsheeteditor/main/app.js b/apps/spreadsheeteditor/main/app.js index 74c701ad7..c7a4626f1 100644 --- a/apps/spreadsheeteditor/main/app.js +++ b/apps/spreadsheeteditor/main/app.js @@ -53,7 +53,7 @@ require.config({ perfectscrollbar: 'common/main/lib/mods/perfect-scrollbar', jmousewheel : '../vendor/perfect-scrollbar/src/jquery.mousewheel', xregexp : '../vendor/xregexp/xregexp-all-min', - sockjs : '../vendor/sockjs/sockjs.min', + socketio : '../vendor/socketio/socket.io.min.js', allfonts : '../../sdkjs/common/AllFonts', sdk : '../../sdkjs/cell/sdk-all-min', api : 'api/documents/api', @@ -106,7 +106,7 @@ require.config({ 'underscore', 'allfonts', 'xregexp', - 'sockjs' + 'socketio' ] }, gateway: { diff --git a/apps/spreadsheeteditor/main/app_dev.js b/apps/spreadsheeteditor/main/app_dev.js index ace713ac7..b1c5782ed 100644 --- a/apps/spreadsheeteditor/main/app_dev.js +++ b/apps/spreadsheeteditor/main/app_dev.js @@ -53,7 +53,7 @@ require.config({ perfectscrollbar: 'common/main/lib/mods/perfect-scrollbar', jmousewheel : '../vendor/perfect-scrollbar/src/jquery.mousewheel', xregexp : '../vendor/xregexp/xregexp-all-min', - sockjs : '../vendor/sockjs/sockjs.min', + socketio : '../vendor/socketio/socket.io.min.js', api : 'api/documents/api', core : 'common/main/lib/core/application', notification : 'common/main/lib/core/NotificationCenter', @@ -119,7 +119,7 @@ require([ 'analytics', 'gateway', 'locale', - 'sockjs', + 'socketio', 'underscore' ], function (Backbone, Bootstrap, Core) { if (Backbone.History && Backbone.History.started) diff --git a/apps/spreadsheeteditor/mobile/src/controller/Main.jsx b/apps/spreadsheeteditor/mobile/src/controller/Main.jsx index c6afe7618..d6d8ba376 100644 --- a/apps/spreadsheeteditor/mobile/src/controller/Main.jsx +++ b/apps/spreadsheeteditor/mobile/src/controller/Main.jsx @@ -71,7 +71,7 @@ class MainController extends Component { '../../../vendor/bootstrap/dist/js/bootstrap.min.js', '../../../vendor/underscore/underscore-min.js', '../../../vendor/xregexp/xregexp-all-min.js', - '../../../vendor/sockjs/sockjs.min.js']; + '../../../vendor/socketio/socket.io.min.js']; dep_scripts.push(...window.sdk_scripts); const promise_get_script = (scriptpath) => { diff --git a/vendor/socketio/socket.io.esm.min.js b/vendor/socketio/socket.io.esm.min.js new file mode 100644 index 000000000..013ada2b4 --- /dev/null +++ b/vendor/socketio/socket.io.esm.min.js @@ -0,0 +1,7 @@ +/*! + * Socket.IO v4.5.3 + * (c) 2014-2022 Guillermo Rauch + * Released under the MIT License. + */ +const t=Object.create(null);t.open="0",t.close="1",t.ping="2",t.pong="3",t.message="4",t.upgrade="5",t.noop="6";const e=Object.create(null);Object.keys(t).forEach((s=>{e[t[s]]=s}));const s={type:"error",data:"parser error"},n="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),i="function"==typeof ArrayBuffer,r=({type:e,data:s},r,h)=>{return n&&s instanceof Blob?r?h(s):o(s,h):i&&(s instanceof ArrayBuffer||(a=s,"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(a):a&&a.buffer instanceof ArrayBuffer))?r?h(s):o(new Blob([s]),h):h(t[e]+(s||""));var a},o=(t,e)=>{const s=new FileReader;return s.onload=function(){const t=s.result.split(",")[1];e("b"+t)},s.readAsDataURL(t)},h="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a="undefined"==typeof Uint8Array?[]:new Uint8Array(256);for(let t=0;t{if("string"!=typeof t)return{type:"message",data:l(t,n)};const i=t.charAt(0);if("b"===i)return{type:"message",data:u(t.substring(1),n)};return e[i]?t.length>1?{type:e[i],data:t.substring(1)}:{type:e[i]}:s},u=(t,e)=>{if(c){const s=(t=>{let e,s,n,i,r,o=.75*t.length,h=t.length,c=0;"="===t[t.length-1]&&(o--,"="===t[t.length-2]&&o--);const p=new ArrayBuffer(o),u=new Uint8Array(p);for(e=0;e>4,u[c++]=(15&n)<<4|i>>2,u[c++]=(3&i)<<6|63&r;return p})(t);return l(s,e)}return{base64:!0,data:t}},l=(t,e)=>"blob"===e&&t instanceof ArrayBuffer?new Blob([t]):t,d=String.fromCharCode(30);function f(t){if(t)return function(t){for(var e in f.prototype)t[e]=f.prototype[e];return t}(t)}f.prototype.on=f.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+t]=this._callbacks["$"+t]||[]).push(e),this},f.prototype.once=function(t,e){function s(){this.off(t,s),e.apply(this,arguments)}return s.fn=e,this.on(t,s),this},f.prototype.off=f.prototype.removeListener=f.prototype.removeAllListeners=f.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var s,n=this._callbacks["$"+t];if(!n)return this;if(1==arguments.length)return delete this._callbacks["$"+t],this;for(var i=0;i(t.hasOwnProperty(s)&&(e[s]=t[s]),e)),{})}const m=setTimeout,b=clearTimeout;function v(t,e){e.useNativeTimers?(t.setTimeoutFn=m.bind(y),t.clearTimeoutFn=b.bind(y)):(t.setTimeoutFn=setTimeout.bind(y),t.clearTimeoutFn=clearTimeout.bind(y))}class k extends Error{constructor(t,e,s){super(t),this.description=e,this.context=s,this.type="TransportError"}}class w extends f{constructor(t){super(),this.writable=!1,v(this,t),this.opts=t,this.query=t.query,this.readyState="",this.socket=t.socket}onError(t,e,s){return super.emitReserved("error",new k(t,e,s)),this}open(){return"closed"!==this.readyState&&""!==this.readyState||(this.readyState="opening",this.doOpen()),this}close(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this}send(t){"open"===this.readyState&&this.write(t)}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(t){const e=p(t,this.socket.binaryType);this.onPacket(e)}onPacket(t){super.emitReserved("packet",t)}onClose(t){this.readyState="closed",super.emitReserved("close",t)}}const _="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),E={};let A,R=0,O=0;function C(t){let e="";do{e=_[t%64]+e,t=Math.floor(t/64)}while(t>0);return e}function T(){const t=C(+new Date);return t!==A?(R=0,A=t):t+"."+C(R++)}for(;O<64;O++)E[_[O]]=O;function B(t){let e="";for(let s in t)t.hasOwnProperty(s)&&(e.length&&(e+="&"),e+=encodeURIComponent(s)+"="+encodeURIComponent(t[s]));return e}let N=!1;try{N="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(t){}const x=N;function L(t){const e=t.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!e||x))return new XMLHttpRequest}catch(t){}if(!e)try{return new(y[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(t){}}function S(){}const P=null!=new L({xdomain:!1}).responseType;class j extends f{constructor(t,e){super(),v(this,e),this.opts=e,this.method=e.method||"GET",this.uri=t,this.async=!1!==e.async,this.data=void 0!==e.data?e.data:null,this.create()}create(){const t=g(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");t.xdomain=!!this.opts.xd,t.xscheme=!!this.opts.xs;const e=this.xhr=new L(t);try{e.open(this.method,this.uri,this.async);try{if(this.opts.extraHeaders){e.setDisableHeaderCheck&&e.setDisableHeaderCheck(!0);for(let t in this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(t)&&e.setRequestHeader(t,this.opts.extraHeaders[t])}}catch(t){}if("POST"===this.method)try{e.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(t){}try{e.setRequestHeader("Accept","*/*")}catch(t){}"withCredentials"in e&&(e.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(e.timeout=this.opts.requestTimeout),e.onreadystatechange=()=>{4===e.readyState&&(200===e.status||1223===e.status?this.onLoad():this.setTimeoutFn((()=>{this.onError("number"==typeof e.status?e.status:0)}),0))},e.send(this.data)}catch(t){return void this.setTimeoutFn((()=>{this.onError(t)}),0)}"undefined"!=typeof document&&(this.index=j.requestsCount++,j.requests[this.index]=this)}onError(t){this.emitReserved("error",t,this.xhr),this.cleanup(!0)}cleanup(t){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=S,t)try{this.xhr.abort()}catch(t){}"undefined"!=typeof document&&delete j.requests[this.index],this.xhr=null}}onLoad(){const t=this.xhr.responseText;null!==t&&(this.emitReserved("data",t),this.emitReserved("success"),this.cleanup())}abort(){this.cleanup()}}if(j.requestsCount=0,j.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",q);else if("function"==typeof addEventListener){addEventListener("onpagehide"in y?"pagehide":"unload",q,!1)}function q(){for(let t in j.requests)j.requests.hasOwnProperty(t)&&j.requests[t].abort()}const I="function"==typeof Promise&&"function"==typeof Promise.resolve?t=>Promise.resolve().then(t):(t,e)=>e(t,0),D=y.WebSocket||y.MozWebSocket,F="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();const M={websocket:class extends w{constructor(t){super(t),this.supportsBinary=!t.forceBase64}get name(){return"websocket"}doOpen(){if(!this.check())return;const t=this.uri(),e=this.opts.protocols,s=F?{}:g(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(s.headers=this.opts.extraHeaders);try{this.ws=F?new D(t,e,s):e?new D(t,e):new D(t)}catch(t){return this.emitReserved("error",t)}this.ws.binaryType=this.socket.binaryType||"arraybuffer",this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=t=>this.onClose({description:"websocket connection closed",context:t}),this.ws.onmessage=t=>this.onData(t.data),this.ws.onerror=t=>this.onError("websocket error",t)}write(t){this.writable=!1;for(let e=0;e{try{this.ws.send(t)}catch(t){}n&&I((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}uri(){let t=this.query||{};const e=this.opts.secure?"wss":"ws";let s="";this.opts.port&&("wss"===e&&443!==Number(this.opts.port)||"ws"===e&&80!==Number(this.opts.port))&&(s=":"+this.opts.port),this.opts.timestampRequests&&(t[this.opts.timestampParam]=T()),this.supportsBinary||(t.b64=1);const n=B(t);return e+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+s+this.opts.path+(n.length?"?"+n:"")}check(){return!!D}},polling:class extends w{constructor(t){if(super(t),this.polling=!1,"undefined"!=typeof location){const e="https:"===location.protocol;let s=location.port;s||(s=e?"443":"80"),this.xd="undefined"!=typeof location&&t.hostname!==location.hostname||s!==t.port,this.xs=t.secure!==e}const e=t&&t.forceBase64;this.supportsBinary=P&&!e}get name(){return"polling"}doOpen(){this.poll()}pause(t){this.readyState="pausing";const e=()=>{this.readyState="paused",t()};if(this.polling||!this.writable){let t=0;this.polling&&(t++,this.once("pollComplete",(function(){--t||e()}))),this.writable||(t++,this.once("drain",(function(){--t||e()})))}else e()}poll(){this.polling=!0,this.doPoll(),this.emitReserved("poll")}onData(t){((t,e)=>{const s=t.split(d),n=[];for(let t=0;t{if("opening"===this.readyState&&"open"===t.type&&this.onOpen(),"close"===t.type)return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(t)})),"closed"!==this.readyState&&(this.polling=!1,this.emitReserved("pollComplete"),"open"===this.readyState&&this.poll())}doClose(){const t=()=>{this.write([{type:"close"}])};"open"===this.readyState?t():this.once("open",t)}write(t){this.writable=!1,((t,e)=>{const s=t.length,n=new Array(s);let i=0;t.forEach(((t,o)=>{r(t,!1,(t=>{n[o]=t,++i===s&&e(n.join(d))}))}))})(t,(t=>{this.doWrite(t,(()=>{this.writable=!0,this.emitReserved("drain")}))}))}uri(){let t=this.query||{};const e=this.opts.secure?"https":"http";let s="";!1!==this.opts.timestampRequests&&(t[this.opts.timestampParam]=T()),this.supportsBinary||t.sid||(t.b64=1),this.opts.port&&("https"===e&&443!==Number(this.opts.port)||"http"===e&&80!==Number(this.opts.port))&&(s=":"+this.opts.port);const n=B(t);return e+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+s+this.opts.path+(n.length?"?"+n:"")}request(t={}){return Object.assign(t,{xd:this.xd,xs:this.xs},this.opts),new j(this.uri(),t)}doWrite(t,e){const s=this.request({method:"POST",data:t});s.on("success",e),s.on("error",((t,e)=>{this.onError("xhr post error",t,e)}))}doPoll(){const t=this.request();t.on("data",this.onData.bind(this)),t.on("error",((t,e)=>{this.onError("xhr poll error",t,e)})),this.pollXhr=t}}},U=/^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,V=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function H(t){const e=t,s=t.indexOf("["),n=t.indexOf("]");-1!=s&&-1!=n&&(t=t.substring(0,s)+t.substring(s,n).replace(/:/g,";")+t.substring(n,t.length));let i=U.exec(t||""),r={},o=14;for(;o--;)r[V[o]]=i[o]||"";return-1!=s&&-1!=n&&(r.source=e,r.host=r.host.substring(1,r.host.length-1).replace(/;/g,":"),r.authority=r.authority.replace("[","").replace("]","").replace(/;/g,":"),r.ipv6uri=!0),r.pathNames=function(t,e){const s=/\/{2,9}/g,n=e.replace(s,"/").split("/");"/"!=e.slice(0,1)&&0!==e.length||n.splice(0,1);"/"==e.slice(-1)&&n.splice(n.length-1,1);return n}(0,r.path),r.queryKey=function(t,e){const s={};return e.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(t,e,n){e&&(s[e]=n)})),s}(0,r.query),r}class K extends f{constructor(t,e={}){super(),t&&"object"==typeof t&&(e=t,t=null),t?(t=H(t),e.hostname=t.host,e.secure="https"===t.protocol||"wss"===t.protocol,e.port=t.port,t.query&&(e.query=t.query)):e.host&&(e.hostname=H(e.host).host),v(this,e),this.secure=null!=e.secure?e.secure:"undefined"!=typeof location&&"https:"===location.protocol,e.hostname&&!e.port&&(e.port=this.secure?"443":"80"),this.hostname=e.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=e.port||("undefined"!=typeof location&&location.port?location.port:this.secure?"443":"80"),this.transports=e.transports||["polling","websocket"],this.readyState="",this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!0},e),this.opts.path=this.opts.path.replace(/\/$/,"")+"/","string"==typeof this.opts.query&&(this.opts.query=function(t){let e={},s=t.split("&");for(let t=0,n=s.length;t{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this.beforeunloadEventListener,!1)),"localhost"!==this.hostname&&(this.offlineEventListener=()=>{this.onClose("transport close",{description:"network connection lost"})},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(t){const e=Object.assign({},this.opts.query);e.EIO=4,e.transport=t,this.id&&(e.sid=this.id);const s=Object.assign({},this.opts.transportOptions[t],this.opts,{query:e,socket:this,hostname:this.hostname,secure:this.secure,port:this.port});return new M[t](s)}open(){let t;if(this.opts.rememberUpgrade&&K.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))t="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((()=>{this.emitReserved("error","No transports available")}),0);t=this.transports[0]}this.readyState="opening";try{t=this.createTransport(t)}catch(t){return this.transports.shift(),void this.open()}t.open(),this.setTransport(t)}setTransport(t){this.transport&&this.transport.removeAllListeners(),this.transport=t,t.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",(t=>this.onClose("transport close",t)))}probe(t){let e=this.createTransport(t),s=!1;K.priorWebsocketSuccess=!1;const n=()=>{s||(e.send([{type:"ping",data:"probe"}]),e.once("packet",(t=>{if(!s)if("pong"===t.type&&"probe"===t.data){if(this.upgrading=!0,this.emitReserved("upgrading",e),!e)return;K.priorWebsocketSuccess="websocket"===e.name,this.transport.pause((()=>{s||"closed"!==this.readyState&&(c(),this.setTransport(e),e.send([{type:"upgrade"}]),this.emitReserved("upgrade",e),e=null,this.upgrading=!1,this.flush())}))}else{const t=new Error("probe error");t.transport=e.name,this.emitReserved("upgradeError",t)}})))};function i(){s||(s=!0,c(),e.close(),e=null)}const r=t=>{const s=new Error("probe error: "+t);s.transport=e.name,i(),this.emitReserved("upgradeError",s)};function o(){r("transport closed")}function h(){r("socket closed")}function a(t){e&&t.name!==e.name&&i()}const c=()=>{e.removeListener("open",n),e.removeListener("error",r),e.removeListener("close",o),this.off("close",h),this.off("upgrading",a)};e.once("open",n),e.once("error",r),e.once("close",o),this.once("close",h),this.once("upgrading",a),e.open()}onOpen(){if(this.readyState="open",K.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade&&this.transport.pause){let t=0;const e=this.upgrades.length;for(;t{this.onClose("ping timeout")}),this.pingInterval+this.pingTimeout),this.opts.autoUnref&&this.pingTimeoutTimer.unref()}onDrain(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()}flush(){if("closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const t=this.getWritablePackets();this.transport.send(t),this.prevBufferLen=t.length,this.emitReserved("flush")}}getWritablePackets(){if(!(this.maxPayload&&"polling"===this.transport.name&&this.writeBuffer.length>1))return this.writeBuffer;let t=1;for(let s=0;s=57344?s+=3:(n++,s+=4);return s}(e):Math.ceil(1.33*(e.byteLength||e.size))),s>0&&t>this.maxPayload)return this.writeBuffer.slice(0,s);t+=2}var e;return this.writeBuffer}write(t,e,s){return this.sendPacket("message",t,e,s),this}send(t,e,s){return this.sendPacket("message",t,e,s),this}sendPacket(t,e,s,n){if("function"==typeof e&&(n=e,e=void 0),"function"==typeof s&&(n=s,s=null),"closing"===this.readyState||"closed"===this.readyState)return;(s=s||{}).compress=!1!==s.compress;const i={type:t,data:e,options:s};this.emitReserved("packetCreate",i),this.writeBuffer.push(i),n&&this.once("flush",n),this.flush()}close(){const t=()=>{this.onClose("forced close"),this.transport.close()},e=()=>{this.off("upgrade",e),this.off("upgradeError",e),t()},s=()=>{this.once("upgrade",e),this.once("upgradeError",e)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(()=>{this.upgrading?s():t()})):this.upgrading?s():t()),this}onError(t){K.priorWebsocketSuccess=!1,this.emitReserved("error",t),this.onClose("transport error",t)}onClose(t,e){"opening"!==this.readyState&&"open"!==this.readyState&&"closing"!==this.readyState||(this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),"function"==typeof removeEventListener&&(removeEventListener("beforeunload",this.beforeunloadEventListener,!1),removeEventListener("offline",this.offlineEventListener,!1)),this.readyState="closed",this.id=null,this.emitReserved("close",t,e),this.writeBuffer=[],this.prevBufferLen=0)}filterUpgrades(t){const e=[];let s=0;const n=t.length;for(;s"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(t):t.buffer instanceof ArrayBuffer)(t))||W&&t instanceof Blob||$&&t instanceof File}function X(t,e){if(!t||"object"!=typeof t)return!1;if(Array.isArray(t)){for(let e=0,s=t.length;e0;case st.ACK:case st.BINARY_ACK:return Array.isArray(e)}}destroy(){this.reconstructor&&this.reconstructor.finishedReconstruction()}}class it{constructor(t){this.packet=t,this.buffers=[],this.reconPack=t}takeBinaryData(t){if(this.buffers.push(t),this.buffers.length===this.reconPack.attachments){const t=Z(this.reconPack,this.buffers);return this.finishedReconstruction(),t}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}var rt=Object.freeze({__proto__:null,protocol:5,get PacketType(){return st},Encoder:class{constructor(t){this.replacer=t}encode(t){return t.type!==st.EVENT&&t.type!==st.ACK||!X(t)?[this.encodeAsString(t)]:(t.type=t.type===st.EVENT?st.BINARY_EVENT:st.BINARY_ACK,this.encodeAsBinary(t))}encodeAsString(t){let e=""+t.type;return t.type!==st.BINARY_EVENT&&t.type!==st.BINARY_ACK||(e+=t.attachments+"-"),t.nsp&&"/"!==t.nsp&&(e+=t.nsp+","),null!=t.id&&(e+=t.id),null!=t.data&&(e+=JSON.stringify(t.data,this.replacer)),e}encodeAsBinary(t){const e=G(t),s=this.encodeAsString(e.packet),n=e.buffers;return n.unshift(s),n}},Decoder:nt});function ot(t,e,s){return t.on(e,s),function(){t.off(e,s)}}const ht=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class at extends f{constructor(t,e,s){super(),this.connected=!1,this.receiveBuffer=[],this.sendBuffer=[],this.ids=0,this.acks={},this.flags={},this.io=t,this.nsp=e,s&&s.auth&&(this.auth=s.auth),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;const t=this.io;this.subs=[ot(t,"open",this.onopen.bind(this)),ot(t,"packet",this.onpacket.bind(this)),ot(t,"error",this.onerror.bind(this)),ot(t,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected||(this.subEvents(),this.io._reconnecting||this.io.open(),"open"===this.io._readyState&&this.onopen()),this}open(){return this.connect()}send(...t){return t.unshift("message"),this.emit.apply(this,t),this}emit(t,...e){if(ht.hasOwnProperty(t))throw new Error('"'+t.toString()+'" is a reserved event name');e.unshift(t);const s={type:st.EVENT,data:e,options:{}};if(s.options.compress=!1!==this.flags.compress,"function"==typeof e[e.length-1]){const t=this.ids++,n=e.pop();this._registerAckCallback(t,n),s.id=t}const n=this.io.engine&&this.io.engine.transport&&this.io.engine.transport.writable;return this.flags.volatile&&(!n||!this.connected)||(this.connected?(this.notifyOutgoingListeners(s),this.packet(s)):this.sendBuffer.push(s)),this.flags={},this}_registerAckCallback(t,e){const s=this.flags.timeout;if(void 0===s)return void(this.acks[t]=e);const n=this.io.setTimeoutFn((()=>{delete this.acks[t];for(let e=0;e{this.io.clearTimeoutFn(n),e.apply(this,[null,...t])}}packet(t){t.nsp=this.nsp,this.io._packet(t)}onopen(){"function"==typeof this.auth?this.auth((t=>{this.packet({type:st.CONNECT,data:t})})):this.packet({type:st.CONNECT,data:this.auth})}onerror(t){this.connected||this.emitReserved("connect_error",t)}onclose(t,e){this.connected=!1,delete this.id,this.emitReserved("disconnect",t,e)}onpacket(t){if(t.nsp===this.nsp)switch(t.type){case st.CONNECT:if(t.data&&t.data.sid){const e=t.data.sid;this.onconnect(e)}else this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case st.EVENT:case st.BINARY_EVENT:this.onevent(t);break;case st.ACK:case st.BINARY_ACK:this.onack(t);break;case st.DISCONNECT:this.ondisconnect();break;case st.CONNECT_ERROR:this.destroy();const e=new Error(t.data.message);e.data=t.data.data,this.emitReserved("connect_error",e)}}onevent(t){const e=t.data||[];null!=t.id&&e.push(this.ack(t.id)),this.connected?this.emitEvent(e):this.receiveBuffer.push(Object.freeze(e))}emitEvent(t){if(this._anyListeners&&this._anyListeners.length){const e=this._anyListeners.slice();for(const s of e)s.apply(this,t)}super.emit.apply(this,t)}ack(t){const e=this;let s=!1;return function(...n){s||(s=!0,e.packet({type:st.ACK,id:t,data:n}))}}onack(t){const e=this.acks[t.id];"function"==typeof e&&(e.apply(this,t.data),delete this.acks[t.id])}onconnect(t){this.id=t,this.connected=!0,this.emitBuffered(),this.emitReserved("connect")}emitBuffered(){this.receiveBuffer.forEach((t=>this.emitEvent(t))),this.receiveBuffer=[],this.sendBuffer.forEach((t=>{this.notifyOutgoingListeners(t),this.packet(t)})),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach((t=>t())),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:st.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(t){return this.flags.compress=t,this}get volatile(){return this.flags.volatile=!0,this}timeout(t){return this.flags.timeout=t,this}onAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(t),this}prependAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(t),this}offAny(t){if(!this._anyListeners)return this;if(t){const e=this._anyListeners;for(let s=0;s0&&t.jitter<=1?t.jitter:0,this.attempts=0}ct.prototype.duration=function(){var t=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var e=Math.random(),s=Math.floor(e*this.jitter*t);t=0==(1&Math.floor(10*e))?t-s:t+s}return 0|Math.min(t,this.max)},ct.prototype.reset=function(){this.attempts=0},ct.prototype.setMin=function(t){this.ms=t},ct.prototype.setMax=function(t){this.max=t},ct.prototype.setJitter=function(t){this.jitter=t};class pt extends f{constructor(t,e){var s;super(),this.nsps={},this.subs=[],t&&"object"==typeof t&&(e=t,t=void 0),(e=e||{}).path=e.path||"/socket.io",this.opts=e,v(this,e),this.reconnection(!1!==e.reconnection),this.reconnectionAttempts(e.reconnectionAttempts||1/0),this.reconnectionDelay(e.reconnectionDelay||1e3),this.reconnectionDelayMax(e.reconnectionDelayMax||5e3),this.randomizationFactor(null!==(s=e.randomizationFactor)&&void 0!==s?s:.5),this.backoff=new ct({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==e.timeout?2e4:e.timeout),this._readyState="closed",this.uri=t;const n=e.parser||rt;this.encoder=new n.Encoder,this.decoder=new n.Decoder,this._autoConnect=!1!==e.autoConnect,this._autoConnect&&this.open()}reconnection(t){return arguments.length?(this._reconnection=!!t,this):this._reconnection}reconnectionAttempts(t){return void 0===t?this._reconnectionAttempts:(this._reconnectionAttempts=t,this)}reconnectionDelay(t){var e;return void 0===t?this._reconnectionDelay:(this._reconnectionDelay=t,null===(e=this.backoff)||void 0===e||e.setMin(t),this)}randomizationFactor(t){var e;return void 0===t?this._randomizationFactor:(this._randomizationFactor=t,null===(e=this.backoff)||void 0===e||e.setJitter(t),this)}reconnectionDelayMax(t){var e;return void 0===t?this._reconnectionDelayMax:(this._reconnectionDelayMax=t,null===(e=this.backoff)||void 0===e||e.setMax(t),this)}timeout(t){return arguments.length?(this._timeout=t,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}open(t){if(~this._readyState.indexOf("open"))return this;this.engine=new K(this.uri,this.opts);const e=this.engine,s=this;this._readyState="opening",this.skipReconnect=!1;const n=ot(e,"open",(function(){s.onopen(),t&&t()})),i=ot(e,"error",(e=>{s.cleanup(),s._readyState="closed",this.emitReserved("error",e),t?t(e):s.maybeReconnectOnOpen()}));if(!1!==this._timeout){const t=this._timeout;0===t&&n();const s=this.setTimeoutFn((()=>{n(),e.close(),e.emit("error",new Error("timeout"))}),t);this.opts.autoUnref&&s.unref(),this.subs.push((function(){clearTimeout(s)}))}return this.subs.push(n),this.subs.push(i),this}connect(t){return this.open(t)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const t=this.engine;this.subs.push(ot(t,"ping",this.onping.bind(this)),ot(t,"data",this.ondata.bind(this)),ot(t,"error",this.onerror.bind(this)),ot(t,"close",this.onclose.bind(this)),ot(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(t){try{this.decoder.add(t)}catch(t){this.onclose("parse error",t)}}ondecoded(t){I((()=>{this.emitReserved("packet",t)}),this.setTimeoutFn)}onerror(t){this.emitReserved("error",t)}socket(t,e){let s=this.nsps[t];return s||(s=new at(this,t,e),this.nsps[t]=s),s}_destroy(t){const e=Object.keys(this.nsps);for(const t of e){if(this.nsps[t].active)return}this._close()}_packet(t){const e=this.encoder.encode(t);for(let s=0;st())),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close"),this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(t,e){this.cleanup(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",t,e),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const t=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const e=this.backoff.duration();this._reconnecting=!0;const s=this.setTimeoutFn((()=>{t.skipReconnect||(this.emitReserved("reconnect_attempt",t.backoff.attempts),t.skipReconnect||t.open((e=>{e?(t._reconnecting=!1,t.reconnect(),this.emitReserved("reconnect_error",e)):t.onreconnect()})))}),e);this.opts.autoUnref&&s.unref(),this.subs.push((function(){clearTimeout(s)}))}}onreconnect(){const t=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",t)}}const ut={};function lt(t,e){"object"==typeof t&&(e=t,t=void 0);const s=function(t,e="",s){let n=t;s=s||"undefined"!=typeof location&&location,null==t&&(t=s.protocol+"//"+s.host),"string"==typeof t&&("/"===t.charAt(0)&&(t="/"===t.charAt(1)?s.protocol+t:s.host+t),/^(https?|wss?):\/\//.test(t)||(t=void 0!==s?s.protocol+"//"+t:"https://"+t),n=H(t)),n.port||(/^(http|ws)$/.test(n.protocol)?n.port="80":/^(http|ws)s$/.test(n.protocol)&&(n.port="443")),n.path=n.path||"/";const i=-1!==n.host.indexOf(":")?"["+n.host+"]":n.host;return n.id=n.protocol+"://"+i+":"+n.port+e,n.href=n.protocol+"://"+i+(s&&s.port===n.port?"":":"+n.port),n}(t,(e=e||{}).path||"/socket.io"),n=s.source,i=s.id,r=s.path,o=ut[i]&&r in ut[i].nsps;let h;return e.forceNew||e["force new connection"]||!1===e.multiplex||o?h=new pt(n,e):(ut[i]||(ut[i]=new pt(n,e)),h=ut[i]),s.query&&!e.query&&(e.query=s.queryKey),h.socket(s.path,e)}Object.assign(lt,{Manager:pt,Socket:at,io:lt,connect:lt});export{pt as Manager,at as Socket,lt as connect,lt as default,lt as io,et as protocol}; +//# sourceMappingURL=socket.io.esm.min.js.map diff --git a/vendor/socketio/socket.io.esm.min.js.map b/vendor/socketio/socket.io.esm.min.js.map new file mode 100644 index 000000000..db18891d9 --- /dev/null +++ b/vendor/socketio/socket.io.esm.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"socket.io.esm.min.js","sources":["../node_modules/engine.io-parser/build/esm/commons.js","../node_modules/engine.io-parser/build/esm/encodePacket.browser.js","../node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.js","../node_modules/engine.io-parser/build/esm/decodePacket.browser.js","../node_modules/engine.io-parser/build/esm/index.js","../node_modules/@socket.io/component-emitter/index.mjs","../node_modules/engine.io-client/build/esm/globalThis.browser.js","../node_modules/engine.io-client/build/esm/util.js","../node_modules/engine.io-client/build/esm/transport.js","../node_modules/engine.io-client/build/esm/contrib/yeast.js","../node_modules/engine.io-client/build/esm/contrib/parseqs.js","../node_modules/engine.io-client/build/esm/contrib/has-cors.js","../node_modules/engine.io-client/build/esm/transports/xmlhttprequest.browser.js","../node_modules/engine.io-client/build/esm/transports/polling.js","../node_modules/engine.io-client/build/esm/transports/websocket-constructor.browser.js","../node_modules/engine.io-client/build/esm/transports/websocket.js","../node_modules/engine.io-client/build/esm/transports/index.js","../node_modules/engine.io-client/build/esm/contrib/parseuri.js","../node_modules/engine.io-client/build/esm/socket.js","../node_modules/socket.io-parser/build/esm/is-binary.js","../node_modules/socket.io-parser/build/esm/binary.js","../node_modules/socket.io-parser/build/esm/index.js","../build/esm/on.js","../build/esm/socket.js","../build/esm/contrib/backo2.js","../build/esm/manager.js","../build/esm/index.js","../build/esm/url.js"],"sourcesContent":["const PACKET_TYPES = Object.create(null); // no Map = no polyfill\nPACKET_TYPES[\"open\"] = \"0\";\nPACKET_TYPES[\"close\"] = \"1\";\nPACKET_TYPES[\"ping\"] = \"2\";\nPACKET_TYPES[\"pong\"] = \"3\";\nPACKET_TYPES[\"message\"] = \"4\";\nPACKET_TYPES[\"upgrade\"] = \"5\";\nPACKET_TYPES[\"noop\"] = \"6\";\nconst PACKET_TYPES_REVERSE = Object.create(null);\nObject.keys(PACKET_TYPES).forEach(key => {\n PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nconst ERROR_PACKET = { type: \"error\", data: \"parser error\" };\nexport { PACKET_TYPES, PACKET_TYPES_REVERSE, ERROR_PACKET };\n","import { PACKET_TYPES } from \"./commons.js\";\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n// ArrayBuffer.isView method is not defined in IE10\nconst isView = obj => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj && obj.buffer instanceof ArrayBuffer;\n};\nconst encodePacket = ({ type, data }, supportsBinary, callback) => {\n if (withNativeBlob && data instanceof Blob) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(data, callback);\n }\n }\n else if (withNativeArrayBuffer &&\n (data instanceof ArrayBuffer || isView(data))) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(new Blob([data]), callback);\n }\n }\n // plain string\n return callback(PACKET_TYPES[type] + (data || \"\"));\n};\nconst encodeBlobAsBase64 = (data, callback) => {\n const fileReader = new FileReader();\n fileReader.onload = function () {\n const content = fileReader.result.split(\",\")[1];\n callback(\"b\" + content);\n };\n return fileReader.readAsDataURL(data);\n};\nexport default encodePacket;\n","const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nexport const encode = (arraybuffer) => {\n let bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nexport const decode = (base64) => {\n let bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n const arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n","import { ERROR_PACKET, PACKET_TYPES_REVERSE } from \"./commons.js\";\nimport { decode } from \"./contrib/base64-arraybuffer.js\";\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst decodePacket = (encodedPacket, binaryType) => {\n if (typeof encodedPacket !== \"string\") {\n return {\n type: \"message\",\n data: mapBinary(encodedPacket, binaryType)\n };\n }\n const type = encodedPacket.charAt(0);\n if (type === \"b\") {\n return {\n type: \"message\",\n data: decodeBase64Packet(encodedPacket.substring(1), binaryType)\n };\n }\n const packetType = PACKET_TYPES_REVERSE[type];\n if (!packetType) {\n return ERROR_PACKET;\n }\n return encodedPacket.length > 1\n ? {\n type: PACKET_TYPES_REVERSE[type],\n data: encodedPacket.substring(1)\n }\n : {\n type: PACKET_TYPES_REVERSE[type]\n };\n};\nconst decodeBase64Packet = (data, binaryType) => {\n if (withNativeArrayBuffer) {\n const decoded = decode(data);\n return mapBinary(decoded, binaryType);\n }\n else {\n return { base64: true, data }; // fallback for old browsers\n }\n};\nconst mapBinary = (data, binaryType) => {\n switch (binaryType) {\n case \"blob\":\n return data instanceof ArrayBuffer ? new Blob([data]) : data;\n case \"arraybuffer\":\n default:\n return data; // assuming the data is already an ArrayBuffer\n }\n};\nexport default decodePacket;\n","import encodePacket from \"./encodePacket.js\";\nimport decodePacket from \"./decodePacket.js\";\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst encodePayload = (packets, callback) => {\n // some packets may be added to the array while encoding, so the initial length must be saved\n const length = packets.length;\n const encodedPackets = new Array(length);\n let count = 0;\n packets.forEach((packet, i) => {\n // force base64 encoding for binary packets\n encodePacket(packet, false, encodedPacket => {\n encodedPackets[i] = encodedPacket;\n if (++count === length) {\n callback(encodedPackets.join(SEPARATOR));\n }\n });\n });\n};\nconst decodePayload = (encodedPayload, binaryType) => {\n const encodedPackets = encodedPayload.split(SEPARATOR);\n const packets = [];\n for (let i = 0; i < encodedPackets.length; i++) {\n const decodedPacket = decodePacket(encodedPackets[i], binaryType);\n packets.push(decodedPacket);\n if (decodedPacket.type === \"error\") {\n break;\n }\n }\n return packets;\n};\nexport const protocol = 4;\nexport { encodePacket, encodePayload, decodePacket, decodePayload };\n","/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nexport function Emitter(obj) {\n if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n function on() {\n this.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks['$' + event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks['$' + event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n // Remove event specific arrays for event types that no\n // one is subscribed for to avoid memory leak.\n if (callbacks.length === 0) {\n delete this._callbacks['$' + event];\n }\n\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n\n var args = new Array(arguments.length - 1)\n , callbacks = this._callbacks['$' + event];\n\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n// alias used for reserved events (protected method)\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks['$' + event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","export const globalThisShim = (() => {\n if (typeof self !== \"undefined\") {\n return self;\n }\n else if (typeof window !== \"undefined\") {\n return window;\n }\n else {\n return Function(\"return this\")();\n }\n})();\n","import { globalThisShim as globalThis } from \"./globalThis.js\";\nexport function pick(obj, ...attr) {\n return attr.reduce((acc, k) => {\n if (obj.hasOwnProperty(k)) {\n acc[k] = obj[k];\n }\n return acc;\n }, {});\n}\n// Keep a reference to the real timeout functions so they can be used when overridden\nconst NATIVE_SET_TIMEOUT = setTimeout;\nconst NATIVE_CLEAR_TIMEOUT = clearTimeout;\nexport function installTimerFunctions(obj, opts) {\n if (opts.useNativeTimers) {\n obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globalThis);\n obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globalThis);\n }\n else {\n obj.setTimeoutFn = setTimeout.bind(globalThis);\n obj.clearTimeoutFn = clearTimeout.bind(globalThis);\n }\n}\n// base64 encoded buffers are about 33% bigger (https://en.wikipedia.org/wiki/Base64)\nconst BASE64_OVERHEAD = 1.33;\n// we could also have used `new Blob([obj]).size`, but it isn't supported in IE9\nexport function byteLength(obj) {\n if (typeof obj === \"string\") {\n return utf8Length(obj);\n }\n // arraybuffer or blob\n return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD);\n}\nfunction utf8Length(str) {\n let c = 0, length = 0;\n for (let i = 0, l = str.length; i < l; i++) {\n c = str.charCodeAt(i);\n if (c < 0x80) {\n length += 1;\n }\n else if (c < 0x800) {\n length += 2;\n }\n else if (c < 0xd800 || c >= 0xe000) {\n length += 3;\n }\n else {\n i++;\n length += 4;\n }\n }\n return length;\n}\n","import { decodePacket } from \"engine.io-parser\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions } from \"./util.js\";\nclass TransportError extends Error {\n constructor(reason, description, context) {\n super(reason);\n this.description = description;\n this.context = context;\n this.type = \"TransportError\";\n }\n}\nexport class Transport extends Emitter {\n /**\n * Transport abstract constructor.\n *\n * @param {Object} options.\n * @api private\n */\n constructor(opts) {\n super();\n this.writable = false;\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.query = opts.query;\n this.readyState = \"\";\n this.socket = opts.socket;\n }\n /**\n * Emits an error.\n *\n * @param {String} reason\n * @param description\n * @param context - the error context\n * @return {Transport} for chaining\n * @api protected\n */\n onError(reason, description, context) {\n super.emitReserved(\"error\", new TransportError(reason, description, context));\n return this;\n }\n /**\n * Opens the transport.\n *\n * @api public\n */\n open() {\n if (\"closed\" === this.readyState || \"\" === this.readyState) {\n this.readyState = \"opening\";\n this.doOpen();\n }\n return this;\n }\n /**\n * Closes the transport.\n *\n * @api public\n */\n close() {\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.doClose();\n this.onClose();\n }\n return this;\n }\n /**\n * Sends multiple packets.\n *\n * @param {Array} packets\n * @api public\n */\n send(packets) {\n if (\"open\" === this.readyState) {\n this.write(packets);\n }\n else {\n // this might happen if the transport was silently closed in the beforeunload event handler\n }\n }\n /**\n * Called upon open\n *\n * @api protected\n */\n onOpen() {\n this.readyState = \"open\";\n this.writable = true;\n super.emitReserved(\"open\");\n }\n /**\n * Called with data.\n *\n * @param {String} data\n * @api protected\n */\n onData(data) {\n const packet = decodePacket(data, this.socket.binaryType);\n this.onPacket(packet);\n }\n /**\n * Called with a decoded packet.\n *\n * @api protected\n */\n onPacket(packet) {\n super.emitReserved(\"packet\", packet);\n }\n /**\n * Called upon close.\n *\n * @api protected\n */\n onClose(details) {\n this.readyState = \"closed\";\n super.emitReserved(\"close\", details);\n }\n}\n","// imported from https://github.com/unshiftio/yeast\n'use strict';\nconst alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split(''), length = 64, map = {};\nlet seed = 0, i = 0, prev;\n/**\n * Return a string representing the specified number.\n *\n * @param {Number} num The number to convert.\n * @returns {String} The string representation of the number.\n * @api public\n */\nexport function encode(num) {\n let encoded = '';\n do {\n encoded = alphabet[num % length] + encoded;\n num = Math.floor(num / length);\n } while (num > 0);\n return encoded;\n}\n/**\n * Return the integer value specified by the given string.\n *\n * @param {String} str The string to convert.\n * @returns {Number} The integer value represented by the string.\n * @api public\n */\nexport function decode(str) {\n let decoded = 0;\n for (i = 0; i < str.length; i++) {\n decoded = decoded * length + map[str.charAt(i)];\n }\n return decoded;\n}\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\nexport function yeast() {\n const now = encode(+new Date());\n if (now !== prev)\n return seed = 0, prev = now;\n return now + '.' + encode(seed++);\n}\n//\n// Map each character to its index.\n//\nfor (; i < length; i++)\n map[alphabet[i]] = i;\n","// imported from https://github.com/galkn/querystring\n/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */\nexport function encode(obj) {\n let str = '';\n for (let i in obj) {\n if (obj.hasOwnProperty(i)) {\n if (str.length)\n str += '&';\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n }\n }\n return str;\n}\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */\nexport function decode(qs) {\n let qry = {};\n let pairs = qs.split('&');\n for (let i = 0, l = pairs.length; i < l; i++) {\n let pair = pairs[i].split('=');\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n return qry;\n}\n","// imported from https://github.com/component/has-cors\nlet value = false;\ntry {\n value = typeof XMLHttpRequest !== 'undefined' &&\n 'withCredentials' in new XMLHttpRequest();\n}\ncatch (err) {\n // if XMLHttp support is disabled in IE then it will throw\n // when trying to create\n}\nexport const hasCORS = value;\n","// browser shim for xmlhttprequest module\nimport { hasCORS } from \"../contrib/has-cors.js\";\nimport { globalThisShim as globalThis } from \"../globalThis.js\";\nexport function XHR(opts) {\n const xdomain = opts.xdomain;\n // XMLHttpRequest can be disabled on IE\n try {\n if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n }\n catch (e) { }\n if (!xdomain) {\n try {\n return new globalThis[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n }\n catch (e) { }\n }\n}\n","import { Transport } from \"../transport.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { encode } from \"../contrib/parseqs.js\";\nimport { encodePayload, decodePayload } from \"engine.io-parser\";\nimport { XHR as XMLHttpRequest } from \"./xmlhttprequest.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions, pick } from \"../util.js\";\nimport { globalThisShim as globalThis } from \"../globalThis.js\";\nfunction empty() { }\nconst hasXHR2 = (function () {\n const xhr = new XMLHttpRequest({\n xdomain: false\n });\n return null != xhr.responseType;\n})();\nexport class Polling extends Transport {\n /**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @api public\n */\n constructor(opts) {\n super(opts);\n this.polling = false;\n if (typeof location !== \"undefined\") {\n const isSSL = \"https:\" === location.protocol;\n let port = location.port;\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? \"443\" : \"80\";\n }\n this.xd =\n (typeof location !== \"undefined\" &&\n opts.hostname !== location.hostname) ||\n port !== opts.port;\n this.xs = opts.secure !== isSSL;\n }\n /**\n * XHR supports binary\n */\n const forceBase64 = opts && opts.forceBase64;\n this.supportsBinary = hasXHR2 && !forceBase64;\n }\n /**\n * Transport name.\n */\n get name() {\n return \"polling\";\n }\n /**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @api private\n */\n doOpen() {\n this.poll();\n }\n /**\n * Pauses polling.\n *\n * @param {Function} callback upon buffers are flushed and transport is paused\n * @api private\n */\n pause(onPause) {\n this.readyState = \"pausing\";\n const pause = () => {\n this.readyState = \"paused\";\n onPause();\n };\n if (this.polling || !this.writable) {\n let total = 0;\n if (this.polling) {\n total++;\n this.once(\"pollComplete\", function () {\n --total || pause();\n });\n }\n if (!this.writable) {\n total++;\n this.once(\"drain\", function () {\n --total || pause();\n });\n }\n }\n else {\n pause();\n }\n }\n /**\n * Starts polling cycle.\n *\n * @api public\n */\n poll() {\n this.polling = true;\n this.doPoll();\n this.emitReserved(\"poll\");\n }\n /**\n * Overloads onData to detect payloads.\n *\n * @api private\n */\n onData(data) {\n const callback = packet => {\n // if its the first message we consider the transport open\n if (\"opening\" === this.readyState && packet.type === \"open\") {\n this.onOpen();\n }\n // if its a close packet, we close the ongoing requests\n if (\"close\" === packet.type) {\n this.onClose({ description: \"transport closed by the server\" });\n return false;\n }\n // otherwise bypass onData and handle the message\n this.onPacket(packet);\n };\n // decode payload\n decodePayload(data, this.socket.binaryType).forEach(callback);\n // if an event did not trigger closing\n if (\"closed\" !== this.readyState) {\n // if we got data we're not polling\n this.polling = false;\n this.emitReserved(\"pollComplete\");\n if (\"open\" === this.readyState) {\n this.poll();\n }\n else {\n }\n }\n }\n /**\n * For polling, send a close packet.\n *\n * @api private\n */\n doClose() {\n const close = () => {\n this.write([{ type: \"close\" }]);\n };\n if (\"open\" === this.readyState) {\n close();\n }\n else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n this.once(\"open\", close);\n }\n }\n /**\n * Writes a packets payload.\n *\n * @param {Array} data packets\n * @param {Function} drain callback\n * @api private\n */\n write(packets) {\n this.writable = false;\n encodePayload(packets, data => {\n this.doWrite(data, () => {\n this.writable = true;\n this.emitReserved(\"drain\");\n });\n });\n }\n /**\n * Generates uri for connection.\n *\n * @api private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"https\" : \"http\";\n let port = \"\";\n // cache busting is forced\n if (false !== this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"https\" === schema && Number(this.opts.port) !== 443) ||\n (\"http\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n const encodedQuery = encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n /**\n * Creates a request.\n *\n * @param {String} method\n * @api private\n */\n request(opts = {}) {\n Object.assign(opts, { xd: this.xd, xs: this.xs }, this.opts);\n return new Request(this.uri(), opts);\n }\n /**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @api private\n */\n doWrite(data, fn) {\n const req = this.request({\n method: \"POST\",\n data: data\n });\n req.on(\"success\", fn);\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr post error\", xhrStatus, context);\n });\n }\n /**\n * Starts a poll cycle.\n *\n * @api private\n */\n doPoll() {\n const req = this.request();\n req.on(\"data\", this.onData.bind(this));\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr poll error\", xhrStatus, context);\n });\n this.pollXhr = req;\n }\n}\nexport class Request extends Emitter {\n /**\n * Request constructor\n *\n * @param {Object} options\n * @api public\n */\n constructor(uri, opts) {\n super();\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.method = opts.method || \"GET\";\n this.uri = uri;\n this.async = false !== opts.async;\n this.data = undefined !== opts.data ? opts.data : null;\n this.create();\n }\n /**\n * Creates the XHR object and sends the request.\n *\n * @api private\n */\n create() {\n const opts = pick(this.opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n opts.xdomain = !!this.opts.xd;\n opts.xscheme = !!this.opts.xs;\n const xhr = (this.xhr = new XMLHttpRequest(opts));\n try {\n xhr.open(this.method, this.uri, this.async);\n try {\n if (this.opts.extraHeaders) {\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (let i in this.opts.extraHeaders) {\n if (this.opts.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this.opts.extraHeaders[i]);\n }\n }\n }\n }\n catch (e) { }\n if (\"POST\" === this.method) {\n try {\n xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n }\n catch (e) { }\n }\n try {\n xhr.setRequestHeader(\"Accept\", \"*/*\");\n }\n catch (e) { }\n // ie6 check\n if (\"withCredentials\" in xhr) {\n xhr.withCredentials = this.opts.withCredentials;\n }\n if (this.opts.requestTimeout) {\n xhr.timeout = this.opts.requestTimeout;\n }\n xhr.onreadystatechange = () => {\n if (4 !== xhr.readyState)\n return;\n if (200 === xhr.status || 1223 === xhr.status) {\n this.onLoad();\n }\n else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n this.setTimeoutFn(() => {\n this.onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n }, 0);\n }\n };\n xhr.send(this.data);\n }\n catch (e) {\n // Need to defer since .create() is called directly from the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n this.setTimeoutFn(() => {\n this.onError(e);\n }, 0);\n return;\n }\n if (typeof document !== \"undefined\") {\n this.index = Request.requestsCount++;\n Request.requests[this.index] = this;\n }\n }\n /**\n * Called upon error.\n *\n * @api private\n */\n onError(err) {\n this.emitReserved(\"error\", err, this.xhr);\n this.cleanup(true);\n }\n /**\n * Cleans up house.\n *\n * @api private\n */\n cleanup(fromError) {\n if (\"undefined\" === typeof this.xhr || null === this.xhr) {\n return;\n }\n this.xhr.onreadystatechange = empty;\n if (fromError) {\n try {\n this.xhr.abort();\n }\n catch (e) { }\n }\n if (typeof document !== \"undefined\") {\n delete Request.requests[this.index];\n }\n this.xhr = null;\n }\n /**\n * Called upon load.\n *\n * @api private\n */\n onLoad() {\n const data = this.xhr.responseText;\n if (data !== null) {\n this.emitReserved(\"data\", data);\n this.emitReserved(\"success\");\n this.cleanup();\n }\n }\n /**\n * Aborts the request.\n *\n * @api public\n */\n abort() {\n this.cleanup();\n }\n}\nRequest.requestsCount = 0;\nRequest.requests = {};\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\nif (typeof document !== \"undefined\") {\n // @ts-ignore\n if (typeof attachEvent === \"function\") {\n // @ts-ignore\n attachEvent(\"onunload\", unloadHandler);\n }\n else if (typeof addEventListener === \"function\") {\n const terminationEvent = \"onpagehide\" in globalThis ? \"pagehide\" : \"unload\";\n addEventListener(terminationEvent, unloadHandler, false);\n }\n}\nfunction unloadHandler() {\n for (let i in Request.requests) {\n if (Request.requests.hasOwnProperty(i)) {\n Request.requests[i].abort();\n }\n }\n}\n","import { globalThisShim as globalThis } from \"../globalThis.js\";\nexport const nextTick = (() => {\n const isPromiseAvailable = typeof Promise === \"function\" && typeof Promise.resolve === \"function\";\n if (isPromiseAvailable) {\n return cb => Promise.resolve().then(cb);\n }\n else {\n return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);\n }\n})();\nexport const WebSocket = globalThis.WebSocket || globalThis.MozWebSocket;\nexport const usingBrowserWebSocket = true;\nexport const defaultBinaryType = \"arraybuffer\";\n","import { Transport } from \"../transport.js\";\nimport { encode } from \"../contrib/parseqs.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { pick } from \"../util.js\";\nimport { defaultBinaryType, nextTick, usingBrowserWebSocket, WebSocket } from \"./websocket-constructor.js\";\nimport { encodePacket } from \"engine.io-parser\";\n// detect ReactNative environment\nconst isReactNative = typeof navigator !== \"undefined\" &&\n typeof navigator.product === \"string\" &&\n navigator.product.toLowerCase() === \"reactnative\";\nexport class WS extends Transport {\n /**\n * WebSocket transport constructor.\n *\n * @api {Object} connection options\n * @api public\n */\n constructor(opts) {\n super(opts);\n this.supportsBinary = !opts.forceBase64;\n }\n /**\n * Transport name.\n *\n * @api public\n */\n get name() {\n return \"websocket\";\n }\n /**\n * Opens socket.\n *\n * @api private\n */\n doOpen() {\n if (!this.check()) {\n // let probe timeout\n return;\n }\n const uri = this.uri();\n const protocols = this.opts.protocols;\n // React Native only supports the 'headers' option, and will print a warning if anything else is passed\n const opts = isReactNative\n ? {}\n : pick(this.opts, \"agent\", \"perMessageDeflate\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"localAddress\", \"protocolVersion\", \"origin\", \"maxPayload\", \"family\", \"checkServerIdentity\");\n if (this.opts.extraHeaders) {\n opts.headers = this.opts.extraHeaders;\n }\n try {\n this.ws =\n usingBrowserWebSocket && !isReactNative\n ? protocols\n ? new WebSocket(uri, protocols)\n : new WebSocket(uri)\n : new WebSocket(uri, protocols, opts);\n }\n catch (err) {\n return this.emitReserved(\"error\", err);\n }\n this.ws.binaryType = this.socket.binaryType || defaultBinaryType;\n this.addEventListeners();\n }\n /**\n * Adds event listeners to the socket\n *\n * @api private\n */\n addEventListeners() {\n this.ws.onopen = () => {\n if (this.opts.autoUnref) {\n this.ws._socket.unref();\n }\n this.onOpen();\n };\n this.ws.onclose = closeEvent => this.onClose({\n description: \"websocket connection closed\",\n context: closeEvent\n });\n this.ws.onmessage = ev => this.onData(ev.data);\n this.ws.onerror = e => this.onError(\"websocket error\", e);\n }\n /**\n * Writes data to socket.\n *\n * @param {Array} array of packets.\n * @api private\n */\n write(packets) {\n this.writable = false;\n // encodePacket efficient as it uses WS framing\n // no need for encodePayload\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n encodePacket(packet, this.supportsBinary, data => {\n // always create a new object (GH-437)\n const opts = {};\n if (!usingBrowserWebSocket) {\n if (packet.options) {\n opts.compress = packet.options.compress;\n }\n if (this.opts.perMessageDeflate) {\n const len = \n // @ts-ignore\n \"string\" === typeof data ? Buffer.byteLength(data) : data.length;\n if (len < this.opts.perMessageDeflate.threshold) {\n opts.compress = false;\n }\n }\n }\n // Sometimes the websocket has already been closed but the browser didn't\n // have a chance of informing us about it yet, in that case send will\n // throw an error\n try {\n if (usingBrowserWebSocket) {\n // TypeError is thrown when passing the second argument on Safari\n this.ws.send(data);\n }\n else {\n this.ws.send(data, opts);\n }\n }\n catch (e) {\n }\n if (lastPacket) {\n // fake drain\n // defer to next tick to allow Socket to clear writeBuffer\n nextTick(() => {\n this.writable = true;\n this.emitReserved(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n /**\n * Closes socket.\n *\n * @api private\n */\n doClose() {\n if (typeof this.ws !== \"undefined\") {\n this.ws.close();\n this.ws = null;\n }\n }\n /**\n * Generates uri for connection.\n *\n * @api private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"wss\" : \"ws\";\n let port = \"\";\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"wss\" === schema && Number(this.opts.port) !== 443) ||\n (\"ws\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n // append timestamp to URI\n if (this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n const encodedQuery = encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n /**\n * Feature detection for WebSocket.\n *\n * @return {Boolean} whether this transport is available.\n * @api public\n */\n check() {\n return !!WebSocket;\n }\n}\n","import { Polling } from \"./polling.js\";\nimport { WS } from \"./websocket.js\";\nexport const transports = {\n websocket: WS,\n polling: Polling\n};\n","// imported from https://github.com/galkn/parseuri\n/**\n * Parses an URI\n *\n * @author Steven Levithan (MIT license)\n * @api private\n */\nconst re = /^(?:(?![^:@]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\nconst parts = [\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\n];\nexport function parse(str) {\n const src = str, b = str.indexOf('['), e = str.indexOf(']');\n if (b != -1 && e != -1) {\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\n }\n let m = re.exec(str || ''), uri = {}, i = 14;\n while (i--) {\n uri[parts[i]] = m[i] || '';\n }\n if (b != -1 && e != -1) {\n uri.source = src;\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\n uri.ipv6uri = true;\n }\n uri.pathNames = pathNames(uri, uri['path']);\n uri.queryKey = queryKey(uri, uri['query']);\n return uri;\n}\nfunction pathNames(obj, path) {\n const regx = /\\/{2,9}/g, names = path.replace(regx, \"/\").split(\"/\");\n if (path.slice(0, 1) == '/' || path.length === 0) {\n names.splice(0, 1);\n }\n if (path.slice(-1) == '/') {\n names.splice(names.length - 1, 1);\n }\n return names;\n}\nfunction queryKey(uri, query) {\n const data = {};\n query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {\n if ($1) {\n data[$1] = $2;\n }\n });\n return data;\n}\n","import { transports } from \"./transports/index.js\";\nimport { installTimerFunctions, byteLength } from \"./util.js\";\nimport { decode } from \"./contrib/parseqs.js\";\nimport { parse } from \"./contrib/parseuri.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { protocol } from \"engine.io-parser\";\nexport class Socket extends Emitter {\n /**\n * Socket constructor.\n *\n * @param {String|Object} uri or options\n * @param {Object} opts - options\n * @api public\n */\n constructor(uri, opts = {}) {\n super();\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = null;\n }\n if (uri) {\n uri = parse(uri);\n opts.hostname = uri.host;\n opts.secure = uri.protocol === \"https\" || uri.protocol === \"wss\";\n opts.port = uri.port;\n if (uri.query)\n opts.query = uri.query;\n }\n else if (opts.host) {\n opts.hostname = parse(opts.host).host;\n }\n installTimerFunctions(this, opts);\n this.secure =\n null != opts.secure\n ? opts.secure\n : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? \"443\" : \"80\";\n }\n this.hostname =\n opts.hostname ||\n (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n this.port =\n opts.port ||\n (typeof location !== \"undefined\" && location.port\n ? location.port\n : this.secure\n ? \"443\"\n : \"80\");\n this.transports = opts.transports || [\"polling\", \"websocket\"];\n this.readyState = \"\";\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n this.opts = Object.assign({\n path: \"/engine.io\",\n agent: false,\n withCredentials: false,\n upgrade: true,\n timestampParam: \"t\",\n rememberUpgrade: false,\n rejectUnauthorized: true,\n perMessageDeflate: {\n threshold: 1024\n },\n transportOptions: {},\n closeOnBeforeunload: true\n }, opts);\n this.opts.path = this.opts.path.replace(/\\/$/, \"\") + \"/\";\n if (typeof this.opts.query === \"string\") {\n this.opts.query = decode(this.opts.query);\n }\n // set on handshake\n this.id = null;\n this.upgrades = null;\n this.pingInterval = null;\n this.pingTimeout = null;\n // set on heartbeat\n this.pingTimeoutTimer = null;\n if (typeof addEventListener === \"function\") {\n if (this.opts.closeOnBeforeunload) {\n // Firefox closes the connection when the \"beforeunload\" event is emitted but not Chrome. This event listener\n // ensures every browser behaves the same (no \"disconnect\" event at the Socket.IO level when the page is\n // closed/reloaded)\n this.beforeunloadEventListener = () => {\n if (this.transport) {\n // silently close the transport\n this.transport.removeAllListeners();\n this.transport.close();\n }\n };\n addEventListener(\"beforeunload\", this.beforeunloadEventListener, false);\n }\n if (this.hostname !== \"localhost\") {\n this.offlineEventListener = () => {\n this.onClose(\"transport close\", {\n description: \"network connection lost\"\n });\n };\n addEventListener(\"offline\", this.offlineEventListener, false);\n }\n }\n this.open();\n }\n /**\n * Creates transport of the given type.\n *\n * @param {String} transport name\n * @return {Transport}\n * @api private\n */\n createTransport(name) {\n const query = Object.assign({}, this.opts.query);\n // append engine.io protocol identifier\n query.EIO = protocol;\n // transport name\n query.transport = name;\n // session id if we already have one\n if (this.id)\n query.sid = this.id;\n const opts = Object.assign({}, this.opts.transportOptions[name], this.opts, {\n query,\n socket: this,\n hostname: this.hostname,\n secure: this.secure,\n port: this.port\n });\n return new transports[name](opts);\n }\n /**\n * Initializes transport to use and starts probe.\n *\n * @api private\n */\n open() {\n let transport;\n if (this.opts.rememberUpgrade &&\n Socket.priorWebsocketSuccess &&\n this.transports.indexOf(\"websocket\") !== -1) {\n transport = \"websocket\";\n }\n else if (0 === this.transports.length) {\n // Emit error on next tick so it can be listened to\n this.setTimeoutFn(() => {\n this.emitReserved(\"error\", \"No transports available\");\n }, 0);\n return;\n }\n else {\n transport = this.transports[0];\n }\n this.readyState = \"opening\";\n // Retry with the next transport if the transport is disabled (jsonp: false)\n try {\n transport = this.createTransport(transport);\n }\n catch (e) {\n this.transports.shift();\n this.open();\n return;\n }\n transport.open();\n this.setTransport(transport);\n }\n /**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @api private\n */\n setTransport(transport) {\n if (this.transport) {\n this.transport.removeAllListeners();\n }\n // set up transport\n this.transport = transport;\n // set up transport listeners\n transport\n .on(\"drain\", this.onDrain.bind(this))\n .on(\"packet\", this.onPacket.bind(this))\n .on(\"error\", this.onError.bind(this))\n .on(\"close\", reason => this.onClose(\"transport close\", reason));\n }\n /**\n * Probes a transport.\n *\n * @param {String} transport name\n * @api private\n */\n probe(name) {\n let transport = this.createTransport(name);\n let failed = false;\n Socket.priorWebsocketSuccess = false;\n const onTransportOpen = () => {\n if (failed)\n return;\n transport.send([{ type: \"ping\", data: \"probe\" }]);\n transport.once(\"packet\", msg => {\n if (failed)\n return;\n if (\"pong\" === msg.type && \"probe\" === msg.data) {\n this.upgrading = true;\n this.emitReserved(\"upgrading\", transport);\n if (!transport)\n return;\n Socket.priorWebsocketSuccess = \"websocket\" === transport.name;\n this.transport.pause(() => {\n if (failed)\n return;\n if (\"closed\" === this.readyState)\n return;\n cleanup();\n this.setTransport(transport);\n transport.send([{ type: \"upgrade\" }]);\n this.emitReserved(\"upgrade\", transport);\n transport = null;\n this.upgrading = false;\n this.flush();\n });\n }\n else {\n const err = new Error(\"probe error\");\n // @ts-ignore\n err.transport = transport.name;\n this.emitReserved(\"upgradeError\", err);\n }\n });\n };\n function freezeTransport() {\n if (failed)\n return;\n // Any callback called by transport should be ignored since now\n failed = true;\n cleanup();\n transport.close();\n transport = null;\n }\n // Handle any error that happens while probing\n const onerror = err => {\n const error = new Error(\"probe error: \" + err);\n // @ts-ignore\n error.transport = transport.name;\n freezeTransport();\n this.emitReserved(\"upgradeError\", error);\n };\n function onTransportClose() {\n onerror(\"transport closed\");\n }\n // When the socket is closed while we're probing\n function onclose() {\n onerror(\"socket closed\");\n }\n // When the socket is upgraded while we're probing\n function onupgrade(to) {\n if (transport && to.name !== transport.name) {\n freezeTransport();\n }\n }\n // Remove all listeners on the transport and on self\n const cleanup = () => {\n transport.removeListener(\"open\", onTransportOpen);\n transport.removeListener(\"error\", onerror);\n transport.removeListener(\"close\", onTransportClose);\n this.off(\"close\", onclose);\n this.off(\"upgrading\", onupgrade);\n };\n transport.once(\"open\", onTransportOpen);\n transport.once(\"error\", onerror);\n transport.once(\"close\", onTransportClose);\n this.once(\"close\", onclose);\n this.once(\"upgrading\", onupgrade);\n transport.open();\n }\n /**\n * Called when connection is deemed open.\n *\n * @api private\n */\n onOpen() {\n this.readyState = \"open\";\n Socket.priorWebsocketSuccess = \"websocket\" === this.transport.name;\n this.emitReserved(\"open\");\n this.flush();\n // we check for `readyState` in case an `open`\n // listener already closed the socket\n if (\"open\" === this.readyState &&\n this.opts.upgrade &&\n this.transport.pause) {\n let i = 0;\n const l = this.upgrades.length;\n for (; i < l; i++) {\n this.probe(this.upgrades[i]);\n }\n }\n }\n /**\n * Handles a packet.\n *\n * @api private\n */\n onPacket(packet) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n this.emitReserved(\"packet\", packet);\n // Socket is live - any packet counts\n this.emitReserved(\"heartbeat\");\n switch (packet.type) {\n case \"open\":\n this.onHandshake(JSON.parse(packet.data));\n break;\n case \"ping\":\n this.resetPingTimeout();\n this.sendPacket(\"pong\");\n this.emitReserved(\"ping\");\n this.emitReserved(\"pong\");\n break;\n case \"error\":\n const err = new Error(\"server error\");\n // @ts-ignore\n err.code = packet.data;\n this.onError(err);\n break;\n case \"message\":\n this.emitReserved(\"data\", packet.data);\n this.emitReserved(\"message\", packet.data);\n break;\n }\n }\n else {\n }\n }\n /**\n * Called upon handshake completion.\n *\n * @param {Object} data - handshake obj\n * @api private\n */\n onHandshake(data) {\n this.emitReserved(\"handshake\", data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this.upgrades = this.filterUpgrades(data.upgrades);\n this.pingInterval = data.pingInterval;\n this.pingTimeout = data.pingTimeout;\n this.maxPayload = data.maxPayload;\n this.onOpen();\n // In case open handler closes socket\n if (\"closed\" === this.readyState)\n return;\n this.resetPingTimeout();\n }\n /**\n * Sets and resets ping timeout timer based on server pings.\n *\n * @api private\n */\n resetPingTimeout() {\n this.clearTimeoutFn(this.pingTimeoutTimer);\n this.pingTimeoutTimer = this.setTimeoutFn(() => {\n this.onClose(\"ping timeout\");\n }, this.pingInterval + this.pingTimeout);\n if (this.opts.autoUnref) {\n this.pingTimeoutTimer.unref();\n }\n }\n /**\n * Called on `drain` event\n *\n * @api private\n */\n onDrain() {\n this.writeBuffer.splice(0, this.prevBufferLen);\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this.prevBufferLen = 0;\n if (0 === this.writeBuffer.length) {\n this.emitReserved(\"drain\");\n }\n else {\n this.flush();\n }\n }\n /**\n * Flush write buffers.\n *\n * @api private\n */\n flush() {\n if (\"closed\" !== this.readyState &&\n this.transport.writable &&\n !this.upgrading &&\n this.writeBuffer.length) {\n const packets = this.getWritablePackets();\n this.transport.send(packets);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this.prevBufferLen = packets.length;\n this.emitReserved(\"flush\");\n }\n }\n /**\n * Ensure the encoded size of the writeBuffer is below the maxPayload value sent by the server (only for HTTP\n * long-polling)\n *\n * @private\n */\n getWritablePackets() {\n const shouldCheckPayloadSize = this.maxPayload &&\n this.transport.name === \"polling\" &&\n this.writeBuffer.length > 1;\n if (!shouldCheckPayloadSize) {\n return this.writeBuffer;\n }\n let payloadSize = 1; // first packet type\n for (let i = 0; i < this.writeBuffer.length; i++) {\n const data = this.writeBuffer[i].data;\n if (data) {\n payloadSize += byteLength(data);\n }\n if (i > 0 && payloadSize > this.maxPayload) {\n return this.writeBuffer.slice(0, i);\n }\n payloadSize += 2; // separator + packet type\n }\n return this.writeBuffer;\n }\n /**\n * Sends a message.\n *\n * @param {String} message.\n * @param {Function} callback function.\n * @param {Object} options.\n * @return {Socket} for chaining.\n * @api public\n */\n write(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n send(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n /**\n * Sends a packet.\n *\n * @param {String} packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} callback function.\n * @api private\n */\n sendPacket(type, data, options, fn) {\n if (\"function\" === typeof data) {\n fn = data;\n data = undefined;\n }\n if (\"function\" === typeof options) {\n fn = options;\n options = null;\n }\n if (\"closing\" === this.readyState || \"closed\" === this.readyState) {\n return;\n }\n options = options || {};\n options.compress = false !== options.compress;\n const packet = {\n type: type,\n data: data,\n options: options\n };\n this.emitReserved(\"packetCreate\", packet);\n this.writeBuffer.push(packet);\n if (fn)\n this.once(\"flush\", fn);\n this.flush();\n }\n /**\n * Closes the connection.\n *\n * @api public\n */\n close() {\n const close = () => {\n this.onClose(\"forced close\");\n this.transport.close();\n };\n const cleanupAndClose = () => {\n this.off(\"upgrade\", cleanupAndClose);\n this.off(\"upgradeError\", cleanupAndClose);\n close();\n };\n const waitForUpgrade = () => {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n this.once(\"upgrade\", cleanupAndClose);\n this.once(\"upgradeError\", cleanupAndClose);\n };\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.readyState = \"closing\";\n if (this.writeBuffer.length) {\n this.once(\"drain\", () => {\n if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n });\n }\n else if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n }\n return this;\n }\n /**\n * Called upon transport error\n *\n * @api private\n */\n onError(err) {\n Socket.priorWebsocketSuccess = false;\n this.emitReserved(\"error\", err);\n this.onClose(\"transport error\", err);\n }\n /**\n * Called upon transport close.\n *\n * @api private\n */\n onClose(reason, description) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n // clear timers\n this.clearTimeoutFn(this.pingTimeoutTimer);\n // stop event from firing again for transport\n this.transport.removeAllListeners(\"close\");\n // ensure transport won't stay open\n this.transport.close();\n // ignore further transport communication\n this.transport.removeAllListeners();\n if (typeof removeEventListener === \"function\") {\n removeEventListener(\"beforeunload\", this.beforeunloadEventListener, false);\n removeEventListener(\"offline\", this.offlineEventListener, false);\n }\n // set ready state\n this.readyState = \"closed\";\n // clear session id\n this.id = null;\n // emit close event\n this.emitReserved(\"close\", reason, description);\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n }\n }\n /**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} server upgrades\n * @api private\n *\n */\n filterUpgrades(upgrades) {\n const filteredUpgrades = [];\n let i = 0;\n const j = upgrades.length;\n for (; i < j; i++) {\n if (~this.transports.indexOf(upgrades[i]))\n filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n }\n}\nSocket.protocol = protocol;\n","const withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst isView = (obj) => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj.buffer instanceof ArrayBuffer;\n};\nconst toString = Object.prototype.toString;\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeFile = typeof File === \"function\" ||\n (typeof File !== \"undefined\" &&\n toString.call(File) === \"[object FileConstructor]\");\n/**\n * Returns true if obj is a Buffer, an ArrayBuffer, a Blob or a File.\n *\n * @private\n */\nexport function isBinary(obj) {\n return ((withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj))) ||\n (withNativeBlob && obj instanceof Blob) ||\n (withNativeFile && obj instanceof File));\n}\nexport function hasBinary(obj, toJSON) {\n if (!obj || typeof obj !== \"object\") {\n return false;\n }\n if (Array.isArray(obj)) {\n for (let i = 0, l = obj.length; i < l; i++) {\n if (hasBinary(obj[i])) {\n return true;\n }\n }\n return false;\n }\n if (isBinary(obj)) {\n return true;\n }\n if (obj.toJSON &&\n typeof obj.toJSON === \"function\" &&\n arguments.length === 1) {\n return hasBinary(obj.toJSON(), true);\n }\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\n return true;\n }\n }\n return false;\n}\n","import { isBinary } from \"./is-binary.js\";\n/**\n * Replaces every Buffer | ArrayBuffer | Blob | File in packet with a numbered placeholder.\n *\n * @param {Object} packet - socket.io event packet\n * @return {Object} with deconstructed packet and list of buffers\n * @public\n */\nexport function deconstructPacket(packet) {\n const buffers = [];\n const packetData = packet.data;\n const pack = packet;\n pack.data = _deconstructPacket(packetData, buffers);\n pack.attachments = buffers.length; // number of binary 'attachments'\n return { packet: pack, buffers: buffers };\n}\nfunction _deconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (isBinary(data)) {\n const placeholder = { _placeholder: true, num: buffers.length };\n buffers.push(data);\n return placeholder;\n }\n else if (Array.isArray(data)) {\n const newData = new Array(data.length);\n for (let i = 0; i < data.length; i++) {\n newData[i] = _deconstructPacket(data[i], buffers);\n }\n return newData;\n }\n else if (typeof data === \"object\" && !(data instanceof Date)) {\n const newData = {};\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n newData[key] = _deconstructPacket(data[key], buffers);\n }\n }\n return newData;\n }\n return data;\n}\n/**\n * Reconstructs a binary packet from its placeholder packet and buffers\n *\n * @param {Object} packet - event packet with placeholders\n * @param {Array} buffers - binary buffers to put in placeholder positions\n * @return {Object} reconstructed packet\n * @public\n */\nexport function reconstructPacket(packet, buffers) {\n packet.data = _reconstructPacket(packet.data, buffers);\n packet.attachments = undefined; // no longer useful\n return packet;\n}\nfunction _reconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (data && data._placeholder) {\n return buffers[data.num]; // appropriate buffer (should be natural order anyway)\n }\n else if (Array.isArray(data)) {\n for (let i = 0; i < data.length; i++) {\n data[i] = _reconstructPacket(data[i], buffers);\n }\n }\n else if (typeof data === \"object\") {\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n data[key] = _reconstructPacket(data[key], buffers);\n }\n }\n }\n return data;\n}\n","import { Emitter } from \"@socket.io/component-emitter\";\nimport { deconstructPacket, reconstructPacket } from \"./binary.js\";\nimport { isBinary, hasBinary } from \"./is-binary.js\";\n/**\n * Protocol version.\n *\n * @public\n */\nexport const protocol = 5;\nexport var PacketType;\n(function (PacketType) {\n PacketType[PacketType[\"CONNECT\"] = 0] = \"CONNECT\";\n PacketType[PacketType[\"DISCONNECT\"] = 1] = \"DISCONNECT\";\n PacketType[PacketType[\"EVENT\"] = 2] = \"EVENT\";\n PacketType[PacketType[\"ACK\"] = 3] = \"ACK\";\n PacketType[PacketType[\"CONNECT_ERROR\"] = 4] = \"CONNECT_ERROR\";\n PacketType[PacketType[\"BINARY_EVENT\"] = 5] = \"BINARY_EVENT\";\n PacketType[PacketType[\"BINARY_ACK\"] = 6] = \"BINARY_ACK\";\n})(PacketType || (PacketType = {}));\n/**\n * A socket.io Encoder instance\n */\nexport class Encoder {\n /**\n * Encoder constructor\n *\n * @param {function} replacer - custom replacer to pass down to JSON.parse\n */\n constructor(replacer) {\n this.replacer = replacer;\n }\n /**\n * Encode a packet as a single string if non-binary, or as a\n * buffer sequence, depending on packet type.\n *\n * @param {Object} obj - packet object\n */\n encode(obj) {\n if (obj.type === PacketType.EVENT || obj.type === PacketType.ACK) {\n if (hasBinary(obj)) {\n obj.type =\n obj.type === PacketType.EVENT\n ? PacketType.BINARY_EVENT\n : PacketType.BINARY_ACK;\n return this.encodeAsBinary(obj);\n }\n }\n return [this.encodeAsString(obj)];\n }\n /**\n * Encode packet as string.\n */\n encodeAsString(obj) {\n // first is type\n let str = \"\" + obj.type;\n // attachments if we have them\n if (obj.type === PacketType.BINARY_EVENT ||\n obj.type === PacketType.BINARY_ACK) {\n str += obj.attachments + \"-\";\n }\n // if we have a namespace other than `/`\n // we append it followed by a comma `,`\n if (obj.nsp && \"/\" !== obj.nsp) {\n str += obj.nsp + \",\";\n }\n // immediately followed by the id\n if (null != obj.id) {\n str += obj.id;\n }\n // json data\n if (null != obj.data) {\n str += JSON.stringify(obj.data, this.replacer);\n }\n return str;\n }\n /**\n * Encode packet as 'buffer sequence' by removing blobs, and\n * deconstructing packet into object with placeholders and\n * a list of buffers.\n */\n encodeAsBinary(obj) {\n const deconstruction = deconstructPacket(obj);\n const pack = this.encodeAsString(deconstruction.packet);\n const buffers = deconstruction.buffers;\n buffers.unshift(pack); // add packet info to beginning of data list\n return buffers; // write all the buffers\n }\n}\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n */\nexport class Decoder extends Emitter {\n /**\n * Decoder constructor\n *\n * @param {function} reviver - custom reviver to pass down to JSON.stringify\n */\n constructor(reviver) {\n super();\n this.reviver = reviver;\n }\n /**\n * Decodes an encoded packet string into packet JSON.\n *\n * @param {String} obj - encoded packet\n */\n add(obj) {\n let packet;\n if (typeof obj === \"string\") {\n packet = this.decodeString(obj);\n if (packet.type === PacketType.BINARY_EVENT ||\n packet.type === PacketType.BINARY_ACK) {\n // binary packet's json\n this.reconstructor = new BinaryReconstructor(packet);\n // no attachments, labeled binary but no binary data to follow\n if (packet.attachments === 0) {\n super.emitReserved(\"decoded\", packet);\n }\n }\n else {\n // non-binary full packet\n super.emitReserved(\"decoded\", packet);\n }\n }\n else if (isBinary(obj) || obj.base64) {\n // raw binary data\n if (!this.reconstructor) {\n throw new Error(\"got binary data when not reconstructing a packet\");\n }\n else {\n packet = this.reconstructor.takeBinaryData(obj);\n if (packet) {\n // received final buffer\n this.reconstructor = null;\n super.emitReserved(\"decoded\", packet);\n }\n }\n }\n else {\n throw new Error(\"Unknown type: \" + obj);\n }\n }\n /**\n * Decode a packet String (JSON data)\n *\n * @param {String} str\n * @return {Object} packet\n */\n decodeString(str) {\n let i = 0;\n // look up type\n const p = {\n type: Number(str.charAt(0)),\n };\n if (PacketType[p.type] === undefined) {\n throw new Error(\"unknown packet type \" + p.type);\n }\n // look up attachments if type binary\n if (p.type === PacketType.BINARY_EVENT ||\n p.type === PacketType.BINARY_ACK) {\n const start = i + 1;\n while (str.charAt(++i) !== \"-\" && i != str.length) { }\n const buf = str.substring(start, i);\n if (buf != Number(buf) || str.charAt(i) !== \"-\") {\n throw new Error(\"Illegal attachments\");\n }\n p.attachments = Number(buf);\n }\n // look up namespace (if any)\n if (\"/\" === str.charAt(i + 1)) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (\",\" === c)\n break;\n if (i === str.length)\n break;\n }\n p.nsp = str.substring(start, i);\n }\n else {\n p.nsp = \"/\";\n }\n // look up id\n const next = str.charAt(i + 1);\n if (\"\" !== next && Number(next) == next) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (null == c || Number(c) != c) {\n --i;\n break;\n }\n if (i === str.length)\n break;\n }\n p.id = Number(str.substring(start, i + 1));\n }\n // look up json data\n if (str.charAt(++i)) {\n const payload = this.tryParse(str.substr(i));\n if (Decoder.isPayloadValid(p.type, payload)) {\n p.data = payload;\n }\n else {\n throw new Error(\"invalid payload\");\n }\n }\n return p;\n }\n tryParse(str) {\n try {\n return JSON.parse(str, this.reviver);\n }\n catch (e) {\n return false;\n }\n }\n static isPayloadValid(type, payload) {\n switch (type) {\n case PacketType.CONNECT:\n return typeof payload === \"object\";\n case PacketType.DISCONNECT:\n return payload === undefined;\n case PacketType.CONNECT_ERROR:\n return typeof payload === \"string\" || typeof payload === \"object\";\n case PacketType.EVENT:\n case PacketType.BINARY_EVENT:\n return Array.isArray(payload) && payload.length > 0;\n case PacketType.ACK:\n case PacketType.BINARY_ACK:\n return Array.isArray(payload);\n }\n }\n /**\n * Deallocates a parser's resources\n */\n destroy() {\n if (this.reconstructor) {\n this.reconstructor.finishedReconstruction();\n }\n }\n}\n/**\n * A manager of a binary event's 'buffer sequence'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n */\nclass BinaryReconstructor {\n constructor(packet) {\n this.packet = packet;\n this.buffers = [];\n this.reconPack = packet;\n }\n /**\n * Method to be called when binary data received from connection\n * after a BINARY_EVENT packet.\n *\n * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n * @return {null | Object} returns null if more binary data is expected or\n * a reconstructed packet object if all buffers have been received.\n */\n takeBinaryData(binData) {\n this.buffers.push(binData);\n if (this.buffers.length === this.reconPack.attachments) {\n // done with buffer list\n const packet = reconstructPacket(this.reconPack, this.buffers);\n this.finishedReconstruction();\n return packet;\n }\n return null;\n }\n /**\n * Cleans up binary packet reconstruction variables.\n */\n finishedReconstruction() {\n this.reconPack = null;\n this.buffers = [];\n }\n}\n","export function on(obj, ev, fn) {\n obj.on(ev, fn);\n return function subDestroy() {\n obj.off(ev, fn);\n };\n}\n","import { PacketType } from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\n/**\n * Internal events.\n * These events can't be emitted by the user.\n */\nconst RESERVED_EVENTS = Object.freeze({\n connect: 1,\n connect_error: 1,\n disconnect: 1,\n disconnecting: 1,\n // EventEmitter reserved events: https://nodejs.org/api/events.html#events_event_newlistener\n newListener: 1,\n removeListener: 1,\n});\n/**\n * A Socket is the fundamental class for interacting with the server.\n *\n * A Socket belongs to a certain Namespace (by default /) and uses an underlying {@link Manager} to communicate.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(\"connected\");\n * });\n *\n * // send an event to the server\n * socket.emit(\"foo\", \"bar\");\n *\n * socket.on(\"foobar\", () => {\n * // an event was received from the server\n * });\n *\n * // upon disconnection\n * socket.on(\"disconnect\", (reason) => {\n * console.log(`disconnected due to ${reason}`);\n * });\n */\nexport class Socket extends Emitter {\n /**\n * `Socket` constructor.\n */\n constructor(io, nsp, opts) {\n super();\n /**\n * Whether the socket is currently connected to the server.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(socket.connected); // true\n * });\n *\n * socket.on(\"disconnect\", () => {\n * console.log(socket.connected); // false\n * });\n */\n this.connected = false;\n /**\n * Buffer for packets received before the CONNECT packet\n */\n this.receiveBuffer = [];\n /**\n * Buffer for packets that will be sent once the socket is connected\n */\n this.sendBuffer = [];\n this.ids = 0;\n this.acks = {};\n this.flags = {};\n this.io = io;\n this.nsp = nsp;\n if (opts && opts.auth) {\n this.auth = opts.auth;\n }\n if (this.io._autoConnect)\n this.open();\n }\n /**\n * Whether the socket is currently disconnected\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(socket.disconnected); // false\n * });\n *\n * socket.on(\"disconnect\", () => {\n * console.log(socket.disconnected); // true\n * });\n */\n get disconnected() {\n return !this.connected;\n }\n /**\n * Subscribe to open, close and packet events\n *\n * @private\n */\n subEvents() {\n if (this.subs)\n return;\n const io = this.io;\n this.subs = [\n on(io, \"open\", this.onopen.bind(this)),\n on(io, \"packet\", this.onpacket.bind(this)),\n on(io, \"error\", this.onerror.bind(this)),\n on(io, \"close\", this.onclose.bind(this)),\n ];\n }\n /**\n * Whether the Socket will try to reconnect when its Manager connects or reconnects.\n *\n * @example\n * const socket = io();\n *\n * console.log(socket.active); // true\n *\n * socket.on(\"disconnect\", (reason) => {\n * if (reason === \"io server disconnect\") {\n * // the disconnection was initiated by the server, you need to manually reconnect\n * console.log(socket.active); // false\n * }\n * // else the socket will automatically try to reconnect\n * console.log(socket.active); // true\n * });\n */\n get active() {\n return !!this.subs;\n }\n /**\n * \"Opens\" the socket.\n *\n * @example\n * const socket = io({\n * autoConnect: false\n * });\n *\n * socket.connect();\n */\n connect() {\n if (this.connected)\n return this;\n this.subEvents();\n if (!this.io[\"_reconnecting\"])\n this.io.open(); // ensure open\n if (\"open\" === this.io._readyState)\n this.onopen();\n return this;\n }\n /**\n * Alias for {@link connect()}.\n */\n open() {\n return this.connect();\n }\n /**\n * Sends a `message` event.\n *\n * This method mimics the WebSocket.send() method.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/send\n *\n * @example\n * socket.send(\"hello\");\n *\n * // this is equivalent to\n * socket.emit(\"message\", \"hello\");\n *\n * @return self\n */\n send(...args) {\n args.unshift(\"message\");\n this.emit.apply(this, args);\n return this;\n }\n /**\n * Override `emit`.\n * If the event is in `events`, it's emitted normally.\n *\n * @example\n * socket.emit(\"hello\", \"world\");\n *\n * // all serializable datastructures are supported (no need to call JSON.stringify)\n * socket.emit(\"hello\", 1, \"2\", { 3: [\"4\"], 5: Uint8Array.from([6]) });\n *\n * // with an acknowledgement from the server\n * socket.emit(\"hello\", \"world\", (val) => {\n * // ...\n * });\n *\n * @return self\n */\n emit(ev, ...args) {\n if (RESERVED_EVENTS.hasOwnProperty(ev)) {\n throw new Error('\"' + ev.toString() + '\" is a reserved event name');\n }\n args.unshift(ev);\n const packet = {\n type: PacketType.EVENT,\n data: args,\n };\n packet.options = {};\n packet.options.compress = this.flags.compress !== false;\n // event ack callback\n if (\"function\" === typeof args[args.length - 1]) {\n const id = this.ids++;\n const ack = args.pop();\n this._registerAckCallback(id, ack);\n packet.id = id;\n }\n const isTransportWritable = this.io.engine &&\n this.io.engine.transport &&\n this.io.engine.transport.writable;\n const discardPacket = this.flags.volatile && (!isTransportWritable || !this.connected);\n if (discardPacket) {\n }\n else if (this.connected) {\n this.notifyOutgoingListeners(packet);\n this.packet(packet);\n }\n else {\n this.sendBuffer.push(packet);\n }\n this.flags = {};\n return this;\n }\n /**\n * @private\n */\n _registerAckCallback(id, ack) {\n const timeout = this.flags.timeout;\n if (timeout === undefined) {\n this.acks[id] = ack;\n return;\n }\n // @ts-ignore\n const timer = this.io.setTimeoutFn(() => {\n delete this.acks[id];\n for (let i = 0; i < this.sendBuffer.length; i++) {\n if (this.sendBuffer[i].id === id) {\n this.sendBuffer.splice(i, 1);\n }\n }\n ack.call(this, new Error(\"operation has timed out\"));\n }, timeout);\n this.acks[id] = (...args) => {\n // @ts-ignore\n this.io.clearTimeoutFn(timer);\n ack.apply(this, [null, ...args]);\n };\n }\n /**\n * Sends a packet.\n *\n * @param packet\n * @private\n */\n packet(packet) {\n packet.nsp = this.nsp;\n this.io._packet(packet);\n }\n /**\n * Called upon engine `open`.\n *\n * @private\n */\n onopen() {\n if (typeof this.auth == \"function\") {\n this.auth((data) => {\n this.packet({ type: PacketType.CONNECT, data });\n });\n }\n else {\n this.packet({ type: PacketType.CONNECT, data: this.auth });\n }\n }\n /**\n * Called upon engine or manager `error`.\n *\n * @param err\n * @private\n */\n onerror(err) {\n if (!this.connected) {\n this.emitReserved(\"connect_error\", err);\n }\n }\n /**\n * Called upon engine `close`.\n *\n * @param reason\n * @param description\n * @private\n */\n onclose(reason, description) {\n this.connected = false;\n delete this.id;\n this.emitReserved(\"disconnect\", reason, description);\n }\n /**\n * Called with socket packet.\n *\n * @param packet\n * @private\n */\n onpacket(packet) {\n const sameNamespace = packet.nsp === this.nsp;\n if (!sameNamespace)\n return;\n switch (packet.type) {\n case PacketType.CONNECT:\n if (packet.data && packet.data.sid) {\n const id = packet.data.sid;\n this.onconnect(id);\n }\n else {\n this.emitReserved(\"connect_error\", new Error(\"It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)\"));\n }\n break;\n case PacketType.EVENT:\n case PacketType.BINARY_EVENT:\n this.onevent(packet);\n break;\n case PacketType.ACK:\n case PacketType.BINARY_ACK:\n this.onack(packet);\n break;\n case PacketType.DISCONNECT:\n this.ondisconnect();\n break;\n case PacketType.CONNECT_ERROR:\n this.destroy();\n const err = new Error(packet.data.message);\n // @ts-ignore\n err.data = packet.data.data;\n this.emitReserved(\"connect_error\", err);\n break;\n }\n }\n /**\n * Called upon a server event.\n *\n * @param packet\n * @private\n */\n onevent(packet) {\n const args = packet.data || [];\n if (null != packet.id) {\n args.push(this.ack(packet.id));\n }\n if (this.connected) {\n this.emitEvent(args);\n }\n else {\n this.receiveBuffer.push(Object.freeze(args));\n }\n }\n emitEvent(args) {\n if (this._anyListeners && this._anyListeners.length) {\n const listeners = this._anyListeners.slice();\n for (const listener of listeners) {\n listener.apply(this, args);\n }\n }\n super.emit.apply(this, args);\n }\n /**\n * Produces an ack callback to emit with an event.\n *\n * @private\n */\n ack(id) {\n const self = this;\n let sent = false;\n return function (...args) {\n // prevent double callbacks\n if (sent)\n return;\n sent = true;\n self.packet({\n type: PacketType.ACK,\n id: id,\n data: args,\n });\n };\n }\n /**\n * Called upon a server acknowlegement.\n *\n * @param packet\n * @private\n */\n onack(packet) {\n const ack = this.acks[packet.id];\n if (\"function\" === typeof ack) {\n ack.apply(this, packet.data);\n delete this.acks[packet.id];\n }\n else {\n }\n }\n /**\n * Called upon server connect.\n *\n * @private\n */\n onconnect(id) {\n this.id = id;\n this.connected = true;\n this.emitBuffered();\n this.emitReserved(\"connect\");\n }\n /**\n * Emit buffered events (received and emitted).\n *\n * @private\n */\n emitBuffered() {\n this.receiveBuffer.forEach((args) => this.emitEvent(args));\n this.receiveBuffer = [];\n this.sendBuffer.forEach((packet) => {\n this.notifyOutgoingListeners(packet);\n this.packet(packet);\n });\n this.sendBuffer = [];\n }\n /**\n * Called upon server disconnect.\n *\n * @private\n */\n ondisconnect() {\n this.destroy();\n this.onclose(\"io server disconnect\");\n }\n /**\n * Called upon forced client/server side disconnections,\n * this method ensures the manager stops tracking us and\n * that reconnections don't get triggered for this.\n *\n * @private\n */\n destroy() {\n if (this.subs) {\n // clean subscriptions to avoid reconnections\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs = undefined;\n }\n this.io[\"_destroy\"](this);\n }\n /**\n * Disconnects the socket manually. In that case, the socket will not try to reconnect.\n *\n * If this is the last active Socket instance of the {@link Manager}, the low-level connection will be closed.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"disconnect\", (reason) => {\n * // console.log(reason); prints \"io client disconnect\"\n * });\n *\n * socket.disconnect();\n *\n * @return self\n */\n disconnect() {\n if (this.connected) {\n this.packet({ type: PacketType.DISCONNECT });\n }\n // remove socket from pool\n this.destroy();\n if (this.connected) {\n // fire events\n this.onclose(\"io client disconnect\");\n }\n return this;\n }\n /**\n * Alias for {@link disconnect()}.\n *\n * @return self\n */\n close() {\n return this.disconnect();\n }\n /**\n * Sets the compress flag.\n *\n * @example\n * socket.compress(false).emit(\"hello\");\n *\n * @param compress - if `true`, compresses the sending data\n * @return self\n */\n compress(compress) {\n this.flags.compress = compress;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the event message will be dropped when this socket is not\n * ready to send messages.\n *\n * @example\n * socket.volatile.emit(\"hello\"); // the server may or may not receive it\n *\n * @returns self\n */\n get volatile() {\n this.flags.volatile = true;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the callback will be called with an error when the\n * given number of milliseconds have elapsed without an acknowledgement from the server:\n *\n * @example\n * socket.timeout(5000).emit(\"my-event\", (err) => {\n * if (err) {\n * // the server did not acknowledge the event in the given delay\n * }\n * });\n *\n * @returns self\n */\n timeout(timeout) {\n this.flags.timeout = timeout;\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback.\n *\n * @example\n * socket.onAny((event, ...args) => {\n * console.log(`got ${event}`);\n * });\n *\n * @param listener\n */\n onAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.push(listener);\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback. The listener is added to the beginning of the listeners array.\n *\n * @example\n * socket.prependAny((event, ...args) => {\n * console.log(`got event ${event}`);\n * });\n *\n * @param listener\n */\n prependAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.unshift(listener);\n return this;\n }\n /**\n * Removes the listener that will be fired when any event is emitted.\n *\n * @example\n * const catchAllListener = (event, ...args) => {\n * console.log(`got event ${event}`);\n * }\n *\n * socket.onAny(catchAllListener);\n *\n * // remove a specific listener\n * socket.offAny(catchAllListener);\n *\n * // or remove all listeners\n * socket.offAny();\n *\n * @param listener\n */\n offAny(listener) {\n if (!this._anyListeners) {\n return this;\n }\n if (listener) {\n const listeners = this._anyListeners;\n for (let i = 0; i < listeners.length; i++) {\n if (listener === listeners[i]) {\n listeners.splice(i, 1);\n return this;\n }\n }\n }\n else {\n this._anyListeners = [];\n }\n return this;\n }\n /**\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n * e.g. to remove listeners.\n */\n listenersAny() {\n return this._anyListeners || [];\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback.\n *\n * Note: acknowledgements sent to the server are not included.\n *\n * @example\n * socket.onAnyOutgoing((event, ...args) => {\n * console.log(`sent event ${event}`);\n * });\n *\n * @param listener\n */\n onAnyOutgoing(listener) {\n this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n this._anyOutgoingListeners.push(listener);\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback. The listener is added to the beginning of the listeners array.\n *\n * Note: acknowledgements sent to the server are not included.\n *\n * @example\n * socket.prependAnyOutgoing((event, ...args) => {\n * console.log(`sent event ${event}`);\n * });\n *\n * @param listener\n */\n prependAnyOutgoing(listener) {\n this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n this._anyOutgoingListeners.unshift(listener);\n return this;\n }\n /**\n * Removes the listener that will be fired when any event is emitted.\n *\n * @example\n * const catchAllListener = (event, ...args) => {\n * console.log(`sent event ${event}`);\n * }\n *\n * socket.onAnyOutgoing(catchAllListener);\n *\n * // remove a specific listener\n * socket.offAnyOutgoing(catchAllListener);\n *\n * // or remove all listeners\n * socket.offAnyOutgoing();\n *\n * @param [listener] - the catch-all listener (optional)\n */\n offAnyOutgoing(listener) {\n if (!this._anyOutgoingListeners) {\n return this;\n }\n if (listener) {\n const listeners = this._anyOutgoingListeners;\n for (let i = 0; i < listeners.length; i++) {\n if (listener === listeners[i]) {\n listeners.splice(i, 1);\n return this;\n }\n }\n }\n else {\n this._anyOutgoingListeners = [];\n }\n return this;\n }\n /**\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n * e.g. to remove listeners.\n */\n listenersAnyOutgoing() {\n return this._anyOutgoingListeners || [];\n }\n /**\n * Notify the listeners for each packet sent\n *\n * @param packet\n *\n * @private\n */\n notifyOutgoingListeners(packet) {\n if (this._anyOutgoingListeners && this._anyOutgoingListeners.length) {\n const listeners = this._anyOutgoingListeners.slice();\n for (const listener of listeners) {\n listener.apply(this, packet.data);\n }\n }\n }\n}\n","/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\nexport function Backoff(opts) {\n opts = opts || {};\n this.ms = opts.min || 100;\n this.max = opts.max || 10000;\n this.factor = opts.factor || 2;\n this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n this.attempts = 0;\n}\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\nBackoff.prototype.duration = function () {\n var ms = this.ms * Math.pow(this.factor, this.attempts++);\n if (this.jitter) {\n var rand = Math.random();\n var deviation = Math.floor(rand * this.jitter * ms);\n ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n }\n return Math.min(ms, this.max) | 0;\n};\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\nBackoff.prototype.reset = function () {\n this.attempts = 0;\n};\n/**\n * Set the minimum duration\n *\n * @api public\n */\nBackoff.prototype.setMin = function (min) {\n this.ms = min;\n};\n/**\n * Set the maximum duration\n *\n * @api public\n */\nBackoff.prototype.setMax = function (max) {\n this.max = max;\n};\n/**\n * Set the jitter\n *\n * @api public\n */\nBackoff.prototype.setJitter = function (jitter) {\n this.jitter = jitter;\n};\n","import { Socket as Engine, installTimerFunctions, nextTick, } from \"engine.io-client\";\nimport { Socket } from \"./socket.js\";\nimport * as parser from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport { Backoff } from \"./contrib/backo2.js\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\nexport class Manager extends Emitter {\n constructor(uri, opts) {\n var _a;\n super();\n this.nsps = {};\n this.subs = [];\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n opts.path = opts.path || \"/socket.io\";\n this.opts = opts;\n installTimerFunctions(this, opts);\n this.reconnection(opts.reconnection !== false);\n this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n this.reconnectionDelay(opts.reconnectionDelay || 1000);\n this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\n this.randomizationFactor((_a = opts.randomizationFactor) !== null && _a !== void 0 ? _a : 0.5);\n this.backoff = new Backoff({\n min: this.reconnectionDelay(),\n max: this.reconnectionDelayMax(),\n jitter: this.randomizationFactor(),\n });\n this.timeout(null == opts.timeout ? 20000 : opts.timeout);\n this._readyState = \"closed\";\n this.uri = uri;\n const _parser = opts.parser || parser;\n this.encoder = new _parser.Encoder();\n this.decoder = new _parser.Decoder();\n this._autoConnect = opts.autoConnect !== false;\n if (this._autoConnect)\n this.open();\n }\n reconnection(v) {\n if (!arguments.length)\n return this._reconnection;\n this._reconnection = !!v;\n return this;\n }\n reconnectionAttempts(v) {\n if (v === undefined)\n return this._reconnectionAttempts;\n this._reconnectionAttempts = v;\n return this;\n }\n reconnectionDelay(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelay;\n this._reconnectionDelay = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMin(v);\n return this;\n }\n randomizationFactor(v) {\n var _a;\n if (v === undefined)\n return this._randomizationFactor;\n this._randomizationFactor = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setJitter(v);\n return this;\n }\n reconnectionDelayMax(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelayMax;\n this._reconnectionDelayMax = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMax(v);\n return this;\n }\n timeout(v) {\n if (!arguments.length)\n return this._timeout;\n this._timeout = v;\n return this;\n }\n /**\n * Starts trying to reconnect if reconnection is enabled and we have not\n * started reconnecting yet\n *\n * @private\n */\n maybeReconnectOnOpen() {\n // Only try to reconnect if it's the first time we're connecting\n if (!this._reconnecting &&\n this._reconnection &&\n this.backoff.attempts === 0) {\n // keeps reconnection from firing twice for the same reconnection loop\n this.reconnect();\n }\n }\n /**\n * Sets the current transport `socket`.\n *\n * @param {Function} fn - optional, callback\n * @return self\n * @public\n */\n open(fn) {\n if (~this._readyState.indexOf(\"open\"))\n return this;\n this.engine = new Engine(this.uri, this.opts);\n const socket = this.engine;\n const self = this;\n this._readyState = \"opening\";\n this.skipReconnect = false;\n // emit `open`\n const openSubDestroy = on(socket, \"open\", function () {\n self.onopen();\n fn && fn();\n });\n // emit `error`\n const errorSub = on(socket, \"error\", (err) => {\n self.cleanup();\n self._readyState = \"closed\";\n this.emitReserved(\"error\", err);\n if (fn) {\n fn(err);\n }\n else {\n // Only do this if there is no fn to handle the error\n self.maybeReconnectOnOpen();\n }\n });\n if (false !== this._timeout) {\n const timeout = this._timeout;\n if (timeout === 0) {\n openSubDestroy(); // prevents a race condition with the 'open' event\n }\n // set timer\n const timer = this.setTimeoutFn(() => {\n openSubDestroy();\n socket.close();\n // @ts-ignore\n socket.emit(\"error\", new Error(\"timeout\"));\n }, timeout);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(function subDestroy() {\n clearTimeout(timer);\n });\n }\n this.subs.push(openSubDestroy);\n this.subs.push(errorSub);\n return this;\n }\n /**\n * Alias for open()\n *\n * @return self\n * @public\n */\n connect(fn) {\n return this.open(fn);\n }\n /**\n * Called upon transport open.\n *\n * @private\n */\n onopen() {\n // clear old subs\n this.cleanup();\n // mark as open\n this._readyState = \"open\";\n this.emitReserved(\"open\");\n // add new subs\n const socket = this.engine;\n this.subs.push(on(socket, \"ping\", this.onping.bind(this)), on(socket, \"data\", this.ondata.bind(this)), on(socket, \"error\", this.onerror.bind(this)), on(socket, \"close\", this.onclose.bind(this)), on(this.decoder, \"decoded\", this.ondecoded.bind(this)));\n }\n /**\n * Called upon a ping.\n *\n * @private\n */\n onping() {\n this.emitReserved(\"ping\");\n }\n /**\n * Called with data.\n *\n * @private\n */\n ondata(data) {\n try {\n this.decoder.add(data);\n }\n catch (e) {\n this.onclose(\"parse error\", e);\n }\n }\n /**\n * Called when parser fully decodes a packet.\n *\n * @private\n */\n ondecoded(packet) {\n // the nextTick call prevents an exception in a user-provided event listener from triggering a disconnection due to a \"parse error\"\n nextTick(() => {\n this.emitReserved(\"packet\", packet);\n }, this.setTimeoutFn);\n }\n /**\n * Called upon socket error.\n *\n * @private\n */\n onerror(err) {\n this.emitReserved(\"error\", err);\n }\n /**\n * Creates a new socket for the given `nsp`.\n *\n * @return {Socket}\n * @public\n */\n socket(nsp, opts) {\n let socket = this.nsps[nsp];\n if (!socket) {\n socket = new Socket(this, nsp, opts);\n this.nsps[nsp] = socket;\n }\n return socket;\n }\n /**\n * Called upon a socket close.\n *\n * @param socket\n * @private\n */\n _destroy(socket) {\n const nsps = Object.keys(this.nsps);\n for (const nsp of nsps) {\n const socket = this.nsps[nsp];\n if (socket.active) {\n return;\n }\n }\n this._close();\n }\n /**\n * Writes a packet.\n *\n * @param packet\n * @private\n */\n _packet(packet) {\n const encodedPackets = this.encoder.encode(packet);\n for (let i = 0; i < encodedPackets.length; i++) {\n this.engine.write(encodedPackets[i], packet.options);\n }\n }\n /**\n * Clean up transport subscriptions and packet buffer.\n *\n * @private\n */\n cleanup() {\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs.length = 0;\n this.decoder.destroy();\n }\n /**\n * Close the current socket.\n *\n * @private\n */\n _close() {\n this.skipReconnect = true;\n this._reconnecting = false;\n this.onclose(\"forced close\");\n if (this.engine)\n this.engine.close();\n }\n /**\n * Alias for close()\n *\n * @private\n */\n disconnect() {\n return this._close();\n }\n /**\n * Called upon engine close.\n *\n * @private\n */\n onclose(reason, description) {\n this.cleanup();\n this.backoff.reset();\n this._readyState = \"closed\";\n this.emitReserved(\"close\", reason, description);\n if (this._reconnection && !this.skipReconnect) {\n this.reconnect();\n }\n }\n /**\n * Attempt a reconnection.\n *\n * @private\n */\n reconnect() {\n if (this._reconnecting || this.skipReconnect)\n return this;\n const self = this;\n if (this.backoff.attempts >= this._reconnectionAttempts) {\n this.backoff.reset();\n this.emitReserved(\"reconnect_failed\");\n this._reconnecting = false;\n }\n else {\n const delay = this.backoff.duration();\n this._reconnecting = true;\n const timer = this.setTimeoutFn(() => {\n if (self.skipReconnect)\n return;\n this.emitReserved(\"reconnect_attempt\", self.backoff.attempts);\n // check again for the case socket closed in above events\n if (self.skipReconnect)\n return;\n self.open((err) => {\n if (err) {\n self._reconnecting = false;\n self.reconnect();\n this.emitReserved(\"reconnect_error\", err);\n }\n else {\n self.onreconnect();\n }\n });\n }, delay);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(function subDestroy() {\n clearTimeout(timer);\n });\n }\n }\n /**\n * Called upon successful reconnect.\n *\n * @private\n */\n onreconnect() {\n const attempt = this.backoff.attempts;\n this._reconnecting = false;\n this.backoff.reset();\n this.emitReserved(\"reconnect\", attempt);\n }\n}\n","import { url } from \"./url.js\";\nimport { Manager } from \"./manager.js\";\nimport { Socket } from \"./socket.js\";\n/**\n * Managers cache.\n */\nconst cache = {};\nfunction lookup(uri, opts) {\n if (typeof uri === \"object\") {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n const parsed = url(uri, opts.path || \"/socket.io\");\n const source = parsed.source;\n const id = parsed.id;\n const path = parsed.path;\n const sameNamespace = cache[id] && path in cache[id][\"nsps\"];\n const newConnection = opts.forceNew ||\n opts[\"force new connection\"] ||\n false === opts.multiplex ||\n sameNamespace;\n let io;\n if (newConnection) {\n io = new Manager(source, opts);\n }\n else {\n if (!cache[id]) {\n cache[id] = new Manager(source, opts);\n }\n io = cache[id];\n }\n if (parsed.query && !opts.query) {\n opts.query = parsed.queryKey;\n }\n return io.socket(parsed.path, opts);\n}\n// so that \"lookup\" can be used both as a function (e.g. `io(...)`) and as a\n// namespace (e.g. `io.connect(...)`), for backward compatibility\nObject.assign(lookup, {\n Manager,\n Socket,\n io: lookup,\n connect: lookup,\n});\n/**\n * Protocol version.\n *\n * @public\n */\nexport { protocol } from \"socket.io-parser\";\n/**\n * Expose constructors for standalone build.\n *\n * @public\n */\nexport { Manager, Socket, lookup as io, lookup as connect, lookup as default, };\n","import { parse } from \"engine.io-client\";\n/**\n * URL parser.\n *\n * @param uri - url\n * @param path - the request path of the connection\n * @param loc - An object meant to mimic window.location.\n * Defaults to window.location.\n * @public\n */\nexport function url(uri, path = \"\", loc) {\n let obj = uri;\n // default to window.location\n loc = loc || (typeof location !== \"undefined\" && location);\n if (null == uri)\n uri = loc.protocol + \"//\" + loc.host;\n // relative path support\n if (typeof uri === \"string\") {\n if (\"/\" === uri.charAt(0)) {\n if (\"/\" === uri.charAt(1)) {\n uri = loc.protocol + uri;\n }\n else {\n uri = loc.host + uri;\n }\n }\n if (!/^(https?|wss?):\\/\\//.test(uri)) {\n if (\"undefined\" !== typeof loc) {\n uri = loc.protocol + \"//\" + uri;\n }\n else {\n uri = \"https://\" + uri;\n }\n }\n // parse\n obj = parse(uri);\n }\n // make sure we treat `localhost:80` and `localhost` equally\n if (!obj.port) {\n if (/^(http|ws)$/.test(obj.protocol)) {\n obj.port = \"80\";\n }\n else if (/^(http|ws)s$/.test(obj.protocol)) {\n obj.port = \"443\";\n }\n }\n obj.path = obj.path || \"/\";\n const ipv6 = obj.host.indexOf(\":\") !== -1;\n const host = ipv6 ? \"[\" + obj.host + \"]\" : obj.host;\n // define unique id\n obj.id = obj.protocol + \"://\" + host + \":\" + obj.port + path;\n // define href\n obj.href =\n obj.protocol +\n \"://\" +\n host +\n (loc && loc.port === obj.port ? \"\" : \":\" + obj.port);\n return obj;\n}\n"],"names":["PACKET_TYPES","Object","create","PACKET_TYPES_REVERSE","keys","forEach","key","ERROR_PACKET","type","data","withNativeBlob","Blob","prototype","toString","call","withNativeArrayBuffer","ArrayBuffer","encodePacket","supportsBinary","callback","encodeBlobAsBase64","obj","isView","buffer","fileReader","FileReader","onload","content","result","split","readAsDataURL","chars","lookup","Uint8Array","i","length","charCodeAt","decodePacket","encodedPacket","binaryType","mapBinary","charAt","decodeBase64Packet","substring","decoded","base64","encoded1","encoded2","encoded3","encoded4","bufferLength","len","p","arraybuffer","bytes","decode","SEPARATOR","String","fromCharCode","Emitter","mixin","on","addEventListener","event","fn","this","_callbacks","push","once","off","apply","arguments","removeListener","removeAllListeners","removeEventListener","cb","callbacks","splice","emit","args","Array","slice","emitReserved","listeners","hasListeners","globalThisShim","self","window","Function","pick","attr","reduce","acc","k","hasOwnProperty","NATIVE_SET_TIMEOUT","setTimeout","NATIVE_CLEAR_TIMEOUT","clearTimeout","installTimerFunctions","opts","useNativeTimers","setTimeoutFn","bind","globalThis","clearTimeoutFn","TransportError","Error","constructor","reason","description","context","super","Transport","writable","query","readyState","socket","onError","open","doOpen","close","doClose","onClose","send","packets","write","onOpen","onData","packet","onPacket","details","alphabet","map","prev","seed","encode","num","encoded","Math","floor","yeast","now","Date","str","encodeURIComponent","value","XMLHttpRequest","err","hasCORS","XHR","xdomain","e","concat","join","empty","hasXHR2","responseType","Request","uri","method","async","undefined","xd","xscheme","xs","xhr","extraHeaders","setDisableHeaderCheck","setRequestHeader","withCredentials","requestTimeout","timeout","onreadystatechange","status","onLoad","document","index","requestsCount","requests","cleanup","fromError","abort","responseText","attachEvent","unloadHandler","nextTick","Promise","resolve","then","WebSocket","MozWebSocket","isReactNative","navigator","product","toLowerCase","transports","websocket","forceBase64","name","check","protocols","headers","ws","addEventListeners","onopen","autoUnref","_socket","unref","onclose","closeEvent","onmessage","ev","onerror","lastPacket","schema","secure","port","Number","timestampRequests","timestampParam","b64","encodedQuery","hostname","indexOf","path","polling","location","isSSL","protocol","poll","pause","onPause","total","doPoll","encodedPayload","encodedPackets","decodedPacket","decodePayload","count","encodePayload","doWrite","sid","request","assign","req","xhrStatus","pollXhr","re","parts","parse","src","b","replace","m","exec","source","host","authority","ipv6uri","pathNames","regx","names","queryKey","$0","$1","$2","Socket","writeBuffer","prevBufferLen","agent","upgrade","rememberUpgrade","rejectUnauthorized","perMessageDeflate","threshold","transportOptions","closeOnBeforeunload","qs","qry","pairs","l","pair","decodeURIComponent","id","upgrades","pingInterval","pingTimeout","pingTimeoutTimer","beforeunloadEventListener","transport","offlineEventListener","createTransport","EIO","priorWebsocketSuccess","shift","setTransport","onDrain","probe","failed","onTransportOpen","msg","upgrading","flush","freezeTransport","error","onTransportClose","onupgrade","to","onHandshake","JSON","resetPingTimeout","sendPacket","code","filterUpgrades","maxPayload","getWritablePackets","payloadSize","c","utf8Length","ceil","byteLength","size","options","compress","cleanupAndClose","waitForUpgrade","filteredUpgrades","j","withNativeFile","File","isBinary","hasBinary","toJSON","isArray","deconstructPacket","buffers","packetData","pack","_deconstructPacket","attachments","placeholder","_placeholder","newData","reconstructPacket","_reconstructPacket","PacketType","Decoder","reviver","add","decodeString","BINARY_EVENT","BINARY_ACK","reconstructor","BinaryReconstructor","takeBinaryData","start","buf","nsp","next","payload","tryParse","substr","isPayloadValid","static","CONNECT","DISCONNECT","CONNECT_ERROR","EVENT","ACK","destroy","finishedReconstruction","reconPack","binData","replacer","encodeAsString","encodeAsBinary","stringify","deconstruction","unshift","RESERVED_EVENTS","freeze","connect","connect_error","disconnect","disconnecting","newListener","io","connected","receiveBuffer","sendBuffer","ids","acks","flags","auth","_autoConnect","disconnected","subEvents","subs","onpacket","active","_readyState","ack","pop","_registerAckCallback","isTransportWritable","engine","volatile","notifyOutgoingListeners","timer","_packet","onconnect","onevent","onack","ondisconnect","message","emitEvent","_anyListeners","listener","sent","emitBuffered","subDestroy","onAny","prependAny","offAny","listenersAny","onAnyOutgoing","_anyOutgoingListeners","prependAnyOutgoing","offAnyOutgoing","listenersAnyOutgoing","Backoff","ms","min","max","factor","jitter","attempts","duration","pow","rand","random","deviation","reset","setMin","setMax","setJitter","Manager","_a","nsps","reconnection","reconnectionAttempts","Infinity","reconnectionDelay","reconnectionDelayMax","randomizationFactor","backoff","_parser","parser","encoder","Encoder","decoder","autoConnect","v","_reconnection","_reconnectionAttempts","_reconnectionDelay","_randomizationFactor","_reconnectionDelayMax","_timeout","maybeReconnectOnOpen","_reconnecting","reconnect","Engine","skipReconnect","openSubDestroy","errorSub","onping","ondata","ondecoded","_destroy","_close","delay","onreconnect","attempt","cache","parsed","loc","test","href","url","sameNamespace","forceNew","multiplex"],"mappings":"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"} \ No newline at end of file diff --git a/vendor/socketio/socket.io.js b/vendor/socketio/socket.io.js new file mode 100644 index 000000000..99ba13898 --- /dev/null +++ b/vendor/socketio/socket.io.js @@ -0,0 +1,4560 @@ +/*! + * Socket.IO v4.5.3 + * (c) 2014-2022 Guillermo Rauch + * Released under the MIT License. + */ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.io = factory()); +})(this, (function () { 'use strict'; + + function _typeof(obj) { + "@babel/helpers - typeof"; + + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { + return typeof obj; + } : function (obj) { + return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }, _typeof(obj); + } + + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + + function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + Object.defineProperty(Constructor, "prototype", { + writable: false + }); + return Constructor; + } + + function _extends() { + _extends = Object.assign ? Object.assign.bind() : function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; + }; + return _extends.apply(this, arguments); + } + + function _inherits(subClass, superClass) { + if (typeof superClass !== "function" && superClass !== null) { + throw new TypeError("Super expression must either be null or a function"); + } + + subClass.prototype = Object.create(superClass && superClass.prototype, { + constructor: { + value: subClass, + writable: true, + configurable: true + } + }); + Object.defineProperty(subClass, "prototype", { + writable: false + }); + if (superClass) _setPrototypeOf(subClass, superClass); + } + + function _getPrototypeOf(o) { + _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { + return o.__proto__ || Object.getPrototypeOf(o); + }; + return _getPrototypeOf(o); + } + + function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }; + return _setPrototypeOf(o, p); + } + + function _isNativeReflectConstruct() { + if (typeof Reflect === "undefined" || !Reflect.construct) return false; + if (Reflect.construct.sham) return false; + if (typeof Proxy === "function") return true; + + try { + Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); + return true; + } catch (e) { + return false; + } + } + + function _construct(Parent, args, Class) { + if (_isNativeReflectConstruct()) { + _construct = Reflect.construct.bind(); + } else { + _construct = function _construct(Parent, args, Class) { + var a = [null]; + a.push.apply(a, args); + var Constructor = Function.bind.apply(Parent, a); + var instance = new Constructor(); + if (Class) _setPrototypeOf(instance, Class.prototype); + return instance; + }; + } + + return _construct.apply(null, arguments); + } + + function _isNativeFunction(fn) { + return Function.toString.call(fn).indexOf("[native code]") !== -1; + } + + function _wrapNativeSuper(Class) { + var _cache = typeof Map === "function" ? new Map() : undefined; + + _wrapNativeSuper = function _wrapNativeSuper(Class) { + if (Class === null || !_isNativeFunction(Class)) return Class; + + if (typeof Class !== "function") { + throw new TypeError("Super expression must either be null or a function"); + } + + if (typeof _cache !== "undefined") { + if (_cache.has(Class)) return _cache.get(Class); + + _cache.set(Class, Wrapper); + } + + function Wrapper() { + return _construct(Class, arguments, _getPrototypeOf(this).constructor); + } + + Wrapper.prototype = Object.create(Class.prototype, { + constructor: { + value: Wrapper, + enumerable: false, + writable: true, + configurable: true + } + }); + return _setPrototypeOf(Wrapper, Class); + }; + + return _wrapNativeSuper(Class); + } + + function _assertThisInitialized(self) { + if (self === void 0) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + } + + return self; + } + + function _possibleConstructorReturn(self, call) { + if (call && (typeof call === "object" || typeof call === "function")) { + return call; + } else if (call !== void 0) { + throw new TypeError("Derived constructors may only return object or undefined"); + } + + return _assertThisInitialized(self); + } + + function _createSuper(Derived) { + var hasNativeReflectConstruct = _isNativeReflectConstruct(); + + return function _createSuperInternal() { + var Super = _getPrototypeOf(Derived), + result; + + if (hasNativeReflectConstruct) { + var NewTarget = _getPrototypeOf(this).constructor; + + result = Reflect.construct(Super, arguments, NewTarget); + } else { + result = Super.apply(this, arguments); + } + + return _possibleConstructorReturn(this, result); + }; + } + + function _superPropBase(object, property) { + while (!Object.prototype.hasOwnProperty.call(object, property)) { + object = _getPrototypeOf(object); + if (object === null) break; + } + + return object; + } + + function _get() { + if (typeof Reflect !== "undefined" && Reflect.get) { + _get = Reflect.get.bind(); + } else { + _get = function _get(target, property, receiver) { + var base = _superPropBase(target, property); + + if (!base) return; + var desc = Object.getOwnPropertyDescriptor(base, property); + + if (desc.get) { + return desc.get.call(arguments.length < 3 ? target : receiver); + } + + return desc.value; + }; + } + + return _get.apply(this, arguments); + } + + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === "string") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === "Object" && o.constructor) n = o.constructor.name; + if (n === "Map" || n === "Set") return Array.from(o); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } + + function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + + for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; + + return arr2; + } + + function _createForOfIteratorHelper(o, allowArrayLike) { + var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; + + if (!it) { + if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { + if (it) o = it; + var i = 0; + + var F = function () {}; + + return { + s: F, + n: function () { + if (i >= o.length) return { + done: true + }; + return { + done: false, + value: o[i++] + }; + }, + e: function (e) { + throw e; + }, + f: F + }; + } + + throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + + var normalCompletion = true, + didErr = false, + err; + return { + s: function () { + it = it.call(o); + }, + n: function () { + var step = it.next(); + normalCompletion = step.done; + return step; + }, + e: function (e) { + didErr = true; + err = e; + }, + f: function () { + try { + if (!normalCompletion && it.return != null) it.return(); + } finally { + if (didErr) throw err; + } + } + }; + } + + var PACKET_TYPES = Object.create(null); // no Map = no polyfill + + PACKET_TYPES["open"] = "0"; + PACKET_TYPES["close"] = "1"; + PACKET_TYPES["ping"] = "2"; + PACKET_TYPES["pong"] = "3"; + PACKET_TYPES["message"] = "4"; + PACKET_TYPES["upgrade"] = "5"; + PACKET_TYPES["noop"] = "6"; + var PACKET_TYPES_REVERSE = Object.create(null); + Object.keys(PACKET_TYPES).forEach(function (key) { + PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key; + }); + var ERROR_PACKET = { + type: "error", + data: "parser error" + }; + + var withNativeBlob$1 = typeof Blob === "function" || typeof Blob !== "undefined" && Object.prototype.toString.call(Blob) === "[object BlobConstructor]"; + var withNativeArrayBuffer$2 = typeof ArrayBuffer === "function"; // ArrayBuffer.isView method is not defined in IE10 + + var isView$1 = function isView(obj) { + return typeof ArrayBuffer.isView === "function" ? ArrayBuffer.isView(obj) : obj && obj.buffer instanceof ArrayBuffer; + }; + + var encodePacket = function encodePacket(_ref, supportsBinary, callback) { + var type = _ref.type, + data = _ref.data; + + if (withNativeBlob$1 && data instanceof Blob) { + if (supportsBinary) { + return callback(data); + } else { + return encodeBlobAsBase64(data, callback); + } + } else if (withNativeArrayBuffer$2 && (data instanceof ArrayBuffer || isView$1(data))) { + if (supportsBinary) { + return callback(data); + } else { + return encodeBlobAsBase64(new Blob([data]), callback); + } + } // plain string + + + return callback(PACKET_TYPES[type] + (data || "")); + }; + + var encodeBlobAsBase64 = function encodeBlobAsBase64(data, callback) { + var fileReader = new FileReader(); + + fileReader.onload = function () { + var content = fileReader.result.split(",")[1]; + callback("b" + content); + }; + + return fileReader.readAsDataURL(data); + }; + + var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; // Use a lookup table to find the index. + + var lookup$1 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256); + + for (var i$1 = 0; i$1 < chars.length; i$1++) { + lookup$1[chars.charCodeAt(i$1)] = i$1; + } + var decode$1 = function decode(base64) { + var bufferLength = base64.length * 0.75, + len = base64.length, + i, + p = 0, + encoded1, + encoded2, + encoded3, + encoded4; + + if (base64[base64.length - 1] === '=') { + bufferLength--; + + if (base64[base64.length - 2] === '=') { + bufferLength--; + } + } + + var arraybuffer = new ArrayBuffer(bufferLength), + bytes = new Uint8Array(arraybuffer); + + for (i = 0; i < len; i += 4) { + encoded1 = lookup$1[base64.charCodeAt(i)]; + encoded2 = lookup$1[base64.charCodeAt(i + 1)]; + encoded3 = lookup$1[base64.charCodeAt(i + 2)]; + encoded4 = lookup$1[base64.charCodeAt(i + 3)]; + bytes[p++] = encoded1 << 2 | encoded2 >> 4; + bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2; + bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63; + } + + return arraybuffer; + }; + + var withNativeArrayBuffer$1 = typeof ArrayBuffer === "function"; + + var decodePacket = function decodePacket(encodedPacket, binaryType) { + if (typeof encodedPacket !== "string") { + return { + type: "message", + data: mapBinary(encodedPacket, binaryType) + }; + } + + var type = encodedPacket.charAt(0); + + if (type === "b") { + return { + type: "message", + data: decodeBase64Packet(encodedPacket.substring(1), binaryType) + }; + } + + var packetType = PACKET_TYPES_REVERSE[type]; + + if (!packetType) { + return ERROR_PACKET; + } + + return encodedPacket.length > 1 ? { + type: PACKET_TYPES_REVERSE[type], + data: encodedPacket.substring(1) + } : { + type: PACKET_TYPES_REVERSE[type] + }; + }; + + var decodeBase64Packet = function decodeBase64Packet(data, binaryType) { + if (withNativeArrayBuffer$1) { + var decoded = decode$1(data); + return mapBinary(decoded, binaryType); + } else { + return { + base64: true, + data: data + }; // fallback for old browsers + } + }; + + var mapBinary = function mapBinary(data, binaryType) { + switch (binaryType) { + case "blob": + return data instanceof ArrayBuffer ? new Blob([data]) : data; + + case "arraybuffer": + default: + return data; + // assuming the data is already an ArrayBuffer + } + }; + + var SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text + + var encodePayload = function encodePayload(packets, callback) { + // some packets may be added to the array while encoding, so the initial length must be saved + var length = packets.length; + var encodedPackets = new Array(length); + var count = 0; + packets.forEach(function (packet, i) { + // force base64 encoding for binary packets + encodePacket(packet, false, function (encodedPacket) { + encodedPackets[i] = encodedPacket; + + if (++count === length) { + callback(encodedPackets.join(SEPARATOR)); + } + }); + }); + }; + + var decodePayload = function decodePayload(encodedPayload, binaryType) { + var encodedPackets = encodedPayload.split(SEPARATOR); + var packets = []; + + for (var i = 0; i < encodedPackets.length; i++) { + var decodedPacket = decodePacket(encodedPackets[i], binaryType); + packets.push(decodedPacket); + + if (decodedPacket.type === "error") { + break; + } + } + + return packets; + }; + + var protocol$1 = 4; + + /** + * Initialize a new `Emitter`. + * + * @api public + */ + function Emitter(obj) { + if (obj) return mixin(obj); + } + /** + * Mixin the emitter properties. + * + * @param {Object} obj + * @return {Object} + * @api private + */ + + function mixin(obj) { + for (var key in Emitter.prototype) { + obj[key] = Emitter.prototype[key]; + } + + return obj; + } + /** + * Listen on the given `event` with `fn`. + * + * @param {String} event + * @param {Function} fn + * @return {Emitter} + * @api public + */ + + + Emitter.prototype.on = Emitter.prototype.addEventListener = function (event, fn) { + this._callbacks = this._callbacks || {}; + (this._callbacks['$' + event] = this._callbacks['$' + event] || []).push(fn); + return this; + }; + /** + * Adds an `event` listener that will be invoked a single + * time then automatically removed. + * + * @param {String} event + * @param {Function} fn + * @return {Emitter} + * @api public + */ + + + Emitter.prototype.once = function (event, fn) { + function on() { + this.off(event, on); + fn.apply(this, arguments); + } + + on.fn = fn; + this.on(event, on); + return this; + }; + /** + * Remove the given callback for `event` or all + * registered callbacks. + * + * @param {String} event + * @param {Function} fn + * @return {Emitter} + * @api public + */ + + + Emitter.prototype.off = Emitter.prototype.removeListener = Emitter.prototype.removeAllListeners = Emitter.prototype.removeEventListener = function (event, fn) { + this._callbacks = this._callbacks || {}; // all + + if (0 == arguments.length) { + this._callbacks = {}; + return this; + } // specific event + + + var callbacks = this._callbacks['$' + event]; + if (!callbacks) return this; // remove all handlers + + if (1 == arguments.length) { + delete this._callbacks['$' + event]; + return this; + } // remove specific handler + + + var cb; + + for (var i = 0; i < callbacks.length; i++) { + cb = callbacks[i]; + + if (cb === fn || cb.fn === fn) { + callbacks.splice(i, 1); + break; + } + } // Remove event specific arrays for event types that no + // one is subscribed for to avoid memory leak. + + + if (callbacks.length === 0) { + delete this._callbacks['$' + event]; + } + + return this; + }; + /** + * Emit `event` with the given args. + * + * @param {String} event + * @param {Mixed} ... + * @return {Emitter} + */ + + + Emitter.prototype.emit = function (event) { + this._callbacks = this._callbacks || {}; + var args = new Array(arguments.length - 1), + callbacks = this._callbacks['$' + event]; + + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + + if (callbacks) { + callbacks = callbacks.slice(0); + + for (var i = 0, len = callbacks.length; i < len; ++i) { + callbacks[i].apply(this, args); + } + } + + return this; + }; // alias used for reserved events (protected method) + + + Emitter.prototype.emitReserved = Emitter.prototype.emit; + /** + * Return array of callbacks for `event`. + * + * @param {String} event + * @return {Array} + * @api public + */ + + Emitter.prototype.listeners = function (event) { + this._callbacks = this._callbacks || {}; + return this._callbacks['$' + event] || []; + }; + /** + * Check if this emitter has `event` handlers. + * + * @param {String} event + * @return {Boolean} + * @api public + */ + + + Emitter.prototype.hasListeners = function (event) { + return !!this.listeners(event).length; + }; + + var globalThisShim = function () { + if (typeof self !== "undefined") { + return self; + } else if (typeof window !== "undefined") { + return window; + } else { + return Function("return this")(); + } + }(); + + function pick(obj) { + for (var _len = arguments.length, attr = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + attr[_key - 1] = arguments[_key]; + } + + return attr.reduce(function (acc, k) { + if (obj.hasOwnProperty(k)) { + acc[k] = obj[k]; + } + + return acc; + }, {}); + } // Keep a reference to the real timeout functions so they can be used when overridden + + var NATIVE_SET_TIMEOUT = setTimeout; + var NATIVE_CLEAR_TIMEOUT = clearTimeout; + function installTimerFunctions(obj, opts) { + if (opts.useNativeTimers) { + obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globalThisShim); + obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globalThisShim); + } else { + obj.setTimeoutFn = setTimeout.bind(globalThisShim); + obj.clearTimeoutFn = clearTimeout.bind(globalThisShim); + } + } // base64 encoded buffers are about 33% bigger (https://en.wikipedia.org/wiki/Base64) + + var BASE64_OVERHEAD = 1.33; // we could also have used `new Blob([obj]).size`, but it isn't supported in IE9 + + function byteLength(obj) { + if (typeof obj === "string") { + return utf8Length(obj); + } // arraybuffer or blob + + + return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD); + } + + function utf8Length(str) { + var c = 0, + length = 0; + + for (var i = 0, l = str.length; i < l; i++) { + c = str.charCodeAt(i); + + if (c < 0x80) { + length += 1; + } else if (c < 0x800) { + length += 2; + } else if (c < 0xd800 || c >= 0xe000) { + length += 3; + } else { + i++; + length += 4; + } + } + + return length; + } + + var TransportError = /*#__PURE__*/function (_Error) { + _inherits(TransportError, _Error); + + var _super = _createSuper(TransportError); + + function TransportError(reason, description, context) { + var _this; + + _classCallCheck(this, TransportError); + + _this = _super.call(this, reason); + _this.description = description; + _this.context = context; + _this.type = "TransportError"; + return _this; + } + + return _createClass(TransportError); + }( /*#__PURE__*/_wrapNativeSuper(Error)); + + var Transport = /*#__PURE__*/function (_Emitter) { + _inherits(Transport, _Emitter); + + var _super2 = _createSuper(Transport); + + /** + * Transport abstract constructor. + * + * @param {Object} options. + * @api private + */ + function Transport(opts) { + var _this2; + + _classCallCheck(this, Transport); + + _this2 = _super2.call(this); + _this2.writable = false; + installTimerFunctions(_assertThisInitialized(_this2), opts); + _this2.opts = opts; + _this2.query = opts.query; + _this2.readyState = ""; + _this2.socket = opts.socket; + return _this2; + } + /** + * Emits an error. + * + * @param {String} reason + * @param description + * @param context - the error context + * @return {Transport} for chaining + * @api protected + */ + + + _createClass(Transport, [{ + key: "onError", + value: function onError(reason, description, context) { + _get(_getPrototypeOf(Transport.prototype), "emitReserved", this).call(this, "error", new TransportError(reason, description, context)); + + return this; + } + /** + * Opens the transport. + * + * @api public + */ + + }, { + key: "open", + value: function open() { + if ("closed" === this.readyState || "" === this.readyState) { + this.readyState = "opening"; + this.doOpen(); + } + + return this; + } + /** + * Closes the transport. + * + * @api public + */ + + }, { + key: "close", + value: function close() { + if ("opening" === this.readyState || "open" === this.readyState) { + this.doClose(); + this.onClose(); + } + + return this; + } + /** + * Sends multiple packets. + * + * @param {Array} packets + * @api public + */ + + }, { + key: "send", + value: function send(packets) { + if ("open" === this.readyState) { + this.write(packets); + } + } + /** + * Called upon open + * + * @api protected + */ + + }, { + key: "onOpen", + value: function onOpen() { + this.readyState = "open"; + this.writable = true; + + _get(_getPrototypeOf(Transport.prototype), "emitReserved", this).call(this, "open"); + } + /** + * Called with data. + * + * @param {String} data + * @api protected + */ + + }, { + key: "onData", + value: function onData(data) { + var packet = decodePacket(data, this.socket.binaryType); + this.onPacket(packet); + } + /** + * Called with a decoded packet. + * + * @api protected + */ + + }, { + key: "onPacket", + value: function onPacket(packet) { + _get(_getPrototypeOf(Transport.prototype), "emitReserved", this).call(this, "packet", packet); + } + /** + * Called upon close. + * + * @api protected + */ + + }, { + key: "onClose", + value: function onClose(details) { + this.readyState = "closed"; + + _get(_getPrototypeOf(Transport.prototype), "emitReserved", this).call(this, "close", details); + } + }]); + + return Transport; + }(Emitter); + + // imported from https://github.com/unshiftio/yeast + + var alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split(''), + length = 64, + map = {}; + var seed = 0, + i = 0, + prev; + /** + * Return a string representing the specified number. + * + * @param {Number} num The number to convert. + * @returns {String} The string representation of the number. + * @api public + */ + + function encode$1(num) { + var encoded = ''; + + do { + encoded = alphabet[num % length] + encoded; + num = Math.floor(num / length); + } while (num > 0); + + return encoded; + } + /** + * Yeast: A tiny growing id generator. + * + * @returns {String} A unique id. + * @api public + */ + + function yeast() { + var now = encode$1(+new Date()); + if (now !== prev) return seed = 0, prev = now; + return now + '.' + encode$1(seed++); + } // + // Map each character to its index. + // + + for (; i < length; i++) { + map[alphabet[i]] = i; + } + + // imported from https://github.com/galkn/querystring + + /** + * Compiles a querystring + * Returns string representation of the object + * + * @param {Object} + * @api private + */ + function encode(obj) { + var str = ''; + + for (var i in obj) { + if (obj.hasOwnProperty(i)) { + if (str.length) str += '&'; + str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]); + } + } + + return str; + } + /** + * Parses a simple querystring into an object + * + * @param {String} qs + * @api private + */ + + function decode(qs) { + var qry = {}; + var pairs = qs.split('&'); + + for (var i = 0, l = pairs.length; i < l; i++) { + var pair = pairs[i].split('='); + qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]); + } + + return qry; + } + + // imported from https://github.com/component/has-cors + var value = false; + + try { + value = typeof XMLHttpRequest !== 'undefined' && 'withCredentials' in new XMLHttpRequest(); + } catch (err) {// if XMLHttp support is disabled in IE then it will throw + // when trying to create + } + + var hasCORS = value; + + // browser shim for xmlhttprequest module + function XHR(opts) { + var xdomain = opts.xdomain; // XMLHttpRequest can be disabled on IE + + try { + if ("undefined" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) { + return new XMLHttpRequest(); + } + } catch (e) {} + + if (!xdomain) { + try { + return new globalThisShim[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP"); + } catch (e) {} + } + } + + function empty() {} + + var hasXHR2 = function () { + var xhr = new XHR({ + xdomain: false + }); + return null != xhr.responseType; + }(); + + var Polling = /*#__PURE__*/function (_Transport) { + _inherits(Polling, _Transport); + + var _super = _createSuper(Polling); + + /** + * XHR Polling constructor. + * + * @param {Object} opts + * @api public + */ + function Polling(opts) { + var _this; + + _classCallCheck(this, Polling); + + _this = _super.call(this, opts); + _this.polling = false; + + if (typeof location !== "undefined") { + var isSSL = "https:" === location.protocol; + var port = location.port; // some user agents have empty `location.port` + + if (!port) { + port = isSSL ? "443" : "80"; + } + + _this.xd = typeof location !== "undefined" && opts.hostname !== location.hostname || port !== opts.port; + _this.xs = opts.secure !== isSSL; + } + /** + * XHR supports binary + */ + + + var forceBase64 = opts && opts.forceBase64; + _this.supportsBinary = hasXHR2 && !forceBase64; + return _this; + } + /** + * Transport name. + */ + + + _createClass(Polling, [{ + key: "name", + get: function get() { + return "polling"; + } + /** + * Opens the socket (triggers polling). We write a PING message to determine + * when the transport is open. + * + * @api private + */ + + }, { + key: "doOpen", + value: function doOpen() { + this.poll(); + } + /** + * Pauses polling. + * + * @param {Function} callback upon buffers are flushed and transport is paused + * @api private + */ + + }, { + key: "pause", + value: function pause(onPause) { + var _this2 = this; + + this.readyState = "pausing"; + + var pause = function pause() { + _this2.readyState = "paused"; + onPause(); + }; + + if (this.polling || !this.writable) { + var total = 0; + + if (this.polling) { + total++; + this.once("pollComplete", function () { + --total || pause(); + }); + } + + if (!this.writable) { + total++; + this.once("drain", function () { + --total || pause(); + }); + } + } else { + pause(); + } + } + /** + * Starts polling cycle. + * + * @api public + */ + + }, { + key: "poll", + value: function poll() { + this.polling = true; + this.doPoll(); + this.emitReserved("poll"); + } + /** + * Overloads onData to detect payloads. + * + * @api private + */ + + }, { + key: "onData", + value: function onData(data) { + var _this3 = this; + + var callback = function callback(packet) { + // if its the first message we consider the transport open + if ("opening" === _this3.readyState && packet.type === "open") { + _this3.onOpen(); + } // if its a close packet, we close the ongoing requests + + + if ("close" === packet.type) { + _this3.onClose({ + description: "transport closed by the server" + }); + + return false; + } // otherwise bypass onData and handle the message + + + _this3.onPacket(packet); + }; // decode payload + + + decodePayload(data, this.socket.binaryType).forEach(callback); // if an event did not trigger closing + + if ("closed" !== this.readyState) { + // if we got data we're not polling + this.polling = false; + this.emitReserved("pollComplete"); + + if ("open" === this.readyState) { + this.poll(); + } + } + } + /** + * For polling, send a close packet. + * + * @api private + */ + + }, { + key: "doClose", + value: function doClose() { + var _this4 = this; + + var close = function close() { + _this4.write([{ + type: "close" + }]); + }; + + if ("open" === this.readyState) { + close(); + } else { + // in case we're trying to close while + // handshaking is in progress (GH-164) + this.once("open", close); + } + } + /** + * Writes a packets payload. + * + * @param {Array} data packets + * @param {Function} drain callback + * @api private + */ + + }, { + key: "write", + value: function write(packets) { + var _this5 = this; + + this.writable = false; + encodePayload(packets, function (data) { + _this5.doWrite(data, function () { + _this5.writable = true; + + _this5.emitReserved("drain"); + }); + }); + } + /** + * Generates uri for connection. + * + * @api private + */ + + }, { + key: "uri", + value: function uri() { + var query = this.query || {}; + var schema = this.opts.secure ? "https" : "http"; + var port = ""; // cache busting is forced + + if (false !== this.opts.timestampRequests) { + query[this.opts.timestampParam] = yeast(); + } + + if (!this.supportsBinary && !query.sid) { + query.b64 = 1; + } // avoid port if default for schema + + + if (this.opts.port && ("https" === schema && Number(this.opts.port) !== 443 || "http" === schema && Number(this.opts.port) !== 80)) { + port = ":" + this.opts.port; + } + + var encodedQuery = encode(query); + var ipv6 = this.opts.hostname.indexOf(":") !== -1; + return schema + "://" + (ipv6 ? "[" + this.opts.hostname + "]" : this.opts.hostname) + port + this.opts.path + (encodedQuery.length ? "?" + encodedQuery : ""); + } + /** + * Creates a request. + * + * @param {String} method + * @api private + */ + + }, { + key: "request", + value: function request() { + var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + _extends(opts, { + xd: this.xd, + xs: this.xs + }, this.opts); + + return new Request(this.uri(), opts); + } + /** + * Sends data. + * + * @param {String} data to send. + * @param {Function} called upon flush. + * @api private + */ + + }, { + key: "doWrite", + value: function doWrite(data, fn) { + var _this6 = this; + + var req = this.request({ + method: "POST", + data: data + }); + req.on("success", fn); + req.on("error", function (xhrStatus, context) { + _this6.onError("xhr post error", xhrStatus, context); + }); + } + /** + * Starts a poll cycle. + * + * @api private + */ + + }, { + key: "doPoll", + value: function doPoll() { + var _this7 = this; + + var req = this.request(); + req.on("data", this.onData.bind(this)); + req.on("error", function (xhrStatus, context) { + _this7.onError("xhr poll error", xhrStatus, context); + }); + this.pollXhr = req; + } + }]); + + return Polling; + }(Transport); + var Request = /*#__PURE__*/function (_Emitter) { + _inherits(Request, _Emitter); + + var _super2 = _createSuper(Request); + + /** + * Request constructor + * + * @param {Object} options + * @api public + */ + function Request(uri, opts) { + var _this8; + + _classCallCheck(this, Request); + + _this8 = _super2.call(this); + installTimerFunctions(_assertThisInitialized(_this8), opts); + _this8.opts = opts; + _this8.method = opts.method || "GET"; + _this8.uri = uri; + _this8.async = false !== opts.async; + _this8.data = undefined !== opts.data ? opts.data : null; + + _this8.create(); + + return _this8; + } + /** + * Creates the XHR object and sends the request. + * + * @api private + */ + + + _createClass(Request, [{ + key: "create", + value: function create() { + var _this9 = this; + + var opts = pick(this.opts, "agent", "pfx", "key", "passphrase", "cert", "ca", "ciphers", "rejectUnauthorized", "autoUnref"); + opts.xdomain = !!this.opts.xd; + opts.xscheme = !!this.opts.xs; + var xhr = this.xhr = new XHR(opts); + + try { + xhr.open(this.method, this.uri, this.async); + + try { + if (this.opts.extraHeaders) { + xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true); + + for (var i in this.opts.extraHeaders) { + if (this.opts.extraHeaders.hasOwnProperty(i)) { + xhr.setRequestHeader(i, this.opts.extraHeaders[i]); + } + } + } + } catch (e) {} + + if ("POST" === this.method) { + try { + xhr.setRequestHeader("Content-type", "text/plain;charset=UTF-8"); + } catch (e) {} + } + + try { + xhr.setRequestHeader("Accept", "*/*"); + } catch (e) {} // ie6 check + + + if ("withCredentials" in xhr) { + xhr.withCredentials = this.opts.withCredentials; + } + + if (this.opts.requestTimeout) { + xhr.timeout = this.opts.requestTimeout; + } + + xhr.onreadystatechange = function () { + if (4 !== xhr.readyState) return; + + if (200 === xhr.status || 1223 === xhr.status) { + _this9.onLoad(); + } else { + // make sure the `error` event handler that's user-set + // does not throw in the same tick and gets caught here + _this9.setTimeoutFn(function () { + _this9.onError(typeof xhr.status === "number" ? xhr.status : 0); + }, 0); + } + }; + + xhr.send(this.data); + } catch (e) { + // Need to defer since .create() is called directly from the constructor + // and thus the 'error' event can only be only bound *after* this exception + // occurs. Therefore, also, we cannot throw here at all. + this.setTimeoutFn(function () { + _this9.onError(e); + }, 0); + return; + } + + if (typeof document !== "undefined") { + this.index = Request.requestsCount++; + Request.requests[this.index] = this; + } + } + /** + * Called upon error. + * + * @api private + */ + + }, { + key: "onError", + value: function onError(err) { + this.emitReserved("error", err, this.xhr); + this.cleanup(true); + } + /** + * Cleans up house. + * + * @api private + */ + + }, { + key: "cleanup", + value: function cleanup(fromError) { + if ("undefined" === typeof this.xhr || null === this.xhr) { + return; + } + + this.xhr.onreadystatechange = empty; + + if (fromError) { + try { + this.xhr.abort(); + } catch (e) {} + } + + if (typeof document !== "undefined") { + delete Request.requests[this.index]; + } + + this.xhr = null; + } + /** + * Called upon load. + * + * @api private + */ + + }, { + key: "onLoad", + value: function onLoad() { + var data = this.xhr.responseText; + + if (data !== null) { + this.emitReserved("data", data); + this.emitReserved("success"); + this.cleanup(); + } + } + /** + * Aborts the request. + * + * @api public + */ + + }, { + key: "abort", + value: function abort() { + this.cleanup(); + } + }]); + + return Request; + }(Emitter); + Request.requestsCount = 0; + Request.requests = {}; + /** + * Aborts pending requests when unloading the window. This is needed to prevent + * memory leaks (e.g. when using IE) and to ensure that no spurious error is + * emitted. + */ + + if (typeof document !== "undefined") { + // @ts-ignore + if (typeof attachEvent === "function") { + // @ts-ignore + attachEvent("onunload", unloadHandler); + } else if (typeof addEventListener === "function") { + var terminationEvent = "onpagehide" in globalThisShim ? "pagehide" : "unload"; + addEventListener(terminationEvent, unloadHandler, false); + } + } + + function unloadHandler() { + for (var i in Request.requests) { + if (Request.requests.hasOwnProperty(i)) { + Request.requests[i].abort(); + } + } + } + + var nextTick = function () { + var isPromiseAvailable = typeof Promise === "function" && typeof Promise.resolve === "function"; + + if (isPromiseAvailable) { + return function (cb) { + return Promise.resolve().then(cb); + }; + } else { + return function (cb, setTimeoutFn) { + return setTimeoutFn(cb, 0); + }; + } + }(); + var WebSocket = globalThisShim.WebSocket || globalThisShim.MozWebSocket; + var usingBrowserWebSocket = true; + var defaultBinaryType = "arraybuffer"; + + var isReactNative = typeof navigator !== "undefined" && typeof navigator.product === "string" && navigator.product.toLowerCase() === "reactnative"; + var WS = /*#__PURE__*/function (_Transport) { + _inherits(WS, _Transport); + + var _super = _createSuper(WS); + + /** + * WebSocket transport constructor. + * + * @api {Object} connection options + * @api public + */ + function WS(opts) { + var _this; + + _classCallCheck(this, WS); + + _this = _super.call(this, opts); + _this.supportsBinary = !opts.forceBase64; + return _this; + } + /** + * Transport name. + * + * @api public + */ + + + _createClass(WS, [{ + key: "name", + get: function get() { + return "websocket"; + } + /** + * Opens socket. + * + * @api private + */ + + }, { + key: "doOpen", + value: function doOpen() { + if (!this.check()) { + // let probe timeout + return; + } + + var uri = this.uri(); + var protocols = this.opts.protocols; // React Native only supports the 'headers' option, and will print a warning if anything else is passed + + var opts = isReactNative ? {} : pick(this.opts, "agent", "perMessageDeflate", "pfx", "key", "passphrase", "cert", "ca", "ciphers", "rejectUnauthorized", "localAddress", "protocolVersion", "origin", "maxPayload", "family", "checkServerIdentity"); + + if (this.opts.extraHeaders) { + opts.headers = this.opts.extraHeaders; + } + + try { + this.ws = usingBrowserWebSocket && !isReactNative ? protocols ? new WebSocket(uri, protocols) : new WebSocket(uri) : new WebSocket(uri, protocols, opts); + } catch (err) { + return this.emitReserved("error", err); + } + + this.ws.binaryType = this.socket.binaryType || defaultBinaryType; + this.addEventListeners(); + } + /** + * Adds event listeners to the socket + * + * @api private + */ + + }, { + key: "addEventListeners", + value: function addEventListeners() { + var _this2 = this; + + this.ws.onopen = function () { + if (_this2.opts.autoUnref) { + _this2.ws._socket.unref(); + } + + _this2.onOpen(); + }; + + this.ws.onclose = function (closeEvent) { + return _this2.onClose({ + description: "websocket connection closed", + context: closeEvent + }); + }; + + this.ws.onmessage = function (ev) { + return _this2.onData(ev.data); + }; + + this.ws.onerror = function (e) { + return _this2.onError("websocket error", e); + }; + } + /** + * Writes data to socket. + * + * @param {Array} array of packets. + * @api private + */ + + }, { + key: "write", + value: function write(packets) { + var _this3 = this; + + this.writable = false; // encodePacket efficient as it uses WS framing + // no need for encodePayload + + var _loop = function _loop(i) { + var packet = packets[i]; + var lastPacket = i === packets.length - 1; + encodePacket(packet, _this3.supportsBinary, function (data) { + // always create a new object (GH-437) + var opts = {}; + // have a chance of informing us about it yet, in that case send will + // throw an error + + + try { + if (usingBrowserWebSocket) { + // TypeError is thrown when passing the second argument on Safari + _this3.ws.send(data); + } + } catch (e) {} + + if (lastPacket) { + // fake drain + // defer to next tick to allow Socket to clear writeBuffer + nextTick(function () { + _this3.writable = true; + + _this3.emitReserved("drain"); + }, _this3.setTimeoutFn); + } + }); + }; + + for (var i = 0; i < packets.length; i++) { + _loop(i); + } + } + /** + * Closes socket. + * + * @api private + */ + + }, { + key: "doClose", + value: function doClose() { + if (typeof this.ws !== "undefined") { + this.ws.close(); + this.ws = null; + } + } + /** + * Generates uri for connection. + * + * @api private + */ + + }, { + key: "uri", + value: function uri() { + var query = this.query || {}; + var schema = this.opts.secure ? "wss" : "ws"; + var port = ""; // avoid port if default for schema + + if (this.opts.port && ("wss" === schema && Number(this.opts.port) !== 443 || "ws" === schema && Number(this.opts.port) !== 80)) { + port = ":" + this.opts.port; + } // append timestamp to URI + + + if (this.opts.timestampRequests) { + query[this.opts.timestampParam] = yeast(); + } // communicate binary support capabilities + + + if (!this.supportsBinary) { + query.b64 = 1; + } + + var encodedQuery = encode(query); + var ipv6 = this.opts.hostname.indexOf(":") !== -1; + return schema + "://" + (ipv6 ? "[" + this.opts.hostname + "]" : this.opts.hostname) + port + this.opts.path + (encodedQuery.length ? "?" + encodedQuery : ""); + } + /** + * Feature detection for WebSocket. + * + * @return {Boolean} whether this transport is available. + * @api public + */ + + }, { + key: "check", + value: function check() { + return !!WebSocket; + } + }]); + + return WS; + }(Transport); + + var transports = { + websocket: WS, + polling: Polling + }; + + // imported from https://github.com/galkn/parseuri + + /** + * Parses an URI + * + * @author Steven Levithan (MIT license) + * @api private + */ + var re = /^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/; + var parts = ['source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor']; + function parse(str) { + var src = str, + b = str.indexOf('['), + e = str.indexOf(']'); + + if (b != -1 && e != -1) { + str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length); + } + + var m = re.exec(str || ''), + uri = {}, + i = 14; + + while (i--) { + uri[parts[i]] = m[i] || ''; + } + + if (b != -1 && e != -1) { + uri.source = src; + uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':'); + uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':'); + uri.ipv6uri = true; + } + + uri.pathNames = pathNames(uri, uri['path']); + uri.queryKey = queryKey(uri, uri['query']); + return uri; + } + + function pathNames(obj, path) { + var regx = /\/{2,9}/g, + names = path.replace(regx, "/").split("/"); + + if (path.slice(0, 1) == '/' || path.length === 0) { + names.splice(0, 1); + } + + if (path.slice(-1) == '/') { + names.splice(names.length - 1, 1); + } + + return names; + } + + function queryKey(uri, query) { + var data = {}; + query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) { + if ($1) { + data[$1] = $2; + } + }); + return data; + } + + var Socket$1 = /*#__PURE__*/function (_Emitter) { + _inherits(Socket, _Emitter); + + var _super = _createSuper(Socket); + + /** + * Socket constructor. + * + * @param {String|Object} uri or options + * @param {Object} opts - options + * @api public + */ + function Socket(uri) { + var _this; + + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + _classCallCheck(this, Socket); + + _this = _super.call(this); + + if (uri && "object" === _typeof(uri)) { + opts = uri; + uri = null; + } + + if (uri) { + uri = parse(uri); + opts.hostname = uri.host; + opts.secure = uri.protocol === "https" || uri.protocol === "wss"; + opts.port = uri.port; + if (uri.query) opts.query = uri.query; + } else if (opts.host) { + opts.hostname = parse(opts.host).host; + } + + installTimerFunctions(_assertThisInitialized(_this), opts); + _this.secure = null != opts.secure ? opts.secure : typeof location !== "undefined" && "https:" === location.protocol; + + if (opts.hostname && !opts.port) { + // if no port is specified manually, use the protocol default + opts.port = _this.secure ? "443" : "80"; + } + + _this.hostname = opts.hostname || (typeof location !== "undefined" ? location.hostname : "localhost"); + _this.port = opts.port || (typeof location !== "undefined" && location.port ? location.port : _this.secure ? "443" : "80"); + _this.transports = opts.transports || ["polling", "websocket"]; + _this.readyState = ""; + _this.writeBuffer = []; + _this.prevBufferLen = 0; + _this.opts = _extends({ + path: "/engine.io", + agent: false, + withCredentials: false, + upgrade: true, + timestampParam: "t", + rememberUpgrade: false, + rejectUnauthorized: true, + perMessageDeflate: { + threshold: 1024 + }, + transportOptions: {}, + closeOnBeforeunload: true + }, opts); + _this.opts.path = _this.opts.path.replace(/\/$/, "") + "/"; + + if (typeof _this.opts.query === "string") { + _this.opts.query = decode(_this.opts.query); + } // set on handshake + + + _this.id = null; + _this.upgrades = null; + _this.pingInterval = null; + _this.pingTimeout = null; // set on heartbeat + + _this.pingTimeoutTimer = null; + + if (typeof addEventListener === "function") { + if (_this.opts.closeOnBeforeunload) { + // Firefox closes the connection when the "beforeunload" event is emitted but not Chrome. This event listener + // ensures every browser behaves the same (no "disconnect" event at the Socket.IO level when the page is + // closed/reloaded) + _this.beforeunloadEventListener = function () { + if (_this.transport) { + // silently close the transport + _this.transport.removeAllListeners(); + + _this.transport.close(); + } + }; + + addEventListener("beforeunload", _this.beforeunloadEventListener, false); + } + + if (_this.hostname !== "localhost") { + _this.offlineEventListener = function () { + _this.onClose("transport close", { + description: "network connection lost" + }); + }; + + addEventListener("offline", _this.offlineEventListener, false); + } + } + + _this.open(); + + return _this; + } + /** + * Creates transport of the given type. + * + * @param {String} transport name + * @return {Transport} + * @api private + */ + + + _createClass(Socket, [{ + key: "createTransport", + value: function createTransport(name) { + var query = _extends({}, this.opts.query); // append engine.io protocol identifier + + + query.EIO = protocol$1; // transport name + + query.transport = name; // session id if we already have one + + if (this.id) query.sid = this.id; + + var opts = _extends({}, this.opts.transportOptions[name], this.opts, { + query: query, + socket: this, + hostname: this.hostname, + secure: this.secure, + port: this.port + }); + + return new transports[name](opts); + } + /** + * Initializes transport to use and starts probe. + * + * @api private + */ + + }, { + key: "open", + value: function open() { + var _this2 = this; + + var transport; + + if (this.opts.rememberUpgrade && Socket.priorWebsocketSuccess && this.transports.indexOf("websocket") !== -1) { + transport = "websocket"; + } else if (0 === this.transports.length) { + // Emit error on next tick so it can be listened to + this.setTimeoutFn(function () { + _this2.emitReserved("error", "No transports available"); + }, 0); + return; + } else { + transport = this.transports[0]; + } + + this.readyState = "opening"; // Retry with the next transport if the transport is disabled (jsonp: false) + + try { + transport = this.createTransport(transport); + } catch (e) { + this.transports.shift(); + this.open(); + return; + } + + transport.open(); + this.setTransport(transport); + } + /** + * Sets the current transport. Disables the existing one (if any). + * + * @api private + */ + + }, { + key: "setTransport", + value: function setTransport(transport) { + var _this3 = this; + + if (this.transport) { + this.transport.removeAllListeners(); + } // set up transport + + + this.transport = transport; // set up transport listeners + + transport.on("drain", this.onDrain.bind(this)).on("packet", this.onPacket.bind(this)).on("error", this.onError.bind(this)).on("close", function (reason) { + return _this3.onClose("transport close", reason); + }); + } + /** + * Probes a transport. + * + * @param {String} transport name + * @api private + */ + + }, { + key: "probe", + value: function probe(name) { + var _this4 = this; + + var transport = this.createTransport(name); + var failed = false; + Socket.priorWebsocketSuccess = false; + + var onTransportOpen = function onTransportOpen() { + if (failed) return; + transport.send([{ + type: "ping", + data: "probe" + }]); + transport.once("packet", function (msg) { + if (failed) return; + + if ("pong" === msg.type && "probe" === msg.data) { + _this4.upgrading = true; + + _this4.emitReserved("upgrading", transport); + + if (!transport) return; + Socket.priorWebsocketSuccess = "websocket" === transport.name; + + _this4.transport.pause(function () { + if (failed) return; + if ("closed" === _this4.readyState) return; + cleanup(); + + _this4.setTransport(transport); + + transport.send([{ + type: "upgrade" + }]); + + _this4.emitReserved("upgrade", transport); + + transport = null; + _this4.upgrading = false; + + _this4.flush(); + }); + } else { + var err = new Error("probe error"); // @ts-ignore + + err.transport = transport.name; + + _this4.emitReserved("upgradeError", err); + } + }); + }; + + function freezeTransport() { + if (failed) return; // Any callback called by transport should be ignored since now + + failed = true; + cleanup(); + transport.close(); + transport = null; + } // Handle any error that happens while probing + + + var onerror = function onerror(err) { + var error = new Error("probe error: " + err); // @ts-ignore + + error.transport = transport.name; + freezeTransport(); + + _this4.emitReserved("upgradeError", error); + }; + + function onTransportClose() { + onerror("transport closed"); + } // When the socket is closed while we're probing + + + function onclose() { + onerror("socket closed"); + } // When the socket is upgraded while we're probing + + + function onupgrade(to) { + if (transport && to.name !== transport.name) { + freezeTransport(); + } + } // Remove all listeners on the transport and on self + + + var cleanup = function cleanup() { + transport.removeListener("open", onTransportOpen); + transport.removeListener("error", onerror); + transport.removeListener("close", onTransportClose); + + _this4.off("close", onclose); + + _this4.off("upgrading", onupgrade); + }; + + transport.once("open", onTransportOpen); + transport.once("error", onerror); + transport.once("close", onTransportClose); + this.once("close", onclose); + this.once("upgrading", onupgrade); + transport.open(); + } + /** + * Called when connection is deemed open. + * + * @api private + */ + + }, { + key: "onOpen", + value: function onOpen() { + this.readyState = "open"; + Socket.priorWebsocketSuccess = "websocket" === this.transport.name; + this.emitReserved("open"); + this.flush(); // we check for `readyState` in case an `open` + // listener already closed the socket + + if ("open" === this.readyState && this.opts.upgrade && this.transport.pause) { + var i = 0; + var l = this.upgrades.length; + + for (; i < l; i++) { + this.probe(this.upgrades[i]); + } + } + } + /** + * Handles a packet. + * + * @api private + */ + + }, { + key: "onPacket", + value: function onPacket(packet) { + if ("opening" === this.readyState || "open" === this.readyState || "closing" === this.readyState) { + this.emitReserved("packet", packet); // Socket is live - any packet counts + + this.emitReserved("heartbeat"); + + switch (packet.type) { + case "open": + this.onHandshake(JSON.parse(packet.data)); + break; + + case "ping": + this.resetPingTimeout(); + this.sendPacket("pong"); + this.emitReserved("ping"); + this.emitReserved("pong"); + break; + + case "error": + var err = new Error("server error"); // @ts-ignore + + err.code = packet.data; + this.onError(err); + break; + + case "message": + this.emitReserved("data", packet.data); + this.emitReserved("message", packet.data); + break; + } + } + } + /** + * Called upon handshake completion. + * + * @param {Object} data - handshake obj + * @api private + */ + + }, { + key: "onHandshake", + value: function onHandshake(data) { + this.emitReserved("handshake", data); + this.id = data.sid; + this.transport.query.sid = data.sid; + this.upgrades = this.filterUpgrades(data.upgrades); + this.pingInterval = data.pingInterval; + this.pingTimeout = data.pingTimeout; + this.maxPayload = data.maxPayload; + this.onOpen(); // In case open handler closes socket + + if ("closed" === this.readyState) return; + this.resetPingTimeout(); + } + /** + * Sets and resets ping timeout timer based on server pings. + * + * @api private + */ + + }, { + key: "resetPingTimeout", + value: function resetPingTimeout() { + var _this5 = this; + + this.clearTimeoutFn(this.pingTimeoutTimer); + this.pingTimeoutTimer = this.setTimeoutFn(function () { + _this5.onClose("ping timeout"); + }, this.pingInterval + this.pingTimeout); + + if (this.opts.autoUnref) { + this.pingTimeoutTimer.unref(); + } + } + /** + * Called on `drain` event + * + * @api private + */ + + }, { + key: "onDrain", + value: function onDrain() { + this.writeBuffer.splice(0, this.prevBufferLen); // setting prevBufferLen = 0 is very important + // for example, when upgrading, upgrade packet is sent over, + // and a nonzero prevBufferLen could cause problems on `drain` + + this.prevBufferLen = 0; + + if (0 === this.writeBuffer.length) { + this.emitReserved("drain"); + } else { + this.flush(); + } + } + /** + * Flush write buffers. + * + * @api private + */ + + }, { + key: "flush", + value: function flush() { + if ("closed" !== this.readyState && this.transport.writable && !this.upgrading && this.writeBuffer.length) { + var packets = this.getWritablePackets(); + this.transport.send(packets); // keep track of current length of writeBuffer + // splice writeBuffer and callbackBuffer on `drain` + + this.prevBufferLen = packets.length; + this.emitReserved("flush"); + } + } + /** + * Ensure the encoded size of the writeBuffer is below the maxPayload value sent by the server (only for HTTP + * long-polling) + * + * @private + */ + + }, { + key: "getWritablePackets", + value: function getWritablePackets() { + var shouldCheckPayloadSize = this.maxPayload && this.transport.name === "polling" && this.writeBuffer.length > 1; + + if (!shouldCheckPayloadSize) { + return this.writeBuffer; + } + + var payloadSize = 1; // first packet type + + for (var i = 0; i < this.writeBuffer.length; i++) { + var data = this.writeBuffer[i].data; + + if (data) { + payloadSize += byteLength(data); + } + + if (i > 0 && payloadSize > this.maxPayload) { + return this.writeBuffer.slice(0, i); + } + + payloadSize += 2; // separator + packet type + } + + return this.writeBuffer; + } + /** + * Sends a message. + * + * @param {String} message. + * @param {Function} callback function. + * @param {Object} options. + * @return {Socket} for chaining. + * @api public + */ + + }, { + key: "write", + value: function write(msg, options, fn) { + this.sendPacket("message", msg, options, fn); + return this; + } + }, { + key: "send", + value: function send(msg, options, fn) { + this.sendPacket("message", msg, options, fn); + return this; + } + /** + * Sends a packet. + * + * @param {String} packet type. + * @param {String} data. + * @param {Object} options. + * @param {Function} callback function. + * @api private + */ + + }, { + key: "sendPacket", + value: function sendPacket(type, data, options, fn) { + if ("function" === typeof data) { + fn = data; + data = undefined; + } + + if ("function" === typeof options) { + fn = options; + options = null; + } + + if ("closing" === this.readyState || "closed" === this.readyState) { + return; + } + + options = options || {}; + options.compress = false !== options.compress; + var packet = { + type: type, + data: data, + options: options + }; + this.emitReserved("packetCreate", packet); + this.writeBuffer.push(packet); + if (fn) this.once("flush", fn); + this.flush(); + } + /** + * Closes the connection. + * + * @api public + */ + + }, { + key: "close", + value: function close() { + var _this6 = this; + + var close = function close() { + _this6.onClose("forced close"); + + _this6.transport.close(); + }; + + var cleanupAndClose = function cleanupAndClose() { + _this6.off("upgrade", cleanupAndClose); + + _this6.off("upgradeError", cleanupAndClose); + + close(); + }; + + var waitForUpgrade = function waitForUpgrade() { + // wait for upgrade to finish since we can't send packets while pausing a transport + _this6.once("upgrade", cleanupAndClose); + + _this6.once("upgradeError", cleanupAndClose); + }; + + if ("opening" === this.readyState || "open" === this.readyState) { + this.readyState = "closing"; + + if (this.writeBuffer.length) { + this.once("drain", function () { + if (_this6.upgrading) { + waitForUpgrade(); + } else { + close(); + } + }); + } else if (this.upgrading) { + waitForUpgrade(); + } else { + close(); + } + } + + return this; + } + /** + * Called upon transport error + * + * @api private + */ + + }, { + key: "onError", + value: function onError(err) { + Socket.priorWebsocketSuccess = false; + this.emitReserved("error", err); + this.onClose("transport error", err); + } + /** + * Called upon transport close. + * + * @api private + */ + + }, { + key: "onClose", + value: function onClose(reason, description) { + if ("opening" === this.readyState || "open" === this.readyState || "closing" === this.readyState) { + // clear timers + this.clearTimeoutFn(this.pingTimeoutTimer); // stop event from firing again for transport + + this.transport.removeAllListeners("close"); // ensure transport won't stay open + + this.transport.close(); // ignore further transport communication + + this.transport.removeAllListeners(); + + if (typeof removeEventListener === "function") { + removeEventListener("beforeunload", this.beforeunloadEventListener, false); + removeEventListener("offline", this.offlineEventListener, false); + } // set ready state + + + this.readyState = "closed"; // clear session id + + this.id = null; // emit close event + + this.emitReserved("close", reason, description); // clean buffers after, so users can still + // grab the buffers on `close` event + + this.writeBuffer = []; + this.prevBufferLen = 0; + } + } + /** + * Filters upgrades, returning only those matching client transports. + * + * @param {Array} server upgrades + * @api private + * + */ + + }, { + key: "filterUpgrades", + value: function filterUpgrades(upgrades) { + var filteredUpgrades = []; + var i = 0; + var j = upgrades.length; + + for (; i < j; i++) { + if (~this.transports.indexOf(upgrades[i])) filteredUpgrades.push(upgrades[i]); + } + + return filteredUpgrades; + } + }]); + + return Socket; + }(Emitter); + Socket$1.protocol = protocol$1; + + Socket$1.protocol; + + /** + * URL parser. + * + * @param uri - url + * @param path - the request path of the connection + * @param loc - An object meant to mimic window.location. + * Defaults to window.location. + * @public + */ + + function url(uri) { + var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ""; + var loc = arguments.length > 2 ? arguments[2] : undefined; + var obj = uri; // default to window.location + + loc = loc || typeof location !== "undefined" && location; + if (null == uri) uri = loc.protocol + "//" + loc.host; // relative path support + + if (typeof uri === "string") { + if ("/" === uri.charAt(0)) { + if ("/" === uri.charAt(1)) { + uri = loc.protocol + uri; + } else { + uri = loc.host + uri; + } + } + + if (!/^(https?|wss?):\/\//.test(uri)) { + if ("undefined" !== typeof loc) { + uri = loc.protocol + "//" + uri; + } else { + uri = "https://" + uri; + } + } // parse + + + obj = parse(uri); + } // make sure we treat `localhost:80` and `localhost` equally + + + if (!obj.port) { + if (/^(http|ws)$/.test(obj.protocol)) { + obj.port = "80"; + } else if (/^(http|ws)s$/.test(obj.protocol)) { + obj.port = "443"; + } + } + + obj.path = obj.path || "/"; + var ipv6 = obj.host.indexOf(":") !== -1; + var host = ipv6 ? "[" + obj.host + "]" : obj.host; // define unique id + + obj.id = obj.protocol + "://" + host + ":" + obj.port + path; // define href + + obj.href = obj.protocol + "://" + host + (loc && loc.port === obj.port ? "" : ":" + obj.port); + return obj; + } + + var withNativeArrayBuffer = typeof ArrayBuffer === "function"; + + var isView = function isView(obj) { + return typeof ArrayBuffer.isView === "function" ? ArrayBuffer.isView(obj) : obj.buffer instanceof ArrayBuffer; + }; + + var toString = Object.prototype.toString; + var withNativeBlob = typeof Blob === "function" || typeof Blob !== "undefined" && toString.call(Blob) === "[object BlobConstructor]"; + var withNativeFile = typeof File === "function" || typeof File !== "undefined" && toString.call(File) === "[object FileConstructor]"; + /** + * Returns true if obj is a Buffer, an ArrayBuffer, a Blob or a File. + * + * @private + */ + + function isBinary(obj) { + return withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj)) || withNativeBlob && obj instanceof Blob || withNativeFile && obj instanceof File; + } + function hasBinary(obj, toJSON) { + if (!obj || _typeof(obj) !== "object") { + return false; + } + + if (Array.isArray(obj)) { + for (var i = 0, l = obj.length; i < l; i++) { + if (hasBinary(obj[i])) { + return true; + } + } + + return false; + } + + if (isBinary(obj)) { + return true; + } + + if (obj.toJSON && typeof obj.toJSON === "function" && arguments.length === 1) { + return hasBinary(obj.toJSON(), true); + } + + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) { + return true; + } + } + + return false; + } + + /** + * Replaces every Buffer | ArrayBuffer | Blob | File in packet with a numbered placeholder. + * + * @param {Object} packet - socket.io event packet + * @return {Object} with deconstructed packet and list of buffers + * @public + */ + + function deconstructPacket(packet) { + var buffers = []; + var packetData = packet.data; + var pack = packet; + pack.data = _deconstructPacket(packetData, buffers); + pack.attachments = buffers.length; // number of binary 'attachments' + + return { + packet: pack, + buffers: buffers + }; + } + + function _deconstructPacket(data, buffers) { + if (!data) return data; + + if (isBinary(data)) { + var placeholder = { + _placeholder: true, + num: buffers.length + }; + buffers.push(data); + return placeholder; + } else if (Array.isArray(data)) { + var newData = new Array(data.length); + + for (var i = 0; i < data.length; i++) { + newData[i] = _deconstructPacket(data[i], buffers); + } + + return newData; + } else if (_typeof(data) === "object" && !(data instanceof Date)) { + var _newData = {}; + + for (var key in data) { + if (Object.prototype.hasOwnProperty.call(data, key)) { + _newData[key] = _deconstructPacket(data[key], buffers); + } + } + + return _newData; + } + + return data; + } + /** + * Reconstructs a binary packet from its placeholder packet and buffers + * + * @param {Object} packet - event packet with placeholders + * @param {Array} buffers - binary buffers to put in placeholder positions + * @return {Object} reconstructed packet + * @public + */ + + + function reconstructPacket(packet, buffers) { + packet.data = _reconstructPacket(packet.data, buffers); + packet.attachments = undefined; // no longer useful + + return packet; + } + + function _reconstructPacket(data, buffers) { + if (!data) return data; + + if (data && data._placeholder) { + return buffers[data.num]; // appropriate buffer (should be natural order anyway) + } else if (Array.isArray(data)) { + for (var i = 0; i < data.length; i++) { + data[i] = _reconstructPacket(data[i], buffers); + } + } else if (_typeof(data) === "object") { + for (var key in data) { + if (Object.prototype.hasOwnProperty.call(data, key)) { + data[key] = _reconstructPacket(data[key], buffers); + } + } + } + + return data; + } + + /** + * Protocol version. + * + * @public + */ + + var protocol = 5; + var PacketType; + + (function (PacketType) { + PacketType[PacketType["CONNECT"] = 0] = "CONNECT"; + PacketType[PacketType["DISCONNECT"] = 1] = "DISCONNECT"; + PacketType[PacketType["EVENT"] = 2] = "EVENT"; + PacketType[PacketType["ACK"] = 3] = "ACK"; + PacketType[PacketType["CONNECT_ERROR"] = 4] = "CONNECT_ERROR"; + PacketType[PacketType["BINARY_EVENT"] = 5] = "BINARY_EVENT"; + PacketType[PacketType["BINARY_ACK"] = 6] = "BINARY_ACK"; + })(PacketType || (PacketType = {})); + /** + * A socket.io Encoder instance + */ + + + var Encoder = /*#__PURE__*/function () { + /** + * Encoder constructor + * + * @param {function} replacer - custom replacer to pass down to JSON.parse + */ + function Encoder(replacer) { + _classCallCheck(this, Encoder); + + this.replacer = replacer; + } + /** + * Encode a packet as a single string if non-binary, or as a + * buffer sequence, depending on packet type. + * + * @param {Object} obj - packet object + */ + + + _createClass(Encoder, [{ + key: "encode", + value: function encode(obj) { + if (obj.type === PacketType.EVENT || obj.type === PacketType.ACK) { + if (hasBinary(obj)) { + obj.type = obj.type === PacketType.EVENT ? PacketType.BINARY_EVENT : PacketType.BINARY_ACK; + return this.encodeAsBinary(obj); + } + } + + return [this.encodeAsString(obj)]; + } + /** + * Encode packet as string. + */ + + }, { + key: "encodeAsString", + value: function encodeAsString(obj) { + // first is type + var str = "" + obj.type; // attachments if we have them + + if (obj.type === PacketType.BINARY_EVENT || obj.type === PacketType.BINARY_ACK) { + str += obj.attachments + "-"; + } // if we have a namespace other than `/` + // we append it followed by a comma `,` + + + if (obj.nsp && "/" !== obj.nsp) { + str += obj.nsp + ","; + } // immediately followed by the id + + + if (null != obj.id) { + str += obj.id; + } // json data + + + if (null != obj.data) { + str += JSON.stringify(obj.data, this.replacer); + } + + return str; + } + /** + * Encode packet as 'buffer sequence' by removing blobs, and + * deconstructing packet into object with placeholders and + * a list of buffers. + */ + + }, { + key: "encodeAsBinary", + value: function encodeAsBinary(obj) { + var deconstruction = deconstructPacket(obj); + var pack = this.encodeAsString(deconstruction.packet); + var buffers = deconstruction.buffers; + buffers.unshift(pack); // add packet info to beginning of data list + + return buffers; // write all the buffers + } + }]); + + return Encoder; + }(); + /** + * A socket.io Decoder instance + * + * @return {Object} decoder + */ + + var Decoder = /*#__PURE__*/function (_Emitter) { + _inherits(Decoder, _Emitter); + + var _super = _createSuper(Decoder); + + /** + * Decoder constructor + * + * @param {function} reviver - custom reviver to pass down to JSON.stringify + */ + function Decoder(reviver) { + var _this; + + _classCallCheck(this, Decoder); + + _this = _super.call(this); + _this.reviver = reviver; + return _this; + } + /** + * Decodes an encoded packet string into packet JSON. + * + * @param {String} obj - encoded packet + */ + + + _createClass(Decoder, [{ + key: "add", + value: function add(obj) { + var packet; + + if (typeof obj === "string") { + packet = this.decodeString(obj); + + if (packet.type === PacketType.BINARY_EVENT || packet.type === PacketType.BINARY_ACK) { + // binary packet's json + this.reconstructor = new BinaryReconstructor(packet); // no attachments, labeled binary but no binary data to follow + + if (packet.attachments === 0) { + _get(_getPrototypeOf(Decoder.prototype), "emitReserved", this).call(this, "decoded", packet); + } + } else { + // non-binary full packet + _get(_getPrototypeOf(Decoder.prototype), "emitReserved", this).call(this, "decoded", packet); + } + } else if (isBinary(obj) || obj.base64) { + // raw binary data + if (!this.reconstructor) { + throw new Error("got binary data when not reconstructing a packet"); + } else { + packet = this.reconstructor.takeBinaryData(obj); + + if (packet) { + // received final buffer + this.reconstructor = null; + + _get(_getPrototypeOf(Decoder.prototype), "emitReserved", this).call(this, "decoded", packet); + } + } + } else { + throw new Error("Unknown type: " + obj); + } + } + /** + * Decode a packet String (JSON data) + * + * @param {String} str + * @return {Object} packet + */ + + }, { + key: "decodeString", + value: function decodeString(str) { + var i = 0; // look up type + + var p = { + type: Number(str.charAt(0)) + }; + + if (PacketType[p.type] === undefined) { + throw new Error("unknown packet type " + p.type); + } // look up attachments if type binary + + + if (p.type === PacketType.BINARY_EVENT || p.type === PacketType.BINARY_ACK) { + var start = i + 1; + + while (str.charAt(++i) !== "-" && i != str.length) {} + + var buf = str.substring(start, i); + + if (buf != Number(buf) || str.charAt(i) !== "-") { + throw new Error("Illegal attachments"); + } + + p.attachments = Number(buf); + } // look up namespace (if any) + + + if ("/" === str.charAt(i + 1)) { + var _start = i + 1; + + while (++i) { + var c = str.charAt(i); + if ("," === c) break; + if (i === str.length) break; + } + + p.nsp = str.substring(_start, i); + } else { + p.nsp = "/"; + } // look up id + + + var next = str.charAt(i + 1); + + if ("" !== next && Number(next) == next) { + var _start2 = i + 1; + + while (++i) { + var _c = str.charAt(i); + + if (null == _c || Number(_c) != _c) { + --i; + break; + } + + if (i === str.length) break; + } + + p.id = Number(str.substring(_start2, i + 1)); + } // look up json data + + + if (str.charAt(++i)) { + var payload = this.tryParse(str.substr(i)); + + if (Decoder.isPayloadValid(p.type, payload)) { + p.data = payload; + } else { + throw new Error("invalid payload"); + } + } + + return p; + } + }, { + key: "tryParse", + value: function tryParse(str) { + try { + return JSON.parse(str, this.reviver); + } catch (e) { + return false; + } + } + }, { + key: "destroy", + value: + /** + * Deallocates a parser's resources + */ + function destroy() { + if (this.reconstructor) { + this.reconstructor.finishedReconstruction(); + } + } + }], [{ + key: "isPayloadValid", + value: function isPayloadValid(type, payload) { + switch (type) { + case PacketType.CONNECT: + return _typeof(payload) === "object"; + + case PacketType.DISCONNECT: + return payload === undefined; + + case PacketType.CONNECT_ERROR: + return typeof payload === "string" || _typeof(payload) === "object"; + + case PacketType.EVENT: + case PacketType.BINARY_EVENT: + return Array.isArray(payload) && payload.length > 0; + + case PacketType.ACK: + case PacketType.BINARY_ACK: + return Array.isArray(payload); + } + } + }]); + + return Decoder; + }(Emitter); + /** + * A manager of a binary event's 'buffer sequence'. Should + * be constructed whenever a packet of type BINARY_EVENT is + * decoded. + * + * @param {Object} packet + * @return {BinaryReconstructor} initialized reconstructor + */ + + var BinaryReconstructor = /*#__PURE__*/function () { + function BinaryReconstructor(packet) { + _classCallCheck(this, BinaryReconstructor); + + this.packet = packet; + this.buffers = []; + this.reconPack = packet; + } + /** + * Method to be called when binary data received from connection + * after a BINARY_EVENT packet. + * + * @param {Buffer | ArrayBuffer} binData - the raw binary data received + * @return {null | Object} returns null if more binary data is expected or + * a reconstructed packet object if all buffers have been received. + */ + + + _createClass(BinaryReconstructor, [{ + key: "takeBinaryData", + value: function takeBinaryData(binData) { + this.buffers.push(binData); + + if (this.buffers.length === this.reconPack.attachments) { + // done with buffer list + var packet = reconstructPacket(this.reconPack, this.buffers); + this.finishedReconstruction(); + return packet; + } + + return null; + } + /** + * Cleans up binary packet reconstruction variables. + */ + + }, { + key: "finishedReconstruction", + value: function finishedReconstruction() { + this.reconPack = null; + this.buffers = []; + } + }]); + + return BinaryReconstructor; + }(); + + var parser = /*#__PURE__*/Object.freeze({ + __proto__: null, + protocol: protocol, + get PacketType () { return PacketType; }, + Encoder: Encoder, + Decoder: Decoder + }); + + function on(obj, ev, fn) { + obj.on(ev, fn); + return function subDestroy() { + obj.off(ev, fn); + }; + } + + /** + * Internal events. + * These events can't be emitted by the user. + */ + + var RESERVED_EVENTS = Object.freeze({ + connect: 1, + connect_error: 1, + disconnect: 1, + disconnecting: 1, + // EventEmitter reserved events: https://nodejs.org/api/events.html#events_event_newlistener + newListener: 1, + removeListener: 1 + }); + /** + * A Socket is the fundamental class for interacting with the server. + * + * A Socket belongs to a certain Namespace (by default /) and uses an underlying {@link Manager} to communicate. + * + * @example + * const socket = io(); + * + * socket.on("connect", () => { + * console.log("connected"); + * }); + * + * // send an event to the server + * socket.emit("foo", "bar"); + * + * socket.on("foobar", () => { + * // an event was received from the server + * }); + * + * // upon disconnection + * socket.on("disconnect", (reason) => { + * console.log(`disconnected due to ${reason}`); + * }); + */ + + var Socket = /*#__PURE__*/function (_Emitter) { + _inherits(Socket, _Emitter); + + var _super = _createSuper(Socket); + + /** + * `Socket` constructor. + */ + function Socket(io, nsp, opts) { + var _this; + + _classCallCheck(this, Socket); + + _this = _super.call(this); + /** + * Whether the socket is currently connected to the server. + * + * @example + * const socket = io(); + * + * socket.on("connect", () => { + * console.log(socket.connected); // true + * }); + * + * socket.on("disconnect", () => { + * console.log(socket.connected); // false + * }); + */ + + _this.connected = false; + /** + * Buffer for packets received before the CONNECT packet + */ + + _this.receiveBuffer = []; + /** + * Buffer for packets that will be sent once the socket is connected + */ + + _this.sendBuffer = []; + _this.ids = 0; + _this.acks = {}; + _this.flags = {}; + _this.io = io; + _this.nsp = nsp; + + if (opts && opts.auth) { + _this.auth = opts.auth; + } + + if (_this.io._autoConnect) _this.open(); + return _this; + } + /** + * Whether the socket is currently disconnected + * + * @example + * const socket = io(); + * + * socket.on("connect", () => { + * console.log(socket.disconnected); // false + * }); + * + * socket.on("disconnect", () => { + * console.log(socket.disconnected); // true + * }); + */ + + + _createClass(Socket, [{ + key: "disconnected", + get: function get() { + return !this.connected; + } + /** + * Subscribe to open, close and packet events + * + * @private + */ + + }, { + key: "subEvents", + value: function subEvents() { + if (this.subs) return; + var io = this.io; + this.subs = [on(io, "open", this.onopen.bind(this)), on(io, "packet", this.onpacket.bind(this)), on(io, "error", this.onerror.bind(this)), on(io, "close", this.onclose.bind(this))]; + } + /** + * Whether the Socket will try to reconnect when its Manager connects or reconnects. + * + * @example + * const socket = io(); + * + * console.log(socket.active); // true + * + * socket.on("disconnect", (reason) => { + * if (reason === "io server disconnect") { + * // the disconnection was initiated by the server, you need to manually reconnect + * console.log(socket.active); // false + * } + * // else the socket will automatically try to reconnect + * console.log(socket.active); // true + * }); + */ + + }, { + key: "active", + get: function get() { + return !!this.subs; + } + /** + * "Opens" the socket. + * + * @example + * const socket = io({ + * autoConnect: false + * }); + * + * socket.connect(); + */ + + }, { + key: "connect", + value: function connect() { + if (this.connected) return this; + this.subEvents(); + if (!this.io["_reconnecting"]) this.io.open(); // ensure open + + if ("open" === this.io._readyState) this.onopen(); + return this; + } + /** + * Alias for {@link connect()}. + */ + + }, { + key: "open", + value: function open() { + return this.connect(); + } + /** + * Sends a `message` event. + * + * This method mimics the WebSocket.send() method. + * + * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/send + * + * @example + * socket.send("hello"); + * + * // this is equivalent to + * socket.emit("message", "hello"); + * + * @return self + */ + + }, { + key: "send", + value: function send() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + args.unshift("message"); + this.emit.apply(this, args); + return this; + } + /** + * Override `emit`. + * If the event is in `events`, it's emitted normally. + * + * @example + * socket.emit("hello", "world"); + * + * // all serializable datastructures are supported (no need to call JSON.stringify) + * socket.emit("hello", 1, "2", { 3: ["4"], 5: Uint8Array.from([6]) }); + * + * // with an acknowledgement from the server + * socket.emit("hello", "world", (val) => { + * // ... + * }); + * + * @return self + */ + + }, { + key: "emit", + value: function emit(ev) { + if (RESERVED_EVENTS.hasOwnProperty(ev)) { + throw new Error('"' + ev.toString() + '" is a reserved event name'); + } + + for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { + args[_key2 - 1] = arguments[_key2]; + } + + args.unshift(ev); + var packet = { + type: PacketType.EVENT, + data: args + }; + packet.options = {}; + packet.options.compress = this.flags.compress !== false; // event ack callback + + if ("function" === typeof args[args.length - 1]) { + var id = this.ids++; + var ack = args.pop(); + + this._registerAckCallback(id, ack); + + packet.id = id; + } + + var isTransportWritable = this.io.engine && this.io.engine.transport && this.io.engine.transport.writable; + var discardPacket = this.flags["volatile"] && (!isTransportWritable || !this.connected); + + if (discardPacket) ; else if (this.connected) { + this.notifyOutgoingListeners(packet); + this.packet(packet); + } else { + this.sendBuffer.push(packet); + } + + this.flags = {}; + return this; + } + /** + * @private + */ + + }, { + key: "_registerAckCallback", + value: function _registerAckCallback(id, ack) { + var _this2 = this; + + var timeout = this.flags.timeout; + + if (timeout === undefined) { + this.acks[id] = ack; + return; + } // @ts-ignore + + + var timer = this.io.setTimeoutFn(function () { + delete _this2.acks[id]; + + for (var i = 0; i < _this2.sendBuffer.length; i++) { + if (_this2.sendBuffer[i].id === id) { + _this2.sendBuffer.splice(i, 1); + } + } + + ack.call(_this2, new Error("operation has timed out")); + }, timeout); + + this.acks[id] = function () { + // @ts-ignore + _this2.io.clearTimeoutFn(timer); + + for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { + args[_key3] = arguments[_key3]; + } + + ack.apply(_this2, [null].concat(args)); + }; + } + /** + * Sends a packet. + * + * @param packet + * @private + */ + + }, { + key: "packet", + value: function packet(_packet) { + _packet.nsp = this.nsp; + + this.io._packet(_packet); + } + /** + * Called upon engine `open`. + * + * @private + */ + + }, { + key: "onopen", + value: function onopen() { + var _this3 = this; + + if (typeof this.auth == "function") { + this.auth(function (data) { + _this3.packet({ + type: PacketType.CONNECT, + data: data + }); + }); + } else { + this.packet({ + type: PacketType.CONNECT, + data: this.auth + }); + } + } + /** + * Called upon engine or manager `error`. + * + * @param err + * @private + */ + + }, { + key: "onerror", + value: function onerror(err) { + if (!this.connected) { + this.emitReserved("connect_error", err); + } + } + /** + * Called upon engine `close`. + * + * @param reason + * @param description + * @private + */ + + }, { + key: "onclose", + value: function onclose(reason, description) { + this.connected = false; + delete this.id; + this.emitReserved("disconnect", reason, description); + } + /** + * Called with socket packet. + * + * @param packet + * @private + */ + + }, { + key: "onpacket", + value: function onpacket(packet) { + var sameNamespace = packet.nsp === this.nsp; + if (!sameNamespace) return; + + switch (packet.type) { + case PacketType.CONNECT: + if (packet.data && packet.data.sid) { + var id = packet.data.sid; + this.onconnect(id); + } else { + this.emitReserved("connect_error", new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)")); + } + + break; + + case PacketType.EVENT: + case PacketType.BINARY_EVENT: + this.onevent(packet); + break; + + case PacketType.ACK: + case PacketType.BINARY_ACK: + this.onack(packet); + break; + + case PacketType.DISCONNECT: + this.ondisconnect(); + break; + + case PacketType.CONNECT_ERROR: + this.destroy(); + var err = new Error(packet.data.message); // @ts-ignore + + err.data = packet.data.data; + this.emitReserved("connect_error", err); + break; + } + } + /** + * Called upon a server event. + * + * @param packet + * @private + */ + + }, { + key: "onevent", + value: function onevent(packet) { + var args = packet.data || []; + + if (null != packet.id) { + args.push(this.ack(packet.id)); + } + + if (this.connected) { + this.emitEvent(args); + } else { + this.receiveBuffer.push(Object.freeze(args)); + } + } + }, { + key: "emitEvent", + value: function emitEvent(args) { + if (this._anyListeners && this._anyListeners.length) { + var listeners = this._anyListeners.slice(); + + var _iterator = _createForOfIteratorHelper(listeners), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var listener = _step.value; + listener.apply(this, args); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + } + + _get(_getPrototypeOf(Socket.prototype), "emit", this).apply(this, args); + } + /** + * Produces an ack callback to emit with an event. + * + * @private + */ + + }, { + key: "ack", + value: function ack(id) { + var self = this; + var sent = false; + return function () { + // prevent double callbacks + if (sent) return; + sent = true; + + for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { + args[_key4] = arguments[_key4]; + } + + self.packet({ + type: PacketType.ACK, + id: id, + data: args + }); + }; + } + /** + * Called upon a server acknowlegement. + * + * @param packet + * @private + */ + + }, { + key: "onack", + value: function onack(packet) { + var ack = this.acks[packet.id]; + + if ("function" === typeof ack) { + ack.apply(this, packet.data); + delete this.acks[packet.id]; + } + } + /** + * Called upon server connect. + * + * @private + */ + + }, { + key: "onconnect", + value: function onconnect(id) { + this.id = id; + this.connected = true; + this.emitBuffered(); + this.emitReserved("connect"); + } + /** + * Emit buffered events (received and emitted). + * + * @private + */ + + }, { + key: "emitBuffered", + value: function emitBuffered() { + var _this4 = this; + + this.receiveBuffer.forEach(function (args) { + return _this4.emitEvent(args); + }); + this.receiveBuffer = []; + this.sendBuffer.forEach(function (packet) { + _this4.notifyOutgoingListeners(packet); + + _this4.packet(packet); + }); + this.sendBuffer = []; + } + /** + * Called upon server disconnect. + * + * @private + */ + + }, { + key: "ondisconnect", + value: function ondisconnect() { + this.destroy(); + this.onclose("io server disconnect"); + } + /** + * Called upon forced client/server side disconnections, + * this method ensures the manager stops tracking us and + * that reconnections don't get triggered for this. + * + * @private + */ + + }, { + key: "destroy", + value: function destroy() { + if (this.subs) { + // clean subscriptions to avoid reconnections + this.subs.forEach(function (subDestroy) { + return subDestroy(); + }); + this.subs = undefined; + } + + this.io["_destroy"](this); + } + /** + * Disconnects the socket manually. In that case, the socket will not try to reconnect. + * + * If this is the last active Socket instance of the {@link Manager}, the low-level connection will be closed. + * + * @example + * const socket = io(); + * + * socket.on("disconnect", (reason) => { + * // console.log(reason); prints "io client disconnect" + * }); + * + * socket.disconnect(); + * + * @return self + */ + + }, { + key: "disconnect", + value: function disconnect() { + if (this.connected) { + this.packet({ + type: PacketType.DISCONNECT + }); + } // remove socket from pool + + + this.destroy(); + + if (this.connected) { + // fire events + this.onclose("io client disconnect"); + } + + return this; + } + /** + * Alias for {@link disconnect()}. + * + * @return self + */ + + }, { + key: "close", + value: function close() { + return this.disconnect(); + } + /** + * Sets the compress flag. + * + * @example + * socket.compress(false).emit("hello"); + * + * @param compress - if `true`, compresses the sending data + * @return self + */ + + }, { + key: "compress", + value: function compress(_compress) { + this.flags.compress = _compress; + return this; + } + /** + * Sets a modifier for a subsequent event emission that the event message will be dropped when this socket is not + * ready to send messages. + * + * @example + * socket.volatile.emit("hello"); // the server may or may not receive it + * + * @returns self + */ + + }, { + key: "volatile", + get: function get() { + this.flags["volatile"] = true; + return this; + } + /** + * Sets a modifier for a subsequent event emission that the callback will be called with an error when the + * given number of milliseconds have elapsed without an acknowledgement from the server: + * + * @example + * socket.timeout(5000).emit("my-event", (err) => { + * if (err) { + * // the server did not acknowledge the event in the given delay + * } + * }); + * + * @returns self + */ + + }, { + key: "timeout", + value: function timeout(_timeout) { + this.flags.timeout = _timeout; + return this; + } + /** + * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the + * callback. + * + * @example + * socket.onAny((event, ...args) => { + * console.log(`got ${event}`); + * }); + * + * @param listener + */ + + }, { + key: "onAny", + value: function onAny(listener) { + this._anyListeners = this._anyListeners || []; + + this._anyListeners.push(listener); + + return this; + } + /** + * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the + * callback. The listener is added to the beginning of the listeners array. + * + * @example + * socket.prependAny((event, ...args) => { + * console.log(`got event ${event}`); + * }); + * + * @param listener + */ + + }, { + key: "prependAny", + value: function prependAny(listener) { + this._anyListeners = this._anyListeners || []; + + this._anyListeners.unshift(listener); + + return this; + } + /** + * Removes the listener that will be fired when any event is emitted. + * + * @example + * const catchAllListener = (event, ...args) => { + * console.log(`got event ${event}`); + * } + * + * socket.onAny(catchAllListener); + * + * // remove a specific listener + * socket.offAny(catchAllListener); + * + * // or remove all listeners + * socket.offAny(); + * + * @param listener + */ + + }, { + key: "offAny", + value: function offAny(listener) { + if (!this._anyListeners) { + return this; + } + + if (listener) { + var listeners = this._anyListeners; + + for (var i = 0; i < listeners.length; i++) { + if (listener === listeners[i]) { + listeners.splice(i, 1); + return this; + } + } + } else { + this._anyListeners = []; + } + + return this; + } + /** + * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated, + * e.g. to remove listeners. + */ + + }, { + key: "listenersAny", + value: function listenersAny() { + return this._anyListeners || []; + } + /** + * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the + * callback. + * + * Note: acknowledgements sent to the server are not included. + * + * @example + * socket.onAnyOutgoing((event, ...args) => { + * console.log(`sent event ${event}`); + * }); + * + * @param listener + */ + + }, { + key: "onAnyOutgoing", + value: function onAnyOutgoing(listener) { + this._anyOutgoingListeners = this._anyOutgoingListeners || []; + + this._anyOutgoingListeners.push(listener); + + return this; + } + /** + * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the + * callback. The listener is added to the beginning of the listeners array. + * + * Note: acknowledgements sent to the server are not included. + * + * @example + * socket.prependAnyOutgoing((event, ...args) => { + * console.log(`sent event ${event}`); + * }); + * + * @param listener + */ + + }, { + key: "prependAnyOutgoing", + value: function prependAnyOutgoing(listener) { + this._anyOutgoingListeners = this._anyOutgoingListeners || []; + + this._anyOutgoingListeners.unshift(listener); + + return this; + } + /** + * Removes the listener that will be fired when any event is emitted. + * + * @example + * const catchAllListener = (event, ...args) => { + * console.log(`sent event ${event}`); + * } + * + * socket.onAnyOutgoing(catchAllListener); + * + * // remove a specific listener + * socket.offAnyOutgoing(catchAllListener); + * + * // or remove all listeners + * socket.offAnyOutgoing(); + * + * @param [listener] - the catch-all listener (optional) + */ + + }, { + key: "offAnyOutgoing", + value: function offAnyOutgoing(listener) { + if (!this._anyOutgoingListeners) { + return this; + } + + if (listener) { + var listeners = this._anyOutgoingListeners; + + for (var i = 0; i < listeners.length; i++) { + if (listener === listeners[i]) { + listeners.splice(i, 1); + return this; + } + } + } else { + this._anyOutgoingListeners = []; + } + + return this; + } + /** + * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated, + * e.g. to remove listeners. + */ + + }, { + key: "listenersAnyOutgoing", + value: function listenersAnyOutgoing() { + return this._anyOutgoingListeners || []; + } + /** + * Notify the listeners for each packet sent + * + * @param packet + * + * @private + */ + + }, { + key: "notifyOutgoingListeners", + value: function notifyOutgoingListeners(packet) { + if (this._anyOutgoingListeners && this._anyOutgoingListeners.length) { + var listeners = this._anyOutgoingListeners.slice(); + + var _iterator2 = _createForOfIteratorHelper(listeners), + _step2; + + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var listener = _step2.value; + listener.apply(this, packet.data); + } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); + } + } + } + }]); + + return Socket; + }(Emitter); + + /** + * Initialize backoff timer with `opts`. + * + * - `min` initial timeout in milliseconds [100] + * - `max` max timeout [10000] + * - `jitter` [0] + * - `factor` [2] + * + * @param {Object} opts + * @api public + */ + function Backoff(opts) { + opts = opts || {}; + this.ms = opts.min || 100; + this.max = opts.max || 10000; + this.factor = opts.factor || 2; + this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0; + this.attempts = 0; + } + /** + * Return the backoff duration. + * + * @return {Number} + * @api public + */ + + Backoff.prototype.duration = function () { + var ms = this.ms * Math.pow(this.factor, this.attempts++); + + if (this.jitter) { + var rand = Math.random(); + var deviation = Math.floor(rand * this.jitter * ms); + ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation; + } + + return Math.min(ms, this.max) | 0; + }; + /** + * Reset the number of attempts. + * + * @api public + */ + + + Backoff.prototype.reset = function () { + this.attempts = 0; + }; + /** + * Set the minimum duration + * + * @api public + */ + + + Backoff.prototype.setMin = function (min) { + this.ms = min; + }; + /** + * Set the maximum duration + * + * @api public + */ + + + Backoff.prototype.setMax = function (max) { + this.max = max; + }; + /** + * Set the jitter + * + * @api public + */ + + + Backoff.prototype.setJitter = function (jitter) { + this.jitter = jitter; + }; + + var Manager = /*#__PURE__*/function (_Emitter) { + _inherits(Manager, _Emitter); + + var _super = _createSuper(Manager); + + function Manager(uri, opts) { + var _this; + + _classCallCheck(this, Manager); + + var _a; + + _this = _super.call(this); + _this.nsps = {}; + _this.subs = []; + + if (uri && "object" === _typeof(uri)) { + opts = uri; + uri = undefined; + } + + opts = opts || {}; + opts.path = opts.path || "/socket.io"; + _this.opts = opts; + installTimerFunctions(_assertThisInitialized(_this), opts); + + _this.reconnection(opts.reconnection !== false); + + _this.reconnectionAttempts(opts.reconnectionAttempts || Infinity); + + _this.reconnectionDelay(opts.reconnectionDelay || 1000); + + _this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000); + + _this.randomizationFactor((_a = opts.randomizationFactor) !== null && _a !== void 0 ? _a : 0.5); + + _this.backoff = new Backoff({ + min: _this.reconnectionDelay(), + max: _this.reconnectionDelayMax(), + jitter: _this.randomizationFactor() + }); + + _this.timeout(null == opts.timeout ? 20000 : opts.timeout); + + _this._readyState = "closed"; + _this.uri = uri; + + var _parser = opts.parser || parser; + + _this.encoder = new _parser.Encoder(); + _this.decoder = new _parser.Decoder(); + _this._autoConnect = opts.autoConnect !== false; + if (_this._autoConnect) _this.open(); + return _this; + } + + _createClass(Manager, [{ + key: "reconnection", + value: function reconnection(v) { + if (!arguments.length) return this._reconnection; + this._reconnection = !!v; + return this; + } + }, { + key: "reconnectionAttempts", + value: function reconnectionAttempts(v) { + if (v === undefined) return this._reconnectionAttempts; + this._reconnectionAttempts = v; + return this; + } + }, { + key: "reconnectionDelay", + value: function reconnectionDelay(v) { + var _a; + + if (v === undefined) return this._reconnectionDelay; + this._reconnectionDelay = v; + (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMin(v); + return this; + } + }, { + key: "randomizationFactor", + value: function randomizationFactor(v) { + var _a; + + if (v === undefined) return this._randomizationFactor; + this._randomizationFactor = v; + (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setJitter(v); + return this; + } + }, { + key: "reconnectionDelayMax", + value: function reconnectionDelayMax(v) { + var _a; + + if (v === undefined) return this._reconnectionDelayMax; + this._reconnectionDelayMax = v; + (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMax(v); + return this; + } + }, { + key: "timeout", + value: function timeout(v) { + if (!arguments.length) return this._timeout; + this._timeout = v; + return this; + } + /** + * Starts trying to reconnect if reconnection is enabled and we have not + * started reconnecting yet + * + * @private + */ + + }, { + key: "maybeReconnectOnOpen", + value: function maybeReconnectOnOpen() { + // Only try to reconnect if it's the first time we're connecting + if (!this._reconnecting && this._reconnection && this.backoff.attempts === 0) { + // keeps reconnection from firing twice for the same reconnection loop + this.reconnect(); + } + } + /** + * Sets the current transport `socket`. + * + * @param {Function} fn - optional, callback + * @return self + * @public + */ + + }, { + key: "open", + value: function open(fn) { + var _this2 = this; + + if (~this._readyState.indexOf("open")) return this; + this.engine = new Socket$1(this.uri, this.opts); + var socket = this.engine; + var self = this; + this._readyState = "opening"; + this.skipReconnect = false; // emit `open` + + var openSubDestroy = on(socket, "open", function () { + self.onopen(); + fn && fn(); + }); // emit `error` + + var errorSub = on(socket, "error", function (err) { + self.cleanup(); + self._readyState = "closed"; + + _this2.emitReserved("error", err); + + if (fn) { + fn(err); + } else { + // Only do this if there is no fn to handle the error + self.maybeReconnectOnOpen(); + } + }); + + if (false !== this._timeout) { + var timeout = this._timeout; + + if (timeout === 0) { + openSubDestroy(); // prevents a race condition with the 'open' event + } // set timer + + + var timer = this.setTimeoutFn(function () { + openSubDestroy(); + socket.close(); // @ts-ignore + + socket.emit("error", new Error("timeout")); + }, timeout); + + if (this.opts.autoUnref) { + timer.unref(); + } + + this.subs.push(function subDestroy() { + clearTimeout(timer); + }); + } + + this.subs.push(openSubDestroy); + this.subs.push(errorSub); + return this; + } + /** + * Alias for open() + * + * @return self + * @public + */ + + }, { + key: "connect", + value: function connect(fn) { + return this.open(fn); + } + /** + * Called upon transport open. + * + * @private + */ + + }, { + key: "onopen", + value: function onopen() { + // clear old subs + this.cleanup(); // mark as open + + this._readyState = "open"; + this.emitReserved("open"); // add new subs + + var socket = this.engine; + this.subs.push(on(socket, "ping", this.onping.bind(this)), on(socket, "data", this.ondata.bind(this)), on(socket, "error", this.onerror.bind(this)), on(socket, "close", this.onclose.bind(this)), on(this.decoder, "decoded", this.ondecoded.bind(this))); + } + /** + * Called upon a ping. + * + * @private + */ + + }, { + key: "onping", + value: function onping() { + this.emitReserved("ping"); + } + /** + * Called with data. + * + * @private + */ + + }, { + key: "ondata", + value: function ondata(data) { + try { + this.decoder.add(data); + } catch (e) { + this.onclose("parse error", e); + } + } + /** + * Called when parser fully decodes a packet. + * + * @private + */ + + }, { + key: "ondecoded", + value: function ondecoded(packet) { + var _this3 = this; + + // the nextTick call prevents an exception in a user-provided event listener from triggering a disconnection due to a "parse error" + nextTick(function () { + _this3.emitReserved("packet", packet); + }, this.setTimeoutFn); + } + /** + * Called upon socket error. + * + * @private + */ + + }, { + key: "onerror", + value: function onerror(err) { + this.emitReserved("error", err); + } + /** + * Creates a new socket for the given `nsp`. + * + * @return {Socket} + * @public + */ + + }, { + key: "socket", + value: function socket(nsp, opts) { + var socket = this.nsps[nsp]; + + if (!socket) { + socket = new Socket(this, nsp, opts); + this.nsps[nsp] = socket; + } + + return socket; + } + /** + * Called upon a socket close. + * + * @param socket + * @private + */ + + }, { + key: "_destroy", + value: function _destroy(socket) { + var nsps = Object.keys(this.nsps); + + for (var _i = 0, _nsps = nsps; _i < _nsps.length; _i++) { + var nsp = _nsps[_i]; + var _socket = this.nsps[nsp]; + + if (_socket.active) { + return; + } + } + + this._close(); + } + /** + * Writes a packet. + * + * @param packet + * @private + */ + + }, { + key: "_packet", + value: function _packet(packet) { + var encodedPackets = this.encoder.encode(packet); + + for (var i = 0; i < encodedPackets.length; i++) { + this.engine.write(encodedPackets[i], packet.options); + } + } + /** + * Clean up transport subscriptions and packet buffer. + * + * @private + */ + + }, { + key: "cleanup", + value: function cleanup() { + this.subs.forEach(function (subDestroy) { + return subDestroy(); + }); + this.subs.length = 0; + this.decoder.destroy(); + } + /** + * Close the current socket. + * + * @private + */ + + }, { + key: "_close", + value: function _close() { + this.skipReconnect = true; + this._reconnecting = false; + this.onclose("forced close"); + if (this.engine) this.engine.close(); + } + /** + * Alias for close() + * + * @private + */ + + }, { + key: "disconnect", + value: function disconnect() { + return this._close(); + } + /** + * Called upon engine close. + * + * @private + */ + + }, { + key: "onclose", + value: function onclose(reason, description) { + this.cleanup(); + this.backoff.reset(); + this._readyState = "closed"; + this.emitReserved("close", reason, description); + + if (this._reconnection && !this.skipReconnect) { + this.reconnect(); + } + } + /** + * Attempt a reconnection. + * + * @private + */ + + }, { + key: "reconnect", + value: function reconnect() { + var _this4 = this; + + if (this._reconnecting || this.skipReconnect) return this; + var self = this; + + if (this.backoff.attempts >= this._reconnectionAttempts) { + this.backoff.reset(); + this.emitReserved("reconnect_failed"); + this._reconnecting = false; + } else { + var delay = this.backoff.duration(); + this._reconnecting = true; + var timer = this.setTimeoutFn(function () { + if (self.skipReconnect) return; + + _this4.emitReserved("reconnect_attempt", self.backoff.attempts); // check again for the case socket closed in above events + + + if (self.skipReconnect) return; + self.open(function (err) { + if (err) { + self._reconnecting = false; + self.reconnect(); + + _this4.emitReserved("reconnect_error", err); + } else { + self.onreconnect(); + } + }); + }, delay); + + if (this.opts.autoUnref) { + timer.unref(); + } + + this.subs.push(function subDestroy() { + clearTimeout(timer); + }); + } + } + /** + * Called upon successful reconnect. + * + * @private + */ + + }, { + key: "onreconnect", + value: function onreconnect() { + var attempt = this.backoff.attempts; + this._reconnecting = false; + this.backoff.reset(); + this.emitReserved("reconnect", attempt); + } + }]); + + return Manager; + }(Emitter); + + /** + * Managers cache. + */ + + var cache = {}; + + function lookup(uri, opts) { + if (_typeof(uri) === "object") { + opts = uri; + uri = undefined; + } + + opts = opts || {}; + var parsed = url(uri, opts.path || "/socket.io"); + var source = parsed.source; + var id = parsed.id; + var path = parsed.path; + var sameNamespace = cache[id] && path in cache[id]["nsps"]; + var newConnection = opts.forceNew || opts["force new connection"] || false === opts.multiplex || sameNamespace; + var io; + + if (newConnection) { + io = new Manager(source, opts); + } else { + if (!cache[id]) { + cache[id] = new Manager(source, opts); + } + + io = cache[id]; + } + + if (parsed.query && !opts.query) { + opts.query = parsed.queryKey; + } + + return io.socket(parsed.path, opts); + } // so that "lookup" can be used both as a function (e.g. `io(...)`) and as a + // namespace (e.g. `io.connect(...)`), for backward compatibility + + + _extends(lookup, { + Manager: Manager, + Socket: Socket, + io: lookup, + connect: lookup + }); + + return lookup; + +})); +//# sourceMappingURL=socket.io.js.map diff --git a/vendor/socketio/socket.io.js.map b/vendor/socketio/socket.io.js.map new file mode 100644 index 000000000..2fa5c54c1 --- /dev/null +++ b/vendor/socketio/socket.io.js.map @@ -0,0 +1 @@ +{"version":3,"file":"socket.io.js","sources":["../node_modules/engine.io-parser/build/esm/commons.js","../node_modules/engine.io-parser/build/esm/encodePacket.browser.js","../node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.js","../node_modules/engine.io-parser/build/esm/decodePacket.browser.js","../node_modules/engine.io-parser/build/esm/index.js","../node_modules/@socket.io/component-emitter/index.mjs","../node_modules/engine.io-client/build/esm/globalThis.browser.js","../node_modules/engine.io-client/build/esm/util.js","../node_modules/engine.io-client/build/esm/transport.js","../node_modules/engine.io-client/build/esm/contrib/yeast.js","../node_modules/engine.io-client/build/esm/contrib/parseqs.js","../node_modules/engine.io-client/build/esm/contrib/has-cors.js","../node_modules/engine.io-client/build/esm/transports/xmlhttprequest.browser.js","../node_modules/engine.io-client/build/esm/transports/polling.js","../node_modules/engine.io-client/build/esm/transports/websocket-constructor.browser.js","../node_modules/engine.io-client/build/esm/transports/websocket.js","../node_modules/engine.io-client/build/esm/transports/index.js","../node_modules/engine.io-client/build/esm/contrib/parseuri.js","../node_modules/engine.io-client/build/esm/socket.js","../node_modules/engine.io-client/build/esm/index.js","../build/esm/url.js","../node_modules/socket.io-parser/build/esm/is-binary.js","../node_modules/socket.io-parser/build/esm/binary.js","../node_modules/socket.io-parser/build/esm/index.js","../build/esm/on.js","../build/esm/socket.js","../build/esm/contrib/backo2.js","../build/esm/manager.js","../build/esm/index.js"],"sourcesContent":["const PACKET_TYPES = Object.create(null); // no Map = no polyfill\nPACKET_TYPES[\"open\"] = \"0\";\nPACKET_TYPES[\"close\"] = \"1\";\nPACKET_TYPES[\"ping\"] = \"2\";\nPACKET_TYPES[\"pong\"] = \"3\";\nPACKET_TYPES[\"message\"] = \"4\";\nPACKET_TYPES[\"upgrade\"] = \"5\";\nPACKET_TYPES[\"noop\"] = \"6\";\nconst PACKET_TYPES_REVERSE = Object.create(null);\nObject.keys(PACKET_TYPES).forEach(key => {\n PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nconst ERROR_PACKET = { type: \"error\", data: \"parser error\" };\nexport { PACKET_TYPES, PACKET_TYPES_REVERSE, ERROR_PACKET };\n","import { PACKET_TYPES } from \"./commons.js\";\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n// ArrayBuffer.isView method is not defined in IE10\nconst isView = obj => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj && obj.buffer instanceof ArrayBuffer;\n};\nconst encodePacket = ({ type, data }, supportsBinary, callback) => {\n if (withNativeBlob && data instanceof Blob) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(data, callback);\n }\n }\n else if (withNativeArrayBuffer &&\n (data instanceof ArrayBuffer || isView(data))) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(new Blob([data]), callback);\n }\n }\n // plain string\n return callback(PACKET_TYPES[type] + (data || \"\"));\n};\nconst encodeBlobAsBase64 = (data, callback) => {\n const fileReader = new FileReader();\n fileReader.onload = function () {\n const content = fileReader.result.split(\",\")[1];\n callback(\"b\" + content);\n };\n return fileReader.readAsDataURL(data);\n};\nexport default encodePacket;\n","const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nexport const encode = (arraybuffer) => {\n let bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nexport const decode = (base64) => {\n let bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n const arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n","import { ERROR_PACKET, PACKET_TYPES_REVERSE } from \"./commons.js\";\nimport { decode } from \"./contrib/base64-arraybuffer.js\";\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst decodePacket = (encodedPacket, binaryType) => {\n if (typeof encodedPacket !== \"string\") {\n return {\n type: \"message\",\n data: mapBinary(encodedPacket, binaryType)\n };\n }\n const type = encodedPacket.charAt(0);\n if (type === \"b\") {\n return {\n type: \"message\",\n data: decodeBase64Packet(encodedPacket.substring(1), binaryType)\n };\n }\n const packetType = PACKET_TYPES_REVERSE[type];\n if (!packetType) {\n return ERROR_PACKET;\n }\n return encodedPacket.length > 1\n ? {\n type: PACKET_TYPES_REVERSE[type],\n data: encodedPacket.substring(1)\n }\n : {\n type: PACKET_TYPES_REVERSE[type]\n };\n};\nconst decodeBase64Packet = (data, binaryType) => {\n if (withNativeArrayBuffer) {\n const decoded = decode(data);\n return mapBinary(decoded, binaryType);\n }\n else {\n return { base64: true, data }; // fallback for old browsers\n }\n};\nconst mapBinary = (data, binaryType) => {\n switch (binaryType) {\n case \"blob\":\n return data instanceof ArrayBuffer ? new Blob([data]) : data;\n case \"arraybuffer\":\n default:\n return data; // assuming the data is already an ArrayBuffer\n }\n};\nexport default decodePacket;\n","import encodePacket from \"./encodePacket.js\";\nimport decodePacket from \"./decodePacket.js\";\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst encodePayload = (packets, callback) => {\n // some packets may be added to the array while encoding, so the initial length must be saved\n const length = packets.length;\n const encodedPackets = new Array(length);\n let count = 0;\n packets.forEach((packet, i) => {\n // force base64 encoding for binary packets\n encodePacket(packet, false, encodedPacket => {\n encodedPackets[i] = encodedPacket;\n if (++count === length) {\n callback(encodedPackets.join(SEPARATOR));\n }\n });\n });\n};\nconst decodePayload = (encodedPayload, binaryType) => {\n const encodedPackets = encodedPayload.split(SEPARATOR);\n const packets = [];\n for (let i = 0; i < encodedPackets.length; i++) {\n const decodedPacket = decodePacket(encodedPackets[i], binaryType);\n packets.push(decodedPacket);\n if (decodedPacket.type === \"error\") {\n break;\n }\n }\n return packets;\n};\nexport const protocol = 4;\nexport { encodePacket, encodePayload, decodePacket, decodePayload };\n","/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nexport function Emitter(obj) {\n if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n function on() {\n this.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks['$' + event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks['$' + event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n // Remove event specific arrays for event types that no\n // one is subscribed for to avoid memory leak.\n if (callbacks.length === 0) {\n delete this._callbacks['$' + event];\n }\n\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n\n var args = new Array(arguments.length - 1)\n , callbacks = this._callbacks['$' + event];\n\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n// alias used for reserved events (protected method)\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks['$' + event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","export const globalThisShim = (() => {\n if (typeof self !== \"undefined\") {\n return self;\n }\n else if (typeof window !== \"undefined\") {\n return window;\n }\n else {\n return Function(\"return this\")();\n }\n})();\n","import { globalThisShim as globalThis } from \"./globalThis.js\";\nexport function pick(obj, ...attr) {\n return attr.reduce((acc, k) => {\n if (obj.hasOwnProperty(k)) {\n acc[k] = obj[k];\n }\n return acc;\n }, {});\n}\n// Keep a reference to the real timeout functions so they can be used when overridden\nconst NATIVE_SET_TIMEOUT = setTimeout;\nconst NATIVE_CLEAR_TIMEOUT = clearTimeout;\nexport function installTimerFunctions(obj, opts) {\n if (opts.useNativeTimers) {\n obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globalThis);\n obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globalThis);\n }\n else {\n obj.setTimeoutFn = setTimeout.bind(globalThis);\n obj.clearTimeoutFn = clearTimeout.bind(globalThis);\n }\n}\n// base64 encoded buffers are about 33% bigger (https://en.wikipedia.org/wiki/Base64)\nconst BASE64_OVERHEAD = 1.33;\n// we could also have used `new Blob([obj]).size`, but it isn't supported in IE9\nexport function byteLength(obj) {\n if (typeof obj === \"string\") {\n return utf8Length(obj);\n }\n // arraybuffer or blob\n return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD);\n}\nfunction utf8Length(str) {\n let c = 0, length = 0;\n for (let i = 0, l = str.length; i < l; i++) {\n c = str.charCodeAt(i);\n if (c < 0x80) {\n length += 1;\n }\n else if (c < 0x800) {\n length += 2;\n }\n else if (c < 0xd800 || c >= 0xe000) {\n length += 3;\n }\n else {\n i++;\n length += 4;\n }\n }\n return length;\n}\n","import { decodePacket } from \"engine.io-parser\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions } from \"./util.js\";\nclass TransportError extends Error {\n constructor(reason, description, context) {\n super(reason);\n this.description = description;\n this.context = context;\n this.type = \"TransportError\";\n }\n}\nexport class Transport extends Emitter {\n /**\n * Transport abstract constructor.\n *\n * @param {Object} options.\n * @api private\n */\n constructor(opts) {\n super();\n this.writable = false;\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.query = opts.query;\n this.readyState = \"\";\n this.socket = opts.socket;\n }\n /**\n * Emits an error.\n *\n * @param {String} reason\n * @param description\n * @param context - the error context\n * @return {Transport} for chaining\n * @api protected\n */\n onError(reason, description, context) {\n super.emitReserved(\"error\", new TransportError(reason, description, context));\n return this;\n }\n /**\n * Opens the transport.\n *\n * @api public\n */\n open() {\n if (\"closed\" === this.readyState || \"\" === this.readyState) {\n this.readyState = \"opening\";\n this.doOpen();\n }\n return this;\n }\n /**\n * Closes the transport.\n *\n * @api public\n */\n close() {\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.doClose();\n this.onClose();\n }\n return this;\n }\n /**\n * Sends multiple packets.\n *\n * @param {Array} packets\n * @api public\n */\n send(packets) {\n if (\"open\" === this.readyState) {\n this.write(packets);\n }\n else {\n // this might happen if the transport was silently closed in the beforeunload event handler\n }\n }\n /**\n * Called upon open\n *\n * @api protected\n */\n onOpen() {\n this.readyState = \"open\";\n this.writable = true;\n super.emitReserved(\"open\");\n }\n /**\n * Called with data.\n *\n * @param {String} data\n * @api protected\n */\n onData(data) {\n const packet = decodePacket(data, this.socket.binaryType);\n this.onPacket(packet);\n }\n /**\n * Called with a decoded packet.\n *\n * @api protected\n */\n onPacket(packet) {\n super.emitReserved(\"packet\", packet);\n }\n /**\n * Called upon close.\n *\n * @api protected\n */\n onClose(details) {\n this.readyState = \"closed\";\n super.emitReserved(\"close\", details);\n }\n}\n","// imported from https://github.com/unshiftio/yeast\n'use strict';\nconst alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split(''), length = 64, map = {};\nlet seed = 0, i = 0, prev;\n/**\n * Return a string representing the specified number.\n *\n * @param {Number} num The number to convert.\n * @returns {String} The string representation of the number.\n * @api public\n */\nexport function encode(num) {\n let encoded = '';\n do {\n encoded = alphabet[num % length] + encoded;\n num = Math.floor(num / length);\n } while (num > 0);\n return encoded;\n}\n/**\n * Return the integer value specified by the given string.\n *\n * @param {String} str The string to convert.\n * @returns {Number} The integer value represented by the string.\n * @api public\n */\nexport function decode(str) {\n let decoded = 0;\n for (i = 0; i < str.length; i++) {\n decoded = decoded * length + map[str.charAt(i)];\n }\n return decoded;\n}\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\nexport function yeast() {\n const now = encode(+new Date());\n if (now !== prev)\n return seed = 0, prev = now;\n return now + '.' + encode(seed++);\n}\n//\n// Map each character to its index.\n//\nfor (; i < length; i++)\n map[alphabet[i]] = i;\n","// imported from https://github.com/galkn/querystring\n/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */\nexport function encode(obj) {\n let str = '';\n for (let i in obj) {\n if (obj.hasOwnProperty(i)) {\n if (str.length)\n str += '&';\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n }\n }\n return str;\n}\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */\nexport function decode(qs) {\n let qry = {};\n let pairs = qs.split('&');\n for (let i = 0, l = pairs.length; i < l; i++) {\n let pair = pairs[i].split('=');\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n return qry;\n}\n","// imported from https://github.com/component/has-cors\nlet value = false;\ntry {\n value = typeof XMLHttpRequest !== 'undefined' &&\n 'withCredentials' in new XMLHttpRequest();\n}\ncatch (err) {\n // if XMLHttp support is disabled in IE then it will throw\n // when trying to create\n}\nexport const hasCORS = value;\n","// browser shim for xmlhttprequest module\nimport { hasCORS } from \"../contrib/has-cors.js\";\nimport { globalThisShim as globalThis } from \"../globalThis.js\";\nexport function XHR(opts) {\n const xdomain = opts.xdomain;\n // XMLHttpRequest can be disabled on IE\n try {\n if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n }\n catch (e) { }\n if (!xdomain) {\n try {\n return new globalThis[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n }\n catch (e) { }\n }\n}\n","import { Transport } from \"../transport.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { encode } from \"../contrib/parseqs.js\";\nimport { encodePayload, decodePayload } from \"engine.io-parser\";\nimport { XHR as XMLHttpRequest } from \"./xmlhttprequest.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions, pick } from \"../util.js\";\nimport { globalThisShim as globalThis } from \"../globalThis.js\";\nfunction empty() { }\nconst hasXHR2 = (function () {\n const xhr = new XMLHttpRequest({\n xdomain: false\n });\n return null != xhr.responseType;\n})();\nexport class Polling extends Transport {\n /**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @api public\n */\n constructor(opts) {\n super(opts);\n this.polling = false;\n if (typeof location !== \"undefined\") {\n const isSSL = \"https:\" === location.protocol;\n let port = location.port;\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? \"443\" : \"80\";\n }\n this.xd =\n (typeof location !== \"undefined\" &&\n opts.hostname !== location.hostname) ||\n port !== opts.port;\n this.xs = opts.secure !== isSSL;\n }\n /**\n * XHR supports binary\n */\n const forceBase64 = opts && opts.forceBase64;\n this.supportsBinary = hasXHR2 && !forceBase64;\n }\n /**\n * Transport name.\n */\n get name() {\n return \"polling\";\n }\n /**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @api private\n */\n doOpen() {\n this.poll();\n }\n /**\n * Pauses polling.\n *\n * @param {Function} callback upon buffers are flushed and transport is paused\n * @api private\n */\n pause(onPause) {\n this.readyState = \"pausing\";\n const pause = () => {\n this.readyState = \"paused\";\n onPause();\n };\n if (this.polling || !this.writable) {\n let total = 0;\n if (this.polling) {\n total++;\n this.once(\"pollComplete\", function () {\n --total || pause();\n });\n }\n if (!this.writable) {\n total++;\n this.once(\"drain\", function () {\n --total || pause();\n });\n }\n }\n else {\n pause();\n }\n }\n /**\n * Starts polling cycle.\n *\n * @api public\n */\n poll() {\n this.polling = true;\n this.doPoll();\n this.emitReserved(\"poll\");\n }\n /**\n * Overloads onData to detect payloads.\n *\n * @api private\n */\n onData(data) {\n const callback = packet => {\n // if its the first message we consider the transport open\n if (\"opening\" === this.readyState && packet.type === \"open\") {\n this.onOpen();\n }\n // if its a close packet, we close the ongoing requests\n if (\"close\" === packet.type) {\n this.onClose({ description: \"transport closed by the server\" });\n return false;\n }\n // otherwise bypass onData and handle the message\n this.onPacket(packet);\n };\n // decode payload\n decodePayload(data, this.socket.binaryType).forEach(callback);\n // if an event did not trigger closing\n if (\"closed\" !== this.readyState) {\n // if we got data we're not polling\n this.polling = false;\n this.emitReserved(\"pollComplete\");\n if (\"open\" === this.readyState) {\n this.poll();\n }\n else {\n }\n }\n }\n /**\n * For polling, send a close packet.\n *\n * @api private\n */\n doClose() {\n const close = () => {\n this.write([{ type: \"close\" }]);\n };\n if (\"open\" === this.readyState) {\n close();\n }\n else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n this.once(\"open\", close);\n }\n }\n /**\n * Writes a packets payload.\n *\n * @param {Array} data packets\n * @param {Function} drain callback\n * @api private\n */\n write(packets) {\n this.writable = false;\n encodePayload(packets, data => {\n this.doWrite(data, () => {\n this.writable = true;\n this.emitReserved(\"drain\");\n });\n });\n }\n /**\n * Generates uri for connection.\n *\n * @api private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"https\" : \"http\";\n let port = \"\";\n // cache busting is forced\n if (false !== this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"https\" === schema && Number(this.opts.port) !== 443) ||\n (\"http\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n const encodedQuery = encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n /**\n * Creates a request.\n *\n * @param {String} method\n * @api private\n */\n request(opts = {}) {\n Object.assign(opts, { xd: this.xd, xs: this.xs }, this.opts);\n return new Request(this.uri(), opts);\n }\n /**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @api private\n */\n doWrite(data, fn) {\n const req = this.request({\n method: \"POST\",\n data: data\n });\n req.on(\"success\", fn);\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr post error\", xhrStatus, context);\n });\n }\n /**\n * Starts a poll cycle.\n *\n * @api private\n */\n doPoll() {\n const req = this.request();\n req.on(\"data\", this.onData.bind(this));\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr poll error\", xhrStatus, context);\n });\n this.pollXhr = req;\n }\n}\nexport class Request extends Emitter {\n /**\n * Request constructor\n *\n * @param {Object} options\n * @api public\n */\n constructor(uri, opts) {\n super();\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.method = opts.method || \"GET\";\n this.uri = uri;\n this.async = false !== opts.async;\n this.data = undefined !== opts.data ? opts.data : null;\n this.create();\n }\n /**\n * Creates the XHR object and sends the request.\n *\n * @api private\n */\n create() {\n const opts = pick(this.opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n opts.xdomain = !!this.opts.xd;\n opts.xscheme = !!this.opts.xs;\n const xhr = (this.xhr = new XMLHttpRequest(opts));\n try {\n xhr.open(this.method, this.uri, this.async);\n try {\n if (this.opts.extraHeaders) {\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (let i in this.opts.extraHeaders) {\n if (this.opts.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this.opts.extraHeaders[i]);\n }\n }\n }\n }\n catch (e) { }\n if (\"POST\" === this.method) {\n try {\n xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n }\n catch (e) { }\n }\n try {\n xhr.setRequestHeader(\"Accept\", \"*/*\");\n }\n catch (e) { }\n // ie6 check\n if (\"withCredentials\" in xhr) {\n xhr.withCredentials = this.opts.withCredentials;\n }\n if (this.opts.requestTimeout) {\n xhr.timeout = this.opts.requestTimeout;\n }\n xhr.onreadystatechange = () => {\n if (4 !== xhr.readyState)\n return;\n if (200 === xhr.status || 1223 === xhr.status) {\n this.onLoad();\n }\n else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n this.setTimeoutFn(() => {\n this.onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n }, 0);\n }\n };\n xhr.send(this.data);\n }\n catch (e) {\n // Need to defer since .create() is called directly from the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n this.setTimeoutFn(() => {\n this.onError(e);\n }, 0);\n return;\n }\n if (typeof document !== \"undefined\") {\n this.index = Request.requestsCount++;\n Request.requests[this.index] = this;\n }\n }\n /**\n * Called upon error.\n *\n * @api private\n */\n onError(err) {\n this.emitReserved(\"error\", err, this.xhr);\n this.cleanup(true);\n }\n /**\n * Cleans up house.\n *\n * @api private\n */\n cleanup(fromError) {\n if (\"undefined\" === typeof this.xhr || null === this.xhr) {\n return;\n }\n this.xhr.onreadystatechange = empty;\n if (fromError) {\n try {\n this.xhr.abort();\n }\n catch (e) { }\n }\n if (typeof document !== \"undefined\") {\n delete Request.requests[this.index];\n }\n this.xhr = null;\n }\n /**\n * Called upon load.\n *\n * @api private\n */\n onLoad() {\n const data = this.xhr.responseText;\n if (data !== null) {\n this.emitReserved(\"data\", data);\n this.emitReserved(\"success\");\n this.cleanup();\n }\n }\n /**\n * Aborts the request.\n *\n * @api public\n */\n abort() {\n this.cleanup();\n }\n}\nRequest.requestsCount = 0;\nRequest.requests = {};\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\nif (typeof document !== \"undefined\") {\n // @ts-ignore\n if (typeof attachEvent === \"function\") {\n // @ts-ignore\n attachEvent(\"onunload\", unloadHandler);\n }\n else if (typeof addEventListener === \"function\") {\n const terminationEvent = \"onpagehide\" in globalThis ? \"pagehide\" : \"unload\";\n addEventListener(terminationEvent, unloadHandler, false);\n }\n}\nfunction unloadHandler() {\n for (let i in Request.requests) {\n if (Request.requests.hasOwnProperty(i)) {\n Request.requests[i].abort();\n }\n }\n}\n","import { globalThisShim as globalThis } from \"../globalThis.js\";\nexport const nextTick = (() => {\n const isPromiseAvailable = typeof Promise === \"function\" && typeof Promise.resolve === \"function\";\n if (isPromiseAvailable) {\n return cb => Promise.resolve().then(cb);\n }\n else {\n return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);\n }\n})();\nexport const WebSocket = globalThis.WebSocket || globalThis.MozWebSocket;\nexport const usingBrowserWebSocket = true;\nexport const defaultBinaryType = \"arraybuffer\";\n","import { Transport } from \"../transport.js\";\nimport { encode } from \"../contrib/parseqs.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { pick } from \"../util.js\";\nimport { defaultBinaryType, nextTick, usingBrowserWebSocket, WebSocket } from \"./websocket-constructor.js\";\nimport { encodePacket } from \"engine.io-parser\";\n// detect ReactNative environment\nconst isReactNative = typeof navigator !== \"undefined\" &&\n typeof navigator.product === \"string\" &&\n navigator.product.toLowerCase() === \"reactnative\";\nexport class WS extends Transport {\n /**\n * WebSocket transport constructor.\n *\n * @api {Object} connection options\n * @api public\n */\n constructor(opts) {\n super(opts);\n this.supportsBinary = !opts.forceBase64;\n }\n /**\n * Transport name.\n *\n * @api public\n */\n get name() {\n return \"websocket\";\n }\n /**\n * Opens socket.\n *\n * @api private\n */\n doOpen() {\n if (!this.check()) {\n // let probe timeout\n return;\n }\n const uri = this.uri();\n const protocols = this.opts.protocols;\n // React Native only supports the 'headers' option, and will print a warning if anything else is passed\n const opts = isReactNative\n ? {}\n : pick(this.opts, \"agent\", \"perMessageDeflate\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"localAddress\", \"protocolVersion\", \"origin\", \"maxPayload\", \"family\", \"checkServerIdentity\");\n if (this.opts.extraHeaders) {\n opts.headers = this.opts.extraHeaders;\n }\n try {\n this.ws =\n usingBrowserWebSocket && !isReactNative\n ? protocols\n ? new WebSocket(uri, protocols)\n : new WebSocket(uri)\n : new WebSocket(uri, protocols, opts);\n }\n catch (err) {\n return this.emitReserved(\"error\", err);\n }\n this.ws.binaryType = this.socket.binaryType || defaultBinaryType;\n this.addEventListeners();\n }\n /**\n * Adds event listeners to the socket\n *\n * @api private\n */\n addEventListeners() {\n this.ws.onopen = () => {\n if (this.opts.autoUnref) {\n this.ws._socket.unref();\n }\n this.onOpen();\n };\n this.ws.onclose = closeEvent => this.onClose({\n description: \"websocket connection closed\",\n context: closeEvent\n });\n this.ws.onmessage = ev => this.onData(ev.data);\n this.ws.onerror = e => this.onError(\"websocket error\", e);\n }\n /**\n * Writes data to socket.\n *\n * @param {Array} array of packets.\n * @api private\n */\n write(packets) {\n this.writable = false;\n // encodePacket efficient as it uses WS framing\n // no need for encodePayload\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n encodePacket(packet, this.supportsBinary, data => {\n // always create a new object (GH-437)\n const opts = {};\n if (!usingBrowserWebSocket) {\n if (packet.options) {\n opts.compress = packet.options.compress;\n }\n if (this.opts.perMessageDeflate) {\n const len = \n // @ts-ignore\n \"string\" === typeof data ? Buffer.byteLength(data) : data.length;\n if (len < this.opts.perMessageDeflate.threshold) {\n opts.compress = false;\n }\n }\n }\n // Sometimes the websocket has already been closed but the browser didn't\n // have a chance of informing us about it yet, in that case send will\n // throw an error\n try {\n if (usingBrowserWebSocket) {\n // TypeError is thrown when passing the second argument on Safari\n this.ws.send(data);\n }\n else {\n this.ws.send(data, opts);\n }\n }\n catch (e) {\n }\n if (lastPacket) {\n // fake drain\n // defer to next tick to allow Socket to clear writeBuffer\n nextTick(() => {\n this.writable = true;\n this.emitReserved(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n /**\n * Closes socket.\n *\n * @api private\n */\n doClose() {\n if (typeof this.ws !== \"undefined\") {\n this.ws.close();\n this.ws = null;\n }\n }\n /**\n * Generates uri for connection.\n *\n * @api private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"wss\" : \"ws\";\n let port = \"\";\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"wss\" === schema && Number(this.opts.port) !== 443) ||\n (\"ws\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n // append timestamp to URI\n if (this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n const encodedQuery = encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n /**\n * Feature detection for WebSocket.\n *\n * @return {Boolean} whether this transport is available.\n * @api public\n */\n check() {\n return !!WebSocket;\n }\n}\n","import { Polling } from \"./polling.js\";\nimport { WS } from \"./websocket.js\";\nexport const transports = {\n websocket: WS,\n polling: Polling\n};\n","// imported from https://github.com/galkn/parseuri\n/**\n * Parses an URI\n *\n * @author Steven Levithan (MIT license)\n * @api private\n */\nconst re = /^(?:(?![^:@]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\nconst parts = [\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\n];\nexport function parse(str) {\n const src = str, b = str.indexOf('['), e = str.indexOf(']');\n if (b != -1 && e != -1) {\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\n }\n let m = re.exec(str || ''), uri = {}, i = 14;\n while (i--) {\n uri[parts[i]] = m[i] || '';\n }\n if (b != -1 && e != -1) {\n uri.source = src;\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\n uri.ipv6uri = true;\n }\n uri.pathNames = pathNames(uri, uri['path']);\n uri.queryKey = queryKey(uri, uri['query']);\n return uri;\n}\nfunction pathNames(obj, path) {\n const regx = /\\/{2,9}/g, names = path.replace(regx, \"/\").split(\"/\");\n if (path.slice(0, 1) == '/' || path.length === 0) {\n names.splice(0, 1);\n }\n if (path.slice(-1) == '/') {\n names.splice(names.length - 1, 1);\n }\n return names;\n}\nfunction queryKey(uri, query) {\n const data = {};\n query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {\n if ($1) {\n data[$1] = $2;\n }\n });\n return data;\n}\n","import { transports } from \"./transports/index.js\";\nimport { installTimerFunctions, byteLength } from \"./util.js\";\nimport { decode } from \"./contrib/parseqs.js\";\nimport { parse } from \"./contrib/parseuri.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { protocol } from \"engine.io-parser\";\nexport class Socket extends Emitter {\n /**\n * Socket constructor.\n *\n * @param {String|Object} uri or options\n * @param {Object} opts - options\n * @api public\n */\n constructor(uri, opts = {}) {\n super();\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = null;\n }\n if (uri) {\n uri = parse(uri);\n opts.hostname = uri.host;\n opts.secure = uri.protocol === \"https\" || uri.protocol === \"wss\";\n opts.port = uri.port;\n if (uri.query)\n opts.query = uri.query;\n }\n else if (opts.host) {\n opts.hostname = parse(opts.host).host;\n }\n installTimerFunctions(this, opts);\n this.secure =\n null != opts.secure\n ? opts.secure\n : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? \"443\" : \"80\";\n }\n this.hostname =\n opts.hostname ||\n (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n this.port =\n opts.port ||\n (typeof location !== \"undefined\" && location.port\n ? location.port\n : this.secure\n ? \"443\"\n : \"80\");\n this.transports = opts.transports || [\"polling\", \"websocket\"];\n this.readyState = \"\";\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n this.opts = Object.assign({\n path: \"/engine.io\",\n agent: false,\n withCredentials: false,\n upgrade: true,\n timestampParam: \"t\",\n rememberUpgrade: false,\n rejectUnauthorized: true,\n perMessageDeflate: {\n threshold: 1024\n },\n transportOptions: {},\n closeOnBeforeunload: true\n }, opts);\n this.opts.path = this.opts.path.replace(/\\/$/, \"\") + \"/\";\n if (typeof this.opts.query === \"string\") {\n this.opts.query = decode(this.opts.query);\n }\n // set on handshake\n this.id = null;\n this.upgrades = null;\n this.pingInterval = null;\n this.pingTimeout = null;\n // set on heartbeat\n this.pingTimeoutTimer = null;\n if (typeof addEventListener === \"function\") {\n if (this.opts.closeOnBeforeunload) {\n // Firefox closes the connection when the \"beforeunload\" event is emitted but not Chrome. This event listener\n // ensures every browser behaves the same (no \"disconnect\" event at the Socket.IO level when the page is\n // closed/reloaded)\n this.beforeunloadEventListener = () => {\n if (this.transport) {\n // silently close the transport\n this.transport.removeAllListeners();\n this.transport.close();\n }\n };\n addEventListener(\"beforeunload\", this.beforeunloadEventListener, false);\n }\n if (this.hostname !== \"localhost\") {\n this.offlineEventListener = () => {\n this.onClose(\"transport close\", {\n description: \"network connection lost\"\n });\n };\n addEventListener(\"offline\", this.offlineEventListener, false);\n }\n }\n this.open();\n }\n /**\n * Creates transport of the given type.\n *\n * @param {String} transport name\n * @return {Transport}\n * @api private\n */\n createTransport(name) {\n const query = Object.assign({}, this.opts.query);\n // append engine.io protocol identifier\n query.EIO = protocol;\n // transport name\n query.transport = name;\n // session id if we already have one\n if (this.id)\n query.sid = this.id;\n const opts = Object.assign({}, this.opts.transportOptions[name], this.opts, {\n query,\n socket: this,\n hostname: this.hostname,\n secure: this.secure,\n port: this.port\n });\n return new transports[name](opts);\n }\n /**\n * Initializes transport to use and starts probe.\n *\n * @api private\n */\n open() {\n let transport;\n if (this.opts.rememberUpgrade &&\n Socket.priorWebsocketSuccess &&\n this.transports.indexOf(\"websocket\") !== -1) {\n transport = \"websocket\";\n }\n else if (0 === this.transports.length) {\n // Emit error on next tick so it can be listened to\n this.setTimeoutFn(() => {\n this.emitReserved(\"error\", \"No transports available\");\n }, 0);\n return;\n }\n else {\n transport = this.transports[0];\n }\n this.readyState = \"opening\";\n // Retry with the next transport if the transport is disabled (jsonp: false)\n try {\n transport = this.createTransport(transport);\n }\n catch (e) {\n this.transports.shift();\n this.open();\n return;\n }\n transport.open();\n this.setTransport(transport);\n }\n /**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @api private\n */\n setTransport(transport) {\n if (this.transport) {\n this.transport.removeAllListeners();\n }\n // set up transport\n this.transport = transport;\n // set up transport listeners\n transport\n .on(\"drain\", this.onDrain.bind(this))\n .on(\"packet\", this.onPacket.bind(this))\n .on(\"error\", this.onError.bind(this))\n .on(\"close\", reason => this.onClose(\"transport close\", reason));\n }\n /**\n * Probes a transport.\n *\n * @param {String} transport name\n * @api private\n */\n probe(name) {\n let transport = this.createTransport(name);\n let failed = false;\n Socket.priorWebsocketSuccess = false;\n const onTransportOpen = () => {\n if (failed)\n return;\n transport.send([{ type: \"ping\", data: \"probe\" }]);\n transport.once(\"packet\", msg => {\n if (failed)\n return;\n if (\"pong\" === msg.type && \"probe\" === msg.data) {\n this.upgrading = true;\n this.emitReserved(\"upgrading\", transport);\n if (!transport)\n return;\n Socket.priorWebsocketSuccess = \"websocket\" === transport.name;\n this.transport.pause(() => {\n if (failed)\n return;\n if (\"closed\" === this.readyState)\n return;\n cleanup();\n this.setTransport(transport);\n transport.send([{ type: \"upgrade\" }]);\n this.emitReserved(\"upgrade\", transport);\n transport = null;\n this.upgrading = false;\n this.flush();\n });\n }\n else {\n const err = new Error(\"probe error\");\n // @ts-ignore\n err.transport = transport.name;\n this.emitReserved(\"upgradeError\", err);\n }\n });\n };\n function freezeTransport() {\n if (failed)\n return;\n // Any callback called by transport should be ignored since now\n failed = true;\n cleanup();\n transport.close();\n transport = null;\n }\n // Handle any error that happens while probing\n const onerror = err => {\n const error = new Error(\"probe error: \" + err);\n // @ts-ignore\n error.transport = transport.name;\n freezeTransport();\n this.emitReserved(\"upgradeError\", error);\n };\n function onTransportClose() {\n onerror(\"transport closed\");\n }\n // When the socket is closed while we're probing\n function onclose() {\n onerror(\"socket closed\");\n }\n // When the socket is upgraded while we're probing\n function onupgrade(to) {\n if (transport && to.name !== transport.name) {\n freezeTransport();\n }\n }\n // Remove all listeners on the transport and on self\n const cleanup = () => {\n transport.removeListener(\"open\", onTransportOpen);\n transport.removeListener(\"error\", onerror);\n transport.removeListener(\"close\", onTransportClose);\n this.off(\"close\", onclose);\n this.off(\"upgrading\", onupgrade);\n };\n transport.once(\"open\", onTransportOpen);\n transport.once(\"error\", onerror);\n transport.once(\"close\", onTransportClose);\n this.once(\"close\", onclose);\n this.once(\"upgrading\", onupgrade);\n transport.open();\n }\n /**\n * Called when connection is deemed open.\n *\n * @api private\n */\n onOpen() {\n this.readyState = \"open\";\n Socket.priorWebsocketSuccess = \"websocket\" === this.transport.name;\n this.emitReserved(\"open\");\n this.flush();\n // we check for `readyState` in case an `open`\n // listener already closed the socket\n if (\"open\" === this.readyState &&\n this.opts.upgrade &&\n this.transport.pause) {\n let i = 0;\n const l = this.upgrades.length;\n for (; i < l; i++) {\n this.probe(this.upgrades[i]);\n }\n }\n }\n /**\n * Handles a packet.\n *\n * @api private\n */\n onPacket(packet) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n this.emitReserved(\"packet\", packet);\n // Socket is live - any packet counts\n this.emitReserved(\"heartbeat\");\n switch (packet.type) {\n case \"open\":\n this.onHandshake(JSON.parse(packet.data));\n break;\n case \"ping\":\n this.resetPingTimeout();\n this.sendPacket(\"pong\");\n this.emitReserved(\"ping\");\n this.emitReserved(\"pong\");\n break;\n case \"error\":\n const err = new Error(\"server error\");\n // @ts-ignore\n err.code = packet.data;\n this.onError(err);\n break;\n case \"message\":\n this.emitReserved(\"data\", packet.data);\n this.emitReserved(\"message\", packet.data);\n break;\n }\n }\n else {\n }\n }\n /**\n * Called upon handshake completion.\n *\n * @param {Object} data - handshake obj\n * @api private\n */\n onHandshake(data) {\n this.emitReserved(\"handshake\", data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this.upgrades = this.filterUpgrades(data.upgrades);\n this.pingInterval = data.pingInterval;\n this.pingTimeout = data.pingTimeout;\n this.maxPayload = data.maxPayload;\n this.onOpen();\n // In case open handler closes socket\n if (\"closed\" === this.readyState)\n return;\n this.resetPingTimeout();\n }\n /**\n * Sets and resets ping timeout timer based on server pings.\n *\n * @api private\n */\n resetPingTimeout() {\n this.clearTimeoutFn(this.pingTimeoutTimer);\n this.pingTimeoutTimer = this.setTimeoutFn(() => {\n this.onClose(\"ping timeout\");\n }, this.pingInterval + this.pingTimeout);\n if (this.opts.autoUnref) {\n this.pingTimeoutTimer.unref();\n }\n }\n /**\n * Called on `drain` event\n *\n * @api private\n */\n onDrain() {\n this.writeBuffer.splice(0, this.prevBufferLen);\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this.prevBufferLen = 0;\n if (0 === this.writeBuffer.length) {\n this.emitReserved(\"drain\");\n }\n else {\n this.flush();\n }\n }\n /**\n * Flush write buffers.\n *\n * @api private\n */\n flush() {\n if (\"closed\" !== this.readyState &&\n this.transport.writable &&\n !this.upgrading &&\n this.writeBuffer.length) {\n const packets = this.getWritablePackets();\n this.transport.send(packets);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this.prevBufferLen = packets.length;\n this.emitReserved(\"flush\");\n }\n }\n /**\n * Ensure the encoded size of the writeBuffer is below the maxPayload value sent by the server (only for HTTP\n * long-polling)\n *\n * @private\n */\n getWritablePackets() {\n const shouldCheckPayloadSize = this.maxPayload &&\n this.transport.name === \"polling\" &&\n this.writeBuffer.length > 1;\n if (!shouldCheckPayloadSize) {\n return this.writeBuffer;\n }\n let payloadSize = 1; // first packet type\n for (let i = 0; i < this.writeBuffer.length; i++) {\n const data = this.writeBuffer[i].data;\n if (data) {\n payloadSize += byteLength(data);\n }\n if (i > 0 && payloadSize > this.maxPayload) {\n return this.writeBuffer.slice(0, i);\n }\n payloadSize += 2; // separator + packet type\n }\n return this.writeBuffer;\n }\n /**\n * Sends a message.\n *\n * @param {String} message.\n * @param {Function} callback function.\n * @param {Object} options.\n * @return {Socket} for chaining.\n * @api public\n */\n write(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n send(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n /**\n * Sends a packet.\n *\n * @param {String} packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} callback function.\n * @api private\n */\n sendPacket(type, data, options, fn) {\n if (\"function\" === typeof data) {\n fn = data;\n data = undefined;\n }\n if (\"function\" === typeof options) {\n fn = options;\n options = null;\n }\n if (\"closing\" === this.readyState || \"closed\" === this.readyState) {\n return;\n }\n options = options || {};\n options.compress = false !== options.compress;\n const packet = {\n type: type,\n data: data,\n options: options\n };\n this.emitReserved(\"packetCreate\", packet);\n this.writeBuffer.push(packet);\n if (fn)\n this.once(\"flush\", fn);\n this.flush();\n }\n /**\n * Closes the connection.\n *\n * @api public\n */\n close() {\n const close = () => {\n this.onClose(\"forced close\");\n this.transport.close();\n };\n const cleanupAndClose = () => {\n this.off(\"upgrade\", cleanupAndClose);\n this.off(\"upgradeError\", cleanupAndClose);\n close();\n };\n const waitForUpgrade = () => {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n this.once(\"upgrade\", cleanupAndClose);\n this.once(\"upgradeError\", cleanupAndClose);\n };\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.readyState = \"closing\";\n if (this.writeBuffer.length) {\n this.once(\"drain\", () => {\n if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n });\n }\n else if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n }\n return this;\n }\n /**\n * Called upon transport error\n *\n * @api private\n */\n onError(err) {\n Socket.priorWebsocketSuccess = false;\n this.emitReserved(\"error\", err);\n this.onClose(\"transport error\", err);\n }\n /**\n * Called upon transport close.\n *\n * @api private\n */\n onClose(reason, description) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n // clear timers\n this.clearTimeoutFn(this.pingTimeoutTimer);\n // stop event from firing again for transport\n this.transport.removeAllListeners(\"close\");\n // ensure transport won't stay open\n this.transport.close();\n // ignore further transport communication\n this.transport.removeAllListeners();\n if (typeof removeEventListener === \"function\") {\n removeEventListener(\"beforeunload\", this.beforeunloadEventListener, false);\n removeEventListener(\"offline\", this.offlineEventListener, false);\n }\n // set ready state\n this.readyState = \"closed\";\n // clear session id\n this.id = null;\n // emit close event\n this.emitReserved(\"close\", reason, description);\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n }\n }\n /**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} server upgrades\n * @api private\n *\n */\n filterUpgrades(upgrades) {\n const filteredUpgrades = [];\n let i = 0;\n const j = upgrades.length;\n for (; i < j; i++) {\n if (~this.transports.indexOf(upgrades[i]))\n filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n }\n}\nSocket.protocol = protocol;\n","import { Socket } from \"./socket.js\";\nexport { Socket };\nexport const protocol = Socket.protocol;\nexport { Transport } from \"./transport.js\";\nexport { transports } from \"./transports/index.js\";\nexport { installTimerFunctions } from \"./util.js\";\nexport { parse } from \"./contrib/parseuri.js\";\nexport { nextTick } from \"./transports/websocket-constructor.js\";\n","import { parse } from \"engine.io-client\";\n/**\n * URL parser.\n *\n * @param uri - url\n * @param path - the request path of the connection\n * @param loc - An object meant to mimic window.location.\n * Defaults to window.location.\n * @public\n */\nexport function url(uri, path = \"\", loc) {\n let obj = uri;\n // default to window.location\n loc = loc || (typeof location !== \"undefined\" && location);\n if (null == uri)\n uri = loc.protocol + \"//\" + loc.host;\n // relative path support\n if (typeof uri === \"string\") {\n if (\"/\" === uri.charAt(0)) {\n if (\"/\" === uri.charAt(1)) {\n uri = loc.protocol + uri;\n }\n else {\n uri = loc.host + uri;\n }\n }\n if (!/^(https?|wss?):\\/\\//.test(uri)) {\n if (\"undefined\" !== typeof loc) {\n uri = loc.protocol + \"//\" + uri;\n }\n else {\n uri = \"https://\" + uri;\n }\n }\n // parse\n obj = parse(uri);\n }\n // make sure we treat `localhost:80` and `localhost` equally\n if (!obj.port) {\n if (/^(http|ws)$/.test(obj.protocol)) {\n obj.port = \"80\";\n }\n else if (/^(http|ws)s$/.test(obj.protocol)) {\n obj.port = \"443\";\n }\n }\n obj.path = obj.path || \"/\";\n const ipv6 = obj.host.indexOf(\":\") !== -1;\n const host = ipv6 ? \"[\" + obj.host + \"]\" : obj.host;\n // define unique id\n obj.id = obj.protocol + \"://\" + host + \":\" + obj.port + path;\n // define href\n obj.href =\n obj.protocol +\n \"://\" +\n host +\n (loc && loc.port === obj.port ? \"\" : \":\" + obj.port);\n return obj;\n}\n","const withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst isView = (obj) => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj.buffer instanceof ArrayBuffer;\n};\nconst toString = Object.prototype.toString;\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeFile = typeof File === \"function\" ||\n (typeof File !== \"undefined\" &&\n toString.call(File) === \"[object FileConstructor]\");\n/**\n * Returns true if obj is a Buffer, an ArrayBuffer, a Blob or a File.\n *\n * @private\n */\nexport function isBinary(obj) {\n return ((withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj))) ||\n (withNativeBlob && obj instanceof Blob) ||\n (withNativeFile && obj instanceof File));\n}\nexport function hasBinary(obj, toJSON) {\n if (!obj || typeof obj !== \"object\") {\n return false;\n }\n if (Array.isArray(obj)) {\n for (let i = 0, l = obj.length; i < l; i++) {\n if (hasBinary(obj[i])) {\n return true;\n }\n }\n return false;\n }\n if (isBinary(obj)) {\n return true;\n }\n if (obj.toJSON &&\n typeof obj.toJSON === \"function\" &&\n arguments.length === 1) {\n return hasBinary(obj.toJSON(), true);\n }\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\n return true;\n }\n }\n return false;\n}\n","import { isBinary } from \"./is-binary.js\";\n/**\n * Replaces every Buffer | ArrayBuffer | Blob | File in packet with a numbered placeholder.\n *\n * @param {Object} packet - socket.io event packet\n * @return {Object} with deconstructed packet and list of buffers\n * @public\n */\nexport function deconstructPacket(packet) {\n const buffers = [];\n const packetData = packet.data;\n const pack = packet;\n pack.data = _deconstructPacket(packetData, buffers);\n pack.attachments = buffers.length; // number of binary 'attachments'\n return { packet: pack, buffers: buffers };\n}\nfunction _deconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (isBinary(data)) {\n const placeholder = { _placeholder: true, num: buffers.length };\n buffers.push(data);\n return placeholder;\n }\n else if (Array.isArray(data)) {\n const newData = new Array(data.length);\n for (let i = 0; i < data.length; i++) {\n newData[i] = _deconstructPacket(data[i], buffers);\n }\n return newData;\n }\n else if (typeof data === \"object\" && !(data instanceof Date)) {\n const newData = {};\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n newData[key] = _deconstructPacket(data[key], buffers);\n }\n }\n return newData;\n }\n return data;\n}\n/**\n * Reconstructs a binary packet from its placeholder packet and buffers\n *\n * @param {Object} packet - event packet with placeholders\n * @param {Array} buffers - binary buffers to put in placeholder positions\n * @return {Object} reconstructed packet\n * @public\n */\nexport function reconstructPacket(packet, buffers) {\n packet.data = _reconstructPacket(packet.data, buffers);\n packet.attachments = undefined; // no longer useful\n return packet;\n}\nfunction _reconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (data && data._placeholder) {\n return buffers[data.num]; // appropriate buffer (should be natural order anyway)\n }\n else if (Array.isArray(data)) {\n for (let i = 0; i < data.length; i++) {\n data[i] = _reconstructPacket(data[i], buffers);\n }\n }\n else if (typeof data === \"object\") {\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n data[key] = _reconstructPacket(data[key], buffers);\n }\n }\n }\n return data;\n}\n","import { Emitter } from \"@socket.io/component-emitter\";\nimport { deconstructPacket, reconstructPacket } from \"./binary.js\";\nimport { isBinary, hasBinary } from \"./is-binary.js\";\n/**\n * Protocol version.\n *\n * @public\n */\nexport const protocol = 5;\nexport var PacketType;\n(function (PacketType) {\n PacketType[PacketType[\"CONNECT\"] = 0] = \"CONNECT\";\n PacketType[PacketType[\"DISCONNECT\"] = 1] = \"DISCONNECT\";\n PacketType[PacketType[\"EVENT\"] = 2] = \"EVENT\";\n PacketType[PacketType[\"ACK\"] = 3] = \"ACK\";\n PacketType[PacketType[\"CONNECT_ERROR\"] = 4] = \"CONNECT_ERROR\";\n PacketType[PacketType[\"BINARY_EVENT\"] = 5] = \"BINARY_EVENT\";\n PacketType[PacketType[\"BINARY_ACK\"] = 6] = \"BINARY_ACK\";\n})(PacketType || (PacketType = {}));\n/**\n * A socket.io Encoder instance\n */\nexport class Encoder {\n /**\n * Encoder constructor\n *\n * @param {function} replacer - custom replacer to pass down to JSON.parse\n */\n constructor(replacer) {\n this.replacer = replacer;\n }\n /**\n * Encode a packet as a single string if non-binary, or as a\n * buffer sequence, depending on packet type.\n *\n * @param {Object} obj - packet object\n */\n encode(obj) {\n if (obj.type === PacketType.EVENT || obj.type === PacketType.ACK) {\n if (hasBinary(obj)) {\n obj.type =\n obj.type === PacketType.EVENT\n ? PacketType.BINARY_EVENT\n : PacketType.BINARY_ACK;\n return this.encodeAsBinary(obj);\n }\n }\n return [this.encodeAsString(obj)];\n }\n /**\n * Encode packet as string.\n */\n encodeAsString(obj) {\n // first is type\n let str = \"\" + obj.type;\n // attachments if we have them\n if (obj.type === PacketType.BINARY_EVENT ||\n obj.type === PacketType.BINARY_ACK) {\n str += obj.attachments + \"-\";\n }\n // if we have a namespace other than `/`\n // we append it followed by a comma `,`\n if (obj.nsp && \"/\" !== obj.nsp) {\n str += obj.nsp + \",\";\n }\n // immediately followed by the id\n if (null != obj.id) {\n str += obj.id;\n }\n // json data\n if (null != obj.data) {\n str += JSON.stringify(obj.data, this.replacer);\n }\n return str;\n }\n /**\n * Encode packet as 'buffer sequence' by removing blobs, and\n * deconstructing packet into object with placeholders and\n * a list of buffers.\n */\n encodeAsBinary(obj) {\n const deconstruction = deconstructPacket(obj);\n const pack = this.encodeAsString(deconstruction.packet);\n const buffers = deconstruction.buffers;\n buffers.unshift(pack); // add packet info to beginning of data list\n return buffers; // write all the buffers\n }\n}\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n */\nexport class Decoder extends Emitter {\n /**\n * Decoder constructor\n *\n * @param {function} reviver - custom reviver to pass down to JSON.stringify\n */\n constructor(reviver) {\n super();\n this.reviver = reviver;\n }\n /**\n * Decodes an encoded packet string into packet JSON.\n *\n * @param {String} obj - encoded packet\n */\n add(obj) {\n let packet;\n if (typeof obj === \"string\") {\n packet = this.decodeString(obj);\n if (packet.type === PacketType.BINARY_EVENT ||\n packet.type === PacketType.BINARY_ACK) {\n // binary packet's json\n this.reconstructor = new BinaryReconstructor(packet);\n // no attachments, labeled binary but no binary data to follow\n if (packet.attachments === 0) {\n super.emitReserved(\"decoded\", packet);\n }\n }\n else {\n // non-binary full packet\n super.emitReserved(\"decoded\", packet);\n }\n }\n else if (isBinary(obj) || obj.base64) {\n // raw binary data\n if (!this.reconstructor) {\n throw new Error(\"got binary data when not reconstructing a packet\");\n }\n else {\n packet = this.reconstructor.takeBinaryData(obj);\n if (packet) {\n // received final buffer\n this.reconstructor = null;\n super.emitReserved(\"decoded\", packet);\n }\n }\n }\n else {\n throw new Error(\"Unknown type: \" + obj);\n }\n }\n /**\n * Decode a packet String (JSON data)\n *\n * @param {String} str\n * @return {Object} packet\n */\n decodeString(str) {\n let i = 0;\n // look up type\n const p = {\n type: Number(str.charAt(0)),\n };\n if (PacketType[p.type] === undefined) {\n throw new Error(\"unknown packet type \" + p.type);\n }\n // look up attachments if type binary\n if (p.type === PacketType.BINARY_EVENT ||\n p.type === PacketType.BINARY_ACK) {\n const start = i + 1;\n while (str.charAt(++i) !== \"-\" && i != str.length) { }\n const buf = str.substring(start, i);\n if (buf != Number(buf) || str.charAt(i) !== \"-\") {\n throw new Error(\"Illegal attachments\");\n }\n p.attachments = Number(buf);\n }\n // look up namespace (if any)\n if (\"/\" === str.charAt(i + 1)) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (\",\" === c)\n break;\n if (i === str.length)\n break;\n }\n p.nsp = str.substring(start, i);\n }\n else {\n p.nsp = \"/\";\n }\n // look up id\n const next = str.charAt(i + 1);\n if (\"\" !== next && Number(next) == next) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (null == c || Number(c) != c) {\n --i;\n break;\n }\n if (i === str.length)\n break;\n }\n p.id = Number(str.substring(start, i + 1));\n }\n // look up json data\n if (str.charAt(++i)) {\n const payload = this.tryParse(str.substr(i));\n if (Decoder.isPayloadValid(p.type, payload)) {\n p.data = payload;\n }\n else {\n throw new Error(\"invalid payload\");\n }\n }\n return p;\n }\n tryParse(str) {\n try {\n return JSON.parse(str, this.reviver);\n }\n catch (e) {\n return false;\n }\n }\n static isPayloadValid(type, payload) {\n switch (type) {\n case PacketType.CONNECT:\n return typeof payload === \"object\";\n case PacketType.DISCONNECT:\n return payload === undefined;\n case PacketType.CONNECT_ERROR:\n return typeof payload === \"string\" || typeof payload === \"object\";\n case PacketType.EVENT:\n case PacketType.BINARY_EVENT:\n return Array.isArray(payload) && payload.length > 0;\n case PacketType.ACK:\n case PacketType.BINARY_ACK:\n return Array.isArray(payload);\n }\n }\n /**\n * Deallocates a parser's resources\n */\n destroy() {\n if (this.reconstructor) {\n this.reconstructor.finishedReconstruction();\n }\n }\n}\n/**\n * A manager of a binary event's 'buffer sequence'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n */\nclass BinaryReconstructor {\n constructor(packet) {\n this.packet = packet;\n this.buffers = [];\n this.reconPack = packet;\n }\n /**\n * Method to be called when binary data received from connection\n * after a BINARY_EVENT packet.\n *\n * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n * @return {null | Object} returns null if more binary data is expected or\n * a reconstructed packet object if all buffers have been received.\n */\n takeBinaryData(binData) {\n this.buffers.push(binData);\n if (this.buffers.length === this.reconPack.attachments) {\n // done with buffer list\n const packet = reconstructPacket(this.reconPack, this.buffers);\n this.finishedReconstruction();\n return packet;\n }\n return null;\n }\n /**\n * Cleans up binary packet reconstruction variables.\n */\n finishedReconstruction() {\n this.reconPack = null;\n this.buffers = [];\n }\n}\n","export function on(obj, ev, fn) {\n obj.on(ev, fn);\n return function subDestroy() {\n obj.off(ev, fn);\n };\n}\n","import { PacketType } from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\n/**\n * Internal events.\n * These events can't be emitted by the user.\n */\nconst RESERVED_EVENTS = Object.freeze({\n connect: 1,\n connect_error: 1,\n disconnect: 1,\n disconnecting: 1,\n // EventEmitter reserved events: https://nodejs.org/api/events.html#events_event_newlistener\n newListener: 1,\n removeListener: 1,\n});\n/**\n * A Socket is the fundamental class for interacting with the server.\n *\n * A Socket belongs to a certain Namespace (by default /) and uses an underlying {@link Manager} to communicate.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(\"connected\");\n * });\n *\n * // send an event to the server\n * socket.emit(\"foo\", \"bar\");\n *\n * socket.on(\"foobar\", () => {\n * // an event was received from the server\n * });\n *\n * // upon disconnection\n * socket.on(\"disconnect\", (reason) => {\n * console.log(`disconnected due to ${reason}`);\n * });\n */\nexport class Socket extends Emitter {\n /**\n * `Socket` constructor.\n */\n constructor(io, nsp, opts) {\n super();\n /**\n * Whether the socket is currently connected to the server.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(socket.connected); // true\n * });\n *\n * socket.on(\"disconnect\", () => {\n * console.log(socket.connected); // false\n * });\n */\n this.connected = false;\n /**\n * Buffer for packets received before the CONNECT packet\n */\n this.receiveBuffer = [];\n /**\n * Buffer for packets that will be sent once the socket is connected\n */\n this.sendBuffer = [];\n this.ids = 0;\n this.acks = {};\n this.flags = {};\n this.io = io;\n this.nsp = nsp;\n if (opts && opts.auth) {\n this.auth = opts.auth;\n }\n if (this.io._autoConnect)\n this.open();\n }\n /**\n * Whether the socket is currently disconnected\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(socket.disconnected); // false\n * });\n *\n * socket.on(\"disconnect\", () => {\n * console.log(socket.disconnected); // true\n * });\n */\n get disconnected() {\n return !this.connected;\n }\n /**\n * Subscribe to open, close and packet events\n *\n * @private\n */\n subEvents() {\n if (this.subs)\n return;\n const io = this.io;\n this.subs = [\n on(io, \"open\", this.onopen.bind(this)),\n on(io, \"packet\", this.onpacket.bind(this)),\n on(io, \"error\", this.onerror.bind(this)),\n on(io, \"close\", this.onclose.bind(this)),\n ];\n }\n /**\n * Whether the Socket will try to reconnect when its Manager connects or reconnects.\n *\n * @example\n * const socket = io();\n *\n * console.log(socket.active); // true\n *\n * socket.on(\"disconnect\", (reason) => {\n * if (reason === \"io server disconnect\") {\n * // the disconnection was initiated by the server, you need to manually reconnect\n * console.log(socket.active); // false\n * }\n * // else the socket will automatically try to reconnect\n * console.log(socket.active); // true\n * });\n */\n get active() {\n return !!this.subs;\n }\n /**\n * \"Opens\" the socket.\n *\n * @example\n * const socket = io({\n * autoConnect: false\n * });\n *\n * socket.connect();\n */\n connect() {\n if (this.connected)\n return this;\n this.subEvents();\n if (!this.io[\"_reconnecting\"])\n this.io.open(); // ensure open\n if (\"open\" === this.io._readyState)\n this.onopen();\n return this;\n }\n /**\n * Alias for {@link connect()}.\n */\n open() {\n return this.connect();\n }\n /**\n * Sends a `message` event.\n *\n * This method mimics the WebSocket.send() method.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/send\n *\n * @example\n * socket.send(\"hello\");\n *\n * // this is equivalent to\n * socket.emit(\"message\", \"hello\");\n *\n * @return self\n */\n send(...args) {\n args.unshift(\"message\");\n this.emit.apply(this, args);\n return this;\n }\n /**\n * Override `emit`.\n * If the event is in `events`, it's emitted normally.\n *\n * @example\n * socket.emit(\"hello\", \"world\");\n *\n * // all serializable datastructures are supported (no need to call JSON.stringify)\n * socket.emit(\"hello\", 1, \"2\", { 3: [\"4\"], 5: Uint8Array.from([6]) });\n *\n * // with an acknowledgement from the server\n * socket.emit(\"hello\", \"world\", (val) => {\n * // ...\n * });\n *\n * @return self\n */\n emit(ev, ...args) {\n if (RESERVED_EVENTS.hasOwnProperty(ev)) {\n throw new Error('\"' + ev.toString() + '\" is a reserved event name');\n }\n args.unshift(ev);\n const packet = {\n type: PacketType.EVENT,\n data: args,\n };\n packet.options = {};\n packet.options.compress = this.flags.compress !== false;\n // event ack callback\n if (\"function\" === typeof args[args.length - 1]) {\n const id = this.ids++;\n const ack = args.pop();\n this._registerAckCallback(id, ack);\n packet.id = id;\n }\n const isTransportWritable = this.io.engine &&\n this.io.engine.transport &&\n this.io.engine.transport.writable;\n const discardPacket = this.flags.volatile && (!isTransportWritable || !this.connected);\n if (discardPacket) {\n }\n else if (this.connected) {\n this.notifyOutgoingListeners(packet);\n this.packet(packet);\n }\n else {\n this.sendBuffer.push(packet);\n }\n this.flags = {};\n return this;\n }\n /**\n * @private\n */\n _registerAckCallback(id, ack) {\n const timeout = this.flags.timeout;\n if (timeout === undefined) {\n this.acks[id] = ack;\n return;\n }\n // @ts-ignore\n const timer = this.io.setTimeoutFn(() => {\n delete this.acks[id];\n for (let i = 0; i < this.sendBuffer.length; i++) {\n if (this.sendBuffer[i].id === id) {\n this.sendBuffer.splice(i, 1);\n }\n }\n ack.call(this, new Error(\"operation has timed out\"));\n }, timeout);\n this.acks[id] = (...args) => {\n // @ts-ignore\n this.io.clearTimeoutFn(timer);\n ack.apply(this, [null, ...args]);\n };\n }\n /**\n * Sends a packet.\n *\n * @param packet\n * @private\n */\n packet(packet) {\n packet.nsp = this.nsp;\n this.io._packet(packet);\n }\n /**\n * Called upon engine `open`.\n *\n * @private\n */\n onopen() {\n if (typeof this.auth == \"function\") {\n this.auth((data) => {\n this.packet({ type: PacketType.CONNECT, data });\n });\n }\n else {\n this.packet({ type: PacketType.CONNECT, data: this.auth });\n }\n }\n /**\n * Called upon engine or manager `error`.\n *\n * @param err\n * @private\n */\n onerror(err) {\n if (!this.connected) {\n this.emitReserved(\"connect_error\", err);\n }\n }\n /**\n * Called upon engine `close`.\n *\n * @param reason\n * @param description\n * @private\n */\n onclose(reason, description) {\n this.connected = false;\n delete this.id;\n this.emitReserved(\"disconnect\", reason, description);\n }\n /**\n * Called with socket packet.\n *\n * @param packet\n * @private\n */\n onpacket(packet) {\n const sameNamespace = packet.nsp === this.nsp;\n if (!sameNamespace)\n return;\n switch (packet.type) {\n case PacketType.CONNECT:\n if (packet.data && packet.data.sid) {\n const id = packet.data.sid;\n this.onconnect(id);\n }\n else {\n this.emitReserved(\"connect_error\", new Error(\"It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)\"));\n }\n break;\n case PacketType.EVENT:\n case PacketType.BINARY_EVENT:\n this.onevent(packet);\n break;\n case PacketType.ACK:\n case PacketType.BINARY_ACK:\n this.onack(packet);\n break;\n case PacketType.DISCONNECT:\n this.ondisconnect();\n break;\n case PacketType.CONNECT_ERROR:\n this.destroy();\n const err = new Error(packet.data.message);\n // @ts-ignore\n err.data = packet.data.data;\n this.emitReserved(\"connect_error\", err);\n break;\n }\n }\n /**\n * Called upon a server event.\n *\n * @param packet\n * @private\n */\n onevent(packet) {\n const args = packet.data || [];\n if (null != packet.id) {\n args.push(this.ack(packet.id));\n }\n if (this.connected) {\n this.emitEvent(args);\n }\n else {\n this.receiveBuffer.push(Object.freeze(args));\n }\n }\n emitEvent(args) {\n if (this._anyListeners && this._anyListeners.length) {\n const listeners = this._anyListeners.slice();\n for (const listener of listeners) {\n listener.apply(this, args);\n }\n }\n super.emit.apply(this, args);\n }\n /**\n * Produces an ack callback to emit with an event.\n *\n * @private\n */\n ack(id) {\n const self = this;\n let sent = false;\n return function (...args) {\n // prevent double callbacks\n if (sent)\n return;\n sent = true;\n self.packet({\n type: PacketType.ACK,\n id: id,\n data: args,\n });\n };\n }\n /**\n * Called upon a server acknowlegement.\n *\n * @param packet\n * @private\n */\n onack(packet) {\n const ack = this.acks[packet.id];\n if (\"function\" === typeof ack) {\n ack.apply(this, packet.data);\n delete this.acks[packet.id];\n }\n else {\n }\n }\n /**\n * Called upon server connect.\n *\n * @private\n */\n onconnect(id) {\n this.id = id;\n this.connected = true;\n this.emitBuffered();\n this.emitReserved(\"connect\");\n }\n /**\n * Emit buffered events (received and emitted).\n *\n * @private\n */\n emitBuffered() {\n this.receiveBuffer.forEach((args) => this.emitEvent(args));\n this.receiveBuffer = [];\n this.sendBuffer.forEach((packet) => {\n this.notifyOutgoingListeners(packet);\n this.packet(packet);\n });\n this.sendBuffer = [];\n }\n /**\n * Called upon server disconnect.\n *\n * @private\n */\n ondisconnect() {\n this.destroy();\n this.onclose(\"io server disconnect\");\n }\n /**\n * Called upon forced client/server side disconnections,\n * this method ensures the manager stops tracking us and\n * that reconnections don't get triggered for this.\n *\n * @private\n */\n destroy() {\n if (this.subs) {\n // clean subscriptions to avoid reconnections\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs = undefined;\n }\n this.io[\"_destroy\"](this);\n }\n /**\n * Disconnects the socket manually. In that case, the socket will not try to reconnect.\n *\n * If this is the last active Socket instance of the {@link Manager}, the low-level connection will be closed.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"disconnect\", (reason) => {\n * // console.log(reason); prints \"io client disconnect\"\n * });\n *\n * socket.disconnect();\n *\n * @return self\n */\n disconnect() {\n if (this.connected) {\n this.packet({ type: PacketType.DISCONNECT });\n }\n // remove socket from pool\n this.destroy();\n if (this.connected) {\n // fire events\n this.onclose(\"io client disconnect\");\n }\n return this;\n }\n /**\n * Alias for {@link disconnect()}.\n *\n * @return self\n */\n close() {\n return this.disconnect();\n }\n /**\n * Sets the compress flag.\n *\n * @example\n * socket.compress(false).emit(\"hello\");\n *\n * @param compress - if `true`, compresses the sending data\n * @return self\n */\n compress(compress) {\n this.flags.compress = compress;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the event message will be dropped when this socket is not\n * ready to send messages.\n *\n * @example\n * socket.volatile.emit(\"hello\"); // the server may or may not receive it\n *\n * @returns self\n */\n get volatile() {\n this.flags.volatile = true;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the callback will be called with an error when the\n * given number of milliseconds have elapsed without an acknowledgement from the server:\n *\n * @example\n * socket.timeout(5000).emit(\"my-event\", (err) => {\n * if (err) {\n * // the server did not acknowledge the event in the given delay\n * }\n * });\n *\n * @returns self\n */\n timeout(timeout) {\n this.flags.timeout = timeout;\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback.\n *\n * @example\n * socket.onAny((event, ...args) => {\n * console.log(`got ${event}`);\n * });\n *\n * @param listener\n */\n onAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.push(listener);\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback. The listener is added to the beginning of the listeners array.\n *\n * @example\n * socket.prependAny((event, ...args) => {\n * console.log(`got event ${event}`);\n * });\n *\n * @param listener\n */\n prependAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.unshift(listener);\n return this;\n }\n /**\n * Removes the listener that will be fired when any event is emitted.\n *\n * @example\n * const catchAllListener = (event, ...args) => {\n * console.log(`got event ${event}`);\n * }\n *\n * socket.onAny(catchAllListener);\n *\n * // remove a specific listener\n * socket.offAny(catchAllListener);\n *\n * // or remove all listeners\n * socket.offAny();\n *\n * @param listener\n */\n offAny(listener) {\n if (!this._anyListeners) {\n return this;\n }\n if (listener) {\n const listeners = this._anyListeners;\n for (let i = 0; i < listeners.length; i++) {\n if (listener === listeners[i]) {\n listeners.splice(i, 1);\n return this;\n }\n }\n }\n else {\n this._anyListeners = [];\n }\n return this;\n }\n /**\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n * e.g. to remove listeners.\n */\n listenersAny() {\n return this._anyListeners || [];\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback.\n *\n * Note: acknowledgements sent to the server are not included.\n *\n * @example\n * socket.onAnyOutgoing((event, ...args) => {\n * console.log(`sent event ${event}`);\n * });\n *\n * @param listener\n */\n onAnyOutgoing(listener) {\n this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n this._anyOutgoingListeners.push(listener);\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback. The listener is added to the beginning of the listeners array.\n *\n * Note: acknowledgements sent to the server are not included.\n *\n * @example\n * socket.prependAnyOutgoing((event, ...args) => {\n * console.log(`sent event ${event}`);\n * });\n *\n * @param listener\n */\n prependAnyOutgoing(listener) {\n this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n this._anyOutgoingListeners.unshift(listener);\n return this;\n }\n /**\n * Removes the listener that will be fired when any event is emitted.\n *\n * @example\n * const catchAllListener = (event, ...args) => {\n * console.log(`sent event ${event}`);\n * }\n *\n * socket.onAnyOutgoing(catchAllListener);\n *\n * // remove a specific listener\n * socket.offAnyOutgoing(catchAllListener);\n *\n * // or remove all listeners\n * socket.offAnyOutgoing();\n *\n * @param [listener] - the catch-all listener (optional)\n */\n offAnyOutgoing(listener) {\n if (!this._anyOutgoingListeners) {\n return this;\n }\n if (listener) {\n const listeners = this._anyOutgoingListeners;\n for (let i = 0; i < listeners.length; i++) {\n if (listener === listeners[i]) {\n listeners.splice(i, 1);\n return this;\n }\n }\n }\n else {\n this._anyOutgoingListeners = [];\n }\n return this;\n }\n /**\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n * e.g. to remove listeners.\n */\n listenersAnyOutgoing() {\n return this._anyOutgoingListeners || [];\n }\n /**\n * Notify the listeners for each packet sent\n *\n * @param packet\n *\n * @private\n */\n notifyOutgoingListeners(packet) {\n if (this._anyOutgoingListeners && this._anyOutgoingListeners.length) {\n const listeners = this._anyOutgoingListeners.slice();\n for (const listener of listeners) {\n listener.apply(this, packet.data);\n }\n }\n }\n}\n","/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\nexport function Backoff(opts) {\n opts = opts || {};\n this.ms = opts.min || 100;\n this.max = opts.max || 10000;\n this.factor = opts.factor || 2;\n this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n this.attempts = 0;\n}\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\nBackoff.prototype.duration = function () {\n var ms = this.ms * Math.pow(this.factor, this.attempts++);\n if (this.jitter) {\n var rand = Math.random();\n var deviation = Math.floor(rand * this.jitter * ms);\n ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n }\n return Math.min(ms, this.max) | 0;\n};\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\nBackoff.prototype.reset = function () {\n this.attempts = 0;\n};\n/**\n * Set the minimum duration\n *\n * @api public\n */\nBackoff.prototype.setMin = function (min) {\n this.ms = min;\n};\n/**\n * Set the maximum duration\n *\n * @api public\n */\nBackoff.prototype.setMax = function (max) {\n this.max = max;\n};\n/**\n * Set the jitter\n *\n * @api public\n */\nBackoff.prototype.setJitter = function (jitter) {\n this.jitter = jitter;\n};\n","import { Socket as Engine, installTimerFunctions, nextTick, } from \"engine.io-client\";\nimport { Socket } from \"./socket.js\";\nimport * as parser from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport { Backoff } from \"./contrib/backo2.js\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\nexport class Manager extends Emitter {\n constructor(uri, opts) {\n var _a;\n super();\n this.nsps = {};\n this.subs = [];\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n opts.path = opts.path || \"/socket.io\";\n this.opts = opts;\n installTimerFunctions(this, opts);\n this.reconnection(opts.reconnection !== false);\n this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n this.reconnectionDelay(opts.reconnectionDelay || 1000);\n this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\n this.randomizationFactor((_a = opts.randomizationFactor) !== null && _a !== void 0 ? _a : 0.5);\n this.backoff = new Backoff({\n min: this.reconnectionDelay(),\n max: this.reconnectionDelayMax(),\n jitter: this.randomizationFactor(),\n });\n this.timeout(null == opts.timeout ? 20000 : opts.timeout);\n this._readyState = \"closed\";\n this.uri = uri;\n const _parser = opts.parser || parser;\n this.encoder = new _parser.Encoder();\n this.decoder = new _parser.Decoder();\n this._autoConnect = opts.autoConnect !== false;\n if (this._autoConnect)\n this.open();\n }\n reconnection(v) {\n if (!arguments.length)\n return this._reconnection;\n this._reconnection = !!v;\n return this;\n }\n reconnectionAttempts(v) {\n if (v === undefined)\n return this._reconnectionAttempts;\n this._reconnectionAttempts = v;\n return this;\n }\n reconnectionDelay(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelay;\n this._reconnectionDelay = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMin(v);\n return this;\n }\n randomizationFactor(v) {\n var _a;\n if (v === undefined)\n return this._randomizationFactor;\n this._randomizationFactor = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setJitter(v);\n return this;\n }\n reconnectionDelayMax(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelayMax;\n this._reconnectionDelayMax = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMax(v);\n return this;\n }\n timeout(v) {\n if (!arguments.length)\n return this._timeout;\n this._timeout = v;\n return this;\n }\n /**\n * Starts trying to reconnect if reconnection is enabled and we have not\n * started reconnecting yet\n *\n * @private\n */\n maybeReconnectOnOpen() {\n // Only try to reconnect if it's the first time we're connecting\n if (!this._reconnecting &&\n this._reconnection &&\n this.backoff.attempts === 0) {\n // keeps reconnection from firing twice for the same reconnection loop\n this.reconnect();\n }\n }\n /**\n * Sets the current transport `socket`.\n *\n * @param {Function} fn - optional, callback\n * @return self\n * @public\n */\n open(fn) {\n if (~this._readyState.indexOf(\"open\"))\n return this;\n this.engine = new Engine(this.uri, this.opts);\n const socket = this.engine;\n const self = this;\n this._readyState = \"opening\";\n this.skipReconnect = false;\n // emit `open`\n const openSubDestroy = on(socket, \"open\", function () {\n self.onopen();\n fn && fn();\n });\n // emit `error`\n const errorSub = on(socket, \"error\", (err) => {\n self.cleanup();\n self._readyState = \"closed\";\n this.emitReserved(\"error\", err);\n if (fn) {\n fn(err);\n }\n else {\n // Only do this if there is no fn to handle the error\n self.maybeReconnectOnOpen();\n }\n });\n if (false !== this._timeout) {\n const timeout = this._timeout;\n if (timeout === 0) {\n openSubDestroy(); // prevents a race condition with the 'open' event\n }\n // set timer\n const timer = this.setTimeoutFn(() => {\n openSubDestroy();\n socket.close();\n // @ts-ignore\n socket.emit(\"error\", new Error(\"timeout\"));\n }, timeout);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(function subDestroy() {\n clearTimeout(timer);\n });\n }\n this.subs.push(openSubDestroy);\n this.subs.push(errorSub);\n return this;\n }\n /**\n * Alias for open()\n *\n * @return self\n * @public\n */\n connect(fn) {\n return this.open(fn);\n }\n /**\n * Called upon transport open.\n *\n * @private\n */\n onopen() {\n // clear old subs\n this.cleanup();\n // mark as open\n this._readyState = \"open\";\n this.emitReserved(\"open\");\n // add new subs\n const socket = this.engine;\n this.subs.push(on(socket, \"ping\", this.onping.bind(this)), on(socket, \"data\", this.ondata.bind(this)), on(socket, \"error\", this.onerror.bind(this)), on(socket, \"close\", this.onclose.bind(this)), on(this.decoder, \"decoded\", this.ondecoded.bind(this)));\n }\n /**\n * Called upon a ping.\n *\n * @private\n */\n onping() {\n this.emitReserved(\"ping\");\n }\n /**\n * Called with data.\n *\n * @private\n */\n ondata(data) {\n try {\n this.decoder.add(data);\n }\n catch (e) {\n this.onclose(\"parse error\", e);\n }\n }\n /**\n * Called when parser fully decodes a packet.\n *\n * @private\n */\n ondecoded(packet) {\n // the nextTick call prevents an exception in a user-provided event listener from triggering a disconnection due to a \"parse error\"\n nextTick(() => {\n this.emitReserved(\"packet\", packet);\n }, this.setTimeoutFn);\n }\n /**\n * Called upon socket error.\n *\n * @private\n */\n onerror(err) {\n this.emitReserved(\"error\", err);\n }\n /**\n * Creates a new socket for the given `nsp`.\n *\n * @return {Socket}\n * @public\n */\n socket(nsp, opts) {\n let socket = this.nsps[nsp];\n if (!socket) {\n socket = new Socket(this, nsp, opts);\n this.nsps[nsp] = socket;\n }\n return socket;\n }\n /**\n * Called upon a socket close.\n *\n * @param socket\n * @private\n */\n _destroy(socket) {\n const nsps = Object.keys(this.nsps);\n for (const nsp of nsps) {\n const socket = this.nsps[nsp];\n if (socket.active) {\n return;\n }\n }\n this._close();\n }\n /**\n * Writes a packet.\n *\n * @param packet\n * @private\n */\n _packet(packet) {\n const encodedPackets = this.encoder.encode(packet);\n for (let i = 0; i < encodedPackets.length; i++) {\n this.engine.write(encodedPackets[i], packet.options);\n }\n }\n /**\n * Clean up transport subscriptions and packet buffer.\n *\n * @private\n */\n cleanup() {\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs.length = 0;\n this.decoder.destroy();\n }\n /**\n * Close the current socket.\n *\n * @private\n */\n _close() {\n this.skipReconnect = true;\n this._reconnecting = false;\n this.onclose(\"forced close\");\n if (this.engine)\n this.engine.close();\n }\n /**\n * Alias for close()\n *\n * @private\n */\n disconnect() {\n return this._close();\n }\n /**\n * Called upon engine close.\n *\n * @private\n */\n onclose(reason, description) {\n this.cleanup();\n this.backoff.reset();\n this._readyState = \"closed\";\n this.emitReserved(\"close\", reason, description);\n if (this._reconnection && !this.skipReconnect) {\n this.reconnect();\n }\n }\n /**\n * Attempt a reconnection.\n *\n * @private\n */\n reconnect() {\n if (this._reconnecting || this.skipReconnect)\n return this;\n const self = this;\n if (this.backoff.attempts >= this._reconnectionAttempts) {\n this.backoff.reset();\n this.emitReserved(\"reconnect_failed\");\n this._reconnecting = false;\n }\n else {\n const delay = this.backoff.duration();\n this._reconnecting = true;\n const timer = this.setTimeoutFn(() => {\n if (self.skipReconnect)\n return;\n this.emitReserved(\"reconnect_attempt\", self.backoff.attempts);\n // check again for the case socket closed in above events\n if (self.skipReconnect)\n return;\n self.open((err) => {\n if (err) {\n self._reconnecting = false;\n self.reconnect();\n this.emitReserved(\"reconnect_error\", err);\n }\n else {\n self.onreconnect();\n }\n });\n }, delay);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(function subDestroy() {\n clearTimeout(timer);\n });\n }\n }\n /**\n * Called upon successful reconnect.\n *\n * @private\n */\n onreconnect() {\n const attempt = this.backoff.attempts;\n this._reconnecting = false;\n this.backoff.reset();\n this.emitReserved(\"reconnect\", attempt);\n }\n}\n","import { url } from \"./url.js\";\nimport { Manager } from \"./manager.js\";\nimport { Socket } from \"./socket.js\";\n/**\n * Managers cache.\n */\nconst cache = {};\nfunction lookup(uri, opts) {\n if (typeof uri === \"object\") {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n const parsed = url(uri, opts.path || \"/socket.io\");\n const source = parsed.source;\n const id = parsed.id;\n const path = parsed.path;\n const sameNamespace = cache[id] && path in cache[id][\"nsps\"];\n const newConnection = opts.forceNew ||\n opts[\"force new connection\"] ||\n false === opts.multiplex ||\n sameNamespace;\n let io;\n if (newConnection) {\n io = new Manager(source, opts);\n }\n else {\n if (!cache[id]) {\n cache[id] = new Manager(source, opts);\n }\n io = cache[id];\n }\n if (parsed.query && !opts.query) {\n opts.query = parsed.queryKey;\n }\n return io.socket(parsed.path, opts);\n}\n// so that \"lookup\" can be used both as a function (e.g. `io(...)`) and as a\n// namespace (e.g. `io.connect(...)`), for backward compatibility\nObject.assign(lookup, {\n Manager,\n Socket,\n io: lookup,\n connect: lookup,\n});\n/**\n * Protocol version.\n *\n * @public\n */\nexport { protocol } from \"socket.io-parser\";\n/**\n * Expose constructors for standalone build.\n *\n * @public\n */\nexport { Manager, Socket, lookup as io, lookup as connect, lookup as default, };\n"],"names":["PACKET_TYPES","Object","create","PACKET_TYPES_REVERSE","keys","forEach","key","ERROR_PACKET","type","data","withNativeBlob","Blob","prototype","toString","call","withNativeArrayBuffer","ArrayBuffer","isView","obj","buffer","encodePacket","supportsBinary","callback","encodeBlobAsBase64","fileReader","FileReader","onload","content","result","split","readAsDataURL","chars","lookup","Uint8Array","i","length","charCodeAt","decode","base64","bufferLength","len","p","encoded1","encoded2","encoded3","encoded4","arraybuffer","bytes","decodePacket","encodedPacket","binaryType","mapBinary","charAt","decodeBase64Packet","substring","packetType","decoded","SEPARATOR","String","fromCharCode","encodePayload","packets","encodedPackets","Array","count","packet","join","decodePayload","encodedPayload","decodedPacket","push","protocol","Emitter","mixin","on","addEventListener","event","fn","_callbacks","once","off","apply","arguments","removeListener","removeAllListeners","removeEventListener","callbacks","cb","splice","emit","args","slice","emitReserved","listeners","hasListeners","globalThisShim","self","window","Function","pick","attr","reduce","acc","k","hasOwnProperty","NATIVE_SET_TIMEOUT","setTimeout","NATIVE_CLEAR_TIMEOUT","clearTimeout","installTimerFunctions","opts","useNativeTimers","setTimeoutFn","bind","globalThis","clearTimeoutFn","BASE64_OVERHEAD","byteLength","utf8Length","Math","ceil","size","str","c","l","TransportError","reason","description","context","Error","Transport","writable","query","readyState","socket","doOpen","doClose","onClose","write","onPacket","details","alphabet","map","seed","prev","encode","num","encoded","floor","yeast","now","Date","encodeURIComponent","qs","qry","pairs","pair","decodeURIComponent","value","XMLHttpRequest","err","hasCORS","XHR","xdomain","e","concat","empty","hasXHR2","xhr","responseType","Polling","polling","location","isSSL","port","xd","hostname","xs","secure","forceBase64","poll","onPause","pause","total","doPoll","onOpen","close","doWrite","schema","timestampRequests","timestampParam","sid","b64","Number","encodedQuery","ipv6","indexOf","path","Request","uri","req","request","method","xhrStatus","onError","onData","pollXhr","async","undefined","xscheme","open","extraHeaders","setDisableHeaderCheck","setRequestHeader","withCredentials","requestTimeout","timeout","onreadystatechange","status","onLoad","send","document","index","requestsCount","requests","cleanup","fromError","abort","responseText","attachEvent","unloadHandler","terminationEvent","nextTick","isPromiseAvailable","Promise","resolve","then","WebSocket","MozWebSocket","usingBrowserWebSocket","defaultBinaryType","isReactNative","navigator","product","toLowerCase","WS","check","protocols","headers","ws","addEventListeners","onopen","autoUnref","_socket","unref","onclose","closeEvent","onmessage","ev","onerror","lastPacket","transports","websocket","re","parts","parse","src","b","replace","m","exec","source","host","authority","ipv6uri","pathNames","queryKey","regx","names","$0","$1","$2","Socket","writeBuffer","prevBufferLen","agent","upgrade","rememberUpgrade","rejectUnauthorized","perMessageDeflate","threshold","transportOptions","closeOnBeforeunload","id","upgrades","pingInterval","pingTimeout","pingTimeoutTimer","beforeunloadEventListener","transport","offlineEventListener","name","EIO","priorWebsocketSuccess","createTransport","shift","setTransport","onDrain","failed","onTransportOpen","msg","upgrading","flush","freezeTransport","error","onTransportClose","onupgrade","to","probe","onHandshake","JSON","resetPingTimeout","sendPacket","code","filterUpgrades","maxPayload","getWritablePackets","shouldCheckPayloadSize","payloadSize","options","compress","cleanupAndClose","waitForUpgrade","filteredUpgrades","j","url","loc","test","href","withNativeFile","File","isBinary","hasBinary","toJSON","isArray","deconstructPacket","buffers","packetData","pack","_deconstructPacket","attachments","placeholder","_placeholder","newData","reconstructPacket","_reconstructPacket","PacketType","Encoder","replacer","EVENT","ACK","BINARY_EVENT","BINARY_ACK","encodeAsBinary","encodeAsString","nsp","stringify","deconstruction","unshift","Decoder","reviver","decodeString","reconstructor","BinaryReconstructor","takeBinaryData","start","buf","next","payload","tryParse","substr","isPayloadValid","finishedReconstruction","CONNECT","DISCONNECT","CONNECT_ERROR","reconPack","binData","subDestroy","RESERVED_EVENTS","freeze","connect","connect_error","disconnect","disconnecting","newListener","io","connected","receiveBuffer","sendBuffer","ids","acks","flags","auth","_autoConnect","subs","onpacket","subEvents","_readyState","ack","pop","_registerAckCallback","isTransportWritable","engine","discardPacket","notifyOutgoingListeners","timer","_packet","sameNamespace","onconnect","onevent","onack","ondisconnect","destroy","message","emitEvent","_anyListeners","listener","sent","emitBuffered","_anyOutgoingListeners","Backoff","ms","min","max","factor","jitter","attempts","duration","pow","rand","random","deviation","reset","setMin","setMax","setJitter","Manager","_a","nsps","reconnection","reconnectionAttempts","Infinity","reconnectionDelay","reconnectionDelayMax","randomizationFactor","backoff","_parser","parser","encoder","decoder","autoConnect","v","_reconnection","_reconnectionAttempts","_reconnectionDelay","_randomizationFactor","_reconnectionDelayMax","_timeout","_reconnecting","reconnect","Engine","skipReconnect","openSubDestroy","errorSub","maybeReconnectOnOpen","onping","ondata","ondecoded","add","active","_close","delay","onreconnect","attempt","cache","parsed","newConnection","forceNew","multiplex"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAA,IAAMA,YAAY,GAAGC,MAAM,CAACC,MAAP,CAAc,IAAd,CAArB;;EACAF,YAAY,CAAC,MAAD,CAAZ,GAAuB,GAAvB,CAAA;EACAA,YAAY,CAAC,OAAD,CAAZ,GAAwB,GAAxB,CAAA;EACAA,YAAY,CAAC,MAAD,CAAZ,GAAuB,GAAvB,CAAA;EACAA,YAAY,CAAC,MAAD,CAAZ,GAAuB,GAAvB,CAAA;EACAA,YAAY,CAAC,SAAD,CAAZ,GAA0B,GAA1B,CAAA;EACAA,YAAY,CAAC,SAAD,CAAZ,GAA0B,GAA1B,CAAA;EACAA,YAAY,CAAC,MAAD,CAAZ,GAAuB,GAAvB,CAAA;EACA,IAAMG,oBAAoB,GAAGF,MAAM,CAACC,MAAP,CAAc,IAAd,CAA7B,CAAA;EACAD,MAAM,CAACG,IAAP,CAAYJ,YAAZ,EAA0BK,OAA1B,CAAkC,UAAAC,GAAG,EAAI;EACrCH,EAAAA,oBAAoB,CAACH,YAAY,CAACM,GAAD,CAAb,CAApB,GAA0CA,GAA1C,CAAA;EACH,CAFD,CAAA,CAAA;EAGA,IAAMC,YAAY,GAAG;EAAEC,EAAAA,IAAI,EAAE,OAAR;EAAiBC,EAAAA,IAAI,EAAE,cAAA;EAAvB,CAArB;;ECXA,IAAMC,gBAAc,GAAG,OAAOC,IAAP,KAAgB,UAAhB,IAClB,OAAOA,IAAP,KAAgB,WAAhB,IACGV,MAAM,CAACW,SAAP,CAAiBC,QAAjB,CAA0BC,IAA1B,CAA+BH,IAA/B,CAAA,KAAyC,0BAFjD,CAAA;EAGA,IAAMI,uBAAqB,GAAG,OAAOC,WAAP,KAAuB,UAArD;;EAEA,IAAMC,QAAM,GAAG,SAATA,MAAS,CAAAC,GAAG,EAAI;IAClB,OAAO,OAAOF,WAAW,CAACC,MAAnB,KAA8B,UAA9B,GACDD,WAAW,CAACC,MAAZ,CAAmBC,GAAnB,CADC,GAEDA,GAAG,IAAIA,GAAG,CAACC,MAAJ,YAAsBH,WAFnC,CAAA;EAGH,CAJD,CAAA;;EAKA,IAAMI,YAAY,GAAG,SAAfA,YAAe,OAAiBC,cAAjB,EAAiCC,QAAjC,EAA8C;IAAA,IAA3Cd,IAA2C,QAA3CA,IAA2C;QAArCC,IAAqC,QAArCA,IAAqC,CAAA;;EAC/D,EAAA,IAAIC,gBAAc,IAAID,IAAI,YAAYE,IAAtC,EAA4C;EACxC,IAAA,IAAIU,cAAJ,EAAoB;QAChB,OAAOC,QAAQ,CAACb,IAAD,CAAf,CAAA;EACH,KAFD,MAGK;EACD,MAAA,OAAOc,kBAAkB,CAACd,IAAD,EAAOa,QAAP,CAAzB,CAAA;EACH,KAAA;EACJ,GAPD,MAQK,IAAIP,uBAAqB,KACzBN,IAAI,YAAYO,WAAhB,IAA+BC,QAAM,CAACR,IAAD,CADZ,CAAzB,EAC8C;EAC/C,IAAA,IAAIY,cAAJ,EAAoB;QAChB,OAAOC,QAAQ,CAACb,IAAD,CAAf,CAAA;EACH,KAFD,MAGK;QACD,OAAOc,kBAAkB,CAAC,IAAIZ,IAAJ,CAAS,CAACF,IAAD,CAAT,CAAD,EAAmBa,QAAnB,CAAzB,CAAA;EACH,KAAA;EACJ,GAjB8D;;;IAmB/D,OAAOA,QAAQ,CAACtB,YAAY,CAACQ,IAAD,CAAZ,IAAsBC,IAAI,IAAI,EAA9B,CAAD,CAAf,CAAA;EACH,CApBD,CAAA;;EAqBA,IAAMc,kBAAkB,GAAG,SAArBA,kBAAqB,CAACd,IAAD,EAAOa,QAAP,EAAoB;EAC3C,EAAA,IAAME,UAAU,GAAG,IAAIC,UAAJ,EAAnB,CAAA;;IACAD,UAAU,CAACE,MAAX,GAAoB,YAAY;MAC5B,IAAMC,OAAO,GAAGH,UAAU,CAACI,MAAX,CAAkBC,KAAlB,CAAwB,GAAxB,CAA6B,CAAA,CAA7B,CAAhB,CAAA;MACAP,QAAQ,CAAC,GAAMK,GAAAA,OAAP,CAAR,CAAA;KAFJ,CAAA;;EAIA,EAAA,OAAOH,UAAU,CAACM,aAAX,CAAyBrB,IAAzB,CAAP,CAAA;EACH,CAPD;;EChCA,IAAMsB,KAAK,GAAG,kEAAd;;EAEA,IAAMC,QAAM,GAAG,OAAOC,UAAP,KAAsB,WAAtB,GAAoC,EAApC,GAAyC,IAAIA,UAAJ,CAAe,GAAf,CAAxD,CAAA;;EACA,KAAK,IAAIC,GAAC,GAAG,CAAb,EAAgBA,GAAC,GAAGH,KAAK,CAACI,MAA1B,EAAkCD,GAAC,EAAnC,EAAuC;IACnCF,QAAM,CAACD,KAAK,CAACK,UAAN,CAAiBF,GAAjB,CAAD,CAAN,GAA8BA,GAA9B,CAAA;EACH,CAAA;EAiBM,IAAMG,QAAM,GAAG,SAATA,MAAS,CAACC,MAAD,EAAY;EAC9B,EAAA,IAAIC,YAAY,GAAGD,MAAM,CAACH,MAAP,GAAgB,IAAnC;EAAA,MAAyCK,GAAG,GAAGF,MAAM,CAACH,MAAtD;EAAA,MAA8DD,CAA9D;QAAiEO,CAAC,GAAG,CAArE;EAAA,MAAwEC,QAAxE;EAAA,MAAkFC,QAAlF;EAAA,MAA4FC,QAA5F;EAAA,MAAsGC,QAAtG,CAAA;;IACA,IAAIP,MAAM,CAACA,MAAM,CAACH,MAAP,GAAgB,CAAjB,CAAN,KAA8B,GAAlC,EAAuC;MACnCI,YAAY,EAAA,CAAA;;MACZ,IAAID,MAAM,CAACA,MAAM,CAACH,MAAP,GAAgB,CAAjB,CAAN,KAA8B,GAAlC,EAAuC;QACnCI,YAAY,EAAA,CAAA;EACf,KAAA;EACJ,GAAA;;EACD,EAAA,IAAMO,WAAW,GAAG,IAAI9B,WAAJ,CAAgBuB,YAAhB,CAApB;EAAA,MAAmDQ,KAAK,GAAG,IAAId,UAAJ,CAAea,WAAf,CAA3D,CAAA;;IACA,KAAKZ,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGM,GAAhB,EAAqBN,CAAC,IAAI,CAA1B,EAA6B;MACzBQ,QAAQ,GAAGV,QAAM,CAACM,MAAM,CAACF,UAAP,CAAkBF,CAAlB,CAAD,CAAjB,CAAA;MACAS,QAAQ,GAAGX,QAAM,CAACM,MAAM,CAACF,UAAP,CAAkBF,CAAC,GAAG,CAAtB,CAAD,CAAjB,CAAA;MACAU,QAAQ,GAAGZ,QAAM,CAACM,MAAM,CAACF,UAAP,CAAkBF,CAAC,GAAG,CAAtB,CAAD,CAAjB,CAAA;MACAW,QAAQ,GAAGb,QAAM,CAACM,MAAM,CAACF,UAAP,CAAkBF,CAAC,GAAG,CAAtB,CAAD,CAAjB,CAAA;MACAa,KAAK,CAACN,CAAC,EAAF,CAAL,GAAcC,QAAQ,IAAI,CAAb,GAAmBC,QAAQ,IAAI,CAA5C,CAAA;EACAI,IAAAA,KAAK,CAACN,CAAC,EAAF,CAAL,GAAc,CAACE,QAAQ,GAAG,EAAZ,KAAmB,CAApB,GAA0BC,QAAQ,IAAI,CAAnD,CAAA;EACAG,IAAAA,KAAK,CAACN,CAAC,EAAF,CAAL,GAAc,CAACG,QAAQ,GAAG,CAAZ,KAAkB,CAAnB,GAAyBC,QAAQ,GAAG,EAAjD,CAAA;EACH,GAAA;;EACD,EAAA,OAAOC,WAAP,CAAA;EACH,CAnBM;;ECpBP,IAAM/B,uBAAqB,GAAG,OAAOC,WAAP,KAAuB,UAArD,CAAA;;EACA,IAAMgC,YAAY,GAAG,SAAfA,YAAe,CAACC,aAAD,EAAgBC,UAAhB,EAA+B;EAChD,EAAA,IAAI,OAAOD,aAAP,KAAyB,QAA7B,EAAuC;MACnC,OAAO;EACHzC,MAAAA,IAAI,EAAE,SADH;EAEHC,MAAAA,IAAI,EAAE0C,SAAS,CAACF,aAAD,EAAgBC,UAAhB,CAAA;OAFnB,CAAA;EAIH,GAAA;;EACD,EAAA,IAAM1C,IAAI,GAAGyC,aAAa,CAACG,MAAd,CAAqB,CAArB,CAAb,CAAA;;IACA,IAAI5C,IAAI,KAAK,GAAb,EAAkB;MACd,OAAO;EACHA,MAAAA,IAAI,EAAE,SADH;QAEHC,IAAI,EAAE4C,kBAAkB,CAACJ,aAAa,CAACK,SAAd,CAAwB,CAAxB,CAAD,EAA6BJ,UAA7B,CAAA;OAF5B,CAAA;EAIH,GAAA;;EACD,EAAA,IAAMK,UAAU,GAAGpD,oBAAoB,CAACK,IAAD,CAAvC,CAAA;;IACA,IAAI,CAAC+C,UAAL,EAAiB;EACb,IAAA,OAAOhD,YAAP,CAAA;EACH,GAAA;;EACD,EAAA,OAAO0C,aAAa,CAACd,MAAd,GAAuB,CAAvB,GACD;EACE3B,IAAAA,IAAI,EAAEL,oBAAoB,CAACK,IAAD,CAD5B;EAEEC,IAAAA,IAAI,EAAEwC,aAAa,CAACK,SAAd,CAAwB,CAAxB,CAAA;EAFR,GADC,GAKD;MACE9C,IAAI,EAAEL,oBAAoB,CAACK,IAAD,CAAA;KANlC,CAAA;EAQH,CA1BD,CAAA;;EA2BA,IAAM6C,kBAAkB,GAAG,SAArBA,kBAAqB,CAAC5C,IAAD,EAAOyC,UAAP,EAAsB;EAC7C,EAAA,IAAInC,uBAAJ,EAA2B;EACvB,IAAA,IAAMyC,OAAO,GAAGnB,QAAM,CAAC5B,IAAD,CAAtB,CAAA;EACA,IAAA,OAAO0C,SAAS,CAACK,OAAD,EAAUN,UAAV,CAAhB,CAAA;EACH,GAHD,MAIK;MACD,OAAO;EAAEZ,MAAAA,MAAM,EAAE,IAAV;EAAgB7B,MAAAA,IAAI,EAAJA,IAAAA;EAAhB,KAAP,CADC;EAEJ,GAAA;EACJ,CARD,CAAA;;EASA,IAAM0C,SAAS,GAAG,SAAZA,SAAY,CAAC1C,IAAD,EAAOyC,UAAP,EAAsB;EACpC,EAAA,QAAQA,UAAR;EACI,IAAA,KAAK,MAAL;EACI,MAAA,OAAOzC,IAAI,YAAYO,WAAhB,GAA8B,IAAIL,IAAJ,CAAS,CAACF,IAAD,CAAT,CAA9B,GAAiDA,IAAxD,CAAA;;EACJ,IAAA,KAAK,aAAL,CAAA;EACA,IAAA;EACI,MAAA,OAAOA,IAAP,CAAA;EAAa;EALrB,GAAA;EAOH,CARD;;ECrCA,IAAMgD,SAAS,GAAGC,MAAM,CAACC,YAAP,CAAoB,EAApB,CAAlB;;EACA,IAAMC,aAAa,GAAG,SAAhBA,aAAgB,CAACC,OAAD,EAAUvC,QAAV,EAAuB;EACzC;EACA,EAAA,IAAMa,MAAM,GAAG0B,OAAO,CAAC1B,MAAvB,CAAA;EACA,EAAA,IAAM2B,cAAc,GAAG,IAAIC,KAAJ,CAAU5B,MAAV,CAAvB,CAAA;IACA,IAAI6B,KAAK,GAAG,CAAZ,CAAA;EACAH,EAAAA,OAAO,CAACxD,OAAR,CAAgB,UAAC4D,MAAD,EAAS/B,CAAT,EAAe;EAC3B;EACAd,IAAAA,YAAY,CAAC6C,MAAD,EAAS,KAAT,EAAgB,UAAAhB,aAAa,EAAI;EACzCa,MAAAA,cAAc,CAAC5B,CAAD,CAAd,GAAoBe,aAApB,CAAA;;EACA,MAAA,IAAI,EAAEe,KAAF,KAAY7B,MAAhB,EAAwB;EACpBb,QAAAA,QAAQ,CAACwC,cAAc,CAACI,IAAf,CAAoBT,SAApB,CAAD,CAAR,CAAA;EACH,OAAA;EACJ,KALW,CAAZ,CAAA;KAFJ,CAAA,CAAA;EASH,CAdD,CAAA;;EAeA,IAAMU,aAAa,GAAG,SAAhBA,aAAgB,CAACC,cAAD,EAAiBlB,UAAjB,EAAgC;EAClD,EAAA,IAAMY,cAAc,GAAGM,cAAc,CAACvC,KAAf,CAAqB4B,SAArB,CAAvB,CAAA;IACA,IAAMI,OAAO,GAAG,EAAhB,CAAA;;EACA,EAAA,KAAK,IAAI3B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4B,cAAc,CAAC3B,MAAnC,EAA2CD,CAAC,EAA5C,EAAgD;MAC5C,IAAMmC,aAAa,GAAGrB,YAAY,CAACc,cAAc,CAAC5B,CAAD,CAAf,EAAoBgB,UAApB,CAAlC,CAAA;MACAW,OAAO,CAACS,IAAR,CAAaD,aAAb,CAAA,CAAA;;EACA,IAAA,IAAIA,aAAa,CAAC7D,IAAd,KAAuB,OAA3B,EAAoC;EAChC,MAAA,MAAA;EACH,KAAA;EACJ,GAAA;;EACD,EAAA,OAAOqD,OAAP,CAAA;EACH,CAXD,CAAA;;EAYO,IAAMU,UAAQ,GAAG,CAAjB;;EC9BP;EACA;EACA;EACA;EACA;EAEO,SAASC,OAAT,CAAiBtD,GAAjB,EAAsB;EAC3B,EAAA,IAAIA,GAAJ,EAAS,OAAOuD,KAAK,CAACvD,GAAD,CAAZ,CAAA;EACV,CAAA;EAED;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA,SAASuD,KAAT,CAAevD,GAAf,EAAoB;EAClB,EAAA,KAAK,IAAIZ,GAAT,IAAgBkE,OAAO,CAAC5D,SAAxB,EAAmC;MACjCM,GAAG,CAACZ,GAAD,CAAH,GAAWkE,OAAO,CAAC5D,SAAR,CAAkBN,GAAlB,CAAX,CAAA;EACD,GAAA;;EACD,EAAA,OAAOY,GAAP,CAAA;EACD,CAAA;EAED;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;EAEAsD,OAAO,CAAC5D,SAAR,CAAkB8D,EAAlB,GACAF,OAAO,CAAC5D,SAAR,CAAkB+D,gBAAlB,GAAqC,UAASC,KAAT,EAAgBC,EAAhB,EAAmB;EACtD,EAAA,IAAA,CAAKC,UAAL,GAAkB,IAAKA,CAAAA,UAAL,IAAmB,EAArC,CAAA;EACA,EAAA,CAAC,KAAKA,UAAL,CAAgB,GAAMF,GAAAA,KAAtB,IAA+B,IAAKE,CAAAA,UAAL,CAAgB,GAAA,GAAMF,KAAtB,CAAgC,IAAA,EAAhE,EACGN,IADH,CACQO,EADR,CAAA,CAAA;EAEA,EAAA,OAAO,IAAP,CAAA;EACD,CAND,CAAA;EAQA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;EAEAL,OAAO,CAAC5D,SAAR,CAAkBmE,IAAlB,GAAyB,UAASH,KAAT,EAAgBC,EAAhB,EAAmB;EAC1C,EAAA,SAASH,EAAT,GAAc;EACZ,IAAA,IAAA,CAAKM,GAAL,CAASJ,KAAT,EAAgBF,EAAhB,CAAA,CAAA;EACAG,IAAAA,EAAE,CAACI,KAAH,CAAS,IAAT,EAAeC,SAAf,CAAA,CAAA;EACD,GAAA;;IAEDR,EAAE,CAACG,EAAH,GAAQA,EAAR,CAAA;EACA,EAAA,IAAA,CAAKH,EAAL,CAAQE,KAAR,EAAeF,EAAf,CAAA,CAAA;EACA,EAAA,OAAO,IAAP,CAAA;EACD,CATD,CAAA;EAWA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;EAEAF,OAAO,CAAC5D,SAAR,CAAkBoE,GAAlB,GACAR,OAAO,CAAC5D,SAAR,CAAkBuE,cAAlB,GACAX,OAAO,CAAC5D,SAAR,CAAkBwE,kBAAlB,GACAZ,OAAO,CAAC5D,SAAR,CAAkByE,mBAAlB,GAAwC,UAAST,KAAT,EAAgBC,EAAhB,EAAmB;EACzD,EAAA,IAAA,CAAKC,UAAL,GAAkB,IAAA,CAAKA,UAAL,IAAmB,EAArC,CADyD;;EAIzD,EAAA,IAAI,CAAKI,IAAAA,SAAS,CAAC/C,MAAnB,EAA2B;MACzB,IAAK2C,CAAAA,UAAL,GAAkB,EAAlB,CAAA;EACA,IAAA,OAAO,IAAP,CAAA;EACD,GAPwD;;;EAUzD,EAAA,IAAIQ,SAAS,GAAG,IAAA,CAAKR,UAAL,CAAgB,GAAA,GAAMF,KAAtB,CAAhB,CAAA;EACA,EAAA,IAAI,CAACU,SAAL,EAAgB,OAAO,IAAP,CAXyC;;EAczD,EAAA,IAAI,CAAKJ,IAAAA,SAAS,CAAC/C,MAAnB,EAA2B;EACzB,IAAA,OAAO,IAAK2C,CAAAA,UAAL,CAAgB,GAAA,GAAMF,KAAtB,CAAP,CAAA;EACA,IAAA,OAAO,IAAP,CAAA;EACD,GAjBwD;;;EAoBzD,EAAA,IAAIW,EAAJ,CAAA;;EACA,EAAA,KAAK,IAAIrD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGoD,SAAS,CAACnD,MAA9B,EAAsCD,CAAC,EAAvC,EAA2C;EACzCqD,IAAAA,EAAE,GAAGD,SAAS,CAACpD,CAAD,CAAd,CAAA;;MACA,IAAIqD,EAAE,KAAKV,EAAP,IAAaU,EAAE,CAACV,EAAH,KAAUA,EAA3B,EAA+B;EAC7BS,MAAAA,SAAS,CAACE,MAAV,CAAiBtD,CAAjB,EAAoB,CAApB,CAAA,CAAA;EACA,MAAA,MAAA;EACD,KAAA;EACF,GA3BwD;EA8BzD;;;EACA,EAAA,IAAIoD,SAAS,CAACnD,MAAV,KAAqB,CAAzB,EAA4B;EAC1B,IAAA,OAAO,IAAK2C,CAAAA,UAAL,CAAgB,GAAA,GAAMF,KAAtB,CAAP,CAAA;EACD,GAAA;;EAED,EAAA,OAAO,IAAP,CAAA;EACD,CAvCD,CAAA;EAyCA;EACA;EACA;EACA;EACA;EACA;EACA;;;EAEAJ,OAAO,CAAC5D,SAAR,CAAkB6E,IAAlB,GAAyB,UAASb,KAAT,EAAe;EACtC,EAAA,IAAA,CAAKE,UAAL,GAAkB,IAAKA,CAAAA,UAAL,IAAmB,EAArC,CAAA;IAEA,IAAIY,IAAI,GAAG,IAAI3B,KAAJ,CAAUmB,SAAS,CAAC/C,MAAV,GAAmB,CAA7B,CAAX;EAAA,MACImD,SAAS,GAAG,IAAA,CAAKR,UAAL,CAAgB,GAAA,GAAMF,KAAtB,CADhB,CAAA;;EAGA,EAAA,KAAK,IAAI1C,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgD,SAAS,CAAC/C,MAA9B,EAAsCD,CAAC,EAAvC,EAA2C;MACzCwD,IAAI,CAACxD,CAAC,GAAG,CAAL,CAAJ,GAAcgD,SAAS,CAAChD,CAAD,CAAvB,CAAA;EACD,GAAA;;EAED,EAAA,IAAIoD,SAAJ,EAAe;EACbA,IAAAA,SAAS,GAAGA,SAAS,CAACK,KAAV,CAAgB,CAAhB,CAAZ,CAAA;;EACA,IAAA,KAAK,IAAIzD,CAAC,GAAG,CAAR,EAAWM,GAAG,GAAG8C,SAAS,CAACnD,MAAhC,EAAwCD,CAAC,GAAGM,GAA5C,EAAiD,EAAEN,CAAnD,EAAsD;QACpDoD,SAAS,CAACpD,CAAD,CAAT,CAAa+C,KAAb,CAAmB,IAAnB,EAAyBS,IAAzB,CAAA,CAAA;EACD,KAAA;EACF,GAAA;;EAED,EAAA,OAAO,IAAP,CAAA;EACD,CAlBD;;;EAqBAlB,OAAO,CAAC5D,SAAR,CAAkBgF,YAAlB,GAAiCpB,OAAO,CAAC5D,SAAR,CAAkB6E,IAAnD,CAAA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEAjB,OAAO,CAAC5D,SAAR,CAAkBiF,SAAlB,GAA8B,UAASjB,KAAT,EAAe;EAC3C,EAAA,IAAA,CAAKE,UAAL,GAAkB,IAAKA,CAAAA,UAAL,IAAmB,EAArC,CAAA;EACA,EAAA,OAAO,KAAKA,UAAL,CAAgB,GAAMF,GAAAA,KAAtB,KAAgC,EAAvC,CAAA;EACD,CAHD,CAAA;EAKA;EACA;EACA;EACA;EACA;EACA;EACA;;;EAEAJ,OAAO,CAAC5D,SAAR,CAAkBkF,YAAlB,GAAiC,UAASlB,KAAT,EAAe;EAC9C,EAAA,OAAO,CAAC,CAAE,IAAA,CAAKiB,SAAL,CAAejB,KAAf,EAAsBzC,MAAhC,CAAA;EACD,CAFD;;ECtKO,IAAM4D,cAAc,GAAI,YAAM;EACjC,EAAA,IAAI,OAAOC,IAAP,KAAgB,WAApB,EAAiC;EAC7B,IAAA,OAAOA,IAAP,CAAA;EACH,GAFD,MAGK,IAAI,OAAOC,MAAP,KAAkB,WAAtB,EAAmC;EACpC,IAAA,OAAOA,MAAP,CAAA;EACH,GAFI,MAGA;EACD,IAAA,OAAOC,QAAQ,CAAC,aAAD,CAAR,EAAP,CAAA;EACH,GAAA;EACJ,CAV6B,EAAvB;;ECCA,SAASC,IAAT,CAAcjF,GAAd,EAA4B;EAAA,EAAA,KAAA,IAAA,IAAA,GAAA,SAAA,CAAA,MAAA,EAANkF,IAAM,GAAA,IAAA,KAAA,CAAA,IAAA,GAAA,CAAA,GAAA,IAAA,GAAA,CAAA,GAAA,CAAA,CAAA,EAAA,IAAA,GAAA,CAAA,EAAA,IAAA,GAAA,IAAA,EAAA,IAAA,EAAA,EAAA;MAANA,IAAM,CAAA,IAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA,IAAA,CAAA,CAAA;EAAA,GAAA;;IAC/B,OAAOA,IAAI,CAACC,MAAL,CAAY,UAACC,GAAD,EAAMC,CAAN,EAAY;EAC3B,IAAA,IAAIrF,GAAG,CAACsF,cAAJ,CAAmBD,CAAnB,CAAJ,EAA2B;EACvBD,MAAAA,GAAG,CAACC,CAAD,CAAH,GAASrF,GAAG,CAACqF,CAAD,CAAZ,CAAA;EACH,KAAA;;EACD,IAAA,OAAOD,GAAP,CAAA;KAJG,EAKJ,EALI,CAAP,CAAA;EAMH;;EAED,IAAMG,kBAAkB,GAAGC,UAA3B,CAAA;EACA,IAAMC,oBAAoB,GAAGC,YAA7B,CAAA;EACO,SAASC,qBAAT,CAA+B3F,GAA/B,EAAoC4F,IAApC,EAA0C;IAC7C,IAAIA,IAAI,CAACC,eAAT,EAA0B;MACtB7F,GAAG,CAAC8F,YAAJ,GAAmBP,kBAAkB,CAACQ,IAAnB,CAAwBC,cAAxB,CAAnB,CAAA;MACAhG,GAAG,CAACiG,cAAJ,GAAqBR,oBAAoB,CAACM,IAArB,CAA0BC,cAA1B,CAArB,CAAA;EACH,GAHD,MAIK;MACDhG,GAAG,CAAC8F,YAAJ,GAAmBN,UAAU,CAACO,IAAX,CAAgBC,cAAhB,CAAnB,CAAA;MACAhG,GAAG,CAACiG,cAAJ,GAAqBP,YAAY,CAACK,IAAb,CAAkBC,cAAlB,CAArB,CAAA;EACH,GAAA;EACJ;;EAED,IAAME,eAAe,GAAG,IAAxB;;EAEO,SAASC,UAAT,CAAoBnG,GAApB,EAAyB;EAC5B,EAAA,IAAI,OAAOA,GAAP,KAAe,QAAnB,EAA6B;MACzB,OAAOoG,UAAU,CAACpG,GAAD,CAAjB,CAAA;EACH,GAH2B;;;EAK5B,EAAA,OAAOqG,IAAI,CAACC,IAAL,CAAU,CAACtG,GAAG,CAACmG,UAAJ,IAAkBnG,GAAG,CAACuG,IAAvB,IAA+BL,eAAzC,CAAP,CAAA;EACH,CAAA;;EACD,SAASE,UAAT,CAAoBI,GAApB,EAAyB;IACrB,IAAIC,CAAC,GAAG,CAAR;QAAWxF,MAAM,GAAG,CAApB,CAAA;;EACA,EAAA,KAAK,IAAID,CAAC,GAAG,CAAR,EAAW0F,CAAC,GAAGF,GAAG,CAACvF,MAAxB,EAAgCD,CAAC,GAAG0F,CAApC,EAAuC1F,CAAC,EAAxC,EAA4C;EACxCyF,IAAAA,CAAC,GAAGD,GAAG,CAACtF,UAAJ,CAAeF,CAAf,CAAJ,CAAA;;MACA,IAAIyF,CAAC,GAAG,IAAR,EAAc;EACVxF,MAAAA,MAAM,IAAI,CAAV,CAAA;EACH,KAFD,MAGK,IAAIwF,CAAC,GAAG,KAAR,EAAe;EAChBxF,MAAAA,MAAM,IAAI,CAAV,CAAA;OADC,MAGA,IAAIwF,CAAC,GAAG,MAAJ,IAAcA,CAAC,IAAI,MAAvB,EAA+B;EAChCxF,MAAAA,MAAM,IAAI,CAAV,CAAA;EACH,KAFI,MAGA;QACDD,CAAC,EAAA,CAAA;EACDC,MAAAA,MAAM,IAAI,CAAV,CAAA;EACH,KAAA;EACJ,GAAA;;EACD,EAAA,OAAOA,MAAP,CAAA;EACH;;MChDK0F;;;;;EACF,EAAA,SAAA,cAAA,CAAYC,MAAZ,EAAoBC,WAApB,EAAiCC,OAAjC,EAA0C;EAAA,IAAA,IAAA,KAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,cAAA,CAAA,CAAA;;EACtC,IAAA,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAMF,MAAN,CAAA,CAAA;MACA,KAAKC,CAAAA,WAAL,GAAmBA,WAAnB,CAAA;MACA,KAAKC,CAAAA,OAAL,GAAeA,OAAf,CAAA;MACA,KAAKxH,CAAAA,IAAL,GAAY,gBAAZ,CAAA;EAJsC,IAAA,OAAA,KAAA,CAAA;EAKzC,GAAA;;;mCANwByH;;EAQ7B,IAAaC,SAAb,gBAAA,UAAA,QAAA,EAAA;EAAA,EAAA,SAAA,CAAA,SAAA,EAAA,QAAA,CAAA,CAAA;;EAAA,EAAA,IAAA,OAAA,GAAA,YAAA,CAAA,SAAA,CAAA,CAAA;;EACI;EACJ;EACA;EACA;EACA;EACA;EACI,EAAA,SAAA,SAAA,CAAYpB,IAAZ,EAAkB;EAAA,IAAA,IAAA,MAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,SAAA,CAAA,CAAA;;EACd,IAAA,MAAA,GAAA,OAAA,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;MACA,MAAKqB,CAAAA,QAAL,GAAgB,KAAhB,CAAA;MACAtB,qBAAqB,CAAA,sBAAA,CAAA,MAAA,CAAA,EAAOC,IAAP,CAArB,CAAA;MACA,MAAKA,CAAAA,IAAL,GAAYA,IAAZ,CAAA;EACA,IAAA,MAAA,CAAKsB,KAAL,GAAatB,IAAI,CAACsB,KAAlB,CAAA;MACA,MAAKC,CAAAA,UAAL,GAAkB,EAAlB,CAAA;EACA,IAAA,MAAA,CAAKC,MAAL,GAAcxB,IAAI,CAACwB,MAAnB,CAAA;EAPc,IAAA,OAAA,MAAA,CAAA;EAQjB,GAAA;EACD;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;EAxBA,EAAA,YAAA,CAAA,SAAA,EAAA,CAAA;EAAA,IAAA,GAAA,EAAA,SAAA;EAAA,IAAA,KAAA,EAyBI,iBAAQR,MAAR,EAAgBC,WAAhB,EAA6BC,OAA7B,EAAsC;QAClC,IAAmB,CAAA,eAAA,CAAA,SAAA,CAAA,SAAA,CAAA,EAAA,cAAA,EAAA,IAAA,CAAA,CAAA,IAAA,CAAA,IAAA,EAAA,OAAnB,EAA4B,IAAIH,cAAJ,CAAmBC,MAAnB,EAA2BC,WAA3B,EAAwCC,OAAxC,CAA5B,CAAA,CAAA;;EACA,MAAA,OAAO,IAAP,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;;EAjCA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,MAAA;EAAA,IAAA,KAAA,EAkCI,SAAO,IAAA,GAAA;EACH,MAAA,IAAI,aAAa,IAAKK,CAAAA,UAAlB,IAAgC,EAAO,KAAA,IAAA,CAAKA,UAAhD,EAA4D;UACxD,IAAKA,CAAAA,UAAL,GAAkB,SAAlB,CAAA;EACA,QAAA,IAAA,CAAKE,MAAL,EAAA,CAAA;EACH,OAAA;;EACD,MAAA,OAAO,IAAP,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;;EA7CA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,OAAA;EAAA,IAAA,KAAA,EA8CI,SAAQ,KAAA,GAAA;EACJ,MAAA,IAAI,cAAc,IAAKF,CAAAA,UAAnB,IAAiC,MAAW,KAAA,IAAA,CAAKA,UAArD,EAAiE;EAC7D,QAAA,IAAA,CAAKG,OAAL,EAAA,CAAA;EACA,QAAA,IAAA,CAAKC,OAAL,EAAA,CAAA;EACH,OAAA;;EACD,MAAA,OAAO,IAAP,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;EACA;;EA1DA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,MAAA;MAAA,KA2DI,EAAA,SAAA,IAAA,CAAK5E,OAAL,EAAc;QACV,IAAI,MAAA,KAAW,IAAKwE,CAAAA,UAApB,EAAgC;UAC5B,IAAKK,CAAAA,KAAL,CAAW7E,OAAX,CAAA,CAAA;EACH,OAGA;EACJ,KAAA;EACD;EACJ;EACA;EACA;EACA;;EAvEA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,QAAA;EAAA,IAAA,KAAA,EAwEI,SAAS,MAAA,GAAA;QACL,IAAKwE,CAAAA,UAAL,GAAkB,MAAlB,CAAA;QACA,IAAKF,CAAAA,QAAL,GAAgB,IAAhB,CAAA;;EACA,MAAA,IAAA,CAAA,eAAA,CAAA,SAAA,CAAA,SAAA,CAAA,EAAA,cAAA,EAAA,IAAA,CAAA,CAAA,IAAA,CAAA,IAAA,EAAmB,MAAnB,CAAA,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;EACA;;EAlFA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,QAAA;MAAA,KAmFI,EAAA,SAAA,MAAA,CAAO1H,IAAP,EAAa;QACT,IAAMwD,MAAM,GAAGjB,YAAY,CAACvC,IAAD,EAAO,IAAK6H,CAAAA,MAAL,CAAYpF,UAAnB,CAA3B,CAAA;QACA,IAAKyF,CAAAA,QAAL,CAAc1E,MAAd,CAAA,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;;EA3FA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,UAAA;MAAA,KA4FI,EAAA,SAAA,QAAA,CAASA,MAAT,EAAiB;QACb,IAAmB,CAAA,eAAA,CAAA,SAAA,CAAA,SAAA,CAAA,EAAA,cAAA,EAAA,IAAA,CAAA,CAAA,IAAA,CAAA,IAAA,EAAA,QAAnB,EAA6BA,MAA7B,CAAA,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;;EAnGA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,SAAA;MAAA,KAoGI,EAAA,SAAA,OAAA,CAAQ2E,OAAR,EAAiB;QACb,IAAKP,CAAAA,UAAL,GAAkB,QAAlB,CAAA;;QACA,IAAmB,CAAA,eAAA,CAAA,SAAA,CAAA,SAAA,CAAA,EAAA,cAAA,EAAA,IAAA,CAAA,CAAA,IAAA,CAAA,IAAA,EAAA,OAAnB,EAA4BO,OAA5B,CAAA,CAAA;EACH,KAAA;EAvGL,GAAA,CAAA,CAAA,CAAA;;EAAA,EAAA,OAAA,SAAA,CAAA;EAAA,CAAA,CAA+BpE,OAA/B,CAAA;;ECXA;;EAEA,IAAMqE,QAAQ,GAAG,kEAAA,CAAmEhH,KAAnE,CAAyE,EAAzE,CAAjB;EAAA,IAA+FM,MAAM,GAAG,EAAxG;EAAA,IAA4G2G,GAAG,GAAG,EAAlH,CAAA;EACA,IAAIC,IAAI,GAAG,CAAX;EAAA,IAAc7G,CAAC,GAAG,CAAlB;EAAA,IAAqB8G,IAArB,CAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EACO,SAASC,QAAT,CAAgBC,GAAhB,EAAqB;IACxB,IAAIC,OAAO,GAAG,EAAd,CAAA;;IACA,GAAG;MACCA,OAAO,GAAGN,QAAQ,CAACK,GAAG,GAAG/G,MAAP,CAAR,GAAyBgH,OAAnC,CAAA;MACAD,GAAG,GAAG3B,IAAI,CAAC6B,KAAL,CAAWF,GAAG,GAAG/G,MAAjB,CAAN,CAAA;KAFJ,QAGS+G,GAAG,GAAG,CAHf,EAAA;;EAIA,EAAA,OAAOC,OAAP,CAAA;EACH,CAAA;EAeD;EACA;EACA;EACA;EACA;EACA;;EACO,SAASE,KAAT,GAAiB;IACpB,IAAMC,GAAG,GAAGL,QAAM,CAAC,CAAC,IAAIM,IAAJ,EAAF,CAAlB,CAAA;IACA,IAAID,GAAG,KAAKN,IAAZ,EACI,OAAOD,IAAI,GAAG,CAAP,EAAUC,IAAI,GAAGM,GAAxB,CAAA;IACJ,OAAOA,GAAG,GAAG,GAAN,GAAYL,QAAM,CAACF,IAAI,EAAL,CAAzB,CAAA;EACH;EAED;EACA;;EACA,OAAO7G,CAAC,GAAGC,MAAX,EAAmBD,CAAC,EAApB,EAAA;EACI4G,EAAAA,GAAG,CAACD,QAAQ,CAAC3G,CAAD,CAAT,CAAH,GAAmBA,CAAnB,CAAA;EADJ;;EChDA;;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,SAAS+G,MAAT,CAAgB/H,GAAhB,EAAqB;IACxB,IAAIwG,GAAG,GAAG,EAAV,CAAA;;EACA,EAAA,KAAK,IAAIxF,CAAT,IAAchB,GAAd,EAAmB;EACf,IAAA,IAAIA,GAAG,CAACsF,cAAJ,CAAmBtE,CAAnB,CAAJ,EAA2B;EACvB,MAAA,IAAIwF,GAAG,CAACvF,MAAR,EACIuF,GAAG,IAAI,GAAP,CAAA;EACJA,MAAAA,GAAG,IAAI8B,kBAAkB,CAACtH,CAAD,CAAlB,GAAwB,GAAxB,GAA8BsH,kBAAkB,CAACtI,GAAG,CAACgB,CAAD,CAAJ,CAAvD,CAAA;EACH,KAAA;EACJ,GAAA;;EACD,EAAA,OAAOwF,GAAP,CAAA;EACH,CAAA;EACD;EACA;EACA;EACA;EACA;EACA;;EACO,SAASrF,MAAT,CAAgBoH,EAAhB,EAAoB;IACvB,IAAIC,GAAG,GAAG,EAAV,CAAA;EACA,EAAA,IAAIC,KAAK,GAAGF,EAAE,CAAC5H,KAAH,CAAS,GAAT,CAAZ,CAAA;;EACA,EAAA,KAAK,IAAIK,CAAC,GAAG,CAAR,EAAW0F,CAAC,GAAG+B,KAAK,CAACxH,MAA1B,EAAkCD,CAAC,GAAG0F,CAAtC,EAAyC1F,CAAC,EAA1C,EAA8C;MAC1C,IAAI0H,IAAI,GAAGD,KAAK,CAACzH,CAAD,CAAL,CAASL,KAAT,CAAe,GAAf,CAAX,CAAA;EACA6H,IAAAA,GAAG,CAACG,kBAAkB,CAACD,IAAI,CAAC,CAAD,CAAL,CAAnB,CAAH,GAAmCC,kBAAkB,CAACD,IAAI,CAAC,CAAD,CAAL,CAArD,CAAA;EACH,GAAA;;EACD,EAAA,OAAOF,GAAP,CAAA;EACH;;ECjCD;EACA,IAAII,KAAK,GAAG,KAAZ,CAAA;;EACA,IAAI;IACAA,KAAK,GAAG,OAAOC,cAAP,KAA0B,WAA1B,IACJ,iBAAA,IAAqB,IAAIA,cAAJ,EADzB,CAAA;EAEH,CAHD,CAIA,OAAOC,GAAP,EAAY;EAER;EACH,CAAA;;EACM,IAAMC,OAAO,GAAGH,KAAhB;;ECVP;EAGO,SAASI,GAAT,CAAapD,IAAb,EAAmB;EACtB,EAAA,IAAMqD,OAAO,GAAGrD,IAAI,CAACqD,OAArB,CADsB;;IAGtB,IAAI;MACA,IAAI,WAAA,KAAgB,OAAOJ,cAAvB,KAA0C,CAACI,OAAD,IAAYF,OAAtD,CAAJ,EAAoE;QAChE,OAAO,IAAIF,cAAJ,EAAP,CAAA;EACH,KAAA;EACJ,GAJD,CAKA,OAAOK,CAAP,EAAU,EAAG;;IACb,IAAI,CAACD,OAAL,EAAc;MACV,IAAI;EACA,MAAA,OAAO,IAAIjD,cAAU,CAAC,CAAC,QAAD,EAAWmD,MAAX,CAAkB,QAAlB,CAAA,CAA4BnG,IAA5B,CAAiC,GAAjC,CAAD,CAAd,CAAsD,mBAAtD,CAAP,CAAA;EACH,KAFD,CAGA,OAAOkG,CAAP,EAAU,EAAG;EAChB,GAAA;EACJ;;ECVD,SAASE,KAAT,GAAiB,EAAG;;EACpB,IAAMC,OAAO,GAAI,YAAY;EACzB,EAAA,IAAMC,GAAG,GAAG,IAAIT,GAAJ,CAAmB;EAC3BI,IAAAA,OAAO,EAAE,KAAA;EADkB,GAAnB,CAAZ,CAAA;IAGA,OAAO,IAAA,IAAQK,GAAG,CAACC,YAAnB,CAAA;EACH,CALe,EAAhB,CAAA;;EAMA,IAAaC,OAAb,gBAAA,UAAA,UAAA,EAAA;EAAA,EAAA,SAAA,CAAA,OAAA,EAAA,UAAA,CAAA,CAAA;;EAAA,EAAA,IAAA,MAAA,GAAA,YAAA,CAAA,OAAA,CAAA,CAAA;;EACI;EACJ;EACA;EACA;EACA;EACA;EACI,EAAA,SAAA,OAAA,CAAY5D,IAAZ,EAAkB;EAAA,IAAA,IAAA,KAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;EACd,IAAA,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAMA,IAAN,CAAA,CAAA;MACA,KAAK6D,CAAAA,OAAL,GAAe,KAAf,CAAA;;EACA,IAAA,IAAI,OAAOC,QAAP,KAAoB,WAAxB,EAAqC;EACjC,MAAA,IAAMC,KAAK,GAAG,QAAaD,KAAAA,QAAQ,CAACrG,QAApC,CAAA;EACA,MAAA,IAAIuG,IAAI,GAAGF,QAAQ,CAACE,IAApB,CAFiC;;QAIjC,IAAI,CAACA,IAAL,EAAW;EACPA,QAAAA,IAAI,GAAGD,KAAK,GAAG,KAAH,GAAW,IAAvB,CAAA;EACH,OAAA;;EACD,MAAA,KAAA,CAAKE,EAAL,GACK,OAAOH,QAAP,KAAoB,WAApB,IACG9D,IAAI,CAACkE,QAAL,KAAkBJ,QAAQ,CAACI,QAD/B,IAEIF,IAAI,KAAKhE,IAAI,CAACgE,IAHtB,CAAA;EAIA,MAAA,KAAA,CAAKG,EAAL,GAAUnE,IAAI,CAACoE,MAAL,KAAgBL,KAA1B,CAAA;EACH,KAAA;EACD;EACR;EACA;;;EACQ,IAAA,IAAMM,WAAW,GAAGrE,IAAI,IAAIA,IAAI,CAACqE,WAAjC,CAAA;EACA,IAAA,KAAA,CAAK9J,cAAL,GAAsBkJ,OAAO,IAAI,CAACY,WAAlC,CAAA;EApBc,IAAA,OAAA,KAAA,CAAA;EAqBjB,GAAA;EACD;EACJ;EACA;;;EA/BA,EAAA,YAAA,CAAA,OAAA,EAAA,CAAA;EAAA,IAAA,GAAA,EAAA,MAAA;EAAA,IAAA,GAAA,EAgCI,SAAW,GAAA,GAAA;EACP,MAAA,OAAO,SAAP,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;EACA;;EAxCA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,QAAA;EAAA,IAAA,KAAA,EAyCI,SAAS,MAAA,GAAA;EACL,MAAA,IAAA,CAAKC,IAAL,EAAA,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;EACA;;EAjDA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,OAAA;MAAA,KAkDI,EAAA,SAAA,KAAA,CAAMC,OAAN,EAAe;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;;QACX,IAAKhD,CAAAA,UAAL,GAAkB,SAAlB,CAAA;;EACA,MAAA,IAAMiD,KAAK,GAAG,SAARA,KAAQ,GAAM;UAChB,MAAI,CAACjD,UAAL,GAAkB,QAAlB,CAAA;UACAgD,OAAO,EAAA,CAAA;SAFX,CAAA;;EAIA,MAAA,IAAI,KAAKV,OAAL,IAAgB,CAAC,IAAA,CAAKxC,QAA1B,EAAoC;UAChC,IAAIoD,KAAK,GAAG,CAAZ,CAAA;;UACA,IAAI,IAAA,CAAKZ,OAAT,EAAkB;YACdY,KAAK,EAAA,CAAA;EACL,UAAA,IAAA,CAAKxG,IAAL,CAAU,cAAV,EAA0B,YAAY;cAClC,EAAEwG,KAAF,IAAWD,KAAK,EAAhB,CAAA;aADJ,CAAA,CAAA;EAGH,SAAA;;UACD,IAAI,CAAC,IAAKnD,CAAAA,QAAV,EAAoB;YAChBoD,KAAK,EAAA,CAAA;EACL,UAAA,IAAA,CAAKxG,IAAL,CAAU,OAAV,EAAmB,YAAY;cAC3B,EAAEwG,KAAF,IAAWD,KAAK,EAAhB,CAAA;aADJ,CAAA,CAAA;EAGH,SAAA;EACJ,OAdD,MAeK;UACDA,KAAK,EAAA,CAAA;EACR,OAAA;EACJ,KAAA;EACD;EACJ;EACA;EACA;EACA;;EA/EA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,MAAA;EAAA,IAAA,KAAA,EAgFI,SAAO,IAAA,GAAA;QACH,IAAKX,CAAAA,OAAL,GAAe,IAAf,CAAA;EACA,MAAA,IAAA,CAAKa,MAAL,EAAA,CAAA;QACA,IAAK5F,CAAAA,YAAL,CAAkB,MAAlB,CAAA,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;;EAzFA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,QAAA;MAAA,KA0FI,EAAA,SAAA,MAAA,CAAOnF,IAAP,EAAa;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;;EACT,MAAA,IAAMa,QAAQ,GAAG,SAAXA,QAAW,CAAA2C,MAAM,EAAI;EACvB;UACA,IAAI,SAAA,KAAc,MAAI,CAACoE,UAAnB,IAAiCpE,MAAM,CAACzD,IAAP,KAAgB,MAArD,EAA6D;EACzD,UAAA,MAAI,CAACiL,MAAL,EAAA,CAAA;EACH,SAJsB;;;EAMvB,QAAA,IAAI,OAAYxH,KAAAA,MAAM,CAACzD,IAAvB,EAA6B;YACzB,MAAI,CAACiI,OAAL,CAAa;EAAEV,YAAAA,WAAW,EAAE,gCAAA;aAA5B,CAAA,CAAA;;EACA,UAAA,OAAO,KAAP,CAAA;EACH,SATsB;;;UAWvB,MAAI,CAACY,QAAL,CAAc1E,MAAd,CAAA,CAAA;EACH,OAZD,CADS;;;EAeTE,MAAAA,aAAa,CAAC1D,IAAD,EAAO,IAAA,CAAK6H,MAAL,CAAYpF,UAAnB,CAAb,CAA4C7C,OAA5C,CAAoDiB,QAApD,EAfS;;QAiBT,IAAI,QAAA,KAAa,IAAK+G,CAAAA,UAAtB,EAAkC;EAC9B;UACA,IAAKsC,CAAAA,OAAL,GAAe,KAAf,CAAA;UACA,IAAK/E,CAAAA,YAAL,CAAkB,cAAlB,CAAA,CAAA;;UACA,IAAI,MAAA,KAAW,IAAKyC,CAAAA,UAApB,EAAgC;EAC5B,UAAA,IAAA,CAAK+C,IAAL,EAAA,CAAA;EACH,SAEA;EACJ,OAAA;EACJ,KAAA;EACD;EACJ;EACA;EACA;EACA;;EA1HA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,SAAA;EAAA,IAAA,KAAA,EA2HI,SAAU,OAAA,GAAA;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;;EACN,MAAA,IAAMM,KAAK,GAAG,SAARA,KAAQ,GAAM;UAChB,MAAI,CAAChD,KAAL,CAAW,CAAC;EAAElI,UAAAA,IAAI,EAAE,OAAA;EAAR,SAAD,CAAX,CAAA,CAAA;SADJ,CAAA;;QAGA,IAAI,MAAA,KAAW,IAAK6H,CAAAA,UAApB,EAAgC;UAC5BqD,KAAK,EAAA,CAAA;EACR,OAFD,MAGK;EACD;EACA;EACA,QAAA,IAAA,CAAK3G,IAAL,CAAU,MAAV,EAAkB2G,KAAlB,CAAA,CAAA;EACH,OAAA;EACJ,KAAA;EACD;EACJ;EACA;EACA;EACA;EACA;EACA;;EA9IA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,OAAA;MAAA,KA+II,EAAA,SAAA,KAAA,CAAM7H,OAAN,EAAe;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;;QACX,IAAKsE,CAAAA,QAAL,GAAgB,KAAhB,CAAA;EACAvE,MAAAA,aAAa,CAACC,OAAD,EAAU,UAAApD,IAAI,EAAI;EAC3B,QAAA,MAAI,CAACkL,OAAL,CAAalL,IAAb,EAAmB,YAAM;YACrB,MAAI,CAAC0H,QAAL,GAAgB,IAAhB,CAAA;;YACA,MAAI,CAACvC,YAAL,CAAkB,OAAlB,CAAA,CAAA;WAFJ,CAAA,CAAA;EAIH,OALY,CAAb,CAAA;EAMH,KAAA;EACD;EACJ;EACA;EACA;EACA;;EA5JA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,KAAA;EAAA,IAAA,KAAA,EA6JI,SAAM,GAAA,GAAA;EACF,MAAA,IAAIwC,KAAK,GAAG,IAAKA,CAAAA,KAAL,IAAc,EAA1B,CAAA;QACA,IAAMwD,MAAM,GAAG,IAAK9E,CAAAA,IAAL,CAAUoE,MAAV,GAAmB,OAAnB,GAA6B,MAA5C,CAAA;EACA,MAAA,IAAIJ,IAAI,GAAG,EAAX,CAHE;;EAKF,MAAA,IAAI,KAAU,KAAA,IAAA,CAAKhE,IAAL,CAAU+E,iBAAxB,EAA2C;UACvCzD,KAAK,CAAC,KAAKtB,IAAL,CAAUgF,cAAX,CAAL,GAAkCzC,KAAK,EAAvC,CAAA;EACH,OAAA;;QACD,IAAI,CAAC,KAAKhI,cAAN,IAAwB,CAAC+G,KAAK,CAAC2D,GAAnC,EAAwC;UACpC3D,KAAK,CAAC4D,GAAN,GAAY,CAAZ,CAAA;EACH,OAVC;;;EAYF,MAAA,IAAI,IAAKlF,CAAAA,IAAL,CAAUgE,IAAV,KACE,OAAA,KAAYc,MAAZ,IAAsBK,MAAM,CAAC,IAAKnF,CAAAA,IAAL,CAAUgE,IAAX,CAAN,KAA2B,GAAlD,IACI,MAAA,KAAWc,MAAX,IAAqBK,MAAM,CAAC,IAAA,CAAKnF,IAAL,CAAUgE,IAAX,CAAN,KAA2B,EAFrD,CAAJ,EAE+D;EAC3DA,QAAAA,IAAI,GAAG,GAAA,GAAM,IAAKhE,CAAAA,IAAL,CAAUgE,IAAvB,CAAA;EACH,OAAA;;EACD,MAAA,IAAMoB,YAAY,GAAGjD,MAAM,CAACb,KAAD,CAA3B,CAAA;EACA,MAAA,IAAM+D,IAAI,GAAG,IAAKrF,CAAAA,IAAL,CAAUkE,QAAV,CAAmBoB,OAAnB,CAA2B,GAA3B,CAAoC,KAAA,CAAC,CAAlD,CAAA;EACA,MAAA,OAAQR,MAAM,GACV,KADI,IAEHO,IAAI,GAAG,GAAA,GAAM,IAAKrF,CAAAA,IAAL,CAAUkE,QAAhB,GAA2B,GAA9B,GAAoC,KAAKlE,IAAL,CAAUkE,QAF/C,CAAA,GAGJF,IAHI,GAIJ,IAAKhE,CAAAA,IAAL,CAAUuF,IAJN,IAKHH,YAAY,CAAC/J,MAAb,GAAsB,GAAA,GAAM+J,YAA5B,GAA2C,EALxC,CAAR,CAAA;EAMH,KAAA;EACD;EACJ;EACA;EACA;EACA;EACA;;EA5LA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,SAAA;EAAA,IAAA,KAAA,EA6LI,SAAmB,OAAA,GAAA;QAAA,IAAXpF,IAAW,uEAAJ,EAAI,CAAA;;EACf,MAAA,QAAA,CAAcA,IAAd,EAAoB;UAAEiE,EAAE,EAAE,KAAKA,EAAX;EAAeE,QAAAA,EAAE,EAAE,IAAKA,CAAAA,EAAAA;SAA5C,EAAkD,KAAKnE,IAAvD,CAAA,CAAA;;QACA,OAAO,IAAIwF,OAAJ,CAAY,IAAA,CAAKC,GAAL,EAAZ,EAAwBzF,IAAxB,CAAP,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;EACA;EACA;;EAvMA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,SAAA;EAAA,IAAA,KAAA,EAwMI,SAAQrG,OAAAA,CAAAA,IAAR,EAAcoE,EAAd,EAAkB;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;;EACd,MAAA,IAAM2H,GAAG,GAAG,IAAKC,CAAAA,OAAL,CAAa;EACrBC,QAAAA,MAAM,EAAE,MADa;EAErBjM,QAAAA,IAAI,EAAEA,IAAAA;EAFe,OAAb,CAAZ,CAAA;EAIA+L,MAAAA,GAAG,CAAC9H,EAAJ,CAAO,SAAP,EAAkBG,EAAlB,CAAA,CAAA;QACA2H,GAAG,CAAC9H,EAAJ,CAAO,OAAP,EAAgB,UAACiI,SAAD,EAAY3E,OAAZ,EAAwB;EACpC,QAAA,MAAI,CAAC4E,OAAL,CAAa,gBAAb,EAA+BD,SAA/B,EAA0C3E,OAA1C,CAAA,CAAA;SADJ,CAAA,CAAA;EAGH,KAAA;EACD;EACJ;EACA;EACA;EACA;;EAtNA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,QAAA;EAAA,IAAA,KAAA,EAuNI,SAAS,MAAA,GAAA;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;;EACL,MAAA,IAAMwE,GAAG,GAAG,IAAKC,CAAAA,OAAL,EAAZ,CAAA;QACAD,GAAG,CAAC9H,EAAJ,CAAO,MAAP,EAAe,IAAKmI,CAAAA,MAAL,CAAY5F,IAAZ,CAAiB,IAAjB,CAAf,CAAA,CAAA;QACAuF,GAAG,CAAC9H,EAAJ,CAAO,OAAP,EAAgB,UAACiI,SAAD,EAAY3E,OAAZ,EAAwB;EACpC,QAAA,MAAI,CAAC4E,OAAL,CAAa,gBAAb,EAA+BD,SAA/B,EAA0C3E,OAA1C,CAAA,CAAA;SADJ,CAAA,CAAA;QAGA,IAAK8E,CAAAA,OAAL,GAAeN,GAAf,CAAA;EACH,KAAA;EA9NL,GAAA,CAAA,CAAA,CAAA;;EAAA,EAAA,OAAA,OAAA,CAAA;EAAA,CAAA,CAA6BtE,SAA7B,CAAA,CAAA;EAgOA,IAAaoE,OAAb,gBAAA,UAAA,QAAA,EAAA;EAAA,EAAA,SAAA,CAAA,OAAA,EAAA,QAAA,CAAA,CAAA;;EAAA,EAAA,IAAA,OAAA,GAAA,YAAA,CAAA,OAAA,CAAA,CAAA;;EACI;EACJ;EACA;EACA;EACA;EACA;IACI,SAAYC,OAAAA,CAAAA,GAAZ,EAAiBzF,IAAjB,EAAuB;EAAA,IAAA,IAAA,MAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;EACnB,IAAA,MAAA,GAAA,OAAA,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;MACAD,qBAAqB,CAAA,sBAAA,CAAA,MAAA,CAAA,EAAOC,IAAP,CAArB,CAAA;MACA,MAAKA,CAAAA,IAAL,GAAYA,IAAZ,CAAA;EACA,IAAA,MAAA,CAAK4F,MAAL,GAAc5F,IAAI,CAAC4F,MAAL,IAAe,KAA7B,CAAA;MACA,MAAKH,CAAAA,GAAL,GAAWA,GAAX,CAAA;EACA,IAAA,MAAA,CAAKQ,KAAL,GAAa,KAAUjG,KAAAA,IAAI,CAACiG,KAA5B,CAAA;EACA,IAAA,MAAA,CAAKtM,IAAL,GAAYuM,SAAS,KAAKlG,IAAI,CAACrG,IAAnB,GAA0BqG,IAAI,CAACrG,IAA/B,GAAsC,IAAlD,CAAA;;EACA,IAAA,MAAA,CAAKP,MAAL,EAAA,CAAA;;EARmB,IAAA,OAAA,MAAA,CAAA;EAStB,GAAA;EACD;EACJ;EACA;EACA;EACA;;;EArBA,EAAA,YAAA,CAAA,OAAA,EAAA,CAAA;EAAA,IAAA,GAAA,EAAA,QAAA;EAAA,IAAA,KAAA,EAsBI,SAAS,MAAA,GAAA;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;;QACL,IAAM4G,IAAI,GAAGX,IAAI,CAAC,IAAA,CAAKW,IAAN,EAAY,OAAZ,EAAqB,KAArB,EAA4B,KAA5B,EAAmC,YAAnC,EAAiD,MAAjD,EAAyD,IAAzD,EAA+D,SAA/D,EAA0E,oBAA1E,EAAgG,WAAhG,CAAjB,CAAA;QACAA,IAAI,CAACqD,OAAL,GAAe,CAAC,CAAC,IAAKrD,CAAAA,IAAL,CAAUiE,EAA3B,CAAA;QACAjE,IAAI,CAACmG,OAAL,GAAe,CAAC,CAAC,IAAKnG,CAAAA,IAAL,CAAUmE,EAA3B,CAAA;QACA,IAAMT,GAAG,GAAI,IAAKA,CAAAA,GAAL,GAAW,IAAIT,GAAJ,CAAmBjD,IAAnB,CAAxB,CAAA;;QACA,IAAI;UACA0D,GAAG,CAAC0C,IAAJ,CAAS,IAAKR,CAAAA,MAAd,EAAsB,IAAKH,CAAAA,GAA3B,EAAgC,IAAA,CAAKQ,KAArC,CAAA,CAAA;;UACA,IAAI;EACA,UAAA,IAAI,IAAKjG,CAAAA,IAAL,CAAUqG,YAAd,EAA4B;cACxB3C,GAAG,CAAC4C,qBAAJ,IAA6B5C,GAAG,CAAC4C,qBAAJ,CAA0B,IAA1B,CAA7B,CAAA;;EACA,YAAA,KAAK,IAAIlL,CAAT,IAAc,KAAK4E,IAAL,CAAUqG,YAAxB,EAAsC;gBAClC,IAAI,IAAA,CAAKrG,IAAL,CAAUqG,YAAV,CAAuB3G,cAAvB,CAAsCtE,CAAtC,CAAJ,EAA8C;kBAC1CsI,GAAG,CAAC6C,gBAAJ,CAAqBnL,CAArB,EAAwB,IAAK4E,CAAAA,IAAL,CAAUqG,YAAV,CAAuBjL,CAAvB,CAAxB,CAAA,CAAA;EACH,eAAA;EACJ,aAAA;EACJ,WAAA;EACJ,SATD,CAUA,OAAOkI,CAAP,EAAU,EAAG;;UACb,IAAI,MAAA,KAAW,IAAKsC,CAAAA,MAApB,EAA4B;YACxB,IAAI;EACAlC,YAAAA,GAAG,CAAC6C,gBAAJ,CAAqB,cAArB,EAAqC,0BAArC,CAAA,CAAA;EACH,WAFD,CAGA,OAAOjD,CAAP,EAAU,EAAG;EAChB,SAAA;;UACD,IAAI;EACAI,UAAAA,GAAG,CAAC6C,gBAAJ,CAAqB,QAArB,EAA+B,KAA/B,CAAA,CAAA;EACH,SAFD,CAGA,OAAOjD,CAAP,EAAU,EAtBV;;;UAwBA,IAAI,iBAAA,IAAqBI,GAAzB,EAA8B;EAC1BA,UAAAA,GAAG,CAAC8C,eAAJ,GAAsB,IAAKxG,CAAAA,IAAL,CAAUwG,eAAhC,CAAA;EACH,SAAA;;EACD,QAAA,IAAI,IAAKxG,CAAAA,IAAL,CAAUyG,cAAd,EAA8B;EAC1B/C,UAAAA,GAAG,CAACgD,OAAJ,GAAc,IAAK1G,CAAAA,IAAL,CAAUyG,cAAxB,CAAA;EACH,SAAA;;UACD/C,GAAG,CAACiD,kBAAJ,GAAyB,YAAM;EAC3B,UAAA,IAAI,CAAMjD,KAAAA,GAAG,CAACnC,UAAd,EACI,OAAA;;YACJ,IAAI,GAAA,KAAQmC,GAAG,CAACkD,MAAZ,IAAsB,IAASlD,KAAAA,GAAG,CAACkD,MAAvC,EAA+C;EAC3C,YAAA,MAAI,CAACC,MAAL,EAAA,CAAA;EACH,WAFD,MAGK;EACD;EACA;cACA,MAAI,CAAC3G,YAAL,CAAkB,YAAM;EACpB,cAAA,MAAI,CAAC4F,OAAL,CAAa,OAAOpC,GAAG,CAACkD,MAAX,KAAsB,QAAtB,GAAiClD,GAAG,CAACkD,MAArC,GAA8C,CAA3D,CAAA,CAAA;EACH,aAFD,EAEG,CAFH,CAAA,CAAA;EAGH,WAAA;WAZL,CAAA;;EAcAlD,QAAAA,GAAG,CAACoD,IAAJ,CAAS,IAAA,CAAKnN,IAAd,CAAA,CAAA;SA5CJ,CA8CA,OAAO2J,CAAP,EAAU;EACN;EACA;EACA;UACA,IAAKpD,CAAAA,YAAL,CAAkB,YAAM;YACpB,MAAI,CAAC4F,OAAL,CAAaxC,CAAb,CAAA,CAAA;EACH,SAFD,EAEG,CAFH,CAAA,CAAA;EAGA,QAAA,OAAA;EACH,OAAA;;EACD,MAAA,IAAI,OAAOyD,QAAP,KAAoB,WAAxB,EAAqC;EACjC,QAAA,IAAA,CAAKC,KAAL,GAAaxB,OAAO,CAACyB,aAAR,EAAb,CAAA;EACAzB,QAAAA,OAAO,CAAC0B,QAAR,CAAiB,IAAKF,CAAAA,KAAtB,IAA+B,IAA/B,CAAA;EACH,OAAA;EACJ,KAAA;EACD;EACJ;EACA;EACA;EACA;;EA3FA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,SAAA;MAAA,KA4FI,EAAA,SAAA,OAAA,CAAQ9D,GAAR,EAAa;EACT,MAAA,IAAA,CAAKpE,YAAL,CAAkB,OAAlB,EAA2BoE,GAA3B,EAAgC,KAAKQ,GAArC,CAAA,CAAA;QACA,IAAKyD,CAAAA,OAAL,CAAa,IAAb,CAAA,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;;EApGA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,SAAA;MAAA,KAqGI,EAAA,SAAA,OAAA,CAAQC,SAAR,EAAmB;QACf,IAAI,WAAA,KAAgB,OAAO,IAAK1D,CAAAA,GAA5B,IAAmC,IAAS,KAAA,IAAA,CAAKA,GAArD,EAA0D;EACtD,QAAA,OAAA;EACH,OAAA;;EACD,MAAA,IAAA,CAAKA,GAAL,CAASiD,kBAAT,GAA8BnD,KAA9B,CAAA;;EACA,MAAA,IAAI4D,SAAJ,EAAe;UACX,IAAI;YACA,IAAK1D,CAAAA,GAAL,CAAS2D,KAAT,EAAA,CAAA;EACH,SAFD,CAGA,OAAO/D,CAAP,EAAU,EAAG;EAChB,OAAA;;EACD,MAAA,IAAI,OAAOyD,QAAP,KAAoB,WAAxB,EAAqC;EACjC,QAAA,OAAOvB,OAAO,CAAC0B,QAAR,CAAiB,IAAA,CAAKF,KAAtB,CAAP,CAAA;EACH,OAAA;;QACD,IAAKtD,CAAAA,GAAL,GAAW,IAAX,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;;EAzHA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,QAAA;EAAA,IAAA,KAAA,EA0HI,SAAS,MAAA,GAAA;EACL,MAAA,IAAM/J,IAAI,GAAG,IAAK+J,CAAAA,GAAL,CAAS4D,YAAtB,CAAA;;QACA,IAAI3N,IAAI,KAAK,IAAb,EAAmB;EACf,QAAA,IAAA,CAAKmF,YAAL,CAAkB,MAAlB,EAA0BnF,IAA1B,CAAA,CAAA;UACA,IAAKmF,CAAAA,YAAL,CAAkB,SAAlB,CAAA,CAAA;EACA,QAAA,IAAA,CAAKqI,OAAL,EAAA,CAAA;EACH,OAAA;EACJ,KAAA;EACD;EACJ;EACA;EACA;EACA;;EAtIA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,OAAA;EAAA,IAAA,KAAA,EAuII,SAAQ,KAAA,GAAA;EACJ,MAAA,IAAA,CAAKA,OAAL,EAAA,CAAA;EACH,KAAA;EAzIL,GAAA,CAAA,CAAA,CAAA;;EAAA,EAAA,OAAA,OAAA,CAAA;EAAA,CAAA,CAA6BzJ,OAA7B,CAAA,CAAA;EA2IA8H,OAAO,CAACyB,aAAR,GAAwB,CAAxB,CAAA;EACAzB,OAAO,CAAC0B,QAAR,GAAmB,EAAnB,CAAA;EACA;EACA;EACA;EACA;EACA;;EACA,IAAI,OAAOH,QAAP,KAAoB,WAAxB,EAAqC;EACjC;EACA,EAAA,IAAI,OAAOQ,WAAP,KAAuB,UAA3B,EAAuC;EACnC;EACAA,IAAAA,WAAW,CAAC,UAAD,EAAaC,aAAb,CAAX,CAAA;EACH,GAHD,MAIK,IAAI,OAAO3J,gBAAP,KAA4B,UAAhC,EAA4C;EAC7C,IAAA,IAAM4J,gBAAgB,GAAG,YAAA,IAAgBrH,cAAhB,GAA6B,UAA7B,GAA0C,QAAnE,CAAA;EACAvC,IAAAA,gBAAgB,CAAC4J,gBAAD,EAAmBD,aAAnB,EAAkC,KAAlC,CAAhB,CAAA;EACH,GAAA;EACJ,CAAA;;EACD,SAASA,aAAT,GAAyB;EACrB,EAAA,KAAK,IAAIpM,CAAT,IAAcoK,OAAO,CAAC0B,QAAtB,EAAgC;MAC5B,IAAI1B,OAAO,CAAC0B,QAAR,CAAiBxH,cAAjB,CAAgCtE,CAAhC,CAAJ,EAAwC;EACpCoK,MAAAA,OAAO,CAAC0B,QAAR,CAAiB9L,CAAjB,EAAoBiM,KAApB,EAAA,CAAA;EACH,KAAA;EACJ,GAAA;EACJ;;ECjZM,IAAMK,QAAQ,GAAI,YAAM;EAC3B,EAAA,IAAMC,kBAAkB,GAAG,OAAOC,OAAP,KAAmB,UAAnB,IAAiC,OAAOA,OAAO,CAACC,OAAf,KAA2B,UAAvF,CAAA;;EACA,EAAA,IAAIF,kBAAJ,EAAwB;EACpB,IAAA,OAAO,UAAAlJ,EAAE,EAAA;EAAA,MAAA,OAAImJ,OAAO,CAACC,OAAR,GAAkBC,IAAlB,CAAuBrJ,EAAvB,CAAJ,CAAA;OAAT,CAAA;EACH,GAFD,MAGK;MACD,OAAO,UAACA,EAAD,EAAKyB,YAAL,EAAA;EAAA,MAAA,OAAsBA,YAAY,CAACzB,EAAD,EAAK,CAAL,CAAlC,CAAA;OAAP,CAAA;EACH,GAAA;EACJ,CARuB,EAAjB,CAAA;EASA,IAAMsJ,SAAS,GAAG3H,cAAU,CAAC2H,SAAX,IAAwB3H,cAAU,CAAC4H,YAArD,CAAA;EACA,IAAMC,qBAAqB,GAAG,IAA9B,CAAA;EACA,IAAMC,iBAAiB,GAAG,aAA1B;;ECLP,IAAMC,aAAa,GAAG,OAAOC,SAAP,KAAqB,WAArB,IAClB,OAAOA,SAAS,CAACC,OAAjB,KAA6B,QADX,IAElBD,SAAS,CAACC,OAAV,CAAkBC,WAAlB,OAAoC,aAFxC,CAAA;EAGA,IAAaC,EAAb,gBAAA,UAAA,UAAA,EAAA;EAAA,EAAA,SAAA,CAAA,EAAA,EAAA,UAAA,CAAA,CAAA;;EAAA,EAAA,IAAA,MAAA,GAAA,YAAA,CAAA,EAAA,CAAA,CAAA;;EACI;EACJ;EACA;EACA;EACA;EACA;EACI,EAAA,SAAA,EAAA,CAAYvI,IAAZ,EAAkB;EAAA,IAAA,IAAA,KAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,EAAA,CAAA,CAAA;;EACd,IAAA,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAMA,IAAN,CAAA,CAAA;EACA,IAAA,KAAA,CAAKzF,cAAL,GAAsB,CAACyF,IAAI,CAACqE,WAA5B,CAAA;EAFc,IAAA,OAAA,KAAA,CAAA;EAGjB,GAAA;EACD;EACJ;EACA;EACA;EACA;;;EAfA,EAAA,YAAA,CAAA,EAAA,EAAA,CAAA;EAAA,IAAA,GAAA,EAAA,MAAA;EAAA,IAAA,GAAA,EAgBI,SAAW,GAAA,GAAA;EACP,MAAA,OAAO,WAAP,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;;EAvBA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,QAAA;EAAA,IAAA,KAAA,EAwBI,SAAS,MAAA,GAAA;EACL,MAAA,IAAI,CAAC,IAAA,CAAKmE,KAAL,EAAL,EAAmB;EACf;EACA,QAAA,OAAA;EACH,OAAA;;EACD,MAAA,IAAM/C,GAAG,GAAG,IAAKA,CAAAA,GAAL,EAAZ,CAAA;EACA,MAAA,IAAMgD,SAAS,GAAG,IAAA,CAAKzI,IAAL,CAAUyI,SAA5B,CANK;;EAQL,MAAA,IAAMzI,IAAI,GAAGmI,aAAa,GACpB,EADoB,GAEpB9I,IAAI,CAAC,IAAA,CAAKW,IAAN,EAAY,OAAZ,EAAqB,mBAArB,EAA0C,KAA1C,EAAiD,KAAjD,EAAwD,YAAxD,EAAsE,MAAtE,EAA8E,IAA9E,EAAoF,SAApF,EAA+F,oBAA/F,EAAqH,cAArH,EAAqI,iBAArI,EAAwJ,QAAxJ,EAAkK,YAAlK,EAAgL,QAAhL,EAA0L,qBAA1L,CAFV,CAAA;;EAGA,MAAA,IAAI,IAAKA,CAAAA,IAAL,CAAUqG,YAAd,EAA4B;EACxBrG,QAAAA,IAAI,CAAC0I,OAAL,GAAe,IAAK1I,CAAAA,IAAL,CAAUqG,YAAzB,CAAA;EACH,OAAA;;QACD,IAAI;EACA,QAAA,IAAA,CAAKsC,EAAL,GACIV,qBAAqB,IAAI,CAACE,aAA1B,GACMM,SAAS,GACL,IAAIV,SAAJ,CAActC,GAAd,EAAmBgD,SAAnB,CADK,GAEL,IAAIV,SAAJ,CAActC,GAAd,CAHV,GAIM,IAAIsC,SAAJ,CAActC,GAAd,EAAmBgD,SAAnB,EAA8BzI,IAA9B,CALV,CAAA;SADJ,CAQA,OAAOkD,GAAP,EAAY;EACR,QAAA,OAAO,KAAKpE,YAAL,CAAkB,OAAlB,EAA2BoE,GAA3B,CAAP,CAAA;EACH,OAAA;;QACD,IAAKyF,CAAAA,EAAL,CAAQvM,UAAR,GAAqB,KAAKoF,MAAL,CAAYpF,UAAZ,IAA0B8L,iBAA/C,CAAA;EACA,MAAA,IAAA,CAAKU,iBAAL,EAAA,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;;EAxDA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,mBAAA;EAAA,IAAA,KAAA,EAyDI,SAAoB,iBAAA,GAAA;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;;EAChB,MAAA,IAAA,CAAKD,EAAL,CAAQE,MAAR,GAAiB,YAAM;EACnB,QAAA,IAAI,MAAI,CAAC7I,IAAL,CAAU8I,SAAd,EAAyB;EACrB,UAAA,MAAI,CAACH,EAAL,CAAQI,OAAR,CAAgBC,KAAhB,EAAA,CAAA;EACH,SAAA;;EACD,QAAA,MAAI,CAACrE,MAAL,EAAA,CAAA;SAJJ,CAAA;;EAMA,MAAA,IAAA,CAAKgE,EAAL,CAAQM,OAAR,GAAkB,UAAAC,UAAU,EAAA;UAAA,OAAI,MAAI,CAACvH,OAAL,CAAa;EACzCV,UAAAA,WAAW,EAAE,6BAD4B;EAEzCC,UAAAA,OAAO,EAAEgI,UAAAA;EAFgC,SAAb,CAAJ,CAAA;SAA5B,CAAA;;EAIA,MAAA,IAAA,CAAKP,EAAL,CAAQQ,SAAR,GAAoB,UAAAC,EAAE,EAAA;EAAA,QAAA,OAAI,MAAI,CAACrD,MAAL,CAAYqD,EAAE,CAACzP,IAAf,CAAJ,CAAA;SAAtB,CAAA;;EACA,MAAA,IAAA,CAAKgP,EAAL,CAAQU,OAAR,GAAkB,UAAA/F,CAAC,EAAA;EAAA,QAAA,OAAI,MAAI,CAACwC,OAAL,CAAa,iBAAb,EAAgCxC,CAAhC,CAAJ,CAAA;SAAnB,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;EACA;;EA5EA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,OAAA;MAAA,KA6EI,EAAA,SAAA,KAAA,CAAMvG,OAAN,EAAe;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;;EACX,MAAA,IAAA,CAAKsE,QAAL,GAAgB,KAAhB,CADW;EAGX;;EAHW,MAAA,IAAA,KAAA,GAAA,SAAA,KAAA,CAIFjG,CAJE,EAAA;EAKP,QAAA,IAAM+B,MAAM,GAAGJ,OAAO,CAAC3B,CAAD,CAAtB,CAAA;UACA,IAAMkO,UAAU,GAAGlO,CAAC,KAAK2B,OAAO,CAAC1B,MAAR,GAAiB,CAA1C,CAAA;UACAf,YAAY,CAAC6C,MAAD,EAAS,MAAI,CAAC5C,cAAd,EAA8B,UAAAZ,IAAI,EAAI;EAC9C;YACA,IAAMqG,IAAI,GAAG,EAAb,CAAA;EAeA;EACA;;;YACA,IAAI;EACA,YAAA,IAAIiI,qBAAJ,EAA2B;EACvB;EACA,cAAA,MAAI,CAACU,EAAL,CAAQ7B,IAAR,CAAanN,IAAb,CAAA,CAAA;EACH,aAGA;EACJ,WARD,CASA,OAAO2J,CAAP,EAAU,EACT;;EACD,UAAA,IAAIgG,UAAJ,EAAgB;EACZ;EACA;EACA5B,YAAAA,QAAQ,CAAC,YAAM;gBACX,MAAI,CAACrG,QAAL,GAAgB,IAAhB,CAAA;;gBACA,MAAI,CAACvC,YAAL,CAAkB,OAAlB,CAAA,CAAA;EACH,aAHO,EAGL,MAAI,CAACoB,YAHA,CAAR,CAAA;EAIH,WAAA;EACJ,SAtCW,CAAZ,CAAA;EAPO,OAAA,CAAA;;EAIX,MAAA,KAAK,IAAI9E,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2B,OAAO,CAAC1B,MAA5B,EAAoCD,CAAC,EAArC,EAAyC;EAAA,QAAA,KAAA,CAAhCA,CAAgC,CAAA,CAAA;EA0CxC,OAAA;EACJ,KAAA;EACD;EACJ;EACA;EACA;EACA;;EAjIA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,SAAA;EAAA,IAAA,KAAA,EAkII,SAAU,OAAA,GAAA;EACN,MAAA,IAAI,OAAO,IAAA,CAAKuN,EAAZ,KAAmB,WAAvB,EAAoC;UAChC,IAAKA,CAAAA,EAAL,CAAQ/D,KAAR,EAAA,CAAA;UACA,IAAK+D,CAAAA,EAAL,GAAU,IAAV,CAAA;EACH,OAAA;EACJ,KAAA;EACD;EACJ;EACA;EACA;EACA;;EA5IA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,KAAA;EAAA,IAAA,KAAA,EA6II,SAAM,GAAA,GAAA;EACF,MAAA,IAAIrH,KAAK,GAAG,IAAKA,CAAAA,KAAL,IAAc,EAA1B,CAAA;QACA,IAAMwD,MAAM,GAAG,IAAK9E,CAAAA,IAAL,CAAUoE,MAAV,GAAmB,KAAnB,GAA2B,IAA1C,CAAA;EACA,MAAA,IAAIJ,IAAI,GAAG,EAAX,CAHE;;EAKF,MAAA,IAAI,IAAKhE,CAAAA,IAAL,CAAUgE,IAAV,KACE,KAAA,KAAUc,MAAV,IAAoBK,MAAM,CAAC,IAAKnF,CAAAA,IAAL,CAAUgE,IAAX,CAAN,KAA2B,GAAhD,IACI,IAAA,KAASc,MAAT,IAAmBK,MAAM,CAAC,IAAA,CAAKnF,IAAL,CAAUgE,IAAX,CAAN,KAA2B,EAFnD,CAAJ,EAE6D;EACzDA,QAAAA,IAAI,GAAG,GAAA,GAAM,IAAKhE,CAAAA,IAAL,CAAUgE,IAAvB,CAAA;EACH,OATC;;;EAWF,MAAA,IAAI,IAAKhE,CAAAA,IAAL,CAAU+E,iBAAd,EAAiC;UAC7BzD,KAAK,CAAC,KAAKtB,IAAL,CAAUgF,cAAX,CAAL,GAAkCzC,KAAK,EAAvC,CAAA;EACH,OAbC;;;QAeF,IAAI,CAAC,IAAKhI,CAAAA,cAAV,EAA0B;UACtB+G,KAAK,CAAC4D,GAAN,GAAY,CAAZ,CAAA;EACH,OAAA;;EACD,MAAA,IAAME,YAAY,GAAGjD,MAAM,CAACb,KAAD,CAA3B,CAAA;EACA,MAAA,IAAM+D,IAAI,GAAG,IAAKrF,CAAAA,IAAL,CAAUkE,QAAV,CAAmBoB,OAAnB,CAA2B,GAA3B,CAAoC,KAAA,CAAC,CAAlD,CAAA;EACA,MAAA,OAAQR,MAAM,GACV,KADI,IAEHO,IAAI,GAAG,GAAA,GAAM,IAAKrF,CAAAA,IAAL,CAAUkE,QAAhB,GAA2B,GAA9B,GAAoC,KAAKlE,IAAL,CAAUkE,QAF/C,CAAA,GAGJF,IAHI,GAIJ,IAAKhE,CAAAA,IAAL,CAAUuF,IAJN,IAKHH,YAAY,CAAC/J,MAAb,GAAsB,GAAA,GAAM+J,YAA5B,GAA2C,EALxC,CAAR,CAAA;EAMH,KAAA;EACD;EACJ;EACA;EACA;EACA;EACA;;EA7KA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,OAAA;EAAA,IAAA,KAAA,EA8KI,SAAQ,KAAA,GAAA;QACJ,OAAO,CAAC,CAAC2C,SAAT,CAAA;EACH,KAAA;EAhLL,GAAA,CAAA,CAAA,CAAA;;EAAA,EAAA,OAAA,EAAA,CAAA;EAAA,CAAA,CAAwB3G,SAAxB,CAAA;;ECRO,IAAMmI,UAAU,GAAG;EACtBC,EAAAA,SAAS,EAAEjB,EADW;EAEtB1E,EAAAA,OAAO,EAAED,OAAAA;EAFa,CAAnB;;ECFP;;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAM6F,EAAE,GAAG,yOAAX,CAAA;EACA,IAAMC,KAAK,GAAG,CACV,QADU,EACA,UADA,EACY,WADZ,EACyB,UADzB,EACqC,MADrC,EAC6C,UAD7C,EACyD,MADzD,EACiE,MADjE,EACyE,UADzE,EACqF,MADrF,EAC6F,WAD7F,EAC0G,MAD1G,EACkH,OADlH,EAC2H,QAD3H,CAAd,CAAA;EAGO,SAASC,KAAT,CAAe/I,GAAf,EAAoB;IACvB,IAAMgJ,GAAG,GAAGhJ,GAAZ;EAAA,MAAiBiJ,CAAC,GAAGjJ,GAAG,CAAC0E,OAAJ,CAAY,GAAZ,CAArB;EAAA,MAAuChC,CAAC,GAAG1C,GAAG,CAAC0E,OAAJ,CAAY,GAAZ,CAA3C,CAAA;;IACA,IAAIuE,CAAC,IAAI,CAAC,CAAN,IAAWvG,CAAC,IAAI,CAAC,CAArB,EAAwB;EACpB1C,IAAAA,GAAG,GAAGA,GAAG,CAACpE,SAAJ,CAAc,CAAd,EAAiBqN,CAAjB,CAAA,GAAsBjJ,GAAG,CAACpE,SAAJ,CAAcqN,CAAd,EAAiBvG,CAAjB,CAAoBwG,CAAAA,OAApB,CAA4B,IAA5B,EAAkC,GAAlC,CAAtB,GAA+DlJ,GAAG,CAACpE,SAAJ,CAAc8G,CAAd,EAAiB1C,GAAG,CAACvF,MAArB,CAArE,CAAA;EACH,GAAA;;IACD,IAAI0O,CAAC,GAAGN,EAAE,CAACO,IAAH,CAAQpJ,GAAG,IAAI,EAAf,CAAR;QAA4B6E,GAAG,GAAG,EAAlC;QAAsCrK,CAAC,GAAG,EAA1C,CAAA;;IACA,OAAOA,CAAC,EAAR,EAAY;EACRqK,IAAAA,GAAG,CAACiE,KAAK,CAACtO,CAAD,CAAN,CAAH,GAAgB2O,CAAC,CAAC3O,CAAD,CAAD,IAAQ,EAAxB,CAAA;EACH,GAAA;;IACD,IAAIyO,CAAC,IAAI,CAAC,CAAN,IAAWvG,CAAC,IAAI,CAAC,CAArB,EAAwB;MACpBmC,GAAG,CAACwE,MAAJ,GAAaL,GAAb,CAAA;MACAnE,GAAG,CAACyE,IAAJ,GAAWzE,GAAG,CAACyE,IAAJ,CAAS1N,SAAT,CAAmB,CAAnB,EAAsBiJ,GAAG,CAACyE,IAAJ,CAAS7O,MAAT,GAAkB,CAAxC,CAAA,CAA2CyO,OAA3C,CAAmD,IAAnD,EAAyD,GAAzD,CAAX,CAAA;MACArE,GAAG,CAAC0E,SAAJ,GAAgB1E,GAAG,CAAC0E,SAAJ,CAAcL,OAAd,CAAsB,GAAtB,EAA2B,EAA3B,EAA+BA,OAA/B,CAAuC,GAAvC,EAA4C,EAA5C,CAAA,CAAgDA,OAAhD,CAAwD,IAAxD,EAA8D,GAA9D,CAAhB,CAAA;MACArE,GAAG,CAAC2E,OAAJ,GAAc,IAAd,CAAA;EACH,GAAA;;IACD3E,GAAG,CAAC4E,SAAJ,GAAgBA,SAAS,CAAC5E,GAAD,EAAMA,GAAG,CAAC,MAAD,CAAT,CAAzB,CAAA;IACAA,GAAG,CAAC6E,QAAJ,GAAeA,QAAQ,CAAC7E,GAAD,EAAMA,GAAG,CAAC,OAAD,CAAT,CAAvB,CAAA;EACA,EAAA,OAAOA,GAAP,CAAA;EACH,CAAA;;EACD,SAAS4E,SAAT,CAAmBjQ,GAAnB,EAAwBmL,IAAxB,EAA8B;IAC1B,IAAMgF,IAAI,GAAG,UAAb;EAAA,MAAyBC,KAAK,GAAGjF,IAAI,CAACuE,OAAL,CAAaS,IAAb,EAAmB,GAAnB,CAAA,CAAwBxP,KAAxB,CAA8B,GAA9B,CAAjC,CAAA;;EACA,EAAA,IAAIwK,IAAI,CAAC1G,KAAL,CAAW,CAAX,EAAc,CAAd,CAAoB,IAAA,GAApB,IAA2B0G,IAAI,CAAClK,MAAL,KAAgB,CAA/C,EAAkD;EAC9CmP,IAAAA,KAAK,CAAC9L,MAAN,CAAa,CAAb,EAAgB,CAAhB,CAAA,CAAA;EACH,GAAA;;IACD,IAAI6G,IAAI,CAAC1G,KAAL,CAAW,CAAC,CAAZ,CAAA,IAAkB,GAAtB,EAA2B;MACvB2L,KAAK,CAAC9L,MAAN,CAAa8L,KAAK,CAACnP,MAAN,GAAe,CAA5B,EAA+B,CAA/B,CAAA,CAAA;EACH,GAAA;;EACD,EAAA,OAAOmP,KAAP,CAAA;EACH,CAAA;;EACD,SAASF,QAAT,CAAkB7E,GAAlB,EAAuBnE,KAAvB,EAA8B;IAC1B,IAAM3H,IAAI,GAAG,EAAb,CAAA;IACA2H,KAAK,CAACwI,OAAN,CAAc,2BAAd,EAA2C,UAAUW,EAAV,EAAcC,EAAd,EAAkBC,EAAlB,EAAsB;EAC7D,IAAA,IAAID,EAAJ,EAAQ;EACJ/Q,MAAAA,IAAI,CAAC+Q,EAAD,CAAJ,GAAWC,EAAX,CAAA;EACH,KAAA;KAHL,CAAA,CAAA;EAKA,EAAA,OAAOhR,IAAP,CAAA;EACH;;EC1CD,IAAaiR,QAAb,gBAAA,UAAA,QAAA,EAAA;EAAA,EAAA,SAAA,CAAA,MAAA,EAAA,QAAA,CAAA,CAAA;;EAAA,EAAA,IAAA,MAAA,GAAA,YAAA,CAAA,MAAA,CAAA,CAAA;;EACI;EACJ;EACA;EACA;EACA;EACA;EACA;EACI,EAAA,SAAA,MAAA,CAAYnF,GAAZ,EAA4B;EAAA,IAAA,IAAA,KAAA,CAAA;;MAAA,IAAXzF,IAAW,uEAAJ,EAAI,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,MAAA,CAAA,CAAA;;EACxB,IAAA,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;;EACA,IAAA,IAAIyF,GAAG,IAAI,QAAoBA,KAAAA,OAAAA,CAAAA,GAApB,CAAX,EAAoC;EAChCzF,MAAAA,IAAI,GAAGyF,GAAP,CAAA;EACAA,MAAAA,GAAG,GAAG,IAAN,CAAA;EACH,KAAA;;EACD,IAAA,IAAIA,GAAJ,EAAS;EACLA,MAAAA,GAAG,GAAGkE,KAAK,CAAClE,GAAD,CAAX,CAAA;EACAzF,MAAAA,IAAI,CAACkE,QAAL,GAAgBuB,GAAG,CAACyE,IAApB,CAAA;EACAlK,MAAAA,IAAI,CAACoE,MAAL,GAAcqB,GAAG,CAAChI,QAAJ,KAAiB,OAAjB,IAA4BgI,GAAG,CAAChI,QAAJ,KAAiB,KAA3D,CAAA;EACAuC,MAAAA,IAAI,CAACgE,IAAL,GAAYyB,GAAG,CAACzB,IAAhB,CAAA;QACA,IAAIyB,GAAG,CAACnE,KAAR,EACItB,IAAI,CAACsB,KAAL,GAAamE,GAAG,CAACnE,KAAjB,CAAA;EACP,KAPD,MAQK,IAAItB,IAAI,CAACkK,IAAT,EAAe;QAChBlK,IAAI,CAACkE,QAAL,GAAgByF,KAAK,CAAC3J,IAAI,CAACkK,IAAN,CAAL,CAAiBA,IAAjC,CAAA;EACH,KAAA;;MACDnK,qBAAqB,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAOC,IAAP,CAArB,CAAA;EACA,IAAA,KAAA,CAAKoE,MAAL,GACI,IAAA,IAAQpE,IAAI,CAACoE,MAAb,GACMpE,IAAI,CAACoE,MADX,GAEM,OAAON,QAAP,KAAoB,WAApB,IAAmC,QAAaA,KAAAA,QAAQ,CAACrG,QAHnE,CAAA;;MAIA,IAAIuC,IAAI,CAACkE,QAAL,IAAiB,CAAClE,IAAI,CAACgE,IAA3B,EAAiC;EAC7B;QACAhE,IAAI,CAACgE,IAAL,GAAY,KAAA,CAAKI,MAAL,GAAc,KAAd,GAAsB,IAAlC,CAAA;EACH,KAAA;;EACD,IAAA,KAAA,CAAKF,QAAL,GACIlE,IAAI,CAACkE,QAAL,KACK,OAAOJ,QAAP,KAAoB,WAApB,GAAkCA,QAAQ,CAACI,QAA3C,GAAsD,WAD3D,CADJ,CAAA;MAGA,KAAKF,CAAAA,IAAL,GACIhE,IAAI,CAACgE,IAAL,KACK,OAAOF,QAAP,KAAoB,WAApB,IAAmCA,QAAQ,CAACE,IAA5C,GACKF,QAAQ,CAACE,IADd,GAEK,KAAKI,CAAAA,MAAL,GACI,KADJ,GAEI,IALd,CADJ,CAAA;MAOA,KAAKmF,CAAAA,UAAL,GAAkBvJ,IAAI,CAACuJ,UAAL,IAAmB,CAAC,SAAD,EAAY,WAAZ,CAArC,CAAA;MACA,KAAKhI,CAAAA,UAAL,GAAkB,EAAlB,CAAA;MACA,KAAKsJ,CAAAA,WAAL,GAAmB,EAAnB,CAAA;MACA,KAAKC,CAAAA,aAAL,GAAqB,CAArB,CAAA;MACA,KAAK9K,CAAAA,IAAL,GAAY,QAAc,CAAA;EACtBuF,MAAAA,IAAI,EAAE,YADgB;EAEtBwF,MAAAA,KAAK,EAAE,KAFe;EAGtBvE,MAAAA,eAAe,EAAE,KAHK;EAItBwE,MAAAA,OAAO,EAAE,IAJa;EAKtBhG,MAAAA,cAAc,EAAE,GALM;EAMtBiG,MAAAA,eAAe,EAAE,KANK;EAOtBC,MAAAA,kBAAkB,EAAE,IAPE;EAQtBC,MAAAA,iBAAiB,EAAE;EACfC,QAAAA,SAAS,EAAE,IAAA;SATO;EAWtBC,MAAAA,gBAAgB,EAAE,EAXI;EAYtBC,MAAAA,mBAAmB,EAAE,IAAA;OAZb,EAaTtL,IAbS,CAAZ,CAAA;EAcA,IAAA,KAAA,CAAKA,IAAL,CAAUuF,IAAV,GAAiB,MAAKvF,IAAL,CAAUuF,IAAV,CAAeuE,OAAf,CAAuB,KAAvB,EAA8B,EAA9B,IAAoC,GAArD,CAAA;;EACA,IAAA,IAAI,OAAO,KAAK9J,CAAAA,IAAL,CAAUsB,KAAjB,KAA2B,QAA/B,EAAyC;QACrC,KAAKtB,CAAAA,IAAL,CAAUsB,KAAV,GAAkB/F,MAAM,CAAC,KAAKyE,CAAAA,IAAL,CAAUsB,KAAX,CAAxB,CAAA;EACH,KAzDuB;;;MA2DxB,KAAKiK,CAAAA,EAAL,GAAU,IAAV,CAAA;MACA,KAAKC,CAAAA,QAAL,GAAgB,IAAhB,CAAA;MACA,KAAKC,CAAAA,YAAL,GAAoB,IAApB,CAAA;EACA,IAAA,KAAA,CAAKC,WAAL,GAAmB,IAAnB,CA9DwB;;MAgExB,KAAKC,CAAAA,gBAAL,GAAwB,IAAxB,CAAA;;EACA,IAAA,IAAI,OAAO9N,gBAAP,KAA4B,UAAhC,EAA4C;EACxC,MAAA,IAAI,KAAKmC,CAAAA,IAAL,CAAUsL,mBAAd,EAAmC;EAC/B;EACA;EACA;UACA,KAAKM,CAAAA,yBAAL,GAAiC,YAAM;YACnC,IAAI,KAAA,CAAKC,SAAT,EAAoB;EAChB;cACA,KAAKA,CAAAA,SAAL,CAAevN,kBAAf,EAAA,CAAA;;cACA,KAAKuN,CAAAA,SAAL,CAAejH,KAAf,EAAA,CAAA;EACH,WAAA;WALL,CAAA;;EAOA/G,QAAAA,gBAAgB,CAAC,cAAD,EAAiB,MAAK+N,yBAAtB,EAAiD,KAAjD,CAAhB,CAAA;EACH,OAAA;;EACD,MAAA,IAAI,KAAK1H,CAAAA,QAAL,KAAkB,WAAtB,EAAmC;UAC/B,KAAK4H,CAAAA,oBAAL,GAA4B,YAAM;YAC9B,KAAKnK,CAAAA,OAAL,CAAa,iBAAb,EAAgC;EAC5BV,YAAAA,WAAW,EAAE,yBAAA;aADjB,CAAA,CAAA;WADJ,CAAA;;EAKApD,QAAAA,gBAAgB,CAAC,SAAD,EAAY,MAAKiO,oBAAjB,EAAuC,KAAvC,CAAhB,CAAA;EACH,OAAA;EACJ,KAAA;;EACD,IAAA,KAAA,CAAK1F,IAAL,EAAA,CAAA;;EAxFwB,IAAA,OAAA,KAAA,CAAA;EAyF3B,GAAA;EACD;EACJ;EACA;EACA;EACA;EACA;EACA;;;EAxGA,EAAA,YAAA,CAAA,MAAA,EAAA,CAAA;EAAA,IAAA,GAAA,EAAA,iBAAA;MAAA,KAyGI,EAAA,SAAA,eAAA,CAAgB2F,IAAhB,EAAsB;QAClB,IAAMzK,KAAK,GAAG,QAAA,CAAc,EAAd,EAAkB,IAAKtB,CAAAA,IAAL,CAAUsB,KAA5B,CAAd,CADkB;;;EAGlBA,MAAAA,KAAK,CAAC0K,GAAN,GAAYvO,UAAZ,CAHkB;;EAKlB6D,MAAAA,KAAK,CAACuK,SAAN,GAAkBE,IAAlB,CALkB;;QAOlB,IAAI,IAAA,CAAKR,EAAT,EACIjK,KAAK,CAAC2D,GAAN,GAAY,KAAKsG,EAAjB,CAAA;;EACJ,MAAA,IAAMvL,IAAI,GAAG,QAAc,CAAA,EAAd,EAAkB,IAAKA,CAAAA,IAAL,CAAUqL,gBAAV,CAA2BU,IAA3B,CAAlB,EAAoD,IAAA,CAAK/L,IAAzD,EAA+D;EACxEsB,QAAAA,KAAK,EAALA,KADwE;EAExEE,QAAAA,MAAM,EAAE,IAFgE;UAGxE0C,QAAQ,EAAE,KAAKA,QAHyD;UAIxEE,MAAM,EAAE,KAAKA,MAJ2D;EAKxEJ,QAAAA,IAAI,EAAE,IAAKA,CAAAA,IAAAA;EAL6D,OAA/D,CAAb,CAAA;;EAOA,MAAA,OAAO,IAAIuF,UAAU,CAACwC,IAAD,CAAd,CAAqB/L,IAArB,CAAP,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;;EA/HA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,MAAA;EAAA,IAAA,KAAA,EAgII,SAAO,IAAA,GAAA;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;;EACH,MAAA,IAAI6L,SAAJ,CAAA;;EACA,MAAA,IAAI,KAAK7L,IAAL,CAAUiL,eAAV,IACAL,MAAM,CAACqB,qBADP,IAEA,IAAK1C,CAAAA,UAAL,CAAgBjE,OAAhB,CAAwB,WAAxB,CAAyC,KAAA,CAAC,CAF9C,EAEiD;EAC7CuG,QAAAA,SAAS,GAAG,WAAZ,CAAA;EACH,OAJD,MAKK,IAAI,CAAA,KAAM,KAAKtC,UAAL,CAAgBlO,MAA1B,EAAkC;EACnC;UACA,IAAK6E,CAAAA,YAAL,CAAkB,YAAM;EACpB,UAAA,MAAI,CAACpB,YAAL,CAAkB,OAAlB,EAA2B,yBAA3B,CAAA,CAAA;EACH,SAFD,EAEG,CAFH,CAAA,CAAA;EAGA,QAAA,OAAA;EACH,OANI,MAOA;EACD+M,QAAAA,SAAS,GAAG,IAAA,CAAKtC,UAAL,CAAgB,CAAhB,CAAZ,CAAA;EACH,OAAA;;EACD,MAAA,IAAA,CAAKhI,UAAL,GAAkB,SAAlB,CAjBG;;QAmBH,IAAI;EACAsK,QAAAA,SAAS,GAAG,IAAA,CAAKK,eAAL,CAAqBL,SAArB,CAAZ,CAAA;SADJ,CAGA,OAAOvI,CAAP,EAAU;UACN,IAAKiG,CAAAA,UAAL,CAAgB4C,KAAhB,EAAA,CAAA;EACA,QAAA,IAAA,CAAK/F,IAAL,EAAA,CAAA;EACA,QAAA,OAAA;EACH,OAAA;;EACDyF,MAAAA,SAAS,CAACzF,IAAV,EAAA,CAAA;QACA,IAAKgG,CAAAA,YAAL,CAAkBP,SAAlB,CAAA,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;;EAlKA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,cAAA;MAAA,KAmKI,EAAA,SAAA,YAAA,CAAaA,SAAb,EAAwB;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;;QACpB,IAAI,IAAA,CAAKA,SAAT,EAAoB;UAChB,IAAKA,CAAAA,SAAL,CAAevN,kBAAf,EAAA,CAAA;EACH,OAHmB;;;EAKpB,MAAA,IAAA,CAAKuN,SAAL,GAAiBA,SAAjB,CALoB;;EAOpBA,MAAAA,SAAS,CACJjO,EADL,CACQ,OADR,EACiB,IAAA,CAAKyO,OAAL,CAAalM,IAAb,CAAkB,IAAlB,CADjB,EAEKvC,EAFL,CAEQ,QAFR,EAEkB,IAAA,CAAKiE,QAAL,CAAc1B,IAAd,CAAmB,IAAnB,CAFlB,CAGKvC,CAAAA,EAHL,CAGQ,OAHR,EAGiB,KAAKkI,OAAL,CAAa3F,IAAb,CAAkB,IAAlB,CAHjB,CAIKvC,CAAAA,EAJL,CAIQ,OAJR,EAIiB,UAAAoD,MAAM,EAAA;EAAA,QAAA,OAAI,MAAI,CAACW,OAAL,CAAa,iBAAb,EAAgCX,MAAhC,CAAJ,CAAA;SAJvB,CAAA,CAAA;EAKH,KAAA;EACD;EACJ;EACA;EACA;EACA;EACA;;EArLA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,OAAA;MAAA,KAsLI,EAAA,SAAA,KAAA,CAAM+K,IAAN,EAAY;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;;EACR,MAAA,IAAIF,SAAS,GAAG,IAAA,CAAKK,eAAL,CAAqBH,IAArB,CAAhB,CAAA;QACA,IAAIO,MAAM,GAAG,KAAb,CAAA;QACA1B,MAAM,CAACqB,qBAAP,GAA+B,KAA/B,CAAA;;EACA,MAAA,IAAMM,eAAe,GAAG,SAAlBA,eAAkB,GAAM;EAC1B,QAAA,IAAID,MAAJ,EACI,OAAA;UACJT,SAAS,CAAC/E,IAAV,CAAe,CAAC;EAAEpN,UAAAA,IAAI,EAAE,MAAR;EAAgBC,UAAAA,IAAI,EAAE,OAAA;EAAtB,SAAD,CAAf,CAAA,CAAA;EACAkS,QAAAA,SAAS,CAAC5N,IAAV,CAAe,QAAf,EAAyB,UAAAuO,GAAG,EAAI;EAC5B,UAAA,IAAIF,MAAJ,EACI,OAAA;;YACJ,IAAI,MAAA,KAAWE,GAAG,CAAC9S,IAAf,IAAuB,OAAY8S,KAAAA,GAAG,CAAC7S,IAA3C,EAAiD;cAC7C,MAAI,CAAC8S,SAAL,GAAiB,IAAjB,CAAA;;EACA,YAAA,MAAI,CAAC3N,YAAL,CAAkB,WAAlB,EAA+B+M,SAA/B,CAAA,CAAA;;cACA,IAAI,CAACA,SAAL,EACI,OAAA;EACJjB,YAAAA,MAAM,CAACqB,qBAAP,GAA+B,WAAgBJ,KAAAA,SAAS,CAACE,IAAzD,CAAA;;EACA,YAAA,MAAI,CAACF,SAAL,CAAerH,KAAf,CAAqB,YAAM;EACvB,cAAA,IAAI8H,MAAJ,EACI,OAAA;EACJ,cAAA,IAAI,QAAa,KAAA,MAAI,CAAC/K,UAAtB,EACI,OAAA;gBACJ4F,OAAO,EAAA,CAAA;;gBACP,MAAI,CAACiF,YAAL,CAAkBP,SAAlB,CAAA,CAAA;;gBACAA,SAAS,CAAC/E,IAAV,CAAe,CAAC;EAAEpN,gBAAAA,IAAI,EAAE,SAAA;EAAR,eAAD,CAAf,CAAA,CAAA;;EACA,cAAA,MAAI,CAACoF,YAAL,CAAkB,SAAlB,EAA6B+M,SAA7B,CAAA,CAAA;;EACAA,cAAAA,SAAS,GAAG,IAAZ,CAAA;gBACA,MAAI,CAACY,SAAL,GAAiB,KAAjB,CAAA;;EACA,cAAA,MAAI,CAACC,KAAL,EAAA,CAAA;eAXJ,CAAA,CAAA;EAaH,WAnBD,MAoBK;cACD,IAAMxJ,GAAG,GAAG,IAAI/B,KAAJ,CAAU,aAAV,CAAZ,CADC;;EAGD+B,YAAAA,GAAG,CAAC2I,SAAJ,GAAgBA,SAAS,CAACE,IAA1B,CAAA;;EACA,YAAA,MAAI,CAACjN,YAAL,CAAkB,cAAlB,EAAkCoE,GAAlC,CAAA,CAAA;EACH,WAAA;WA5BL,CAAA,CAAA;SAJJ,CAAA;;EAmCA,MAAA,SAASyJ,eAAT,GAA2B;UACvB,IAAIL,MAAJ,EACI,OAFmB;;EAIvBA,QAAAA,MAAM,GAAG,IAAT,CAAA;UACAnF,OAAO,EAAA,CAAA;EACP0E,QAAAA,SAAS,CAACjH,KAAV,EAAA,CAAA;EACAiH,QAAAA,SAAS,GAAG,IAAZ,CAAA;EACH,OA/CO;;;EAiDR,MAAA,IAAMxC,OAAO,GAAG,SAAVA,OAAU,CAAAnG,GAAG,EAAI;UACnB,IAAM0J,KAAK,GAAG,IAAIzL,KAAJ,CAAU,eAAkB+B,GAAAA,GAA5B,CAAd,CADmB;;EAGnB0J,QAAAA,KAAK,CAACf,SAAN,GAAkBA,SAAS,CAACE,IAA5B,CAAA;UACAY,eAAe,EAAA,CAAA;;EACf,QAAA,MAAI,CAAC7N,YAAL,CAAkB,cAAlB,EAAkC8N,KAAlC,CAAA,CAAA;SALJ,CAAA;;EAOA,MAAA,SAASC,gBAAT,GAA4B;UACxBxD,OAAO,CAAC,kBAAD,CAAP,CAAA;EACH,OA1DO;;;EA4DR,MAAA,SAASJ,OAAT,GAAmB;UACfI,OAAO,CAAC,eAAD,CAAP,CAAA;EACH,OA9DO;;;QAgER,SAASyD,SAAT,CAAmBC,EAAnB,EAAuB;UACnB,IAAIlB,SAAS,IAAIkB,EAAE,CAAChB,IAAH,KAAYF,SAAS,CAACE,IAAvC,EAA6C;YACzCY,eAAe,EAAA,CAAA;EAClB,SAAA;EACJ,OApEO;;;EAsER,MAAA,IAAMxF,OAAO,GAAG,SAAVA,OAAU,GAAM;EAClB0E,QAAAA,SAAS,CAACxN,cAAV,CAAyB,MAAzB,EAAiCkO,eAAjC,CAAA,CAAA;EACAV,QAAAA,SAAS,CAACxN,cAAV,CAAyB,OAAzB,EAAkCgL,OAAlC,CAAA,CAAA;EACAwC,QAAAA,SAAS,CAACxN,cAAV,CAAyB,OAAzB,EAAkCwO,gBAAlC,CAAA,CAAA;;EACA,QAAA,MAAI,CAAC3O,GAAL,CAAS,OAAT,EAAkB+K,OAAlB,CAAA,CAAA;;EACA,QAAA,MAAI,CAAC/K,GAAL,CAAS,WAAT,EAAsB4O,SAAtB,CAAA,CAAA;SALJ,CAAA;;EAOAjB,MAAAA,SAAS,CAAC5N,IAAV,CAAe,MAAf,EAAuBsO,eAAvB,CAAA,CAAA;EACAV,MAAAA,SAAS,CAAC5N,IAAV,CAAe,OAAf,EAAwBoL,OAAxB,CAAA,CAAA;EACAwC,MAAAA,SAAS,CAAC5N,IAAV,CAAe,OAAf,EAAwB4O,gBAAxB,CAAA,CAAA;EACA,MAAA,IAAA,CAAK5O,IAAL,CAAU,OAAV,EAAmBgL,OAAnB,CAAA,CAAA;EACA,MAAA,IAAA,CAAKhL,IAAL,CAAU,WAAV,EAAuB6O,SAAvB,CAAA,CAAA;EACAjB,MAAAA,SAAS,CAACzF,IAAV,EAAA,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;;EA9QA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,QAAA;EAAA,IAAA,KAAA,EA+QI,SAAS,MAAA,GAAA;QACL,IAAK7E,CAAAA,UAAL,GAAkB,MAAlB,CAAA;EACAqJ,MAAAA,MAAM,CAACqB,qBAAP,GAA+B,gBAAgB,IAAKJ,CAAAA,SAAL,CAAeE,IAA9D,CAAA;QACA,IAAKjN,CAAAA,YAAL,CAAkB,MAAlB,CAAA,CAAA;QACA,IAAK4N,CAAAA,KAAL,GAJK;EAML;;EACA,MAAA,IAAI,MAAW,KAAA,IAAA,CAAKnL,UAAhB,IACA,IAAKvB,CAAAA,IAAL,CAAUgL,OADV,IAEA,IAAA,CAAKa,SAAL,CAAerH,KAFnB,EAE0B;UACtB,IAAIpJ,CAAC,GAAG,CAAR,CAAA;EACA,QAAA,IAAM0F,CAAC,GAAG,IAAK0K,CAAAA,QAAL,CAAcnQ,MAAxB,CAAA;;EACA,QAAA,OAAOD,CAAC,GAAG0F,CAAX,EAAc1F,CAAC,EAAf,EAAmB;EACf,UAAA,IAAA,CAAK4R,KAAL,CAAW,IAAA,CAAKxB,QAAL,CAAcpQ,CAAd,CAAX,CAAA,CAAA;EACH,SAAA;EACJ,OAAA;EACJ,KAAA;EACD;EACJ;EACA;EACA;EACA;;EApSA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,UAAA;MAAA,KAqSI,EAAA,SAAA,QAAA,CAAS+B,MAAT,EAAiB;QACb,IAAI,SAAA,KAAc,IAAKoE,CAAAA,UAAnB,IACA,MAAA,KAAW,IAAKA,CAAAA,UADhB,IAEA,SAAA,KAAc,IAAKA,CAAAA,UAFvB,EAEmC;EAC/B,QAAA,IAAA,CAAKzC,YAAL,CAAkB,QAAlB,EAA4B3B,MAA5B,EAD+B;;UAG/B,IAAK2B,CAAAA,YAAL,CAAkB,WAAlB,CAAA,CAAA;;UACA,QAAQ3B,MAAM,CAACzD,IAAf;EACI,UAAA,KAAK,MAAL;cACI,IAAKuT,CAAAA,WAAL,CAAiBC,IAAI,CAACvD,KAAL,CAAWxM,MAAM,CAACxD,IAAlB,CAAjB,CAAA,CAAA;EACA,YAAA,MAAA;;EACJ,UAAA,KAAK,MAAL;EACI,YAAA,IAAA,CAAKwT,gBAAL,EAAA,CAAA;cACA,IAAKC,CAAAA,UAAL,CAAgB,MAAhB,CAAA,CAAA;cACA,IAAKtO,CAAAA,YAAL,CAAkB,MAAlB,CAAA,CAAA;cACA,IAAKA,CAAAA,YAAL,CAAkB,MAAlB,CAAA,CAAA;EACA,YAAA,MAAA;;EACJ,UAAA,KAAK,OAAL;cACI,IAAMoE,GAAG,GAAG,IAAI/B,KAAJ,CAAU,cAAV,CAAZ,CADJ;;EAGI+B,YAAAA,GAAG,CAACmK,IAAJ,GAAWlQ,MAAM,CAACxD,IAAlB,CAAA;cACA,IAAKmM,CAAAA,OAAL,CAAa5C,GAAb,CAAA,CAAA;EACA,YAAA,MAAA;;EACJ,UAAA,KAAK,SAAL;EACI,YAAA,IAAA,CAAKpE,YAAL,CAAkB,MAAlB,EAA0B3B,MAAM,CAACxD,IAAjC,CAAA,CAAA;EACA,YAAA,IAAA,CAAKmF,YAAL,CAAkB,SAAlB,EAA6B3B,MAAM,CAACxD,IAApC,CAAA,CAAA;EACA,YAAA,MAAA;EAnBR,SAAA;EAqBH,OAEA;EACJ,KAAA;EACD;EACJ;EACA;EACA;EACA;EACA;;EA1UA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,aAAA;MAAA,KA2UI,EAAA,SAAA,WAAA,CAAYA,IAAZ,EAAkB;EACd,MAAA,IAAA,CAAKmF,YAAL,CAAkB,WAAlB,EAA+BnF,IAA/B,CAAA,CAAA;EACA,MAAA,IAAA,CAAK4R,EAAL,GAAU5R,IAAI,CAACsL,GAAf,CAAA;QACA,IAAK4G,CAAAA,SAAL,CAAevK,KAAf,CAAqB2D,GAArB,GAA2BtL,IAAI,CAACsL,GAAhC,CAAA;QACA,IAAKuG,CAAAA,QAAL,GAAgB,IAAK8B,CAAAA,cAAL,CAAoB3T,IAAI,CAAC6R,QAAzB,CAAhB,CAAA;EACA,MAAA,IAAA,CAAKC,YAAL,GAAoB9R,IAAI,CAAC8R,YAAzB,CAAA;EACA,MAAA,IAAA,CAAKC,WAAL,GAAmB/R,IAAI,CAAC+R,WAAxB,CAAA;EACA,MAAA,IAAA,CAAK6B,UAAL,GAAkB5T,IAAI,CAAC4T,UAAvB,CAAA;QACA,IAAK5I,CAAAA,MAAL,GARc;;QAUd,IAAI,QAAA,KAAa,IAAKpD,CAAAA,UAAtB,EACI,OAAA;EACJ,MAAA,IAAA,CAAK4L,gBAAL,EAAA,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;;EA7VA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,kBAAA;EAAA,IAAA,KAAA,EA8VI,SAAmB,gBAAA,GAAA;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;;QACf,IAAK9M,CAAAA,cAAL,CAAoB,IAAA,CAAKsL,gBAAzB,CAAA,CAAA;EACA,MAAA,IAAA,CAAKA,gBAAL,GAAwB,IAAKzL,CAAAA,YAAL,CAAkB,YAAM;UAC5C,MAAI,CAACyB,OAAL,CAAa,cAAb,CAAA,CAAA;EACH,OAFuB,EAErB,IAAK8J,CAAAA,YAAL,GAAoB,IAAA,CAAKC,WAFJ,CAAxB,CAAA;;EAGA,MAAA,IAAI,IAAK1L,CAAAA,IAAL,CAAU8I,SAAd,EAAyB;UACrB,IAAK6C,CAAAA,gBAAL,CAAsB3C,KAAtB,EAAA,CAAA;EACH,OAAA;EACJ,KAAA;EACD;EACJ;EACA;EACA;EACA;;EA3WA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,SAAA;EAAA,IAAA,KAAA,EA4WI,SAAU,OAAA,GAAA;QACN,IAAK6B,CAAAA,WAAL,CAAiBnM,MAAjB,CAAwB,CAAxB,EAA2B,IAAA,CAAKoM,aAAhC,CAAA,CADM;EAGN;EACA;;QACA,IAAKA,CAAAA,aAAL,GAAqB,CAArB,CAAA;;EACA,MAAA,IAAI,CAAM,KAAA,IAAA,CAAKD,WAAL,CAAiBxP,MAA3B,EAAmC;UAC/B,IAAKyD,CAAAA,YAAL,CAAkB,OAAlB,CAAA,CAAA;EACH,OAFD,MAGK;EACD,QAAA,IAAA,CAAK4N,KAAL,EAAA,CAAA;EACH,OAAA;EACJ,KAAA;EACD;EACJ;EACA;EACA;EACA;;EA7XA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,OAAA;EAAA,IAAA,KAAA,EA8XI,SAAQ,KAAA,GAAA;EACJ,MAAA,IAAI,aAAa,IAAKnL,CAAAA,UAAlB,IACA,IAAA,CAAKsK,SAAL,CAAexK,QADf,IAEA,CAAC,KAAKoL,SAFN,IAGA,KAAK5B,WAAL,CAAiBxP,MAHrB,EAG6B;EACzB,QAAA,IAAM0B,OAAO,GAAG,IAAKyQ,CAAAA,kBAAL,EAAhB,CAAA;EACA,QAAA,IAAA,CAAK3B,SAAL,CAAe/E,IAAf,CAAoB/J,OAApB,EAFyB;EAIzB;;EACA,QAAA,IAAA,CAAK+N,aAAL,GAAqB/N,OAAO,CAAC1B,MAA7B,CAAA;UACA,IAAKyD,CAAAA,YAAL,CAAkB,OAAlB,CAAA,CAAA;EACH,OAAA;EACJ,KAAA;EACD;EACJ;EACA;EACA;EACA;EACA;;EAhZA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,oBAAA;EAAA,IAAA,KAAA,EAiZI,SAAqB,kBAAA,GAAA;EACjB,MAAA,IAAM2O,sBAAsB,GAAG,IAAA,CAAKF,UAAL,IAC3B,KAAK1B,SAAL,CAAeE,IAAf,KAAwB,SADG,IAE3B,IAAA,CAAKlB,WAAL,CAAiBxP,MAAjB,GAA0B,CAF9B,CAAA;;QAGA,IAAI,CAACoS,sBAAL,EAA6B;EACzB,QAAA,OAAO,KAAK5C,WAAZ,CAAA;EACH,OAAA;;EACD,MAAA,IAAI6C,WAAW,GAAG,CAAlB,CAPiB;;EAQjB,MAAA,KAAK,IAAItS,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAKyP,CAAAA,WAAL,CAAiBxP,MAArC,EAA6CD,CAAC,EAA9C,EAAkD;EAC9C,QAAA,IAAMzB,IAAI,GAAG,IAAA,CAAKkR,WAAL,CAAiBzP,CAAjB,EAAoBzB,IAAjC,CAAA;;EACA,QAAA,IAAIA,IAAJ,EAAU;EACN+T,UAAAA,WAAW,IAAInN,UAAU,CAAC5G,IAAD,CAAzB,CAAA;EACH,SAAA;;UACD,IAAIyB,CAAC,GAAG,CAAJ,IAASsS,WAAW,GAAG,IAAA,CAAKH,UAAhC,EAA4C;YACxC,OAAO,IAAA,CAAK1C,WAAL,CAAiBhM,KAAjB,CAAuB,CAAvB,EAA0BzD,CAA1B,CAAP,CAAA;EACH,SAAA;;UACDsS,WAAW,IAAI,CAAf,CAR8C;EASjD,OAAA;;EACD,MAAA,OAAO,KAAK7C,WAAZ,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EA7aA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,OAAA;EAAA,IAAA,KAAA,EA8aI,eAAM2B,GAAN,EAAWmB,OAAX,EAAoB5P,EAApB,EAAwB;QACpB,IAAKqP,CAAAA,UAAL,CAAgB,SAAhB,EAA2BZ,GAA3B,EAAgCmB,OAAhC,EAAyC5P,EAAzC,CAAA,CAAA;EACA,MAAA,OAAO,IAAP,CAAA;EACH,KAAA;EAjbL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,MAAA;EAAA,IAAA,KAAA,EAkbI,cAAKyO,GAAL,EAAUmB,OAAV,EAAmB5P,EAAnB,EAAuB;QACnB,IAAKqP,CAAAA,UAAL,CAAgB,SAAhB,EAA2BZ,GAA3B,EAAgCmB,OAAhC,EAAyC5P,EAAzC,CAAA,CAAA;EACA,MAAA,OAAO,IAAP,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EA9bA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,YAAA;MAAA,KA+bI,EAAA,SAAA,UAAA,CAAWrE,IAAX,EAAiBC,IAAjB,EAAuBgU,OAAvB,EAAgC5P,EAAhC,EAAoC;QAChC,IAAI,UAAA,KAAe,OAAOpE,IAA1B,EAAgC;EAC5BoE,QAAAA,EAAE,GAAGpE,IAAL,CAAA;EACAA,QAAAA,IAAI,GAAGuM,SAAP,CAAA;EACH,OAAA;;QACD,IAAI,UAAA,KAAe,OAAOyH,OAA1B,EAAmC;EAC/B5P,QAAAA,EAAE,GAAG4P,OAAL,CAAA;EACAA,QAAAA,OAAO,GAAG,IAAV,CAAA;EACH,OAAA;;EACD,MAAA,IAAI,cAAc,IAAKpM,CAAAA,UAAnB,IAAiC,QAAa,KAAA,IAAA,CAAKA,UAAvD,EAAmE;EAC/D,QAAA,OAAA;EACH,OAAA;;QACDoM,OAAO,GAAGA,OAAO,IAAI,EAArB,CAAA;EACAA,MAAAA,OAAO,CAACC,QAAR,GAAmB,KAAUD,KAAAA,OAAO,CAACC,QAArC,CAAA;EACA,MAAA,IAAMzQ,MAAM,GAAG;EACXzD,QAAAA,IAAI,EAAEA,IADK;EAEXC,QAAAA,IAAI,EAAEA,IAFK;EAGXgU,QAAAA,OAAO,EAAEA,OAAAA;SAHb,CAAA;EAKA,MAAA,IAAA,CAAK7O,YAAL,CAAkB,cAAlB,EAAkC3B,MAAlC,CAAA,CAAA;EACA,MAAA,IAAA,CAAK0N,WAAL,CAAiBrN,IAAjB,CAAsBL,MAAtB,CAAA,CAAA;EACA,MAAA,IAAIY,EAAJ,EACI,IAAA,CAAKE,IAAL,CAAU,OAAV,EAAmBF,EAAnB,CAAA,CAAA;EACJ,MAAA,IAAA,CAAK2O,KAAL,EAAA,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;;EA5dA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,OAAA;EAAA,IAAA,KAAA,EA6dI,SAAQ,KAAA,GAAA;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;;EACJ,MAAA,IAAM9H,KAAK,GAAG,SAARA,KAAQ,GAAM;UAChB,MAAI,CAACjD,OAAL,CAAa,cAAb,CAAA,CAAA;;UACA,MAAI,CAACkK,SAAL,CAAejH,KAAf,EAAA,CAAA;SAFJ,CAAA;;EAIA,MAAA,IAAMiJ,eAAe,GAAG,SAAlBA,eAAkB,GAAM;EAC1B,QAAA,MAAI,CAAC3P,GAAL,CAAS,SAAT,EAAoB2P,eAApB,CAAA,CAAA;;EACA,QAAA,MAAI,CAAC3P,GAAL,CAAS,cAAT,EAAyB2P,eAAzB,CAAA,CAAA;;UACAjJ,KAAK,EAAA,CAAA;SAHT,CAAA;;EAKA,MAAA,IAAMkJ,cAAc,GAAG,SAAjBA,cAAiB,GAAM;EACzB;EACA,QAAA,MAAI,CAAC7P,IAAL,CAAU,SAAV,EAAqB4P,eAArB,CAAA,CAAA;;EACA,QAAA,MAAI,CAAC5P,IAAL,CAAU,cAAV,EAA0B4P,eAA1B,CAAA,CAAA;SAHJ,CAAA;;EAKA,MAAA,IAAI,cAAc,IAAKtM,CAAAA,UAAnB,IAAiC,MAAW,KAAA,IAAA,CAAKA,UAArD,EAAiE;UAC7D,IAAKA,CAAAA,UAAL,GAAkB,SAAlB,CAAA;;EACA,QAAA,IAAI,IAAKsJ,CAAAA,WAAL,CAAiBxP,MAArB,EAA6B;EACzB,UAAA,IAAA,CAAK4C,IAAL,CAAU,OAAV,EAAmB,YAAM;cACrB,IAAI,MAAI,CAACwO,SAAT,EAAoB;gBAChBqB,cAAc,EAAA,CAAA;EACjB,aAFD,MAGK;gBACDlJ,KAAK,EAAA,CAAA;EACR,aAAA;aANL,CAAA,CAAA;EAQH,SATD,MAUK,IAAI,IAAK6H,CAAAA,SAAT,EAAoB;YACrBqB,cAAc,EAAA,CAAA;EACjB,SAFI,MAGA;YACDlJ,KAAK,EAAA,CAAA;EACR,SAAA;EACJ,OAAA;;EACD,MAAA,OAAO,IAAP,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;;EArgBA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,SAAA;MAAA,KAsgBI,EAAA,SAAA,OAAA,CAAQ1B,GAAR,EAAa;QACT0H,MAAM,CAACqB,qBAAP,GAA+B,KAA/B,CAAA;EACA,MAAA,IAAA,CAAKnN,YAAL,CAAkB,OAAlB,EAA2BoE,GAA3B,CAAA,CAAA;EACA,MAAA,IAAA,CAAKvB,OAAL,CAAa,iBAAb,EAAgCuB,GAAhC,CAAA,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;;EA/gBA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,SAAA;EAAA,IAAA,KAAA,EAghBI,SAAQlC,OAAAA,CAAAA,MAAR,EAAgBC,WAAhB,EAA6B;QACzB,IAAI,SAAA,KAAc,IAAKM,CAAAA,UAAnB,IACA,MAAA,KAAW,IAAKA,CAAAA,UADhB,IAEA,SAAA,KAAc,IAAKA,CAAAA,UAFvB,EAEmC;EAC/B;EACA,QAAA,IAAA,CAAKlB,cAAL,CAAoB,IAAKsL,CAAAA,gBAAzB,EAF+B;;EAI/B,QAAA,IAAA,CAAKE,SAAL,CAAevN,kBAAf,CAAkC,OAAlC,EAJ+B;;EAM/B,QAAA,IAAA,CAAKuN,SAAL,CAAejH,KAAf,EAAA,CAN+B;;UAQ/B,IAAKiH,CAAAA,SAAL,CAAevN,kBAAf,EAAA,CAAA;;EACA,QAAA,IAAI,OAAOC,mBAAP,KAA+B,UAAnC,EAA+C;EAC3CA,UAAAA,mBAAmB,CAAC,cAAD,EAAiB,KAAKqN,yBAAtB,EAAiD,KAAjD,CAAnB,CAAA;EACArN,UAAAA,mBAAmB,CAAC,SAAD,EAAY,KAAKuN,oBAAjB,EAAuC,KAAvC,CAAnB,CAAA;EACH,SAZ8B;;;EAc/B,QAAA,IAAA,CAAKvK,UAAL,GAAkB,QAAlB,CAd+B;;EAgB/B,QAAA,IAAA,CAAKgK,EAAL,GAAU,IAAV,CAhB+B;;UAkB/B,IAAKzM,CAAAA,YAAL,CAAkB,OAAlB,EAA2BkC,MAA3B,EAAmCC,WAAnC,EAlB+B;EAoB/B;;UACA,IAAK4J,CAAAA,WAAL,GAAmB,EAAnB,CAAA;UACA,IAAKC,CAAAA,aAAL,GAAqB,CAArB,CAAA;EACH,OAAA;EACJ,KAAA;EACD;EACJ;EACA;EACA;EACA;EACA;EACA;;EAljBA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,gBAAA;MAAA,KAmjBI,EAAA,SAAA,cAAA,CAAeU,QAAf,EAAyB;QACrB,IAAMuC,gBAAgB,GAAG,EAAzB,CAAA;QACA,IAAI3S,CAAC,GAAG,CAAR,CAAA;EACA,MAAA,IAAM4S,CAAC,GAAGxC,QAAQ,CAACnQ,MAAnB,CAAA;;EACA,MAAA,OAAOD,CAAC,GAAG4S,CAAX,EAAc5S,CAAC,EAAf,EAAmB;EACf,QAAA,IAAI,CAAC,IAAKmO,CAAAA,UAAL,CAAgBjE,OAAhB,CAAwBkG,QAAQ,CAACpQ,CAAD,CAAhC,CAAL,EACI2S,gBAAgB,CAACvQ,IAAjB,CAAsBgO,QAAQ,CAACpQ,CAAD,CAA9B,CAAA,CAAA;EACP,OAAA;;EACD,MAAA,OAAO2S,gBAAP,CAAA;EACH,KAAA;EA5jBL,GAAA,CAAA,CAAA,CAAA;;EAAA,EAAA,OAAA,MAAA,CAAA;EAAA,CAAA,CAA4BrQ,OAA5B,CAAA,CAAA;AA8jBAkN,UAAM,CAACnN,QAAP,GAAkBA,UAAlB;;AClkBwBmN,UAAM,CAACnN;;ECD/B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EACO,SAASwQ,GAAT,CAAaxI,GAAb,EAAkC;IAAA,IAAhBF,IAAgB,uEAAT,EAAS,CAAA;EAAA,EAAA,IAAL2I,GAAK,GAAA,SAAA,CAAA,MAAA,GAAA,CAAA,GAAA,SAAA,CAAA,CAAA,CAAA,GAAA,SAAA,CAAA;EACrC,EAAA,IAAI9T,GAAG,GAAGqL,GAAV,CADqC;;IAGrCyI,GAAG,GAAGA,GAAG,IAAK,OAAOpK,QAAP,KAAoB,WAApB,IAAmCA,QAAjD,CAAA;EACA,EAAA,IAAI,IAAQ2B,IAAAA,GAAZ,EACIA,GAAG,GAAGyI,GAAG,CAACzQ,QAAJ,GAAe,IAAf,GAAsByQ,GAAG,CAAChE,IAAhC,CALiC;;EAOrC,EAAA,IAAI,OAAOzE,GAAP,KAAe,QAAnB,EAA6B;EACzB,IAAA,IAAI,QAAQA,GAAG,CAACnJ,MAAJ,CAAW,CAAX,CAAZ,EAA2B;EACvB,MAAA,IAAI,QAAQmJ,GAAG,CAACnJ,MAAJ,CAAW,CAAX,CAAZ,EAA2B;EACvBmJ,QAAAA,GAAG,GAAGyI,GAAG,CAACzQ,QAAJ,GAAegI,GAArB,CAAA;EACH,OAFD,MAGK;EACDA,QAAAA,GAAG,GAAGyI,GAAG,CAAChE,IAAJ,GAAWzE,GAAjB,CAAA;EACH,OAAA;EACJ,KAAA;;EACD,IAAA,IAAI,CAAC,qBAAsB0I,CAAAA,IAAtB,CAA2B1I,GAA3B,CAAL,EAAsC;QAClC,IAAI,WAAA,KAAgB,OAAOyI,GAA3B,EAAgC;EAC5BzI,QAAAA,GAAG,GAAGyI,GAAG,CAACzQ,QAAJ,GAAe,IAAf,GAAsBgI,GAA5B,CAAA;EACH,OAFD,MAGK;UACDA,GAAG,GAAG,aAAaA,GAAnB,CAAA;EACH,OAAA;EACJ,KAhBwB;;;EAkBzBrL,IAAAA,GAAG,GAAGuP,KAAK,CAAClE,GAAD,CAAX,CAAA;EACH,GA1BoC;;;EA4BrC,EAAA,IAAI,CAACrL,GAAG,CAAC4J,IAAT,EAAe;EACX,IAAA,IAAI,cAAcmK,IAAd,CAAmB/T,GAAG,CAACqD,QAAvB,CAAJ,EAAsC;QAClCrD,GAAG,CAAC4J,IAAJ,GAAW,IAAX,CAAA;OADJ,MAGK,IAAI,cAAemK,CAAAA,IAAf,CAAoB/T,GAAG,CAACqD,QAAxB,CAAJ,EAAuC;QACxCrD,GAAG,CAAC4J,IAAJ,GAAW,KAAX,CAAA;EACH,KAAA;EACJ,GAAA;;EACD5J,EAAAA,GAAG,CAACmL,IAAJ,GAAWnL,GAAG,CAACmL,IAAJ,IAAY,GAAvB,CAAA;IACA,IAAMF,IAAI,GAAGjL,GAAG,CAAC8P,IAAJ,CAAS5E,OAAT,CAAiB,GAAjB,CAA0B,KAAA,CAAC,CAAxC,CAAA;EACA,EAAA,IAAM4E,IAAI,GAAG7E,IAAI,GAAG,MAAMjL,GAAG,CAAC8P,IAAV,GAAiB,GAApB,GAA0B9P,GAAG,CAAC8P,IAA/C,CAtCqC;;EAwCrC9P,EAAAA,GAAG,CAACmR,EAAJ,GAASnR,GAAG,CAACqD,QAAJ,GAAe,KAAf,GAAuByM,IAAvB,GAA8B,GAA9B,GAAoC9P,GAAG,CAAC4J,IAAxC,GAA+CuB,IAAxD,CAxCqC;;IA0CrCnL,GAAG,CAACgU,IAAJ,GACIhU,GAAG,CAACqD,QAAJ,GACI,KADJ,GAEIyM,IAFJ,IAGKgE,GAAG,IAAIA,GAAG,CAAClK,IAAJ,KAAa5J,GAAG,CAAC4J,IAAxB,GAA+B,EAA/B,GAAoC,GAAM5J,GAAAA,GAAG,CAAC4J,IAHnD,CADJ,CAAA;EAKA,EAAA,OAAO5J,GAAP,CAAA;EACH;;EC1DD,IAAMH,qBAAqB,GAAG,OAAOC,WAAP,KAAuB,UAArD,CAAA;;EACA,IAAMC,MAAM,GAAG,SAATA,MAAS,CAACC,GAAD,EAAS;EACpB,EAAA,OAAO,OAAOF,WAAW,CAACC,MAAnB,KAA8B,UAA9B,GACDD,WAAW,CAACC,MAAZ,CAAmBC,GAAnB,CADC,GAEDA,GAAG,CAACC,MAAJ,YAAsBH,WAF5B,CAAA;EAGH,CAJD,CAAA;;EAKA,IAAMH,QAAQ,GAAGZ,MAAM,CAACW,SAAP,CAAiBC,QAAlC,CAAA;EACA,IAAMH,cAAc,GAAG,OAAOC,IAAP,KAAgB,UAAhB,IAClB,OAAOA,IAAP,KAAgB,WAAhB,IACGE,QAAQ,CAACC,IAAT,CAAcH,IAAd,MAAwB,0BAFhC,CAAA;EAGA,IAAMwU,cAAc,GAAG,OAAOC,IAAP,KAAgB,UAAhB,IAClB,OAAOA,IAAP,KAAgB,WAAhB,IACGvU,QAAQ,CAACC,IAAT,CAAcsU,IAAd,MAAwB,0BAFhC,CAAA;EAGA;EACA;EACA;EACA;EACA;;EACO,SAASC,QAAT,CAAkBnU,GAAlB,EAAuB;IAC1B,OAASH,qBAAqB,KAAKG,GAAG,YAAYF,WAAf,IAA8BC,MAAM,CAACC,GAAD,CAAzC,CAAtB,IACHR,cAAc,IAAIQ,GAAG,YAAYP,IAD9B,IAEHwU,cAAc,IAAIjU,GAAG,YAAYkU,IAFtC,CAAA;EAGH,CAAA;EACM,SAASE,SAAT,CAAmBpU,GAAnB,EAAwBqU,MAAxB,EAAgC;EACnC,EAAA,IAAI,CAACrU,GAAD,IAAQ,QAAOA,GAAP,CAAA,KAAe,QAA3B,EAAqC;EACjC,IAAA,OAAO,KAAP,CAAA;EACH,GAAA;;EACD,EAAA,IAAI6C,KAAK,CAACyR,OAAN,CAActU,GAAd,CAAJ,EAAwB;EACpB,IAAA,KAAK,IAAIgB,CAAC,GAAG,CAAR,EAAW0F,CAAC,GAAG1G,GAAG,CAACiB,MAAxB,EAAgCD,CAAC,GAAG0F,CAApC,EAAuC1F,CAAC,EAAxC,EAA4C;EACxC,MAAA,IAAIoT,SAAS,CAACpU,GAAG,CAACgB,CAAD,CAAJ,CAAb,EAAuB;EACnB,QAAA,OAAO,IAAP,CAAA;EACH,OAAA;EACJ,KAAA;;EACD,IAAA,OAAO,KAAP,CAAA;EACH,GAAA;;EACD,EAAA,IAAImT,QAAQ,CAACnU,GAAD,CAAZ,EAAmB;EACf,IAAA,OAAO,IAAP,CAAA;EACH,GAAA;;EACD,EAAA,IAAIA,GAAG,CAACqU,MAAJ,IACA,OAAOrU,GAAG,CAACqU,MAAX,KAAsB,UADtB,IAEArQ,SAAS,CAAC/C,MAAV,KAAqB,CAFzB,EAE4B;MACxB,OAAOmT,SAAS,CAACpU,GAAG,CAACqU,MAAJ,EAAD,EAAe,IAAf,CAAhB,CAAA;EACH,GAAA;;EACD,EAAA,KAAK,IAAMjV,GAAX,IAAkBY,GAAlB,EAAuB;EACnB,IAAA,IAAIjB,MAAM,CAACW,SAAP,CAAiB4F,cAAjB,CAAgC1F,IAAhC,CAAqCI,GAArC,EAA0CZ,GAA1C,CAAA,IAAkDgV,SAAS,CAACpU,GAAG,CAACZ,GAAD,CAAJ,CAA/D,EAA2E;EACvE,MAAA,OAAO,IAAP,CAAA;EACH,KAAA;EACJ,GAAA;;EACD,EAAA,OAAO,KAAP,CAAA;EACH;;EChDD;EACA;EACA;EACA;EACA;EACA;EACA;;EACO,SAASmV,iBAAT,CAA2BxR,MAA3B,EAAmC;IACtC,IAAMyR,OAAO,GAAG,EAAhB,CAAA;EACA,EAAA,IAAMC,UAAU,GAAG1R,MAAM,CAACxD,IAA1B,CAAA;IACA,IAAMmV,IAAI,GAAG3R,MAAb,CAAA;IACA2R,IAAI,CAACnV,IAAL,GAAYoV,kBAAkB,CAACF,UAAD,EAAaD,OAAb,CAA9B,CAAA;EACAE,EAAAA,IAAI,CAACE,WAAL,GAAmBJ,OAAO,CAACvT,MAA3B,CALsC;;IAMtC,OAAO;EAAE8B,IAAAA,MAAM,EAAE2R,IAAV;EAAgBF,IAAAA,OAAO,EAAEA,OAAAA;KAAhC,CAAA;EACH,CAAA;;EACD,SAASG,kBAAT,CAA4BpV,IAA5B,EAAkCiV,OAAlC,EAA2C;EACvC,EAAA,IAAI,CAACjV,IAAL,EACI,OAAOA,IAAP,CAAA;;EACJ,EAAA,IAAI4U,QAAQ,CAAC5U,IAAD,CAAZ,EAAoB;EAChB,IAAA,IAAMsV,WAAW,GAAG;EAAEC,MAAAA,YAAY,EAAE,IAAhB;QAAsB9M,GAAG,EAAEwM,OAAO,CAACvT,MAAAA;OAAvD,CAAA;MACAuT,OAAO,CAACpR,IAAR,CAAa7D,IAAb,CAAA,CAAA;EACA,IAAA,OAAOsV,WAAP,CAAA;KAHJ,MAKK,IAAIhS,KAAK,CAACyR,OAAN,CAAc/U,IAAd,CAAJ,EAAyB;MAC1B,IAAMwV,OAAO,GAAG,IAAIlS,KAAJ,CAAUtD,IAAI,CAAC0B,MAAf,CAAhB,CAAA;;EACA,IAAA,KAAK,IAAID,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGzB,IAAI,CAAC0B,MAAzB,EAAiCD,CAAC,EAAlC,EAAsC;EAClC+T,MAAAA,OAAO,CAAC/T,CAAD,CAAP,GAAa2T,kBAAkB,CAACpV,IAAI,CAACyB,CAAD,CAAL,EAAUwT,OAAV,CAA/B,CAAA;EACH,KAAA;;EACD,IAAA,OAAOO,OAAP,CAAA;EACH,GANI,MAOA,IAAI,OAAOxV,CAAAA,IAAP,CAAgB,KAAA,QAAhB,IAA4B,EAAEA,IAAI,YAAY8I,IAAlB,CAAhC,EAAyD;MAC1D,IAAM0M,QAAO,GAAG,EAAhB,CAAA;;EACA,IAAA,KAAK,IAAM3V,GAAX,IAAkBG,IAAlB,EAAwB;EACpB,MAAA,IAAIR,MAAM,CAACW,SAAP,CAAiB4F,cAAjB,CAAgC1F,IAAhC,CAAqCL,IAArC,EAA2CH,GAA3C,CAAJ,EAAqD;EACjD2V,QAAAA,QAAO,CAAC3V,GAAD,CAAP,GAAeuV,kBAAkB,CAACpV,IAAI,CAACH,GAAD,CAAL,EAAYoV,OAAZ,CAAjC,CAAA;EACH,OAAA;EACJ,KAAA;;EACD,IAAA,OAAOO,QAAP,CAAA;EACH,GAAA;;EACD,EAAA,OAAOxV,IAAP,CAAA;EACH,CAAA;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;EACO,SAASyV,iBAAT,CAA2BjS,MAA3B,EAAmCyR,OAAnC,EAA4C;IAC/CzR,MAAM,CAACxD,IAAP,GAAc0V,kBAAkB,CAAClS,MAAM,CAACxD,IAAR,EAAciV,OAAd,CAAhC,CAAA;EACAzR,EAAAA,MAAM,CAAC6R,WAAP,GAAqB9I,SAArB,CAF+C;;EAG/C,EAAA,OAAO/I,MAAP,CAAA;EACH,CAAA;;EACD,SAASkS,kBAAT,CAA4B1V,IAA5B,EAAkCiV,OAAlC,EAA2C;EACvC,EAAA,IAAI,CAACjV,IAAL,EACI,OAAOA,IAAP,CAAA;;EACJ,EAAA,IAAIA,IAAI,IAAIA,IAAI,CAACuV,YAAjB,EAA+B;EAC3B,IAAA,OAAON,OAAO,CAACjV,IAAI,CAACyI,GAAN,CAAd,CAD2B;KAA/B,MAGK,IAAInF,KAAK,CAACyR,OAAN,CAAc/U,IAAd,CAAJ,EAAyB;EAC1B,IAAA,KAAK,IAAIyB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGzB,IAAI,CAAC0B,MAAzB,EAAiCD,CAAC,EAAlC,EAAsC;EAClCzB,MAAAA,IAAI,CAACyB,CAAD,CAAJ,GAAUiU,kBAAkB,CAAC1V,IAAI,CAACyB,CAAD,CAAL,EAAUwT,OAAV,CAA5B,CAAA;EACH,KAAA;EACJ,GAJI,MAKA,IAAI,OAAA,CAAOjV,IAAP,CAAA,KAAgB,QAApB,EAA8B;EAC/B,IAAA,KAAK,IAAMH,GAAX,IAAkBG,IAAlB,EAAwB;EACpB,MAAA,IAAIR,MAAM,CAACW,SAAP,CAAiB4F,cAAjB,CAAgC1F,IAAhC,CAAqCL,IAArC,EAA2CH,GAA3C,CAAJ,EAAqD;EACjDG,QAAAA,IAAI,CAACH,GAAD,CAAJ,GAAY6V,kBAAkB,CAAC1V,IAAI,CAACH,GAAD,CAAL,EAAYoV,OAAZ,CAA9B,CAAA;EACH,OAAA;EACJ,KAAA;EACJ,GAAA;;EACD,EAAA,OAAOjV,IAAP,CAAA;EACH;;ECvED;EACA;EACA;EACA;EACA;;EACO,IAAM8D,QAAQ,GAAG,CAAjB,CAAA;EACA,IAAI6R,UAAJ,CAAA;;EACP,CAAC,UAAUA,UAAV,EAAsB;IACnBA,UAAU,CAACA,UAAU,CAAC,SAAD,CAAV,GAAwB,CAAzB,CAAV,GAAwC,SAAxC,CAAA;IACAA,UAAU,CAACA,UAAU,CAAC,YAAD,CAAV,GAA2B,CAA5B,CAAV,GAA2C,YAA3C,CAAA;IACAA,UAAU,CAACA,UAAU,CAAC,OAAD,CAAV,GAAsB,CAAvB,CAAV,GAAsC,OAAtC,CAAA;IACAA,UAAU,CAACA,UAAU,CAAC,KAAD,CAAV,GAAoB,CAArB,CAAV,GAAoC,KAApC,CAAA;IACAA,UAAU,CAACA,UAAU,CAAC,eAAD,CAAV,GAA8B,CAA/B,CAAV,GAA8C,eAA9C,CAAA;IACAA,UAAU,CAACA,UAAU,CAAC,cAAD,CAAV,GAA6B,CAA9B,CAAV,GAA6C,cAA7C,CAAA;IACAA,UAAU,CAACA,UAAU,CAAC,YAAD,CAAV,GAA2B,CAA5B,CAAV,GAA2C,YAA3C,CAAA;EACH,CARD,EAQGA,UAAU,KAAKA,UAAU,GAAG,EAAlB,CARb,CAAA,CAAA;EASA;EACA;EACA;;;EACA,IAAaC,OAAb,gBAAA,YAAA;EACI;EACJ;EACA;EACA;EACA;EACI,EAAA,SAAA,OAAA,CAAYC,QAAZ,EAAsB;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;MAClB,IAAKA,CAAAA,QAAL,GAAgBA,QAAhB,CAAA;EACH,GAAA;EACD;EACJ;EACA;EACA;EACA;EACA;;;EAdA,EAAA,YAAA,CAAA,OAAA,EAAA,CAAA;EAAA,IAAA,GAAA,EAAA,QAAA;MAAA,KAeI,EAAA,SAAA,MAAA,CAAOpV,GAAP,EAAY;EACR,MAAA,IAAIA,GAAG,CAACV,IAAJ,KAAa4V,UAAU,CAACG,KAAxB,IAAiCrV,GAAG,CAACV,IAAJ,KAAa4V,UAAU,CAACI,GAA7D,EAAkE;EAC9D,QAAA,IAAIlB,SAAS,CAACpU,GAAD,CAAb,EAAoB;EAChBA,UAAAA,GAAG,CAACV,IAAJ,GACIU,GAAG,CAACV,IAAJ,KAAa4V,UAAU,CAACG,KAAxB,GACMH,UAAU,CAACK,YADjB,GAEML,UAAU,CAACM,UAHrB,CAAA;EAIA,UAAA,OAAO,IAAKC,CAAAA,cAAL,CAAoBzV,GAApB,CAAP,CAAA;EACH,SAAA;EACJ,OAAA;;EACD,MAAA,OAAO,CAAC,IAAK0V,CAAAA,cAAL,CAAoB1V,GAApB,CAAD,CAAP,CAAA;EACH,KAAA;EACD;EACJ;EACA;;EA7BA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,gBAAA;MAAA,KA8BI,EAAA,SAAA,cAAA,CAAeA,GAAf,EAAoB;EAChB;EACA,MAAA,IAAIwG,GAAG,GAAG,EAAA,GAAKxG,GAAG,CAACV,IAAnB,CAFgB;;EAIhB,MAAA,IAAIU,GAAG,CAACV,IAAJ,KAAa4V,UAAU,CAACK,YAAxB,IACAvV,GAAG,CAACV,IAAJ,KAAa4V,UAAU,CAACM,UAD5B,EACwC;EACpChP,QAAAA,GAAG,IAAIxG,GAAG,CAAC4U,WAAJ,GAAkB,GAAzB,CAAA;EACH,OAPe;EAShB;;;QACA,IAAI5U,GAAG,CAAC2V,GAAJ,IAAW,QAAQ3V,GAAG,CAAC2V,GAA3B,EAAgC;EAC5BnP,QAAAA,GAAG,IAAIxG,GAAG,CAAC2V,GAAJ,GAAU,GAAjB,CAAA;EACH,OAZe;;;EAchB,MAAA,IAAI,IAAQ3V,IAAAA,GAAG,CAACmR,EAAhB,EAAoB;UAChB3K,GAAG,IAAIxG,GAAG,CAACmR,EAAX,CAAA;EACH,OAhBe;;;EAkBhB,MAAA,IAAI,IAAQnR,IAAAA,GAAG,CAACT,IAAhB,EAAsB;UAClBiH,GAAG,IAAIsM,IAAI,CAAC8C,SAAL,CAAe5V,GAAG,CAACT,IAAnB,EAAyB,IAAK6V,CAAAA,QAA9B,CAAP,CAAA;EACH,OAAA;;EACD,MAAA,OAAO5O,GAAP,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;;EAzDA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,gBAAA;MAAA,KA0DI,EAAA,SAAA,cAAA,CAAexG,GAAf,EAAoB;EAChB,MAAA,IAAM6V,cAAc,GAAGtB,iBAAiB,CAACvU,GAAD,CAAxC,CAAA;QACA,IAAM0U,IAAI,GAAG,IAAKgB,CAAAA,cAAL,CAAoBG,cAAc,CAAC9S,MAAnC,CAAb,CAAA;EACA,MAAA,IAAMyR,OAAO,GAAGqB,cAAc,CAACrB,OAA/B,CAAA;EACAA,MAAAA,OAAO,CAACsB,OAAR,CAAgBpB,IAAhB,EAJgB;;QAKhB,OAAOF,OAAP,CALgB;EAMnB,KAAA;EAhEL,GAAA,CAAA,CAAA,CAAA;;EAAA,EAAA,OAAA,OAAA,CAAA;EAAA,CAAA,EAAA,CAAA;EAkEA;EACA;EACA;EACA;EACA;;EACA,IAAauB,OAAb,gBAAA,UAAA,QAAA,EAAA;EAAA,EAAA,SAAA,CAAA,OAAA,EAAA,QAAA,CAAA,CAAA;;EAAA,EAAA,IAAA,MAAA,GAAA,YAAA,CAAA,OAAA,CAAA,CAAA;;EACI;EACJ;EACA;EACA;EACA;EACI,EAAA,SAAA,OAAA,CAAYC,OAAZ,EAAqB;EAAA,IAAA,IAAA,KAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;EACjB,IAAA,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;MACA,KAAKA,CAAAA,OAAL,GAAeA,OAAf,CAAA;EAFiB,IAAA,OAAA,KAAA,CAAA;EAGpB,GAAA;EACD;EACJ;EACA;EACA;EACA;;;EAdA,EAAA,YAAA,CAAA,OAAA,EAAA,CAAA;EAAA,IAAA,GAAA,EAAA,KAAA;MAAA,KAeI,EAAA,SAAA,GAAA,CAAIhW,GAAJ,EAAS;EACL,MAAA,IAAI+C,MAAJ,CAAA;;EACA,MAAA,IAAI,OAAO/C,GAAP,KAAe,QAAnB,EAA6B;EACzB+C,QAAAA,MAAM,GAAG,IAAA,CAAKkT,YAAL,CAAkBjW,GAAlB,CAAT,CAAA;;EACA,QAAA,IAAI+C,MAAM,CAACzD,IAAP,KAAgB4V,UAAU,CAACK,YAA3B,IACAxS,MAAM,CAACzD,IAAP,KAAgB4V,UAAU,CAACM,UAD/B,EAC2C;EACvC;YACA,IAAKU,CAAAA,aAAL,GAAqB,IAAIC,mBAAJ,CAAwBpT,MAAxB,CAArB,CAFuC;;EAIvC,UAAA,IAAIA,MAAM,CAAC6R,WAAP,KAAuB,CAA3B,EAA8B;cAC1B,IAAmB,CAAA,eAAA,CAAA,OAAA,CAAA,SAAA,CAAA,EAAA,cAAA,EAAA,IAAA,CAAA,CAAA,IAAA,CAAA,IAAA,EAAA,SAAnB,EAA8B7R,MAA9B,CAAA,CAAA;EACH,WAAA;EACJ,SARD,MASK;EACD;YACA,IAAmB,CAAA,eAAA,CAAA,OAAA,CAAA,SAAA,CAAA,EAAA,cAAA,EAAA,IAAA,CAAA,CAAA,IAAA,CAAA,IAAA,EAAA,SAAnB,EAA8BA,MAA9B,CAAA,CAAA;EACH,SAAA;SAdL,MAgBK,IAAIoR,QAAQ,CAACnU,GAAD,CAAR,IAAiBA,GAAG,CAACoB,MAAzB,EAAiC;EAClC;UACA,IAAI,CAAC,IAAK8U,CAAAA,aAAV,EAAyB;EACrB,UAAA,MAAM,IAAInP,KAAJ,CAAU,kDAAV,CAAN,CAAA;EACH,SAFD,MAGK;EACDhE,UAAAA,MAAM,GAAG,IAAKmT,CAAAA,aAAL,CAAmBE,cAAnB,CAAkCpW,GAAlC,CAAT,CAAA;;EACA,UAAA,IAAI+C,MAAJ,EAAY;EACR;cACA,IAAKmT,CAAAA,aAAL,GAAqB,IAArB,CAAA;;cACA,IAAmB,CAAA,eAAA,CAAA,OAAA,CAAA,SAAA,CAAA,EAAA,cAAA,EAAA,IAAA,CAAA,CAAA,IAAA,CAAA,IAAA,EAAA,SAAnB,EAA8BnT,MAA9B,CAAA,CAAA;EACH,WAAA;EACJ,SAAA;EACJ,OAbI,MAcA;EACD,QAAA,MAAM,IAAIgE,KAAJ,CAAU,gBAAA,GAAmB/G,GAA7B,CAAN,CAAA;EACH,OAAA;EACJ,KAAA;EACD;EACJ;EACA;EACA;EACA;EACA;;EAxDA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,cAAA;MAAA,KAyDI,EAAA,SAAA,YAAA,CAAawG,GAAb,EAAkB;EACd,MAAA,IAAIxF,CAAC,GAAG,CAAR,CADc;;EAGd,MAAA,IAAMO,CAAC,GAAG;UACNjC,IAAI,EAAEyL,MAAM,CAACvE,GAAG,CAACtE,MAAJ,CAAW,CAAX,CAAD,CAAA;SADhB,CAAA;;QAGA,IAAIgT,UAAU,CAAC3T,CAAC,CAACjC,IAAH,CAAV,KAAuBwM,SAA3B,EAAsC;EAClC,QAAA,MAAM,IAAI/E,KAAJ,CAAU,yBAAyBxF,CAAC,CAACjC,IAArC,CAAN,CAAA;EACH,OARa;;;EAUd,MAAA,IAAIiC,CAAC,CAACjC,IAAF,KAAW4V,UAAU,CAACK,YAAtB,IACAhU,CAAC,CAACjC,IAAF,KAAW4V,UAAU,CAACM,UAD1B,EACsC;EAClC,QAAA,IAAMa,KAAK,GAAGrV,CAAC,GAAG,CAAlB,CAAA;;EACA,QAAA,OAAOwF,GAAG,CAACtE,MAAJ,CAAW,EAAElB,CAAb,CAAA,KAAoB,GAApB,IAA2BA,CAAC,IAAIwF,GAAG,CAACvF,MAA3C,EAAmD,EAAG;;UACtD,IAAMqV,GAAG,GAAG9P,GAAG,CAACpE,SAAJ,CAAciU,KAAd,EAAqBrV,CAArB,CAAZ,CAAA;;EACA,QAAA,IAAIsV,GAAG,IAAIvL,MAAM,CAACuL,GAAD,CAAb,IAAsB9P,GAAG,CAACtE,MAAJ,CAAWlB,CAAX,CAAA,KAAkB,GAA5C,EAAiD;EAC7C,UAAA,MAAM,IAAI+F,KAAJ,CAAU,qBAAV,CAAN,CAAA;EACH,SAAA;;EACDxF,QAAAA,CAAC,CAACqT,WAAF,GAAgB7J,MAAM,CAACuL,GAAD,CAAtB,CAAA;EACH,OAnBa;;;QAqBd,IAAI,GAAA,KAAQ9P,GAAG,CAACtE,MAAJ,CAAWlB,CAAC,GAAG,CAAf,CAAZ,EAA+B;EAC3B,QAAA,IAAMqV,MAAK,GAAGrV,CAAC,GAAG,CAAlB,CAAA;;UACA,OAAO,EAAEA,CAAT,EAAY;EACR,UAAA,IAAMyF,CAAC,GAAGD,GAAG,CAACtE,MAAJ,CAAWlB,CAAX,CAAV,CAAA;YACA,IAAI,GAAA,KAAQyF,CAAZ,EACI,MAAA;EACJ,UAAA,IAAIzF,CAAC,KAAKwF,GAAG,CAACvF,MAAd,EACI,MAAA;EACP,SAAA;;UACDM,CAAC,CAACoU,GAAF,GAAQnP,GAAG,CAACpE,SAAJ,CAAciU,MAAd,EAAqBrV,CAArB,CAAR,CAAA;EACH,OAVD,MAWK;UACDO,CAAC,CAACoU,GAAF,GAAQ,GAAR,CAAA;EACH,OAlCa;;;QAoCd,IAAMY,IAAI,GAAG/P,GAAG,CAACtE,MAAJ,CAAWlB,CAAC,GAAG,CAAf,CAAb,CAAA;;QACA,IAAI,EAAA,KAAOuV,IAAP,IAAexL,MAAM,CAACwL,IAAD,CAAN,IAAgBA,IAAnC,EAAyC;EACrC,QAAA,IAAMF,OAAK,GAAGrV,CAAC,GAAG,CAAlB,CAAA;;UACA,OAAO,EAAEA,CAAT,EAAY;EACR,UAAA,IAAMyF,EAAC,GAAGD,GAAG,CAACtE,MAAJ,CAAWlB,CAAX,CAAV,CAAA;;YACA,IAAI,IAAA,IAAQyF,EAAR,IAAasE,MAAM,CAACtE,EAAD,CAAN,IAAaA,EAA9B,EAAiC;EAC7B,YAAA,EAAEzF,CAAF,CAAA;EACA,YAAA,MAAA;EACH,WAAA;;EACD,UAAA,IAAIA,CAAC,KAAKwF,GAAG,CAACvF,MAAd,EACI,MAAA;EACP,SAAA;;EACDM,QAAAA,CAAC,CAAC4P,EAAF,GAAOpG,MAAM,CAACvE,GAAG,CAACpE,SAAJ,CAAciU,OAAd,EAAqBrV,CAAC,GAAG,CAAzB,CAAD,CAAb,CAAA;EACH,OAjDa;;;EAmDd,MAAA,IAAIwF,GAAG,CAACtE,MAAJ,CAAW,EAAElB,CAAb,CAAJ,EAAqB;UACjB,IAAMwV,OAAO,GAAG,IAAA,CAAKC,QAAL,CAAcjQ,GAAG,CAACkQ,MAAJ,CAAW1V,CAAX,CAAd,CAAhB,CAAA;;UACA,IAAI+U,OAAO,CAACY,cAAR,CAAuBpV,CAAC,CAACjC,IAAzB,EAA+BkX,OAA/B,CAAJ,EAA6C;YACzCjV,CAAC,CAAChC,IAAF,GAASiX,OAAT,CAAA;EACH,SAFD,MAGK;EACD,UAAA,MAAM,IAAIzP,KAAJ,CAAU,iBAAV,CAAN,CAAA;EACH,SAAA;EACJ,OAAA;;EACD,MAAA,OAAOxF,CAAP,CAAA;EACH,KAAA;EAtHL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,UAAA;MAAA,KAuHI,EAAA,SAAA,QAAA,CAASiF,GAAT,EAAc;QACV,IAAI;UACA,OAAOsM,IAAI,CAACvD,KAAL,CAAW/I,GAAX,EAAgB,IAAA,CAAKwP,OAArB,CAAP,CAAA;SADJ,CAGA,OAAO9M,CAAP,EAAU;EACN,QAAA,OAAO,KAAP,CAAA;EACH,OAAA;EACJ,KAAA;EA9HL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,SAAA;EAAA,IAAA,KAAA;EA+II;EACJ;EACA;MACI,SAAU,OAAA,GAAA;QACN,IAAI,IAAA,CAAKgN,aAAT,EAAwB;UACpB,IAAKA,CAAAA,aAAL,CAAmBU,sBAAnB,EAAA,CAAA;EACH,OAAA;EACJ,KAAA;EAtJL,GAAA,CAAA,EAAA,CAAA;EAAA,IAAA,GAAA,EAAA,gBAAA;EAAA,IAAA,KAAA,EA+HI,SAAsBtX,cAAAA,CAAAA,IAAtB,EAA4BkX,OAA5B,EAAqC;EACjC,MAAA,QAAQlX,IAAR;UACI,KAAK4V,UAAU,CAAC2B,OAAhB;YACI,OAAO,OAAA,CAAOL,OAAP,CAAA,KAAmB,QAA1B,CAAA;;UACJ,KAAKtB,UAAU,CAAC4B,UAAhB;YACI,OAAON,OAAO,KAAK1K,SAAnB,CAAA;;UACJ,KAAKoJ,UAAU,CAAC6B,aAAhB;YACI,OAAO,OAAOP,OAAP,KAAmB,QAAnB,IAA+B,OAAOA,CAAAA,OAAP,MAAmB,QAAzD,CAAA;;UACJ,KAAKtB,UAAU,CAACG,KAAhB,CAAA;UACA,KAAKH,UAAU,CAACK,YAAhB;YACI,OAAO1S,KAAK,CAACyR,OAAN,CAAckC,OAAd,KAA0BA,OAAO,CAACvV,MAAR,GAAiB,CAAlD,CAAA;;UACJ,KAAKiU,UAAU,CAACI,GAAhB,CAAA;UACA,KAAKJ,UAAU,CAACM,UAAhB;EACI,UAAA,OAAO3S,KAAK,CAACyR,OAAN,CAAckC,OAAd,CAAP,CAAA;EAZR,OAAA;EAcH,KAAA;EA9IL,GAAA,CAAA,CAAA,CAAA;;EAAA,EAAA,OAAA,OAAA,CAAA;EAAA,CAAA,CAA6BlT,OAA7B,CAAA,CAAA;EAwJA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;MACM6S;EACF,EAAA,SAAA,mBAAA,CAAYpT,MAAZ,EAAoB;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,mBAAA,CAAA,CAAA;;MAChB,IAAKA,CAAAA,MAAL,GAAcA,MAAd,CAAA;MACA,IAAKyR,CAAAA,OAAL,GAAe,EAAf,CAAA;MACA,IAAKwC,CAAAA,SAAL,GAAiBjU,MAAjB,CAAA;EACH,GAAA;EACD;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;;;;;EACI,IAAA,KAAA,EAAA,SAAA,cAAA,CAAekU,OAAf,EAAwB;EACpB,MAAA,IAAA,CAAKzC,OAAL,CAAapR,IAAb,CAAkB6T,OAAlB,CAAA,CAAA;;QACA,IAAI,IAAA,CAAKzC,OAAL,CAAavT,MAAb,KAAwB,IAAK+V,CAAAA,SAAL,CAAepC,WAA3C,EAAwD;EACpD;UACA,IAAM7R,MAAM,GAAGiS,iBAAiB,CAAC,KAAKgC,SAAN,EAAiB,IAAKxC,CAAAA,OAAtB,CAAhC,CAAA;EACA,QAAA,IAAA,CAAKoC,sBAAL,EAAA,CAAA;EACA,QAAA,OAAO7T,MAAP,CAAA;EACH,OAAA;;EACD,MAAA,OAAO,IAAP,CAAA;EACH,KAAA;EACD;EACJ;EACA;;;;aACI,SAAyB,sBAAA,GAAA;QACrB,IAAKiU,CAAAA,SAAL,GAAiB,IAAjB,CAAA;QACA,IAAKxC,CAAAA,OAAL,GAAe,EAAf,CAAA;EACH,KAAA;;;;;;;;;;;;;;EC3RE,SAAShR,EAAT,CAAYxD,GAAZ,EAAiBgP,EAAjB,EAAqBrL,EAArB,EAAyB;EAC5B3D,EAAAA,GAAG,CAACwD,EAAJ,CAAOwL,EAAP,EAAWrL,EAAX,CAAA,CAAA;IACA,OAAO,SAASuT,UAAT,GAAsB;EACzBlX,IAAAA,GAAG,CAAC8D,GAAJ,CAAQkL,EAAR,EAAYrL,EAAZ,CAAA,CAAA;KADJ,CAAA;EAGH;;ECFD;EACA;EACA;EACA;;EACA,IAAMwT,eAAe,GAAGpY,MAAM,CAACqY,MAAP,CAAc;EAClCC,EAAAA,OAAO,EAAE,CADyB;EAElCC,EAAAA,aAAa,EAAE,CAFmB;EAGlCC,EAAAA,UAAU,EAAE,CAHsB;EAIlCC,EAAAA,aAAa,EAAE,CAJmB;EAKlC;EACAC,EAAAA,WAAW,EAAE,CANqB;EAOlCxT,EAAAA,cAAc,EAAE,CAAA;EAPkB,CAAd,CAAxB,CAAA;EASA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EACA,IAAauM,MAAb,gBAAA,UAAA,QAAA,EAAA;EAAA,EAAA,SAAA,CAAA,MAAA,EAAA,QAAA,CAAA,CAAA;;EAAA,EAAA,IAAA,MAAA,GAAA,YAAA,CAAA,MAAA,CAAA,CAAA;;EACI;EACJ;EACA;EACI,EAAA,SAAA,MAAA,CAAYkH,EAAZ,EAAgB/B,GAAhB,EAAqB/P,IAArB,EAA2B;EAAA,IAAA,IAAA,KAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,MAAA,CAAA,CAAA;;EACvB,IAAA,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;EACA;EACR;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;MACQ,KAAK+R,CAAAA,SAAL,GAAiB,KAAjB,CAAA;EACA;EACR;EACA;;MACQ,KAAKC,CAAAA,aAAL,GAAqB,EAArB,CAAA;EACA;EACR;EACA;;MACQ,KAAKC,CAAAA,UAAL,GAAkB,EAAlB,CAAA;MACA,KAAKC,CAAAA,GAAL,GAAW,CAAX,CAAA;MACA,KAAKC,CAAAA,IAAL,GAAY,EAAZ,CAAA;MACA,KAAKC,CAAAA,KAAL,GAAa,EAAb,CAAA;MACA,KAAKN,CAAAA,EAAL,GAAUA,EAAV,CAAA;MACA,KAAK/B,CAAAA,GAAL,GAAWA,GAAX,CAAA;;EACA,IAAA,IAAI/P,IAAI,IAAIA,IAAI,CAACqS,IAAjB,EAAuB;EACnB,MAAA,KAAA,CAAKA,IAAL,GAAYrS,IAAI,CAACqS,IAAjB,CAAA;EACH,KAAA;;EACD,IAAA,IAAI,MAAKP,EAAL,CAAQQ,YAAZ,EACI,MAAKlM,IAAL,EAAA,CAAA;EAlCmB,IAAA,OAAA,KAAA,CAAA;EAmC1B,GAAA;EACD;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;EArDA,EAAA,YAAA,CAAA,MAAA,EAAA,CAAA;EAAA,IAAA,GAAA,EAAA,cAAA;EAAA,IAAA,GAAA,EAsDI,SAAmB,GAAA,GAAA;QACf,OAAO,CAAC,KAAK2L,SAAb,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;;EA7DA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,WAAA;EAAA,IAAA,KAAA,EA8DI,SAAY,SAAA,GAAA;QACR,IAAI,IAAA,CAAKQ,IAAT,EACI,OAAA;QACJ,IAAMT,EAAE,GAAG,IAAA,CAAKA,EAAhB,CAAA;EACA,MAAA,IAAA,CAAKS,IAAL,GAAY,CACR3U,EAAE,CAACkU,EAAD,EAAK,MAAL,EAAa,IAAA,CAAKjJ,MAAL,CAAY1I,IAAZ,CAAiB,IAAjB,CAAb,CADM,EAERvC,EAAE,CAACkU,EAAD,EAAK,QAAL,EAAe,IAAKU,CAAAA,QAAL,CAAcrS,IAAd,CAAmB,IAAnB,CAAf,CAFM,EAGRvC,EAAE,CAACkU,EAAD,EAAK,OAAL,EAAc,IAAKzI,CAAAA,OAAL,CAAalJ,IAAb,CAAkB,IAAlB,CAAd,CAHM,EAIRvC,EAAE,CAACkU,EAAD,EAAK,OAAL,EAAc,IAAA,CAAK7I,OAAL,CAAa9I,IAAb,CAAkB,IAAlB,CAAd,CAJM,CAAZ,CAAA;EAMH,KAAA;EACD;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAzFA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,QAAA;EAAA,IAAA,GAAA,EA0FI,SAAa,GAAA,GAAA;QACT,OAAO,CAAC,CAAC,IAAA,CAAKoS,IAAd,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAtGA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,SAAA;EAAA,IAAA,KAAA,EAuGI,SAAU,OAAA,GAAA;EACN,MAAA,IAAI,IAAKR,CAAAA,SAAT,EACI,OAAO,IAAP,CAAA;EACJ,MAAA,IAAA,CAAKU,SAAL,EAAA,CAAA;EACA,MAAA,IAAI,CAAC,IAAA,CAAKX,EAAL,CAAQ,eAAR,CAAL,EACI,IAAA,CAAKA,EAAL,CAAQ1L,IAAR,EAAA,CALE;;EAMN,MAAA,IAAI,WAAW,IAAK0L,CAAAA,EAAL,CAAQY,WAAvB,EACI,KAAK7J,MAAL,EAAA,CAAA;EACJ,MAAA,OAAO,IAAP,CAAA;EACH,KAAA;EACD;EACJ;EACA;;EAnHA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,MAAA;EAAA,IAAA,KAAA,EAoHI,SAAO,IAAA,GAAA;QACH,OAAO,IAAA,CAAK4I,OAAL,EAAP,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EArIA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,MAAA;EAAA,IAAA,KAAA,EAsII,SAAc,IAAA,GAAA;EAAA,MAAA,KAAA,IAAA,IAAA,GAAA,SAAA,CAAA,MAAA,EAAN7S,IAAM,GAAA,IAAA,KAAA,CAAA,IAAA,CAAA,EAAA,IAAA,GAAA,CAAA,EAAA,IAAA,GAAA,IAAA,EAAA,IAAA,EAAA,EAAA;UAANA,IAAM,CAAA,IAAA,CAAA,GAAA,SAAA,CAAA,IAAA,CAAA,CAAA;EAAA,OAAA;;QACVA,IAAI,CAACsR,OAAL,CAAa,SAAb,CAAA,CAAA;EACA,MAAA,IAAA,CAAKvR,IAAL,CAAUR,KAAV,CAAgB,IAAhB,EAAsBS,IAAtB,CAAA,CAAA;EACA,MAAA,OAAO,IAAP,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EA3JA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,MAAA;MAAA,KA4JI,EAAA,SAAA,IAAA,CAAKwK,EAAL,EAAkB;EACd,MAAA,IAAImI,eAAe,CAAC7R,cAAhB,CAA+B0J,EAA/B,CAAJ,EAAwC;UACpC,MAAM,IAAIjI,KAAJ,CAAU,GAAMiI,GAAAA,EAAE,CAACrP,QAAH,EAAN,GAAsB,4BAAhC,CAAN,CAAA;EACH,OAAA;;EAHa,MAAA,KAAA,IAAA,KAAA,GAAA,SAAA,CAAA,MAAA,EAAN6E,IAAM,GAAA,IAAA,KAAA,CAAA,KAAA,GAAA,CAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,CAAA,EAAA,KAAA,GAAA,CAAA,EAAA,KAAA,GAAA,KAAA,EAAA,KAAA,EAAA,EAAA;UAANA,IAAM,CAAA,KAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA,KAAA,CAAA,CAAA;EAAA,OAAA;;QAIdA,IAAI,CAACsR,OAAL,CAAa9G,EAAb,CAAA,CAAA;EACA,MAAA,IAAMjM,MAAM,GAAG;UACXzD,IAAI,EAAE4V,UAAU,CAACG,KADN;EAEX9V,QAAAA,IAAI,EAAEiF,IAAAA;SAFV,CAAA;QAIAzB,MAAM,CAACwQ,OAAP,GAAiB,EAAjB,CAAA;EACAxQ,MAAAA,MAAM,CAACwQ,OAAP,CAAeC,QAAf,GAA0B,IAAA,CAAKwE,KAAL,CAAWxE,QAAX,KAAwB,KAAlD,CAVc;;QAYd,IAAI,UAAA,KAAe,OAAOhP,IAAI,CAACA,IAAI,CAACvD,MAAL,GAAc,CAAf,CAA9B,EAAiD;EAC7C,QAAA,IAAMkQ,EAAE,GAAG,IAAK2G,CAAAA,GAAL,EAAX,CAAA;EACA,QAAA,IAAMS,GAAG,GAAG/T,IAAI,CAACgU,GAAL,EAAZ,CAAA;;EACA,QAAA,IAAA,CAAKC,oBAAL,CAA0BtH,EAA1B,EAA8BoH,GAA9B,CAAA,CAAA;;UACAxV,MAAM,CAACoO,EAAP,GAAYA,EAAZ,CAAA;EACH,OAAA;;QACD,IAAMuH,mBAAmB,GAAG,IAAKhB,CAAAA,EAAL,CAAQiB,MAAR,IACxB,KAAKjB,EAAL,CAAQiB,MAAR,CAAelH,SADS,IAExB,IAAKiG,CAAAA,EAAL,CAAQiB,MAAR,CAAelH,SAAf,CAAyBxK,QAF7B,CAAA;QAGA,IAAM2R,aAAa,GAAG,IAAA,CAAKZ,KAAL,CAAA,UAAA,CAAA,KAAwB,CAACU,mBAAD,IAAwB,CAAC,IAAKf,CAAAA,SAAtD,CAAtB,CAAA;;QACA,IAAIiB,aAAJ,EAAmB,CAAnB,MAEK,IAAI,IAAA,CAAKjB,SAAT,EAAoB;UACrB,IAAKkB,CAAAA,uBAAL,CAA6B9V,MAA7B,CAAA,CAAA;UACA,IAAKA,CAAAA,MAAL,CAAYA,MAAZ,CAAA,CAAA;EACH,OAHI,MAIA;EACD,QAAA,IAAA,CAAK8U,UAAL,CAAgBzU,IAAhB,CAAqBL,MAArB,CAAA,CAAA;EACH,OAAA;;QACD,IAAKiV,CAAAA,KAAL,GAAa,EAAb,CAAA;EACA,MAAA,OAAO,IAAP,CAAA;EACH,KAAA;EACD;EACJ;EACA;;EAhMA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,sBAAA;EAAA,IAAA,KAAA,EAiMI,SAAqB7G,oBAAAA,CAAAA,EAArB,EAAyBoH,GAAzB,EAA8B;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;;EAC1B,MAAA,IAAMjM,OAAO,GAAG,IAAK0L,CAAAA,KAAL,CAAW1L,OAA3B,CAAA;;QACA,IAAIA,OAAO,KAAKR,SAAhB,EAA2B;EACvB,QAAA,IAAA,CAAKiM,IAAL,CAAU5G,EAAV,CAAA,GAAgBoH,GAAhB,CAAA;EACA,QAAA,OAAA;EACH,OALyB;;;EAO1B,MAAA,IAAMO,KAAK,GAAG,IAAA,CAAKpB,EAAL,CAAQ5R,YAAR,CAAqB,YAAM;EACrC,QAAA,OAAO,MAAI,CAACiS,IAAL,CAAU5G,EAAV,CAAP,CAAA;;EACA,QAAA,KAAK,IAAInQ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,MAAI,CAAC6W,UAAL,CAAgB5W,MAApC,EAA4CD,CAAC,EAA7C,EAAiD;YAC7C,IAAI,MAAI,CAAC6W,UAAL,CAAgB7W,CAAhB,CAAmBmQ,CAAAA,EAAnB,KAA0BA,EAA9B,EAAkC;EAC9B,YAAA,MAAI,CAAC0G,UAAL,CAAgBvT,MAAhB,CAAuBtD,CAAvB,EAA0B,CAA1B,CAAA,CAAA;EACH,WAAA;EACJ,SAAA;;UACDuX,GAAG,CAAC3Y,IAAJ,CAAS,MAAT,EAAe,IAAImH,KAAJ,CAAU,yBAAV,CAAf,CAAA,CAAA;SAPU,EAQXuF,OARW,CAAd,CAAA;;EASA,MAAA,IAAA,CAAKyL,IAAL,CAAU5G,EAAV,CAAA,GAAgB,YAAa;EACzB;EACA,QAAA,MAAI,CAACuG,EAAL,CAAQzR,cAAR,CAAuB6S,KAAvB,CAAA,CAAA;;EAFyB,QAAA,KAAA,IAAA,KAAA,GAAA,SAAA,CAAA,MAAA,EAATtU,IAAS,GAAA,IAAA,KAAA,CAAA,KAAA,CAAA,EAAA,KAAA,GAAA,CAAA,EAAA,KAAA,GAAA,KAAA,EAAA,KAAA,EAAA,EAAA;YAATA,IAAS,CAAA,KAAA,CAAA,GAAA,SAAA,CAAA,KAAA,CAAA,CAAA;EAAA,SAAA;;EAGzB+T,QAAAA,GAAG,CAACxU,KAAJ,CAAU,MAAV,EAAiB,CAAA,IAAjB,SAA0BS,IAA1B,CAAA,CAAA,CAAA;SAHJ,CAAA;EAKH,KAAA;EACD;EACJ;EACA;EACA;EACA;EACA;;EA5NA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,QAAA;MAAA,KA6NI,EAAA,SAAA,MAAA,CAAOzB,OAAP,EAAe;EACXA,MAAAA,OAAM,CAAC4S,GAAP,GAAa,IAAA,CAAKA,GAAlB,CAAA;;EACA,MAAA,IAAA,CAAK+B,EAAL,CAAQqB,OAAR,CAAgBhW,OAAhB,CAAA,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;;EArOA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,QAAA;EAAA,IAAA,KAAA,EAsOI,SAAS,MAAA,GAAA;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;;EACL,MAAA,IAAI,OAAO,IAAA,CAAKkV,IAAZ,IAAoB,UAAxB,EAAoC;EAChC,QAAA,IAAA,CAAKA,IAAL,CAAU,UAAC1Y,IAAD,EAAU;YAChB,MAAI,CAACwD,MAAL,CAAY;cAAEzD,IAAI,EAAE4V,UAAU,CAAC2B,OAAnB;EAA4BtX,YAAAA,IAAI,EAAJA,IAAAA;aAAxC,CAAA,CAAA;WADJ,CAAA,CAAA;EAGH,OAJD,MAKK;EACD,QAAA,IAAA,CAAKwD,MAAL,CAAY;YAAEzD,IAAI,EAAE4V,UAAU,CAAC2B,OAAnB;EAA4BtX,UAAAA,IAAI,EAAE,IAAK0Y,CAAAA,IAAAA;WAAnD,CAAA,CAAA;EACH,OAAA;EACJ,KAAA;EACD;EACJ;EACA;EACA;EACA;EACA;;EArPA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,SAAA;MAAA,KAsPI,EAAA,SAAA,OAAA,CAAQnP,GAAR,EAAa;QACT,IAAI,CAAC,IAAK6O,CAAAA,SAAV,EAAqB;EACjB,QAAA,IAAA,CAAKjT,YAAL,CAAkB,eAAlB,EAAmCoE,GAAnC,CAAA,CAAA;EACH,OAAA;EACJ,KAAA;EACD;EACJ;EACA;EACA;EACA;EACA;EACA;;EAjQA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,SAAA;EAAA,IAAA,KAAA,EAkQI,SAAQlC,OAAAA,CAAAA,MAAR,EAAgBC,WAAhB,EAA6B;QACzB,IAAK8Q,CAAAA,SAAL,GAAiB,KAAjB,CAAA;EACA,MAAA,OAAO,KAAKxG,EAAZ,CAAA;EACA,MAAA,IAAA,CAAKzM,YAAL,CAAkB,YAAlB,EAAgCkC,MAAhC,EAAwCC,WAAxC,CAAA,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;EACA;;EA5QA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,UAAA;MAAA,KA6QI,EAAA,SAAA,QAAA,CAAS9D,MAAT,EAAiB;EACb,MAAA,IAAMiW,aAAa,GAAGjW,MAAM,CAAC4S,GAAP,KAAe,KAAKA,GAA1C,CAAA;QACA,IAAI,CAACqD,aAAL,EACI,OAAA;;QACJ,QAAQjW,MAAM,CAACzD,IAAf;UACI,KAAK4V,UAAU,CAAC2B,OAAhB;YACI,IAAI9T,MAAM,CAACxD,IAAP,IAAewD,MAAM,CAACxD,IAAP,CAAYsL,GAA/B,EAAoC;EAChC,YAAA,IAAMsG,EAAE,GAAGpO,MAAM,CAACxD,IAAP,CAAYsL,GAAvB,CAAA;cACA,IAAKoO,CAAAA,SAAL,CAAe9H,EAAf,CAAA,CAAA;EACH,WAHD,MAIK;cACD,IAAKzM,CAAAA,YAAL,CAAkB,eAAlB,EAAmC,IAAIqC,KAAJ,CAAU,2LAAV,CAAnC,CAAA,CAAA;EACH,WAAA;;EACD,UAAA,MAAA;;UACJ,KAAKmO,UAAU,CAACG,KAAhB,CAAA;UACA,KAAKH,UAAU,CAACK,YAAhB;YACI,IAAK2D,CAAAA,OAAL,CAAanW,MAAb,CAAA,CAAA;EACA,UAAA,MAAA;;UACJ,KAAKmS,UAAU,CAACI,GAAhB,CAAA;UACA,KAAKJ,UAAU,CAACM,UAAhB;YACI,IAAK2D,CAAAA,KAAL,CAAWpW,MAAX,CAAA,CAAA;EACA,UAAA,MAAA;;UACJ,KAAKmS,UAAU,CAAC4B,UAAhB;EACI,UAAA,IAAA,CAAKsC,YAAL,EAAA,CAAA;EACA,UAAA,MAAA;;UACJ,KAAKlE,UAAU,CAAC6B,aAAhB;EACI,UAAA,IAAA,CAAKsC,OAAL,EAAA,CAAA;EACA,UAAA,IAAMvQ,GAAG,GAAG,IAAI/B,KAAJ,CAAUhE,MAAM,CAACxD,IAAP,CAAY+Z,OAAtB,CAAZ,CAFJ;;EAIIxQ,UAAAA,GAAG,CAACvJ,IAAJ,GAAWwD,MAAM,CAACxD,IAAP,CAAYA,IAAvB,CAAA;EACA,UAAA,IAAA,CAAKmF,YAAL,CAAkB,eAAlB,EAAmCoE,GAAnC,CAAA,CAAA;EACA,UAAA,MAAA;EA3BR,OAAA;EA6BH,KAAA;EACD;EACJ;EACA;EACA;EACA;EACA;;EApTA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,SAAA;MAAA,KAqTI,EAAA,SAAA,OAAA,CAAQ/F,MAAR,EAAgB;EACZ,MAAA,IAAMyB,IAAI,GAAGzB,MAAM,CAACxD,IAAP,IAAe,EAA5B,CAAA;;EACA,MAAA,IAAI,IAAQwD,IAAAA,MAAM,CAACoO,EAAnB,EAAuB;UACnB3M,IAAI,CAACpB,IAAL,CAAU,IAAA,CAAKmV,GAAL,CAASxV,MAAM,CAACoO,EAAhB,CAAV,CAAA,CAAA;EACH,OAAA;;QACD,IAAI,IAAA,CAAKwG,SAAT,EAAoB;UAChB,IAAK4B,CAAAA,SAAL,CAAe/U,IAAf,CAAA,CAAA;EACH,OAFD,MAGK;UACD,IAAKoT,CAAAA,aAAL,CAAmBxU,IAAnB,CAAwBrE,MAAM,CAACqY,MAAP,CAAc5S,IAAd,CAAxB,CAAA,CAAA;EACH,OAAA;EACJ,KAAA;EAhUL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,WAAA;MAAA,KAiUI,EAAA,SAAA,SAAA,CAAUA,IAAV,EAAgB;EACZ,MAAA,IAAI,KAAKgV,aAAL,IAAsB,KAAKA,aAAL,CAAmBvY,MAA7C,EAAqD;EACjD,QAAA,IAAM0D,SAAS,GAAG,IAAA,CAAK6U,aAAL,CAAmB/U,KAAnB,EAAlB,CAAA;;EADiD,QAAA,IAAA,SAAA,GAAA,0BAAA,CAE1BE,SAF0B,CAAA;EAAA,YAAA,KAAA,CAAA;;EAAA,QAAA,IAAA;YAEjD,KAAkC,SAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,CAAA,CAAA,EAAA,EAAA,IAAA,GAAA;EAAA,YAAA,IAAvB8U,QAAuB,GAAA,KAAA,CAAA,KAAA,CAAA;EAC9BA,YAAAA,QAAQ,CAAC1V,KAAT,CAAe,IAAf,EAAqBS,IAArB,CAAA,CAAA;EACH,WAAA;EAJgD,SAAA,CAAA,OAAA,GAAA,EAAA;EAAA,UAAA,SAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA;EAAA,SAAA,SAAA;EAAA,UAAA,SAAA,CAAA,CAAA,EAAA,CAAA;EAAA,SAAA;EAKpD,OAAA;;EACD,MAAA,IAAA,CAAA,eAAA,CAAA,MAAA,CAAA,SAAA,CAAA,EAAA,MAAA,EAAA,IAAA,CAAA,CAAWT,KAAX,CAAiB,IAAjB,EAAuBS,IAAvB,CAAA,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;;EA9UA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,KAAA;MAAA,KA+UI,EAAA,SAAA,GAAA,CAAI2M,EAAJ,EAAQ;QACJ,IAAMrM,IAAI,GAAG,IAAb,CAAA;QACA,IAAI4U,IAAI,GAAG,KAAX,CAAA;EACA,MAAA,OAAO,YAAmB;EACtB;EACA,QAAA,IAAIA,IAAJ,EACI,OAAA;EACJA,QAAAA,IAAI,GAAG,IAAP,CAAA;;EAJsB,QAAA,KAAA,IAAA,KAAA,GAAA,SAAA,CAAA,MAAA,EAANlV,IAAM,GAAA,IAAA,KAAA,CAAA,KAAA,CAAA,EAAA,KAAA,GAAA,CAAA,EAAA,KAAA,GAAA,KAAA,EAAA,KAAA,EAAA,EAAA;YAANA,IAAM,CAAA,KAAA,CAAA,GAAA,SAAA,CAAA,KAAA,CAAA,CAAA;EAAA,SAAA;;UAKtBM,IAAI,CAAC/B,MAAL,CAAY;YACRzD,IAAI,EAAE4V,UAAU,CAACI,GADT;EAERnE,UAAAA,EAAE,EAAEA,EAFI;EAGR5R,UAAAA,IAAI,EAAEiF,IAAAA;WAHV,CAAA,CAAA;SALJ,CAAA;EAWH,KAAA;EACD;EACJ;EACA;EACA;EACA;EACA;;EAnWA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,OAAA;MAAA,KAoWI,EAAA,SAAA,KAAA,CAAMzB,MAAN,EAAc;QACV,IAAMwV,GAAG,GAAG,IAAKR,CAAAA,IAAL,CAAUhV,MAAM,CAACoO,EAAjB,CAAZ,CAAA;;QACA,IAAI,UAAA,KAAe,OAAOoH,GAA1B,EAA+B;EAC3BA,QAAAA,GAAG,CAACxU,KAAJ,CAAU,IAAV,EAAgBhB,MAAM,CAACxD,IAAvB,CAAA,CAAA;EACA,QAAA,OAAO,KAAKwY,IAAL,CAAUhV,MAAM,CAACoO,EAAjB,CAAP,CAAA;EACH,OAEA;EACJ,KAAA;EACD;EACJ;EACA;EACA;EACA;;EAjXA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,WAAA;MAAA,KAkXI,EAAA,SAAA,SAAA,CAAUA,EAAV,EAAc;QACV,IAAKA,CAAAA,EAAL,GAAUA,EAAV,CAAA;QACA,IAAKwG,CAAAA,SAAL,GAAiB,IAAjB,CAAA;EACA,MAAA,IAAA,CAAKgC,YAAL,EAAA,CAAA;QACA,IAAKjV,CAAAA,YAAL,CAAkB,SAAlB,CAAA,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;;EA5XA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,cAAA;EAAA,IAAA,KAAA,EA6XI,SAAe,YAAA,GAAA;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;;EACX,MAAA,IAAA,CAAKkT,aAAL,CAAmBzY,OAAnB,CAA2B,UAACqF,IAAD,EAAA;EAAA,QAAA,OAAU,MAAI,CAAC+U,SAAL,CAAe/U,IAAf,CAAV,CAAA;SAA3B,CAAA,CAAA;QACA,IAAKoT,CAAAA,aAAL,GAAqB,EAArB,CAAA;EACA,MAAA,IAAA,CAAKC,UAAL,CAAgB1Y,OAAhB,CAAwB,UAAC4D,MAAD,EAAY;UAChC,MAAI,CAAC8V,uBAAL,CAA6B9V,MAA7B,CAAA,CAAA;;UACA,MAAI,CAACA,MAAL,CAAYA,MAAZ,CAAA,CAAA;SAFJ,CAAA,CAAA;QAIA,IAAK8U,CAAAA,UAAL,GAAkB,EAAlB,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;;EA1YA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,cAAA;EAAA,IAAA,KAAA,EA2YI,SAAe,YAAA,GAAA;EACX,MAAA,IAAA,CAAKwB,OAAL,EAAA,CAAA;QACA,IAAKxK,CAAAA,OAAL,CAAa,sBAAb,CAAA,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;EACA;EACA;;EArZA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,SAAA;EAAA,IAAA,KAAA,EAsZI,SAAU,OAAA,GAAA;QACN,IAAI,IAAA,CAAKsJ,IAAT,EAAe;EACX;EACA,QAAA,IAAA,CAAKA,IAAL,CAAUhZ,OAAV,CAAkB,UAAC+X,UAAD,EAAA;EAAA,UAAA,OAAgBA,UAAU,EAA1B,CAAA;WAAlB,CAAA,CAAA;UACA,IAAKiB,CAAAA,IAAL,GAAYrM,SAAZ,CAAA;EACH,OAAA;;EACD,MAAA,IAAA,CAAK4L,EAAL,CAAQ,UAAR,CAAA,CAAoB,IAApB,CAAA,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EA7aA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,YAAA;EAAA,IAAA,KAAA,EA8aI,SAAa,UAAA,GAAA;QACT,IAAI,IAAA,CAAKC,SAAT,EAAoB;EAChB,QAAA,IAAA,CAAK5U,MAAL,CAAY;YAAEzD,IAAI,EAAE4V,UAAU,CAAC4B,UAAAA;WAA/B,CAAA,CAAA;EACH,OAHQ;;;EAKT,MAAA,IAAA,CAAKuC,OAAL,EAAA,CAAA;;QACA,IAAI,IAAA,CAAK1B,SAAT,EAAoB;EAChB;UACA,IAAK9I,CAAAA,OAAL,CAAa,sBAAb,CAAA,CAAA;EACH,OAAA;;EACD,MAAA,OAAO,IAAP,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;;EA9bA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,OAAA;EAAA,IAAA,KAAA,EA+bI,SAAQ,KAAA,GAAA;QACJ,OAAO,IAAA,CAAK0I,UAAL,EAAP,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EA1cA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,UAAA;MAAA,KA2cI,EAAA,SAAA,QAAA,CAAS/D,SAAT,EAAmB;EACf,MAAA,IAAA,CAAKwE,KAAL,CAAWxE,QAAX,GAAsBA,SAAtB,CAAA;EACA,MAAA,OAAO,IAAP,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAvdA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,UAAA;EAAA,IAAA,GAAA,EAwdI,SAAe,GAAA,GAAA;QACX,IAAKwE,CAAAA,KAAL,eAAsB,IAAtB,CAAA;EACA,MAAA,OAAO,IAAP,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAxeA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,SAAA;MAAA,KAyeI,EAAA,SAAA,OAAA,CAAQ1L,QAAR,EAAiB;EACb,MAAA,IAAA,CAAK0L,KAAL,CAAW1L,OAAX,GAAqBA,QAArB,CAAA;EACA,MAAA,OAAO,IAAP,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAvfA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,OAAA;MAAA,KAwfI,EAAA,SAAA,KAAA,CAAMmN,QAAN,EAAgB;EACZ,MAAA,IAAA,CAAKD,aAAL,GAAqB,IAAKA,CAAAA,aAAL,IAAsB,EAA3C,CAAA;;EACA,MAAA,IAAA,CAAKA,aAAL,CAAmBpW,IAAnB,CAAwBqW,QAAxB,CAAA,CAAA;;EACA,MAAA,OAAO,IAAP,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAvgBA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,YAAA;MAAA,KAwgBI,EAAA,SAAA,UAAA,CAAWA,QAAX,EAAqB;EACjB,MAAA,IAAA,CAAKD,aAAL,GAAqB,IAAKA,CAAAA,aAAL,IAAsB,EAA3C,CAAA;;EACA,MAAA,IAAA,CAAKA,aAAL,CAAmB1D,OAAnB,CAA2B2D,QAA3B,CAAA,CAAA;;EACA,MAAA,OAAO,IAAP,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EA9hBA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,QAAA;MAAA,KA+hBI,EAAA,SAAA,MAAA,CAAOA,QAAP,EAAiB;QACb,IAAI,CAAC,IAAKD,CAAAA,aAAV,EAAyB;EACrB,QAAA,OAAO,IAAP,CAAA;EACH,OAAA;;EACD,MAAA,IAAIC,QAAJ,EAAc;UACV,IAAM9U,SAAS,GAAG,IAAA,CAAK6U,aAAvB,CAAA;;EACA,QAAA,KAAK,IAAIxY,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2D,SAAS,CAAC1D,MAA9B,EAAsCD,CAAC,EAAvC,EAA2C;EACvC,UAAA,IAAIyY,QAAQ,KAAK9U,SAAS,CAAC3D,CAAD,CAA1B,EAA+B;EAC3B2D,YAAAA,SAAS,CAACL,MAAV,CAAiBtD,CAAjB,EAAoB,CAApB,CAAA,CAAA;EACA,YAAA,OAAO,IAAP,CAAA;EACH,WAAA;EACJ,SAAA;EACJ,OARD,MASK;UACD,IAAKwY,CAAAA,aAAL,GAAqB,EAArB,CAAA;EACH,OAAA;;EACD,MAAA,OAAO,IAAP,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;;EApjBA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,cAAA;EAAA,IAAA,KAAA,EAqjBI,SAAe,YAAA,GAAA;QACX,OAAO,IAAA,CAAKA,aAAL,IAAsB,EAA7B,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EApkBA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,eAAA;MAAA,KAqkBI,EAAA,SAAA,aAAA,CAAcC,QAAd,EAAwB;EACpB,MAAA,IAAA,CAAKG,qBAAL,GAA6B,IAAKA,CAAAA,qBAAL,IAA8B,EAA3D,CAAA;;EACA,MAAA,IAAA,CAAKA,qBAAL,CAA2BxW,IAA3B,CAAgCqW,QAAhC,CAAA,CAAA;;EACA,MAAA,OAAO,IAAP,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAtlBA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,oBAAA;MAAA,KAulBI,EAAA,SAAA,kBAAA,CAAmBA,QAAnB,EAA6B;EACzB,MAAA,IAAA,CAAKG,qBAAL,GAA6B,IAAKA,CAAAA,qBAAL,IAA8B,EAA3D,CAAA;;EACA,MAAA,IAAA,CAAKA,qBAAL,CAA2B9D,OAA3B,CAAmC2D,QAAnC,CAAA,CAAA;;EACA,MAAA,OAAO,IAAP,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EA7mBA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,gBAAA;MAAA,KA8mBI,EAAA,SAAA,cAAA,CAAeA,QAAf,EAAyB;QACrB,IAAI,CAAC,IAAKG,CAAAA,qBAAV,EAAiC;EAC7B,QAAA,OAAO,IAAP,CAAA;EACH,OAAA;;EACD,MAAA,IAAIH,QAAJ,EAAc;UACV,IAAM9U,SAAS,GAAG,IAAA,CAAKiV,qBAAvB,CAAA;;EACA,QAAA,KAAK,IAAI5Y,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2D,SAAS,CAAC1D,MAA9B,EAAsCD,CAAC,EAAvC,EAA2C;EACvC,UAAA,IAAIyY,QAAQ,KAAK9U,SAAS,CAAC3D,CAAD,CAA1B,EAA+B;EAC3B2D,YAAAA,SAAS,CAACL,MAAV,CAAiBtD,CAAjB,EAAoB,CAApB,CAAA,CAAA;EACA,YAAA,OAAO,IAAP,CAAA;EACH,WAAA;EACJ,SAAA;EACJ,OARD,MASK;UACD,IAAK4Y,CAAAA,qBAAL,GAA6B,EAA7B,CAAA;EACH,OAAA;;EACD,MAAA,OAAO,IAAP,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;;EAnoBA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,sBAAA;EAAA,IAAA,KAAA,EAooBI,SAAuB,oBAAA,GAAA;QACnB,OAAO,IAAA,CAAKA,qBAAL,IAA8B,EAArC,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;EACA;EACA;;EA7oBA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,yBAAA;MAAA,KA8oBI,EAAA,SAAA,uBAAA,CAAwB7W,MAAxB,EAAgC;EAC5B,MAAA,IAAI,KAAK6W,qBAAL,IAA8B,KAAKA,qBAAL,CAA2B3Y,MAA7D,EAAqE;EACjE,QAAA,IAAM0D,SAAS,GAAG,IAAA,CAAKiV,qBAAL,CAA2BnV,KAA3B,EAAlB,CAAA;;EADiE,QAAA,IAAA,UAAA,GAAA,0BAAA,CAE1CE,SAF0C,CAAA;EAAA,YAAA,MAAA,CAAA;;EAAA,QAAA,IAAA;YAEjE,KAAkC,UAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,CAAA,CAAA,EAAA,EAAA,IAAA,GAAA;EAAA,YAAA,IAAvB8U,QAAuB,GAAA,MAAA,CAAA,KAAA,CAAA;EAC9BA,YAAAA,QAAQ,CAAC1V,KAAT,CAAe,IAAf,EAAqBhB,MAAM,CAACxD,IAA5B,CAAA,CAAA;EACH,WAAA;EAJgE,SAAA,CAAA,OAAA,GAAA,EAAA;EAAA,UAAA,UAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA;EAAA,SAAA,SAAA;EAAA,UAAA,UAAA,CAAA,CAAA,EAAA,CAAA;EAAA,SAAA;EAKpE,OAAA;EACJ,KAAA;EArpBL,GAAA,CAAA,CAAA,CAAA;;EAAA,EAAA,OAAA,MAAA,CAAA;EAAA,CAAA,CAA4B+D,OAA5B,CAAA;;ECxCA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,SAASuW,OAAT,CAAiBjU,IAAjB,EAAuB;IAC1BA,IAAI,GAAGA,IAAI,IAAI,EAAf,CAAA;EACA,EAAA,IAAA,CAAKkU,EAAL,GAAUlU,IAAI,CAACmU,GAAL,IAAY,GAAtB,CAAA;EACA,EAAA,IAAA,CAAKC,GAAL,GAAWpU,IAAI,CAACoU,GAAL,IAAY,KAAvB,CAAA;EACA,EAAA,IAAA,CAAKC,MAAL,GAAcrU,IAAI,CAACqU,MAAL,IAAe,CAA7B,CAAA;EACA,EAAA,IAAA,CAAKC,MAAL,GAActU,IAAI,CAACsU,MAAL,GAAc,CAAd,IAAmBtU,IAAI,CAACsU,MAAL,IAAe,CAAlC,GAAsCtU,IAAI,CAACsU,MAA3C,GAAoD,CAAlE,CAAA;IACA,IAAKC,CAAAA,QAAL,GAAgB,CAAhB,CAAA;EACH,CAAA;EACD;EACA;EACA;EACA;EACA;EACA;;EACAN,OAAO,CAACna,SAAR,CAAkB0a,QAAlB,GAA6B,YAAY;EACrC,EAAA,IAAIN,EAAE,GAAG,IAAKA,CAAAA,EAAL,GAAUzT,IAAI,CAACgU,GAAL,CAAS,KAAKJ,MAAd,EAAsB,IAAKE,CAAAA,QAAL,EAAtB,CAAnB,CAAA;;IACA,IAAI,IAAA,CAAKD,MAAT,EAAiB;EACb,IAAA,IAAII,IAAI,GAAGjU,IAAI,CAACkU,MAAL,EAAX,CAAA;EACA,IAAA,IAAIC,SAAS,GAAGnU,IAAI,CAAC6B,KAAL,CAAWoS,IAAI,GAAG,IAAKJ,CAAAA,MAAZ,GAAqBJ,EAAhC,CAAhB,CAAA;MACAA,EAAE,GAAG,CAACzT,IAAI,CAAC6B,KAAL,CAAWoS,IAAI,GAAG,EAAlB,CAAA,GAAwB,CAAzB,KAA+B,CAA/B,GAAmCR,EAAE,GAAGU,SAAxC,GAAoDV,EAAE,GAAGU,SAA9D,CAAA;EACH,GAAA;;IACD,OAAOnU,IAAI,CAAC0T,GAAL,CAASD,EAAT,EAAa,IAAA,CAAKE,GAAlB,CAAA,GAAyB,CAAhC,CAAA;EACH,CARD,CAAA;EASA;EACA;EACA;EACA;EACA;;;EACAH,OAAO,CAACna,SAAR,CAAkB+a,KAAlB,GAA0B,YAAY;IAClC,IAAKN,CAAAA,QAAL,GAAgB,CAAhB,CAAA;EACH,CAFD,CAAA;EAGA;EACA;EACA;EACA;EACA;;;EACAN,OAAO,CAACna,SAAR,CAAkBgb,MAAlB,GAA2B,UAAUX,GAAV,EAAe;IACtC,IAAKD,CAAAA,EAAL,GAAUC,GAAV,CAAA;EACH,CAFD,CAAA;EAGA;EACA;EACA;EACA;EACA;;;EACAF,OAAO,CAACna,SAAR,CAAkBib,MAAlB,GAA2B,UAAUX,GAAV,EAAe;IACtC,IAAKA,CAAAA,GAAL,GAAWA,GAAX,CAAA;EACH,CAFD,CAAA;EAGA;EACA;EACA;EACA;EACA;;;EACAH,OAAO,CAACna,SAAR,CAAkBkb,SAAlB,GAA8B,UAAUV,MAAV,EAAkB;IAC5C,IAAKA,CAAAA,MAAL,GAAcA,MAAd,CAAA;EACH,CAFD;;ECzDA,IAAaW,OAAb,gBAAA,UAAA,QAAA,EAAA;EAAA,EAAA,SAAA,CAAA,OAAA,EAAA,QAAA,CAAA,CAAA;;EAAA,EAAA,IAAA,MAAA,GAAA,YAAA,CAAA,OAAA,CAAA,CAAA;;IACI,SAAYxP,OAAAA,CAAAA,GAAZ,EAAiBzF,IAAjB,EAAuB;EAAA,IAAA,IAAA,KAAA,CAAA;;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;EACnB,IAAA,IAAIkV,EAAJ,CAAA;;EACA,IAAA,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;MACA,KAAKC,CAAAA,IAAL,GAAY,EAAZ,CAAA;MACA,KAAK5C,CAAAA,IAAL,GAAY,EAAZ,CAAA;;EACA,IAAA,IAAI9M,GAAG,IAAI,QAAoBA,KAAAA,OAAAA,CAAAA,GAApB,CAAX,EAAoC;EAChCzF,MAAAA,IAAI,GAAGyF,GAAP,CAAA;EACAA,MAAAA,GAAG,GAAGS,SAAN,CAAA;EACH,KAAA;;MACDlG,IAAI,GAAGA,IAAI,IAAI,EAAf,CAAA;EACAA,IAAAA,IAAI,CAACuF,IAAL,GAAYvF,IAAI,CAACuF,IAAL,IAAa,YAAzB,CAAA;MACA,KAAKvF,CAAAA,IAAL,GAAYA,IAAZ,CAAA;MACAD,qBAAqB,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAOC,IAAP,CAArB,CAAA;;EACA,IAAA,KAAA,CAAKoV,YAAL,CAAkBpV,IAAI,CAACoV,YAAL,KAAsB,KAAxC,CAAA,CAAA;;EACA,IAAA,KAAA,CAAKC,oBAAL,CAA0BrV,IAAI,CAACqV,oBAAL,IAA6BC,QAAvD,CAAA,CAAA;;EACA,IAAA,KAAA,CAAKC,iBAAL,CAAuBvV,IAAI,CAACuV,iBAAL,IAA0B,IAAjD,CAAA,CAAA;;EACA,IAAA,KAAA,CAAKC,oBAAL,CAA0BxV,IAAI,CAACwV,oBAAL,IAA6B,IAAvD,CAAA,CAAA;;EACA,IAAA,KAAA,CAAKC,mBAAL,CAAyB,CAACP,EAAE,GAAGlV,IAAI,CAACyV,mBAAX,MAAoC,IAApC,IAA4CP,EAAE,KAAK,KAAK,CAAxD,GAA4DA,EAA5D,GAAiE,GAA1F,CAAA,CAAA;;EACA,IAAA,KAAA,CAAKQ,OAAL,GAAe,IAAIzB,OAAJ,CAAY;QACvBE,GAAG,EAAE,KAAKoB,CAAAA,iBAAL,EADkB;QAEvBnB,GAAG,EAAE,KAAKoB,CAAAA,oBAAL,EAFkB;QAGvBlB,MAAM,EAAE,MAAKmB,mBAAL,EAAA;EAHe,KAAZ,CAAf,CAAA;;MAKA,KAAK/O,CAAAA,OAAL,CAAa,IAAA,IAAQ1G,IAAI,CAAC0G,OAAb,GAAuB,KAAvB,GAA+B1G,IAAI,CAAC0G,OAAjD,CAAA,CAAA;;MACA,KAAKgM,CAAAA,WAAL,GAAmB,QAAnB,CAAA;MACA,KAAKjN,CAAAA,GAAL,GAAWA,GAAX,CAAA;;EACA,IAAA,IAAMkQ,OAAO,GAAG3V,IAAI,CAAC4V,MAAL,IAAeA,MAA/B,CAAA;;EACA,IAAA,KAAA,CAAKC,OAAL,GAAe,IAAIF,OAAO,CAACpG,OAAZ,EAAf,CAAA;EACA,IAAA,KAAA,CAAKuG,OAAL,GAAe,IAAIH,OAAO,CAACxF,OAAZ,EAAf,CAAA;EACA,IAAA,KAAA,CAAKmC,YAAL,GAAoBtS,IAAI,CAAC+V,WAAL,KAAqB,KAAzC,CAAA;EACA,IAAA,IAAI,KAAKzD,CAAAA,YAAT,EACI,KAAA,CAAKlM,IAAL,EAAA,CAAA;EA/Be,IAAA,OAAA,KAAA,CAAA;EAgCtB,GAAA;;EAjCL,EAAA,YAAA,CAAA,OAAA,EAAA,CAAA;EAAA,IAAA,GAAA,EAAA,cAAA;MAAA,KAkCI,EAAA,SAAA,YAAA,CAAa4P,CAAb,EAAgB;EACZ,MAAA,IAAI,CAAC5X,SAAS,CAAC/C,MAAf,EACI,OAAO,KAAK4a,aAAZ,CAAA;EACJ,MAAA,IAAA,CAAKA,aAAL,GAAqB,CAAC,CAACD,CAAvB,CAAA;EACA,MAAA,OAAO,IAAP,CAAA;EACH,KAAA;EAvCL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,sBAAA;MAAA,KAwCI,EAAA,SAAA,oBAAA,CAAqBA,CAArB,EAAwB;EACpB,MAAA,IAAIA,CAAC,KAAK9P,SAAV,EACI,OAAO,KAAKgQ,qBAAZ,CAAA;QACJ,IAAKA,CAAAA,qBAAL,GAA6BF,CAA7B,CAAA;EACA,MAAA,OAAO,IAAP,CAAA;EACH,KAAA;EA7CL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,mBAAA;MAAA,KA8CI,EAAA,SAAA,iBAAA,CAAkBA,CAAlB,EAAqB;EACjB,MAAA,IAAId,EAAJ,CAAA;;EACA,MAAA,IAAIc,CAAC,KAAK9P,SAAV,EACI,OAAO,KAAKiQ,kBAAZ,CAAA;QACJ,IAAKA,CAAAA,kBAAL,GAA0BH,CAA1B,CAAA;QACA,CAACd,EAAE,GAAG,IAAKQ,CAAAA,OAAX,MAAwB,IAAxB,IAAgCR,EAAE,KAAK,KAAK,CAA5C,GAAgD,KAAK,CAArD,GAAyDA,EAAE,CAACJ,MAAH,CAAUkB,CAAV,CAAzD,CAAA;EACA,MAAA,OAAO,IAAP,CAAA;EACH,KAAA;EArDL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,qBAAA;MAAA,KAsDI,EAAA,SAAA,mBAAA,CAAoBA,CAApB,EAAuB;EACnB,MAAA,IAAId,EAAJ,CAAA;;EACA,MAAA,IAAIc,CAAC,KAAK9P,SAAV,EACI,OAAO,KAAKkQ,oBAAZ,CAAA;QACJ,IAAKA,CAAAA,oBAAL,GAA4BJ,CAA5B,CAAA;QACA,CAACd,EAAE,GAAG,IAAKQ,CAAAA,OAAX,MAAwB,IAAxB,IAAgCR,EAAE,KAAK,KAAK,CAA5C,GAAgD,KAAK,CAArD,GAAyDA,EAAE,CAACF,SAAH,CAAagB,CAAb,CAAzD,CAAA;EACA,MAAA,OAAO,IAAP,CAAA;EACH,KAAA;EA7DL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,sBAAA;MAAA,KA8DI,EAAA,SAAA,oBAAA,CAAqBA,CAArB,EAAwB;EACpB,MAAA,IAAId,EAAJ,CAAA;;EACA,MAAA,IAAIc,CAAC,KAAK9P,SAAV,EACI,OAAO,KAAKmQ,qBAAZ,CAAA;QACJ,IAAKA,CAAAA,qBAAL,GAA6BL,CAA7B,CAAA;QACA,CAACd,EAAE,GAAG,IAAKQ,CAAAA,OAAX,MAAwB,IAAxB,IAAgCR,EAAE,KAAK,KAAK,CAA5C,GAAgD,KAAK,CAArD,GAAyDA,EAAE,CAACH,MAAH,CAAUiB,CAAV,CAAzD,CAAA;EACA,MAAA,OAAO,IAAP,CAAA;EACH,KAAA;EArEL,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,SAAA;MAAA,KAsEI,EAAA,SAAA,OAAA,CAAQA,CAAR,EAAW;EACP,MAAA,IAAI,CAAC5X,SAAS,CAAC/C,MAAf,EACI,OAAO,KAAKib,QAAZ,CAAA;QACJ,IAAKA,CAAAA,QAAL,GAAgBN,CAAhB,CAAA;EACA,MAAA,OAAO,IAAP,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;EACA;;EAjFA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,sBAAA;EAAA,IAAA,KAAA,EAkFI,SAAuB,oBAAA,GAAA;EACnB;EACA,MAAA,IAAI,CAAC,IAAA,CAAKO,aAAN,IACA,IAAKN,CAAAA,aADL,IAEA,IAAA,CAAKP,OAAL,CAAanB,QAAb,KAA0B,CAF9B,EAEiC;EAC7B;EACA,QAAA,IAAA,CAAKiC,SAAL,EAAA,CAAA;EACH,OAAA;EACJ,KAAA;EACD;EACJ;EACA;EACA;EACA;EACA;EACA;;EAjGA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,MAAA;MAAA,KAkGI,EAAA,SAAA,IAAA,CAAKzY,EAAL,EAAS;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;;QACL,IAAI,CAAC,IAAK2U,CAAAA,WAAL,CAAiBpN,OAAjB,CAAyB,MAAzB,CAAL,EACI,OAAO,IAAP,CAAA;QACJ,IAAKyN,CAAAA,MAAL,GAAc,IAAI0D,QAAJ,CAAW,KAAKhR,GAAhB,EAAqB,IAAKzF,CAAAA,IAA1B,CAAd,CAAA;QACA,IAAMwB,MAAM,GAAG,IAAA,CAAKuR,MAApB,CAAA;QACA,IAAM7T,IAAI,GAAG,IAAb,CAAA;QACA,IAAKwT,CAAAA,WAAL,GAAmB,SAAnB,CAAA;EACA,MAAA,IAAA,CAAKgE,aAAL,GAAqB,KAArB,CAPK;;QASL,IAAMC,cAAc,GAAG/Y,EAAE,CAAC4D,MAAD,EAAS,MAAT,EAAiB,YAAY;EAClDtC,QAAAA,IAAI,CAAC2J,MAAL,EAAA,CAAA;UACA9K,EAAE,IAAIA,EAAE,EAAR,CAAA;SAFqB,CAAzB,CATK;;QAcL,IAAM6Y,QAAQ,GAAGhZ,EAAE,CAAC4D,MAAD,EAAS,OAAT,EAAkB,UAAC0B,GAAD,EAAS;EAC1ChE,QAAAA,IAAI,CAACiI,OAAL,EAAA,CAAA;UACAjI,IAAI,CAACwT,WAAL,GAAmB,QAAnB,CAAA;;EACA,QAAA,MAAI,CAAC5T,YAAL,CAAkB,OAAlB,EAA2BoE,GAA3B,CAAA,CAAA;;EACA,QAAA,IAAInF,EAAJ,EAAQ;YACJA,EAAE,CAACmF,GAAD,CAAF,CAAA;EACH,SAFD,MAGK;EACD;EACAhE,UAAAA,IAAI,CAAC2X,oBAAL,EAAA,CAAA;EACH,SAAA;EACJ,OAXkB,CAAnB,CAAA;;QAYA,IAAI,KAAA,KAAU,IAAKP,CAAAA,QAAnB,EAA6B;UACzB,IAAM5P,OAAO,GAAG,IAAA,CAAK4P,QAArB,CAAA;;UACA,IAAI5P,OAAO,KAAK,CAAhB,EAAmB;EACfiQ,UAAAA,cAAc,GADC;EAElB,SAJwB;;;EAMzB,QAAA,IAAMzD,KAAK,GAAG,IAAKhT,CAAAA,YAAL,CAAkB,YAAM;YAClCyW,cAAc,EAAA,CAAA;YACdnV,MAAM,CAACoD,KAAP,EAAA,CAFkC;;YAIlCpD,MAAM,CAAC7C,IAAP,CAAY,OAAZ,EAAqB,IAAIwC,KAAJ,CAAU,SAAV,CAArB,CAAA,CAAA;WAJU,EAKXuF,OALW,CAAd,CAAA;;EAMA,QAAA,IAAI,IAAK1G,CAAAA,IAAL,CAAU8I,SAAd,EAAyB;EACrBoK,UAAAA,KAAK,CAAClK,KAAN,EAAA,CAAA;EACH,SAAA;;EACD,QAAA,IAAA,CAAKuJ,IAAL,CAAU/U,IAAV,CAAe,SAAS8T,UAAT,GAAsB;YACjCxR,YAAY,CAACoT,KAAD,CAAZ,CAAA;WADJ,CAAA,CAAA;EAGH,OAAA;;EACD,MAAA,IAAA,CAAKX,IAAL,CAAU/U,IAAV,CAAemZ,cAAf,CAAA,CAAA;EACA,MAAA,IAAA,CAAKpE,IAAL,CAAU/U,IAAV,CAAeoZ,QAAf,CAAA,CAAA;EACA,MAAA,OAAO,IAAP,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;EACA;;EAxJA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,SAAA;MAAA,KAyJI,EAAA,SAAA,OAAA,CAAQ7Y,EAAR,EAAY;EACR,MAAA,OAAO,IAAKqI,CAAAA,IAAL,CAAUrI,EAAV,CAAP,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;;EAhKA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,QAAA;EAAA,IAAA,KAAA,EAiKI,SAAS,MAAA,GAAA;EACL;QACA,IAAKoJ,CAAAA,OAAL,GAFK;;QAIL,IAAKuL,CAAAA,WAAL,GAAmB,MAAnB,CAAA;EACA,MAAA,IAAA,CAAK5T,YAAL,CAAkB,MAAlB,CAAA,CALK;;QAOL,IAAM0C,MAAM,GAAG,IAAA,CAAKuR,MAApB,CAAA;EACA,MAAA,IAAA,CAAKR,IAAL,CAAU/U,IAAV,CAAeI,EAAE,CAAC4D,MAAD,EAAS,MAAT,EAAiB,KAAKsV,MAAL,CAAY3W,IAAZ,CAAiB,IAAjB,CAAjB,CAAjB,EAA2DvC,EAAE,CAAC4D,MAAD,EAAS,MAAT,EAAiB,KAAKuV,MAAL,CAAY5W,IAAZ,CAAiB,IAAjB,CAAjB,CAA7D,EAAuGvC,EAAE,CAAC4D,MAAD,EAAS,OAAT,EAAkB,IAAA,CAAK6H,OAAL,CAAalJ,IAAb,CAAkB,IAAlB,CAAlB,CAAzG,EAAqJvC,EAAE,CAAC4D,MAAD,EAAS,OAAT,EAAkB,IAAA,CAAKyH,OAAL,CAAa9I,IAAb,CAAkB,IAAlB,CAAlB,CAAvJ,EAAmMvC,EAAE,CAAC,KAAKkY,OAAN,EAAe,SAAf,EAA0B,KAAKkB,SAAL,CAAe7W,IAAf,CAAoB,IAApB,CAA1B,CAArM,CAAA,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;;EA/KA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,QAAA;EAAA,IAAA,KAAA,EAgLI,SAAS,MAAA,GAAA;QACL,IAAKrB,CAAAA,YAAL,CAAkB,MAAlB,CAAA,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;;EAvLA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,QAAA;MAAA,KAwLI,EAAA,SAAA,MAAA,CAAOnF,IAAP,EAAa;QACT,IAAI;EACA,QAAA,IAAA,CAAKmc,OAAL,CAAamB,GAAb,CAAiBtd,IAAjB,CAAA,CAAA;SADJ,CAGA,OAAO2J,CAAP,EAAU;EACN,QAAA,IAAA,CAAK2F,OAAL,CAAa,aAAb,EAA4B3F,CAA5B,CAAA,CAAA;EACH,OAAA;EACJ,KAAA;EACD;EACJ;EACA;EACA;EACA;;EApMA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,WAAA;MAAA,KAqMI,EAAA,SAAA,SAAA,CAAUnG,MAAV,EAAkB;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;;EACd;EACAuK,MAAAA,QAAQ,CAAC,YAAM;EACX,QAAA,MAAI,CAAC5I,YAAL,CAAkB,QAAlB,EAA4B3B,MAA5B,CAAA,CAAA;SADI,EAEL,IAAK+C,CAAAA,YAFA,CAAR,CAAA;EAGH,KAAA;EACD;EACJ;EACA;EACA;EACA;;EA/MA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,SAAA;MAAA,KAgNI,EAAA,SAAA,OAAA,CAAQgD,GAAR,EAAa;EACT,MAAA,IAAA,CAAKpE,YAAL,CAAkB,OAAlB,EAA2BoE,GAA3B,CAAA,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;EACA;;EAxNA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,QAAA;EAAA,IAAA,KAAA,EAyNI,SAAO6M,MAAAA,CAAAA,GAAP,EAAY/P,IAAZ,EAAkB;EACd,MAAA,IAAIwB,MAAM,GAAG,IAAA,CAAK2T,IAAL,CAAUpF,GAAV,CAAb,CAAA;;QACA,IAAI,CAACvO,MAAL,EAAa;UACTA,MAAM,GAAG,IAAIoJ,MAAJ,CAAW,IAAX,EAAiBmF,GAAjB,EAAsB/P,IAAtB,CAAT,CAAA;EACA,QAAA,IAAA,CAAKmV,IAAL,CAAUpF,GAAV,CAAA,GAAiBvO,MAAjB,CAAA;EACH,OAAA;;EACD,MAAA,OAAOA,MAAP,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;EACA;;EAtOA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,UAAA;MAAA,KAuOI,EAAA,SAAA,QAAA,CAASA,MAAT,EAAiB;QACb,IAAM2T,IAAI,GAAGhc,MAAM,CAACG,IAAP,CAAY,IAAA,CAAK6b,IAAjB,CAAb,CAAA;;EACA,MAAA,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,KAAA,GAAkBA,IAAlB,EAAwB,EAAA,GAAA,KAAA,CAAA,MAAA,EAAA,EAAA,EAAA,EAAA;EAAnB,QAAA,IAAMpF,GAAG,GAAT,KAAA,CAAA,EAAA,CAAA,CAAA;EACD,QAAA,IAAMvO,OAAM,GAAG,IAAA,CAAK2T,IAAL,CAAUpF,GAAV,CAAf,CAAA;;UACA,IAAIvO,OAAM,CAAC0V,MAAX,EAAmB;EACf,UAAA,OAAA;EACH,SAAA;EACJ,OAAA;;EACD,MAAA,IAAA,CAAKC,MAAL,EAAA,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;EACA;;EAtPA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,SAAA;MAAA,KAuPI,EAAA,SAAA,OAAA,CAAQha,MAAR,EAAgB;QACZ,IAAMH,cAAc,GAAG,IAAK6Y,CAAAA,OAAL,CAAa1T,MAAb,CAAoBhF,MAApB,CAAvB,CAAA;;EACA,MAAA,KAAK,IAAI/B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4B,cAAc,CAAC3B,MAAnC,EAA2CD,CAAC,EAA5C,EAAgD;UAC5C,IAAK2X,CAAAA,MAAL,CAAYnR,KAAZ,CAAkB5E,cAAc,CAAC5B,CAAD,CAAhC,EAAqC+B,MAAM,CAACwQ,OAA5C,CAAA,CAAA;EACH,OAAA;EACJ,KAAA;EACD;EACJ;EACA;EACA;EACA;;EAjQA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,SAAA;EAAA,IAAA,KAAA,EAkQI,SAAU,OAAA,GAAA;EACN,MAAA,IAAA,CAAK4E,IAAL,CAAUhZ,OAAV,CAAkB,UAAC+X,UAAD,EAAA;EAAA,QAAA,OAAgBA,UAAU,EAA1B,CAAA;SAAlB,CAAA,CAAA;EACA,MAAA,IAAA,CAAKiB,IAAL,CAAUlX,MAAV,GAAmB,CAAnB,CAAA;QACA,IAAKya,CAAAA,OAAL,CAAarC,OAAb,EAAA,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;;EA3QA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,QAAA;EAAA,IAAA,KAAA,EA4QI,SAAS,MAAA,GAAA;QACL,IAAKiD,CAAAA,aAAL,GAAqB,IAArB,CAAA;QACA,IAAKH,CAAAA,aAAL,GAAqB,KAArB,CAAA;QACA,IAAKtN,CAAAA,OAAL,CAAa,cAAb,CAAA,CAAA;EACA,MAAA,IAAI,KAAK8J,MAAT,EACI,IAAKA,CAAAA,MAAL,CAAYnO,KAAZ,EAAA,CAAA;EACP,KAAA;EACD;EACJ;EACA;EACA;EACA;;EAvRA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,YAAA;EAAA,IAAA,KAAA,EAwRI,SAAa,UAAA,GAAA;QACT,OAAO,IAAA,CAAKuS,MAAL,EAAP,CAAA;EACH,KAAA;EACD;EACJ;EACA;EACA;EACA;;EA/RA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,SAAA;EAAA,IAAA,KAAA,EAgSI,SAAQnW,OAAAA,CAAAA,MAAR,EAAgBC,WAAhB,EAA6B;EACzB,MAAA,IAAA,CAAKkG,OAAL,EAAA,CAAA;QACA,IAAKuO,CAAAA,OAAL,CAAab,KAAb,EAAA,CAAA;QACA,IAAKnC,CAAAA,WAAL,GAAmB,QAAnB,CAAA;EACA,MAAA,IAAA,CAAK5T,YAAL,CAAkB,OAAlB,EAA2BkC,MAA3B,EAAmCC,WAAnC,CAAA,CAAA;;EACA,MAAA,IAAI,KAAKgV,aAAL,IAAsB,CAAC,IAAA,CAAKS,aAAhC,EAA+C;EAC3C,QAAA,IAAA,CAAKF,SAAL,EAAA,CAAA;EACH,OAAA;EACJ,KAAA;EACD;EACJ;EACA;EACA;EACA;;EA7SA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,WAAA;EAAA,IAAA,KAAA,EA8SI,SAAY,SAAA,GAAA;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;;EACR,MAAA,IAAI,KAAKD,aAAL,IAAsB,KAAKG,aAA/B,EACI,OAAO,IAAP,CAAA;QACJ,IAAMxX,IAAI,GAAG,IAAb,CAAA;;EACA,MAAA,IAAI,KAAKwW,OAAL,CAAanB,QAAb,IAAyB,IAAA,CAAK2B,qBAAlC,EAAyD;UACrD,IAAKR,CAAAA,OAAL,CAAab,KAAb,EAAA,CAAA;UACA,IAAK/V,CAAAA,YAAL,CAAkB,kBAAlB,CAAA,CAAA;UACA,IAAKyX,CAAAA,aAAL,GAAqB,KAArB,CAAA;EACH,OAJD,MAKK;EACD,QAAA,IAAMa,KAAK,GAAG,IAAA,CAAK1B,OAAL,CAAalB,QAAb,EAAd,CAAA;UACA,IAAK+B,CAAAA,aAAL,GAAqB,IAArB,CAAA;EACA,QAAA,IAAMrD,KAAK,GAAG,IAAKhT,CAAAA,YAAL,CAAkB,YAAM;YAClC,IAAIhB,IAAI,CAACwX,aAAT,EACI,OAAA;;YACJ,MAAI,CAAC5X,YAAL,CAAkB,mBAAlB,EAAuCI,IAAI,CAACwW,OAAL,CAAanB,QAApD,CAAA,CAHkC;;;YAKlC,IAAIrV,IAAI,CAACwX,aAAT,EACI,OAAA;EACJxX,UAAAA,IAAI,CAACkH,IAAL,CAAU,UAAClD,GAAD,EAAS;EACf,YAAA,IAAIA,GAAJ,EAAS;gBACLhE,IAAI,CAACqX,aAAL,GAAqB,KAArB,CAAA;EACArX,cAAAA,IAAI,CAACsX,SAAL,EAAA,CAAA;;EACA,cAAA,MAAI,CAAC1X,YAAL,CAAkB,iBAAlB,EAAqCoE,GAArC,CAAA,CAAA;EACH,aAJD,MAKK;EACDhE,cAAAA,IAAI,CAACmY,WAAL,EAAA,CAAA;EACH,aAAA;aARL,CAAA,CAAA;WAPU,EAiBXD,KAjBW,CAAd,CAAA;;EAkBA,QAAA,IAAI,IAAKpX,CAAAA,IAAL,CAAU8I,SAAd,EAAyB;EACrBoK,UAAAA,KAAK,CAAClK,KAAN,EAAA,CAAA;EACH,SAAA;;EACD,QAAA,IAAA,CAAKuJ,IAAL,CAAU/U,IAAV,CAAe,SAAS8T,UAAT,GAAsB;YACjCxR,YAAY,CAACoT,KAAD,CAAZ,CAAA;WADJ,CAAA,CAAA;EAGH,OAAA;EACJ,KAAA;EACD;EACJ;EACA;EACA;EACA;;EAxVA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,aAAA;EAAA,IAAA,KAAA,EAyVI,SAAc,WAAA,GAAA;EACV,MAAA,IAAMoE,OAAO,GAAG,IAAK5B,CAAAA,OAAL,CAAanB,QAA7B,CAAA;QACA,IAAKgC,CAAAA,aAAL,GAAqB,KAArB,CAAA;QACA,IAAKb,CAAAA,OAAL,CAAab,KAAb,EAAA,CAAA;EACA,MAAA,IAAA,CAAK/V,YAAL,CAAkB,WAAlB,EAA+BwY,OAA/B,CAAA,CAAA;EACH,KAAA;EA9VL,GAAA,CAAA,CAAA,CAAA;;EAAA,EAAA,OAAA,OAAA,CAAA;EAAA,CAAA,CAA6B5Z,OAA7B,CAAA;;ECHA;EACA;EACA;;EACA,IAAM6Z,KAAK,GAAG,EAAd,CAAA;;EACA,SAASrc,MAAT,CAAgBuK,GAAhB,EAAqBzF,IAArB,EAA2B;EACvB,EAAA,IAAI,OAAOyF,CAAAA,GAAP,CAAe,KAAA,QAAnB,EAA6B;EACzBzF,IAAAA,IAAI,GAAGyF,GAAP,CAAA;EACAA,IAAAA,GAAG,GAAGS,SAAN,CAAA;EACH,GAAA;;IACDlG,IAAI,GAAGA,IAAI,IAAI,EAAf,CAAA;IACA,IAAMwX,MAAM,GAAGvJ,GAAG,CAACxI,GAAD,EAAMzF,IAAI,CAACuF,IAAL,IAAa,YAAnB,CAAlB,CAAA;EACA,EAAA,IAAM0E,MAAM,GAAGuN,MAAM,CAACvN,MAAtB,CAAA;EACA,EAAA,IAAMsB,EAAE,GAAGiM,MAAM,CAACjM,EAAlB,CAAA;EACA,EAAA,IAAMhG,IAAI,GAAGiS,MAAM,CAACjS,IAApB,CAAA;EACA,EAAA,IAAM6N,aAAa,GAAGmE,KAAK,CAAChM,EAAD,CAAL,IAAahG,IAAI,IAAIgS,KAAK,CAAChM,EAAD,CAAL,CAAU,MAAV,CAA3C,CAAA;EACA,EAAA,IAAMkM,aAAa,GAAGzX,IAAI,CAAC0X,QAAL,IAClB1X,IAAI,CAAC,sBAAD,CADc,IAElB,KAAUA,KAAAA,IAAI,CAAC2X,SAFG,IAGlBvE,aAHJ,CAAA;EAIA,EAAA,IAAItB,EAAJ,CAAA;;EACA,EAAA,IAAI2F,aAAJ,EAAmB;EACf3F,IAAAA,EAAE,GAAG,IAAImD,OAAJ,CAAYhL,MAAZ,EAAoBjK,IAApB,CAAL,CAAA;EACH,GAFD,MAGK;EACD,IAAA,IAAI,CAACuX,KAAK,CAAChM,EAAD,CAAV,EAAgB;QACZgM,KAAK,CAAChM,EAAD,CAAL,GAAY,IAAI0J,OAAJ,CAAYhL,MAAZ,EAAoBjK,IAApB,CAAZ,CAAA;EACH,KAAA;;EACD8R,IAAAA,EAAE,GAAGyF,KAAK,CAAChM,EAAD,CAAV,CAAA;EACH,GAAA;;IACD,IAAIiM,MAAM,CAAClW,KAAP,IAAgB,CAACtB,IAAI,CAACsB,KAA1B,EAAiC;EAC7BtB,IAAAA,IAAI,CAACsB,KAAL,GAAakW,MAAM,CAAClN,QAApB,CAAA;EACH,GAAA;;IACD,OAAOwH,EAAE,CAACtQ,MAAH,CAAUgW,MAAM,CAACjS,IAAjB,EAAuBvF,IAAvB,CAAP,CAAA;EACH;EAED;;;EACA,QAAA,CAAc9E,MAAd,EAAsB;EAClB+Z,EAAAA,OAAO,EAAPA,OADkB;EAElBrK,EAAAA,MAAM,EAANA,MAFkB;EAGlBkH,EAAAA,EAAE,EAAE5W,MAHc;EAIlBuW,EAAAA,OAAO,EAAEvW,MAAAA;EAJS,CAAtB,CAAA;;;;;;;;"} \ No newline at end of file diff --git a/vendor/socketio/socket.io.min.js b/vendor/socketio/socket.io.min.js new file mode 100644 index 000000000..ae6fa8b7f --- /dev/null +++ b/vendor/socketio/socket.io.min.js @@ -0,0 +1,7 @@ +/*! + * Socket.IO v4.5.3 + * (c) 2014-2022 Guillermo Rauch + * Released under the MIT License. + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).io=e()}(this,(function(){"use strict";function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function n(t,e){for(var n=0;nt.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return s=t.done,t},e:function(t){a=!0,o=t},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}var m=Object.create(null);m.open="0",m.close="1",m.ping="2",m.pong="3",m.message="4",m.upgrade="5",m.noop="6";var b=Object.create(null);Object.keys(m).forEach((function(t){b[m[t]]=t}));for(var k={type:"error",data:"parser error"},w="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),_="function"==typeof ArrayBuffer,O=function(t,e,n){var r,i=t.type,o=t.data;return w&&o instanceof Blob?e?n(o):E(o,n):_&&(o instanceof ArrayBuffer||(r=o,"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(r):r&&r.buffer instanceof ArrayBuffer))?e?n(o):E(new Blob([o]),n):n(m[i]+(o||""))},E=function(t,e){var n=new FileReader;return n.onload=function(){var t=n.result.split(",")[1];e("b"+t)},n.readAsDataURL(t)},A="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",R="undefined"==typeof Uint8Array?[]:new Uint8Array(256),T=0;T1?{type:b[n],data:t.substring(1)}:{type:b[n]}:k},S=function(t,e){if(C){var n=function(t){var e,n,r,i,o,s=.75*t.length,a=t.length,c=0;"="===t[t.length-1]&&(s--,"="===t[t.length-2]&&s--);var u=new ArrayBuffer(s),h=new Uint8Array(u);for(e=0;e>4,h[c++]=(15&r)<<4|i>>2,h[c++]=(3&i)<<6|63&o;return u}(t);return N(n,e)}return{base64:!0,data:t}},N=function(t,e){return"blob"===e&&t instanceof ArrayBuffer?new Blob([t]):t},x=String.fromCharCode(30);function L(t){if(t)return function(t){for(var e in L.prototype)t[e]=L.prototype[e];return t}(t)}L.prototype.on=L.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+t]=this._callbacks["$"+t]||[]).push(e),this},L.prototype.once=function(t,e){function n(){this.off(t,n),e.apply(this,arguments)}return n.fn=e,this.on(t,n),this},L.prototype.off=L.prototype.removeListener=L.prototype.removeAllListeners=L.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var n,r=this._callbacks["$"+t];if(!r)return this;if(1==arguments.length)return delete this._callbacks["$"+t],this;for(var i=0;i1?e-1:0),r=1;r0);return e}function W(){var t=z(+new Date);return t!==F?(K=0,F=t):t+"."+z(K++)}for(;Y<64;Y++)H[V[Y]]=Y;function $(t){var e="";for(var n in t)t.hasOwnProperty(n)&&(e.length&&(e+="&"),e+=encodeURIComponent(n)+"="+encodeURIComponent(t[n]));return e}function J(t){for(var e={},n=t.split("&"),r=0,i=n.length;r0&&void 0!==arguments[0]?arguments[0]:{};return i(t,{xd:this.xd,xs:this.xs},this.opts),new nt(this.uri(),t)}},{key:"doWrite",value:function(t,e){var n=this,r=this.request({method:"POST",data:t});r.on("success",e),r.on("error",(function(t,e){n.onError("xhr post error",t,e)}))}},{key:"doPoll",value:function(){var t=this,e=this.request();e.on("data",this.onData.bind(this)),e.on("error",(function(e,n){t.onError("xhr poll error",e,n)})),this.pollXhr=e}}]),s}(U),nt=function(t){o(i,t);var n=p(i);function i(t,r){var o;return e(this,i),D(f(o=n.call(this)),r),o.opts=r,o.method=r.method||"GET",o.uri=t,o.async=!1!==r.async,o.data=void 0!==r.data?r.data:null,o.create(),o}return r(i,[{key:"create",value:function(){var t=this,e=j(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");e.xdomain=!!this.opts.xd,e.xscheme=!!this.opts.xs;var n=this.xhr=new Q(e);try{n.open(this.method,this.uri,this.async);try{if(this.opts.extraHeaders)for(var r in n.setDisableHeaderCheck&&n.setDisableHeaderCheck(!0),this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(r)&&n.setRequestHeader(r,this.opts.extraHeaders[r])}catch(t){}if("POST"===this.method)try{n.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(t){}try{n.setRequestHeader("Accept","*/*")}catch(t){}"withCredentials"in n&&(n.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(n.timeout=this.opts.requestTimeout),n.onreadystatechange=function(){4===n.readyState&&(200===n.status||1223===n.status?t.onLoad():t.setTimeoutFn((function(){t.onError("number"==typeof n.status?n.status:0)}),0))},n.send(this.data)}catch(e){return void this.setTimeoutFn((function(){t.onError(e)}),0)}"undefined"!=typeof document&&(this.index=i.requestsCount++,i.requests[this.index]=this)}},{key:"onError",value:function(t){this.emitReserved("error",t,this.xhr),this.cleanup(!0)}},{key:"cleanup",value:function(t){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=Z,t)try{this.xhr.abort()}catch(t){}"undefined"!=typeof document&&delete i.requests[this.index],this.xhr=null}}},{key:"onLoad",value:function(){var t=this.xhr.responseText;null!==t&&(this.emitReserved("data",t),this.emitReserved("success"),this.cleanup())}},{key:"abort",value:function(){this.cleanup()}}]),i}(L);if(nt.requestsCount=0,nt.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",rt);else if("function"==typeof addEventListener){addEventListener("onpagehide"in P?"pagehide":"unload",rt,!1)}function rt(){for(var t in nt.requests)nt.requests.hasOwnProperty(t)&&nt.requests[t].abort()}var it="function"==typeof Promise&&"function"==typeof Promise.resolve?function(t){return Promise.resolve().then(t)}:function(t,e){return e(t,0)},ot=P.WebSocket||P.MozWebSocket,st="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase(),at=function(t){o(i,t);var n=p(i);function i(t){var r;return e(this,i),(r=n.call(this,t)).supportsBinary=!t.forceBase64,r}return r(i,[{key:"name",get:function(){return"websocket"}},{key:"doOpen",value:function(){if(this.check()){var t=this.uri(),e=this.opts.protocols,n=st?{}:j(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(n.headers=this.opts.extraHeaders);try{this.ws=st?new ot(t,e,n):e?new ot(t,e):new ot(t)}catch(t){return this.emitReserved("error",t)}this.ws.binaryType=this.socket.binaryType||"arraybuffer",this.addEventListeners()}}},{key:"addEventListeners",value:function(){var t=this;this.ws.onopen=function(){t.opts.autoUnref&&t.ws._socket.unref(),t.onOpen()},this.ws.onclose=function(e){return t.onClose({description:"websocket connection closed",context:e})},this.ws.onmessage=function(e){return t.onData(e.data)},this.ws.onerror=function(e){return t.onError("websocket error",e)}}},{key:"write",value:function(t){var e=this;this.writable=!1;for(var n=function(n){var r=t[n],i=n===t.length-1;O(r,e.supportsBinary,(function(t){try{e.ws.send(t)}catch(t){}i&&it((function(){e.writable=!0,e.emitReserved("drain")}),e.setTimeoutFn)}))},r=0;r1&&void 0!==arguments[1]?arguments[1]:{};return e(this,a),r=s.call(this),n&&"object"===t(n)&&(o=n,n=null),n?(n=ft(n),o.hostname=n.host,o.secure="https"===n.protocol||"wss"===n.protocol,o.port=n.port,n.query&&(o.query=n.query)):o.host&&(o.hostname=ft(o.host).host),D(f(r),o),r.secure=null!=o.secure?o.secure:"undefined"!=typeof location&&"https:"===location.protocol,o.hostname&&!o.port&&(o.port=r.secure?"443":"80"),r.hostname=o.hostname||("undefined"!=typeof location?location.hostname:"localhost"),r.port=o.port||("undefined"!=typeof location&&location.port?location.port:r.secure?"443":"80"),r.transports=o.transports||["polling","websocket"],r.readyState="",r.writeBuffer=[],r.prevBufferLen=0,r.opts=i({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!0},o),r.opts.path=r.opts.path.replace(/\/$/,"")+"/","string"==typeof r.opts.query&&(r.opts.query=J(r.opts.query)),r.id=null,r.upgrades=null,r.pingInterval=null,r.pingTimeout=null,r.pingTimeoutTimer=null,"function"==typeof addEventListener&&(r.opts.closeOnBeforeunload&&(r.beforeunloadEventListener=function(){r.transport&&(r.transport.removeAllListeners(),r.transport.close())},addEventListener("beforeunload",r.beforeunloadEventListener,!1)),"localhost"!==r.hostname&&(r.offlineEventListener=function(){r.onClose("transport close",{description:"network connection lost"})},addEventListener("offline",r.offlineEventListener,!1))),r.open(),r}return r(a,[{key:"createTransport",value:function(t){var e=i({},this.opts.query);e.EIO=4,e.transport=t,this.id&&(e.sid=this.id);var n=i({},this.opts.transportOptions[t],this.opts,{query:e,socket:this,hostname:this.hostname,secure:this.secure,port:this.port});return new ct[t](n)}},{key:"open",value:function(){var t,e=this;if(this.opts.rememberUpgrade&&a.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))t="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((function(){e.emitReserved("error","No transports available")}),0);t=this.transports[0]}this.readyState="opening";try{t=this.createTransport(t)}catch(t){return this.transports.shift(),void this.open()}t.open(),this.setTransport(t)}},{key:"setTransport",value:function(t){var e=this;this.transport&&this.transport.removeAllListeners(),this.transport=t,t.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",(function(t){return e.onClose("transport close",t)}))}},{key:"probe",value:function(t){var e=this,n=this.createTransport(t),r=!1;a.priorWebsocketSuccess=!1;var i=function(){r||(n.send([{type:"ping",data:"probe"}]),n.once("packet",(function(t){if(!r)if("pong"===t.type&&"probe"===t.data){if(e.upgrading=!0,e.emitReserved("upgrading",n),!n)return;a.priorWebsocketSuccess="websocket"===n.name,e.transport.pause((function(){r||"closed"!==e.readyState&&(f(),e.setTransport(n),n.send([{type:"upgrade"}]),e.emitReserved("upgrade",n),n=null,e.upgrading=!1,e.flush())}))}else{var i=new Error("probe error");i.transport=n.name,e.emitReserved("upgradeError",i)}})))};function o(){r||(r=!0,f(),n.close(),n=null)}var s=function(t){var r=new Error("probe error: "+t);r.transport=n.name,o(),e.emitReserved("upgradeError",r)};function c(){s("transport closed")}function u(){s("socket closed")}function h(t){n&&t.name!==n.name&&o()}var f=function(){n.removeListener("open",i),n.removeListener("error",s),n.removeListener("close",c),e.off("close",u),e.off("upgrading",h)};n.once("open",i),n.once("error",s),n.once("close",c),this.once("close",u),this.once("upgrading",h),n.open()}},{key:"onOpen",value:function(){if(this.readyState="open",a.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade&&this.transport.pause)for(var t=0,e=this.upgrades.length;t1))return this.writeBuffer;for(var t,e=1,n=0;n=57344?n+=3:(r++,n+=4);return n}(t):Math.ceil(1.33*(t.byteLength||t.size))),n>0&&e>this.maxPayload)return this.writeBuffer.slice(0,n);e+=2}return this.writeBuffer}},{key:"write",value:function(t,e,n){return this.sendPacket("message",t,e,n),this}},{key:"send",value:function(t,e,n){return this.sendPacket("message",t,e,n),this}},{key:"sendPacket",value:function(t,e,n,r){if("function"==typeof e&&(r=e,e=void 0),"function"==typeof n&&(r=n,n=null),"closing"!==this.readyState&&"closed"!==this.readyState){(n=n||{}).compress=!1!==n.compress;var i={type:t,data:e,options:n};this.emitReserved("packetCreate",i),this.writeBuffer.push(i),r&&this.once("flush",r),this.flush()}}},{key:"close",value:function(){var t=this,e=function(){t.onClose("forced close"),t.transport.close()},n=function n(){t.off("upgrade",n),t.off("upgradeError",n),e()},r=function(){t.once("upgrade",n),t.once("upgradeError",n)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(function(){t.upgrading?r():e()})):this.upgrading?r():e()),this}},{key:"onError",value:function(t){a.priorWebsocketSuccess=!1,this.emitReserved("error",t),this.onClose("transport error",t)}},{key:"onClose",value:function(t,e){"opening"!==this.readyState&&"open"!==this.readyState&&"closing"!==this.readyState||(this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),"function"==typeof removeEventListener&&(removeEventListener("beforeunload",this.beforeunloadEventListener,!1),removeEventListener("offline",this.offlineEventListener,!1)),this.readyState="closed",this.id=null,this.emitReserved("close",t,e),this.writeBuffer=[],this.prevBufferLen=0)}},{key:"filterUpgrades",value:function(t){for(var e=[],n=0,r=t.length;n0;case Ot.ACK:case Ot.BINARY_ACK:return Array.isArray(n)}}}]),a}(L),Rt=function(){function t(n){e(this,t),this.packet=n,this.buffers=[],this.reconPack=n}return r(t,[{key:"takeBinaryData",value:function(t){if(this.buffers.push(t),this.buffers.length===this.reconPack.attachments){var e=wt(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null}},{key:"finishedReconstruction",value:function(){this.reconPack=null,this.buffers=[]}}]),t}(),Tt=Object.freeze({__proto__:null,protocol:5,get PacketType(){return Ot},Encoder:Et,Decoder:At});function Ct(t,e,n){return t.on(e,n),function(){t.off(e,n)}}var Bt=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1}),St=function(t){o(i,t);var n=p(i);function i(t,r,o){var s;return e(this,i),(s=n.call(this)).connected=!1,s.receiveBuffer=[],s.sendBuffer=[],s.ids=0,s.acks={},s.flags={},s.io=t,s.nsp=r,o&&o.auth&&(s.auth=o.auth),s.io._autoConnect&&s.open(),s}return r(i,[{key:"disconnected",get:function(){return!this.connected}},{key:"subEvents",value:function(){if(!this.subs){var t=this.io;this.subs=[Ct(t,"open",this.onopen.bind(this)),Ct(t,"packet",this.onpacket.bind(this)),Ct(t,"error",this.onerror.bind(this)),Ct(t,"close",this.onclose.bind(this))]}}},{key:"active",get:function(){return!!this.subs}},{key:"connect",value:function(){return this.connected||(this.subEvents(),this.io._reconnecting||this.io.open(),"open"===this.io._readyState&&this.onopen()),this}},{key:"open",value:function(){return this.connect()}},{key:"send",value:function(){for(var t=arguments.length,e=new Array(t),n=0;n1?e-1:0),r=1;r0&&t.jitter<=1?t.jitter:0,this.attempts=0}Nt.prototype.duration=function(){var t=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var e=Math.random(),n=Math.floor(e*this.jitter*t);t=0==(1&Math.floor(10*e))?t-n:t+n}return 0|Math.min(t,this.max)},Nt.prototype.reset=function(){this.attempts=0},Nt.prototype.setMin=function(t){this.ms=t},Nt.prototype.setMax=function(t){this.max=t},Nt.prototype.setJitter=function(t){this.jitter=t};var xt=function(n){o(s,n);var i=p(s);function s(n,r){var o,a;e(this,s),(o=i.call(this)).nsps={},o.subs=[],n&&"object"===t(n)&&(r=n,n=void 0),(r=r||{}).path=r.path||"/socket.io",o.opts=r,D(f(o),r),o.reconnection(!1!==r.reconnection),o.reconnectionAttempts(r.reconnectionAttempts||1/0),o.reconnectionDelay(r.reconnectionDelay||1e3),o.reconnectionDelayMax(r.reconnectionDelayMax||5e3),o.randomizationFactor(null!==(a=r.randomizationFactor)&&void 0!==a?a:.5),o.backoff=new Nt({min:o.reconnectionDelay(),max:o.reconnectionDelayMax(),jitter:o.randomizationFactor()}),o.timeout(null==r.timeout?2e4:r.timeout),o._readyState="closed",o.uri=n;var c=r.parser||Tt;return o.encoder=new c.Encoder,o.decoder=new c.Decoder,o._autoConnect=!1!==r.autoConnect,o._autoConnect&&o.open(),o}return r(s,[{key:"reconnection",value:function(t){return arguments.length?(this._reconnection=!!t,this):this._reconnection}},{key:"reconnectionAttempts",value:function(t){return void 0===t?this._reconnectionAttempts:(this._reconnectionAttempts=t,this)}},{key:"reconnectionDelay",value:function(t){var e;return void 0===t?this._reconnectionDelay:(this._reconnectionDelay=t,null===(e=this.backoff)||void 0===e||e.setMin(t),this)}},{key:"randomizationFactor",value:function(t){var e;return void 0===t?this._randomizationFactor:(this._randomizationFactor=t,null===(e=this.backoff)||void 0===e||e.setJitter(t),this)}},{key:"reconnectionDelayMax",value:function(t){var e;return void 0===t?this._reconnectionDelayMax:(this._reconnectionDelayMax=t,null===(e=this.backoff)||void 0===e||e.setMax(t),this)}},{key:"timeout",value:function(t){return arguments.length?(this._timeout=t,this):this._timeout}},{key:"maybeReconnectOnOpen",value:function(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}},{key:"open",value:function(t){var e=this;if(~this._readyState.indexOf("open"))return this;this.engine=new lt(this.uri,this.opts);var n=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;var i=Ct(n,"open",(function(){r.onopen(),t&&t()})),o=Ct(n,"error",(function(n){r.cleanup(),r._readyState="closed",e.emitReserved("error",n),t?t(n):r.maybeReconnectOnOpen()}));if(!1!==this._timeout){var s=this._timeout;0===s&&i();var a=this.setTimeoutFn((function(){i(),n.close(),n.emit("error",new Error("timeout"))}),s);this.opts.autoUnref&&a.unref(),this.subs.push((function(){clearTimeout(a)}))}return this.subs.push(i),this.subs.push(o),this}},{key:"connect",value:function(t){return this.open(t)}},{key:"onopen",value:function(){this.cleanup(),this._readyState="open",this.emitReserved("open");var t=this.engine;this.subs.push(Ct(t,"ping",this.onping.bind(this)),Ct(t,"data",this.ondata.bind(this)),Ct(t,"error",this.onerror.bind(this)),Ct(t,"close",this.onclose.bind(this)),Ct(this.decoder,"decoded",this.ondecoded.bind(this)))}},{key:"onping",value:function(){this.emitReserved("ping")}},{key:"ondata",value:function(t){try{this.decoder.add(t)}catch(t){this.onclose("parse error",t)}}},{key:"ondecoded",value:function(t){var e=this;it((function(){e.emitReserved("packet",t)}),this.setTimeoutFn)}},{key:"onerror",value:function(t){this.emitReserved("error",t)}},{key:"socket",value:function(t,e){var n=this.nsps[t];return n||(n=new St(this,t,e),this.nsps[t]=n),n}},{key:"_destroy",value:function(t){for(var e=0,n=Object.keys(this.nsps);e=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{var n=this.backoff.duration();this._reconnecting=!0;var r=this.setTimeoutFn((function(){e.skipReconnect||(t.emitReserved("reconnect_attempt",e.backoff.attempts),e.skipReconnect||e.open((function(n){n?(e._reconnecting=!1,e.reconnect(),t.emitReserved("reconnect_error",n)):e.onreconnect()})))}),n);this.opts.autoUnref&&r.unref(),this.subs.push((function(){clearTimeout(r)}))}}},{key:"onreconnect",value:function(){var t=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",t)}}]),s}(L),Lt={};function Pt(e,n){"object"===t(e)&&(n=e,e=void 0);var r,i=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2?arguments[2]:void 0,r=t;n=n||"undefined"!=typeof location&&location,null==t&&(t=n.protocol+"//"+n.host),"string"==typeof t&&("/"===t.charAt(0)&&(t="/"===t.charAt(1)?n.protocol+t:n.host+t),/^(https?|wss?):\/\//.test(t)||(t=void 0!==n?n.protocol+"//"+t:"https://"+t),r=ft(t)),r.port||(/^(http|ws)$/.test(r.protocol)?r.port="80":/^(http|ws)s$/.test(r.protocol)&&(r.port="443")),r.path=r.path||"/";var i=-1!==r.host.indexOf(":")?"["+r.host+"]":r.host;return r.id=r.protocol+"://"+i+":"+r.port+e,r.href=r.protocol+"://"+i+(n&&n.port===r.port?"":":"+r.port),r}(e,(n=n||{}).path||"/socket.io"),o=i.source,s=i.id,a=i.path,c=Lt[s]&&a in Lt[s].nsps;return n.forceNew||n["force new connection"]||!1===n.multiplex||c?r=new xt(o,n):(Lt[s]||(Lt[s]=new xt(o,n)),r=Lt[s]),i.query&&!n.query&&(n.query=i.queryKey),r.socket(i.path,n)}return i(Pt,{Manager:xt,Socket:St,io:Pt,connect:Pt}),Pt})); +//# sourceMappingURL=socket.io.min.js.map diff --git a/vendor/socketio/socket.io.min.js.map b/vendor/socketio/socket.io.min.js.map new file mode 100644 index 000000000..f266039b6 --- /dev/null +++ b/vendor/socketio/socket.io.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"socket.io.min.js","sources":["../node_modules/engine.io-parser/build/esm/commons.js","../node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.js","../node_modules/engine.io-parser/build/esm/encodePacket.browser.js","../node_modules/engine.io-parser/build/esm/decodePacket.browser.js","../node_modules/engine.io-parser/build/esm/index.js","../node_modules/@socket.io/component-emitter/index.mjs","../node_modules/engine.io-client/build/esm/globalThis.browser.js","../node_modules/engine.io-client/build/esm/util.js","../node_modules/engine.io-client/build/esm/contrib/yeast.js","../node_modules/engine.io-client/build/esm/transport.js","../node_modules/engine.io-client/build/esm/contrib/parseqs.js","../node_modules/engine.io-client/build/esm/contrib/has-cors.js","../node_modules/engine.io-client/build/esm/transports/xmlhttprequest.browser.js","../node_modules/engine.io-client/build/esm/transports/polling.js","../node_modules/engine.io-client/build/esm/transports/websocket-constructor.browser.js","../node_modules/engine.io-client/build/esm/transports/websocket.js","../node_modules/engine.io-client/build/esm/transports/index.js","../node_modules/engine.io-client/build/esm/contrib/parseuri.js","../node_modules/engine.io-client/build/esm/socket.js","../node_modules/engine.io-client/build/esm/index.js","../node_modules/socket.io-parser/build/esm/is-binary.js","../node_modules/socket.io-parser/build/esm/binary.js","../node_modules/socket.io-parser/build/esm/index.js","../build/esm/on.js","../build/esm/socket.js","../build/esm/contrib/backo2.js","../build/esm/manager.js","../build/esm/index.js","../build/esm/url.js"],"sourcesContent":["const PACKET_TYPES = Object.create(null); // no Map = no polyfill\nPACKET_TYPES[\"open\"] = \"0\";\nPACKET_TYPES[\"close\"] = \"1\";\nPACKET_TYPES[\"ping\"] = \"2\";\nPACKET_TYPES[\"pong\"] = \"3\";\nPACKET_TYPES[\"message\"] = \"4\";\nPACKET_TYPES[\"upgrade\"] = \"5\";\nPACKET_TYPES[\"noop\"] = \"6\";\nconst PACKET_TYPES_REVERSE = Object.create(null);\nObject.keys(PACKET_TYPES).forEach(key => {\n PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nconst ERROR_PACKET = { type: \"error\", data: \"parser error\" };\nexport { PACKET_TYPES, PACKET_TYPES_REVERSE, ERROR_PACKET };\n","const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nexport const encode = (arraybuffer) => {\n let bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nexport const decode = (base64) => {\n let bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n const arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n","import { PACKET_TYPES } from \"./commons.js\";\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n// ArrayBuffer.isView method is not defined in IE10\nconst isView = obj => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj && obj.buffer instanceof ArrayBuffer;\n};\nconst encodePacket = ({ type, data }, supportsBinary, callback) => {\n if (withNativeBlob && data instanceof Blob) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(data, callback);\n }\n }\n else if (withNativeArrayBuffer &&\n (data instanceof ArrayBuffer || isView(data))) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(new Blob([data]), callback);\n }\n }\n // plain string\n return callback(PACKET_TYPES[type] + (data || \"\"));\n};\nconst encodeBlobAsBase64 = (data, callback) => {\n const fileReader = new FileReader();\n fileReader.onload = function () {\n const content = fileReader.result.split(\",\")[1];\n callback(\"b\" + content);\n };\n return fileReader.readAsDataURL(data);\n};\nexport default encodePacket;\n","import { ERROR_PACKET, PACKET_TYPES_REVERSE } from \"./commons.js\";\nimport { decode } from \"./contrib/base64-arraybuffer.js\";\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst decodePacket = (encodedPacket, binaryType) => {\n if (typeof encodedPacket !== \"string\") {\n return {\n type: \"message\",\n data: mapBinary(encodedPacket, binaryType)\n };\n }\n const type = encodedPacket.charAt(0);\n if (type === \"b\") {\n return {\n type: \"message\",\n data: decodeBase64Packet(encodedPacket.substring(1), binaryType)\n };\n }\n const packetType = PACKET_TYPES_REVERSE[type];\n if (!packetType) {\n return ERROR_PACKET;\n }\n return encodedPacket.length > 1\n ? {\n type: PACKET_TYPES_REVERSE[type],\n data: encodedPacket.substring(1)\n }\n : {\n type: PACKET_TYPES_REVERSE[type]\n };\n};\nconst decodeBase64Packet = (data, binaryType) => {\n if (withNativeArrayBuffer) {\n const decoded = decode(data);\n return mapBinary(decoded, binaryType);\n }\n else {\n return { base64: true, data }; // fallback for old browsers\n }\n};\nconst mapBinary = (data, binaryType) => {\n switch (binaryType) {\n case \"blob\":\n return data instanceof ArrayBuffer ? new Blob([data]) : data;\n case \"arraybuffer\":\n default:\n return data; // assuming the data is already an ArrayBuffer\n }\n};\nexport default decodePacket;\n","import encodePacket from \"./encodePacket.js\";\nimport decodePacket from \"./decodePacket.js\";\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst encodePayload = (packets, callback) => {\n // some packets may be added to the array while encoding, so the initial length must be saved\n const length = packets.length;\n const encodedPackets = new Array(length);\n let count = 0;\n packets.forEach((packet, i) => {\n // force base64 encoding for binary packets\n encodePacket(packet, false, encodedPacket => {\n encodedPackets[i] = encodedPacket;\n if (++count === length) {\n callback(encodedPackets.join(SEPARATOR));\n }\n });\n });\n};\nconst decodePayload = (encodedPayload, binaryType) => {\n const encodedPackets = encodedPayload.split(SEPARATOR);\n const packets = [];\n for (let i = 0; i < encodedPackets.length; i++) {\n const decodedPacket = decodePacket(encodedPackets[i], binaryType);\n packets.push(decodedPacket);\n if (decodedPacket.type === \"error\") {\n break;\n }\n }\n return packets;\n};\nexport const protocol = 4;\nexport { encodePacket, encodePayload, decodePacket, decodePayload };\n","/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nexport function Emitter(obj) {\n if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n function on() {\n this.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks['$' + event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks['$' + event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n // Remove event specific arrays for event types that no\n // one is subscribed for to avoid memory leak.\n if (callbacks.length === 0) {\n delete this._callbacks['$' + event];\n }\n\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n\n var args = new Array(arguments.length - 1)\n , callbacks = this._callbacks['$' + event];\n\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n// alias used for reserved events (protected method)\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks['$' + event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","export const globalThisShim = (() => {\n if (typeof self !== \"undefined\") {\n return self;\n }\n else if (typeof window !== \"undefined\") {\n return window;\n }\n else {\n return Function(\"return this\")();\n }\n})();\n","import { globalThisShim as globalThis } from \"./globalThis.js\";\nexport function pick(obj, ...attr) {\n return attr.reduce((acc, k) => {\n if (obj.hasOwnProperty(k)) {\n acc[k] = obj[k];\n }\n return acc;\n }, {});\n}\n// Keep a reference to the real timeout functions so they can be used when overridden\nconst NATIVE_SET_TIMEOUT = setTimeout;\nconst NATIVE_CLEAR_TIMEOUT = clearTimeout;\nexport function installTimerFunctions(obj, opts) {\n if (opts.useNativeTimers) {\n obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globalThis);\n obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globalThis);\n }\n else {\n obj.setTimeoutFn = setTimeout.bind(globalThis);\n obj.clearTimeoutFn = clearTimeout.bind(globalThis);\n }\n}\n// base64 encoded buffers are about 33% bigger (https://en.wikipedia.org/wiki/Base64)\nconst BASE64_OVERHEAD = 1.33;\n// we could also have used `new Blob([obj]).size`, but it isn't supported in IE9\nexport function byteLength(obj) {\n if (typeof obj === \"string\") {\n return utf8Length(obj);\n }\n // arraybuffer or blob\n return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD);\n}\nfunction utf8Length(str) {\n let c = 0, length = 0;\n for (let i = 0, l = str.length; i < l; i++) {\n c = str.charCodeAt(i);\n if (c < 0x80) {\n length += 1;\n }\n else if (c < 0x800) {\n length += 2;\n }\n else if (c < 0xd800 || c >= 0xe000) {\n length += 3;\n }\n else {\n i++;\n length += 4;\n }\n }\n return length;\n}\n","// imported from https://github.com/unshiftio/yeast\n'use strict';\nconst alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split(''), length = 64, map = {};\nlet seed = 0, i = 0, prev;\n/**\n * Return a string representing the specified number.\n *\n * @param {Number} num The number to convert.\n * @returns {String} The string representation of the number.\n * @api public\n */\nexport function encode(num) {\n let encoded = '';\n do {\n encoded = alphabet[num % length] + encoded;\n num = Math.floor(num / length);\n } while (num > 0);\n return encoded;\n}\n/**\n * Return the integer value specified by the given string.\n *\n * @param {String} str The string to convert.\n * @returns {Number} The integer value represented by the string.\n * @api public\n */\nexport function decode(str) {\n let decoded = 0;\n for (i = 0; i < str.length; i++) {\n decoded = decoded * length + map[str.charAt(i)];\n }\n return decoded;\n}\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\nexport function yeast() {\n const now = encode(+new Date());\n if (now !== prev)\n return seed = 0, prev = now;\n return now + '.' + encode(seed++);\n}\n//\n// Map each character to its index.\n//\nfor (; i < length; i++)\n map[alphabet[i]] = i;\n","import { decodePacket } from \"engine.io-parser\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions } from \"./util.js\";\nclass TransportError extends Error {\n constructor(reason, description, context) {\n super(reason);\n this.description = description;\n this.context = context;\n this.type = \"TransportError\";\n }\n}\nexport class Transport extends Emitter {\n /**\n * Transport abstract constructor.\n *\n * @param {Object} options.\n * @api private\n */\n constructor(opts) {\n super();\n this.writable = false;\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.query = opts.query;\n this.readyState = \"\";\n this.socket = opts.socket;\n }\n /**\n * Emits an error.\n *\n * @param {String} reason\n * @param description\n * @param context - the error context\n * @return {Transport} for chaining\n * @api protected\n */\n onError(reason, description, context) {\n super.emitReserved(\"error\", new TransportError(reason, description, context));\n return this;\n }\n /**\n * Opens the transport.\n *\n * @api public\n */\n open() {\n if (\"closed\" === this.readyState || \"\" === this.readyState) {\n this.readyState = \"opening\";\n this.doOpen();\n }\n return this;\n }\n /**\n * Closes the transport.\n *\n * @api public\n */\n close() {\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.doClose();\n this.onClose();\n }\n return this;\n }\n /**\n * Sends multiple packets.\n *\n * @param {Array} packets\n * @api public\n */\n send(packets) {\n if (\"open\" === this.readyState) {\n this.write(packets);\n }\n else {\n // this might happen if the transport was silently closed in the beforeunload event handler\n }\n }\n /**\n * Called upon open\n *\n * @api protected\n */\n onOpen() {\n this.readyState = \"open\";\n this.writable = true;\n super.emitReserved(\"open\");\n }\n /**\n * Called with data.\n *\n * @param {String} data\n * @api protected\n */\n onData(data) {\n const packet = decodePacket(data, this.socket.binaryType);\n this.onPacket(packet);\n }\n /**\n * Called with a decoded packet.\n *\n * @api protected\n */\n onPacket(packet) {\n super.emitReserved(\"packet\", packet);\n }\n /**\n * Called upon close.\n *\n * @api protected\n */\n onClose(details) {\n this.readyState = \"closed\";\n super.emitReserved(\"close\", details);\n }\n}\n","// imported from https://github.com/galkn/querystring\n/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */\nexport function encode(obj) {\n let str = '';\n for (let i in obj) {\n if (obj.hasOwnProperty(i)) {\n if (str.length)\n str += '&';\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n }\n }\n return str;\n}\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */\nexport function decode(qs) {\n let qry = {};\n let pairs = qs.split('&');\n for (let i = 0, l = pairs.length; i < l; i++) {\n let pair = pairs[i].split('=');\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n return qry;\n}\n","// imported from https://github.com/component/has-cors\nlet value = false;\ntry {\n value = typeof XMLHttpRequest !== 'undefined' &&\n 'withCredentials' in new XMLHttpRequest();\n}\ncatch (err) {\n // if XMLHttp support is disabled in IE then it will throw\n // when trying to create\n}\nexport const hasCORS = value;\n","// browser shim for xmlhttprequest module\nimport { hasCORS } from \"../contrib/has-cors.js\";\nimport { globalThisShim as globalThis } from \"../globalThis.js\";\nexport function XHR(opts) {\n const xdomain = opts.xdomain;\n // XMLHttpRequest can be disabled on IE\n try {\n if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n }\n catch (e) { }\n if (!xdomain) {\n try {\n return new globalThis[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n }\n catch (e) { }\n }\n}\n","import { Transport } from \"../transport.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { encode } from \"../contrib/parseqs.js\";\nimport { encodePayload, decodePayload } from \"engine.io-parser\";\nimport { XHR as XMLHttpRequest } from \"./xmlhttprequest.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions, pick } from \"../util.js\";\nimport { globalThisShim as globalThis } from \"../globalThis.js\";\nfunction empty() { }\nconst hasXHR2 = (function () {\n const xhr = new XMLHttpRequest({\n xdomain: false\n });\n return null != xhr.responseType;\n})();\nexport class Polling extends Transport {\n /**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @api public\n */\n constructor(opts) {\n super(opts);\n this.polling = false;\n if (typeof location !== \"undefined\") {\n const isSSL = \"https:\" === location.protocol;\n let port = location.port;\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? \"443\" : \"80\";\n }\n this.xd =\n (typeof location !== \"undefined\" &&\n opts.hostname !== location.hostname) ||\n port !== opts.port;\n this.xs = opts.secure !== isSSL;\n }\n /**\n * XHR supports binary\n */\n const forceBase64 = opts && opts.forceBase64;\n this.supportsBinary = hasXHR2 && !forceBase64;\n }\n /**\n * Transport name.\n */\n get name() {\n return \"polling\";\n }\n /**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @api private\n */\n doOpen() {\n this.poll();\n }\n /**\n * Pauses polling.\n *\n * @param {Function} callback upon buffers are flushed and transport is paused\n * @api private\n */\n pause(onPause) {\n this.readyState = \"pausing\";\n const pause = () => {\n this.readyState = \"paused\";\n onPause();\n };\n if (this.polling || !this.writable) {\n let total = 0;\n if (this.polling) {\n total++;\n this.once(\"pollComplete\", function () {\n --total || pause();\n });\n }\n if (!this.writable) {\n total++;\n this.once(\"drain\", function () {\n --total || pause();\n });\n }\n }\n else {\n pause();\n }\n }\n /**\n * Starts polling cycle.\n *\n * @api public\n */\n poll() {\n this.polling = true;\n this.doPoll();\n this.emitReserved(\"poll\");\n }\n /**\n * Overloads onData to detect payloads.\n *\n * @api private\n */\n onData(data) {\n const callback = packet => {\n // if its the first message we consider the transport open\n if (\"opening\" === this.readyState && packet.type === \"open\") {\n this.onOpen();\n }\n // if its a close packet, we close the ongoing requests\n if (\"close\" === packet.type) {\n this.onClose({ description: \"transport closed by the server\" });\n return false;\n }\n // otherwise bypass onData and handle the message\n this.onPacket(packet);\n };\n // decode payload\n decodePayload(data, this.socket.binaryType).forEach(callback);\n // if an event did not trigger closing\n if (\"closed\" !== this.readyState) {\n // if we got data we're not polling\n this.polling = false;\n this.emitReserved(\"pollComplete\");\n if (\"open\" === this.readyState) {\n this.poll();\n }\n else {\n }\n }\n }\n /**\n * For polling, send a close packet.\n *\n * @api private\n */\n doClose() {\n const close = () => {\n this.write([{ type: \"close\" }]);\n };\n if (\"open\" === this.readyState) {\n close();\n }\n else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n this.once(\"open\", close);\n }\n }\n /**\n * Writes a packets payload.\n *\n * @param {Array} data packets\n * @param {Function} drain callback\n * @api private\n */\n write(packets) {\n this.writable = false;\n encodePayload(packets, data => {\n this.doWrite(data, () => {\n this.writable = true;\n this.emitReserved(\"drain\");\n });\n });\n }\n /**\n * Generates uri for connection.\n *\n * @api private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"https\" : \"http\";\n let port = \"\";\n // cache busting is forced\n if (false !== this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"https\" === schema && Number(this.opts.port) !== 443) ||\n (\"http\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n const encodedQuery = encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n /**\n * Creates a request.\n *\n * @param {String} method\n * @api private\n */\n request(opts = {}) {\n Object.assign(opts, { xd: this.xd, xs: this.xs }, this.opts);\n return new Request(this.uri(), opts);\n }\n /**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @api private\n */\n doWrite(data, fn) {\n const req = this.request({\n method: \"POST\",\n data: data\n });\n req.on(\"success\", fn);\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr post error\", xhrStatus, context);\n });\n }\n /**\n * Starts a poll cycle.\n *\n * @api private\n */\n doPoll() {\n const req = this.request();\n req.on(\"data\", this.onData.bind(this));\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr poll error\", xhrStatus, context);\n });\n this.pollXhr = req;\n }\n}\nexport class Request extends Emitter {\n /**\n * Request constructor\n *\n * @param {Object} options\n * @api public\n */\n constructor(uri, opts) {\n super();\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.method = opts.method || \"GET\";\n this.uri = uri;\n this.async = false !== opts.async;\n this.data = undefined !== opts.data ? opts.data : null;\n this.create();\n }\n /**\n * Creates the XHR object and sends the request.\n *\n * @api private\n */\n create() {\n const opts = pick(this.opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n opts.xdomain = !!this.opts.xd;\n opts.xscheme = !!this.opts.xs;\n const xhr = (this.xhr = new XMLHttpRequest(opts));\n try {\n xhr.open(this.method, this.uri, this.async);\n try {\n if (this.opts.extraHeaders) {\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (let i in this.opts.extraHeaders) {\n if (this.opts.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this.opts.extraHeaders[i]);\n }\n }\n }\n }\n catch (e) { }\n if (\"POST\" === this.method) {\n try {\n xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n }\n catch (e) { }\n }\n try {\n xhr.setRequestHeader(\"Accept\", \"*/*\");\n }\n catch (e) { }\n // ie6 check\n if (\"withCredentials\" in xhr) {\n xhr.withCredentials = this.opts.withCredentials;\n }\n if (this.opts.requestTimeout) {\n xhr.timeout = this.opts.requestTimeout;\n }\n xhr.onreadystatechange = () => {\n if (4 !== xhr.readyState)\n return;\n if (200 === xhr.status || 1223 === xhr.status) {\n this.onLoad();\n }\n else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n this.setTimeoutFn(() => {\n this.onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n }, 0);\n }\n };\n xhr.send(this.data);\n }\n catch (e) {\n // Need to defer since .create() is called directly from the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n this.setTimeoutFn(() => {\n this.onError(e);\n }, 0);\n return;\n }\n if (typeof document !== \"undefined\") {\n this.index = Request.requestsCount++;\n Request.requests[this.index] = this;\n }\n }\n /**\n * Called upon error.\n *\n * @api private\n */\n onError(err) {\n this.emitReserved(\"error\", err, this.xhr);\n this.cleanup(true);\n }\n /**\n * Cleans up house.\n *\n * @api private\n */\n cleanup(fromError) {\n if (\"undefined\" === typeof this.xhr || null === this.xhr) {\n return;\n }\n this.xhr.onreadystatechange = empty;\n if (fromError) {\n try {\n this.xhr.abort();\n }\n catch (e) { }\n }\n if (typeof document !== \"undefined\") {\n delete Request.requests[this.index];\n }\n this.xhr = null;\n }\n /**\n * Called upon load.\n *\n * @api private\n */\n onLoad() {\n const data = this.xhr.responseText;\n if (data !== null) {\n this.emitReserved(\"data\", data);\n this.emitReserved(\"success\");\n this.cleanup();\n }\n }\n /**\n * Aborts the request.\n *\n * @api public\n */\n abort() {\n this.cleanup();\n }\n}\nRequest.requestsCount = 0;\nRequest.requests = {};\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\nif (typeof document !== \"undefined\") {\n // @ts-ignore\n if (typeof attachEvent === \"function\") {\n // @ts-ignore\n attachEvent(\"onunload\", unloadHandler);\n }\n else if (typeof addEventListener === \"function\") {\n const terminationEvent = \"onpagehide\" in globalThis ? \"pagehide\" : \"unload\";\n addEventListener(terminationEvent, unloadHandler, false);\n }\n}\nfunction unloadHandler() {\n for (let i in Request.requests) {\n if (Request.requests.hasOwnProperty(i)) {\n Request.requests[i].abort();\n }\n }\n}\n","import { globalThisShim as globalThis } from \"../globalThis.js\";\nexport const nextTick = (() => {\n const isPromiseAvailable = typeof Promise === \"function\" && typeof Promise.resolve === \"function\";\n if (isPromiseAvailable) {\n return cb => Promise.resolve().then(cb);\n }\n else {\n return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);\n }\n})();\nexport const WebSocket = globalThis.WebSocket || globalThis.MozWebSocket;\nexport const usingBrowserWebSocket = true;\nexport const defaultBinaryType = \"arraybuffer\";\n","import { Transport } from \"../transport.js\";\nimport { encode } from \"../contrib/parseqs.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { pick } from \"../util.js\";\nimport { defaultBinaryType, nextTick, usingBrowserWebSocket, WebSocket } from \"./websocket-constructor.js\";\nimport { encodePacket } from \"engine.io-parser\";\n// detect ReactNative environment\nconst isReactNative = typeof navigator !== \"undefined\" &&\n typeof navigator.product === \"string\" &&\n navigator.product.toLowerCase() === \"reactnative\";\nexport class WS extends Transport {\n /**\n * WebSocket transport constructor.\n *\n * @api {Object} connection options\n * @api public\n */\n constructor(opts) {\n super(opts);\n this.supportsBinary = !opts.forceBase64;\n }\n /**\n * Transport name.\n *\n * @api public\n */\n get name() {\n return \"websocket\";\n }\n /**\n * Opens socket.\n *\n * @api private\n */\n doOpen() {\n if (!this.check()) {\n // let probe timeout\n return;\n }\n const uri = this.uri();\n const protocols = this.opts.protocols;\n // React Native only supports the 'headers' option, and will print a warning if anything else is passed\n const opts = isReactNative\n ? {}\n : pick(this.opts, \"agent\", \"perMessageDeflate\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"localAddress\", \"protocolVersion\", \"origin\", \"maxPayload\", \"family\", \"checkServerIdentity\");\n if (this.opts.extraHeaders) {\n opts.headers = this.opts.extraHeaders;\n }\n try {\n this.ws =\n usingBrowserWebSocket && !isReactNative\n ? protocols\n ? new WebSocket(uri, protocols)\n : new WebSocket(uri)\n : new WebSocket(uri, protocols, opts);\n }\n catch (err) {\n return this.emitReserved(\"error\", err);\n }\n this.ws.binaryType = this.socket.binaryType || defaultBinaryType;\n this.addEventListeners();\n }\n /**\n * Adds event listeners to the socket\n *\n * @api private\n */\n addEventListeners() {\n this.ws.onopen = () => {\n if (this.opts.autoUnref) {\n this.ws._socket.unref();\n }\n this.onOpen();\n };\n this.ws.onclose = closeEvent => this.onClose({\n description: \"websocket connection closed\",\n context: closeEvent\n });\n this.ws.onmessage = ev => this.onData(ev.data);\n this.ws.onerror = e => this.onError(\"websocket error\", e);\n }\n /**\n * Writes data to socket.\n *\n * @param {Array} array of packets.\n * @api private\n */\n write(packets) {\n this.writable = false;\n // encodePacket efficient as it uses WS framing\n // no need for encodePayload\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n encodePacket(packet, this.supportsBinary, data => {\n // always create a new object (GH-437)\n const opts = {};\n if (!usingBrowserWebSocket) {\n if (packet.options) {\n opts.compress = packet.options.compress;\n }\n if (this.opts.perMessageDeflate) {\n const len = \n // @ts-ignore\n \"string\" === typeof data ? Buffer.byteLength(data) : data.length;\n if (len < this.opts.perMessageDeflate.threshold) {\n opts.compress = false;\n }\n }\n }\n // Sometimes the websocket has already been closed but the browser didn't\n // have a chance of informing us about it yet, in that case send will\n // throw an error\n try {\n if (usingBrowserWebSocket) {\n // TypeError is thrown when passing the second argument on Safari\n this.ws.send(data);\n }\n else {\n this.ws.send(data, opts);\n }\n }\n catch (e) {\n }\n if (lastPacket) {\n // fake drain\n // defer to next tick to allow Socket to clear writeBuffer\n nextTick(() => {\n this.writable = true;\n this.emitReserved(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n /**\n * Closes socket.\n *\n * @api private\n */\n doClose() {\n if (typeof this.ws !== \"undefined\") {\n this.ws.close();\n this.ws = null;\n }\n }\n /**\n * Generates uri for connection.\n *\n * @api private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"wss\" : \"ws\";\n let port = \"\";\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"wss\" === schema && Number(this.opts.port) !== 443) ||\n (\"ws\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n // append timestamp to URI\n if (this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n const encodedQuery = encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n /**\n * Feature detection for WebSocket.\n *\n * @return {Boolean} whether this transport is available.\n * @api public\n */\n check() {\n return !!WebSocket;\n }\n}\n","import { Polling } from \"./polling.js\";\nimport { WS } from \"./websocket.js\";\nexport const transports = {\n websocket: WS,\n polling: Polling\n};\n","// imported from https://github.com/galkn/parseuri\n/**\n * Parses an URI\n *\n * @author Steven Levithan (MIT license)\n * @api private\n */\nconst re = /^(?:(?![^:@]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\nconst parts = [\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\n];\nexport function parse(str) {\n const src = str, b = str.indexOf('['), e = str.indexOf(']');\n if (b != -1 && e != -1) {\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\n }\n let m = re.exec(str || ''), uri = {}, i = 14;\n while (i--) {\n uri[parts[i]] = m[i] || '';\n }\n if (b != -1 && e != -1) {\n uri.source = src;\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\n uri.ipv6uri = true;\n }\n uri.pathNames = pathNames(uri, uri['path']);\n uri.queryKey = queryKey(uri, uri['query']);\n return uri;\n}\nfunction pathNames(obj, path) {\n const regx = /\\/{2,9}/g, names = path.replace(regx, \"/\").split(\"/\");\n if (path.slice(0, 1) == '/' || path.length === 0) {\n names.splice(0, 1);\n }\n if (path.slice(-1) == '/') {\n names.splice(names.length - 1, 1);\n }\n return names;\n}\nfunction queryKey(uri, query) {\n const data = {};\n query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {\n if ($1) {\n data[$1] = $2;\n }\n });\n return data;\n}\n","import { transports } from \"./transports/index.js\";\nimport { installTimerFunctions, byteLength } from \"./util.js\";\nimport { decode } from \"./contrib/parseqs.js\";\nimport { parse } from \"./contrib/parseuri.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { protocol } from \"engine.io-parser\";\nexport class Socket extends Emitter {\n /**\n * Socket constructor.\n *\n * @param {String|Object} uri or options\n * @param {Object} opts - options\n * @api public\n */\n constructor(uri, opts = {}) {\n super();\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = null;\n }\n if (uri) {\n uri = parse(uri);\n opts.hostname = uri.host;\n opts.secure = uri.protocol === \"https\" || uri.protocol === \"wss\";\n opts.port = uri.port;\n if (uri.query)\n opts.query = uri.query;\n }\n else if (opts.host) {\n opts.hostname = parse(opts.host).host;\n }\n installTimerFunctions(this, opts);\n this.secure =\n null != opts.secure\n ? opts.secure\n : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? \"443\" : \"80\";\n }\n this.hostname =\n opts.hostname ||\n (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n this.port =\n opts.port ||\n (typeof location !== \"undefined\" && location.port\n ? location.port\n : this.secure\n ? \"443\"\n : \"80\");\n this.transports = opts.transports || [\"polling\", \"websocket\"];\n this.readyState = \"\";\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n this.opts = Object.assign({\n path: \"/engine.io\",\n agent: false,\n withCredentials: false,\n upgrade: true,\n timestampParam: \"t\",\n rememberUpgrade: false,\n rejectUnauthorized: true,\n perMessageDeflate: {\n threshold: 1024\n },\n transportOptions: {},\n closeOnBeforeunload: true\n }, opts);\n this.opts.path = this.opts.path.replace(/\\/$/, \"\") + \"/\";\n if (typeof this.opts.query === \"string\") {\n this.opts.query = decode(this.opts.query);\n }\n // set on handshake\n this.id = null;\n this.upgrades = null;\n this.pingInterval = null;\n this.pingTimeout = null;\n // set on heartbeat\n this.pingTimeoutTimer = null;\n if (typeof addEventListener === \"function\") {\n if (this.opts.closeOnBeforeunload) {\n // Firefox closes the connection when the \"beforeunload\" event is emitted but not Chrome. This event listener\n // ensures every browser behaves the same (no \"disconnect\" event at the Socket.IO level when the page is\n // closed/reloaded)\n this.beforeunloadEventListener = () => {\n if (this.transport) {\n // silently close the transport\n this.transport.removeAllListeners();\n this.transport.close();\n }\n };\n addEventListener(\"beforeunload\", this.beforeunloadEventListener, false);\n }\n if (this.hostname !== \"localhost\") {\n this.offlineEventListener = () => {\n this.onClose(\"transport close\", {\n description: \"network connection lost\"\n });\n };\n addEventListener(\"offline\", this.offlineEventListener, false);\n }\n }\n this.open();\n }\n /**\n * Creates transport of the given type.\n *\n * @param {String} transport name\n * @return {Transport}\n * @api private\n */\n createTransport(name) {\n const query = Object.assign({}, this.opts.query);\n // append engine.io protocol identifier\n query.EIO = protocol;\n // transport name\n query.transport = name;\n // session id if we already have one\n if (this.id)\n query.sid = this.id;\n const opts = Object.assign({}, this.opts.transportOptions[name], this.opts, {\n query,\n socket: this,\n hostname: this.hostname,\n secure: this.secure,\n port: this.port\n });\n return new transports[name](opts);\n }\n /**\n * Initializes transport to use and starts probe.\n *\n * @api private\n */\n open() {\n let transport;\n if (this.opts.rememberUpgrade &&\n Socket.priorWebsocketSuccess &&\n this.transports.indexOf(\"websocket\") !== -1) {\n transport = \"websocket\";\n }\n else if (0 === this.transports.length) {\n // Emit error on next tick so it can be listened to\n this.setTimeoutFn(() => {\n this.emitReserved(\"error\", \"No transports available\");\n }, 0);\n return;\n }\n else {\n transport = this.transports[0];\n }\n this.readyState = \"opening\";\n // Retry with the next transport if the transport is disabled (jsonp: false)\n try {\n transport = this.createTransport(transport);\n }\n catch (e) {\n this.transports.shift();\n this.open();\n return;\n }\n transport.open();\n this.setTransport(transport);\n }\n /**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @api private\n */\n setTransport(transport) {\n if (this.transport) {\n this.transport.removeAllListeners();\n }\n // set up transport\n this.transport = transport;\n // set up transport listeners\n transport\n .on(\"drain\", this.onDrain.bind(this))\n .on(\"packet\", this.onPacket.bind(this))\n .on(\"error\", this.onError.bind(this))\n .on(\"close\", reason => this.onClose(\"transport close\", reason));\n }\n /**\n * Probes a transport.\n *\n * @param {String} transport name\n * @api private\n */\n probe(name) {\n let transport = this.createTransport(name);\n let failed = false;\n Socket.priorWebsocketSuccess = false;\n const onTransportOpen = () => {\n if (failed)\n return;\n transport.send([{ type: \"ping\", data: \"probe\" }]);\n transport.once(\"packet\", msg => {\n if (failed)\n return;\n if (\"pong\" === msg.type && \"probe\" === msg.data) {\n this.upgrading = true;\n this.emitReserved(\"upgrading\", transport);\n if (!transport)\n return;\n Socket.priorWebsocketSuccess = \"websocket\" === transport.name;\n this.transport.pause(() => {\n if (failed)\n return;\n if (\"closed\" === this.readyState)\n return;\n cleanup();\n this.setTransport(transport);\n transport.send([{ type: \"upgrade\" }]);\n this.emitReserved(\"upgrade\", transport);\n transport = null;\n this.upgrading = false;\n this.flush();\n });\n }\n else {\n const err = new Error(\"probe error\");\n // @ts-ignore\n err.transport = transport.name;\n this.emitReserved(\"upgradeError\", err);\n }\n });\n };\n function freezeTransport() {\n if (failed)\n return;\n // Any callback called by transport should be ignored since now\n failed = true;\n cleanup();\n transport.close();\n transport = null;\n }\n // Handle any error that happens while probing\n const onerror = err => {\n const error = new Error(\"probe error: \" + err);\n // @ts-ignore\n error.transport = transport.name;\n freezeTransport();\n this.emitReserved(\"upgradeError\", error);\n };\n function onTransportClose() {\n onerror(\"transport closed\");\n }\n // When the socket is closed while we're probing\n function onclose() {\n onerror(\"socket closed\");\n }\n // When the socket is upgraded while we're probing\n function onupgrade(to) {\n if (transport && to.name !== transport.name) {\n freezeTransport();\n }\n }\n // Remove all listeners on the transport and on self\n const cleanup = () => {\n transport.removeListener(\"open\", onTransportOpen);\n transport.removeListener(\"error\", onerror);\n transport.removeListener(\"close\", onTransportClose);\n this.off(\"close\", onclose);\n this.off(\"upgrading\", onupgrade);\n };\n transport.once(\"open\", onTransportOpen);\n transport.once(\"error\", onerror);\n transport.once(\"close\", onTransportClose);\n this.once(\"close\", onclose);\n this.once(\"upgrading\", onupgrade);\n transport.open();\n }\n /**\n * Called when connection is deemed open.\n *\n * @api private\n */\n onOpen() {\n this.readyState = \"open\";\n Socket.priorWebsocketSuccess = \"websocket\" === this.transport.name;\n this.emitReserved(\"open\");\n this.flush();\n // we check for `readyState` in case an `open`\n // listener already closed the socket\n if (\"open\" === this.readyState &&\n this.opts.upgrade &&\n this.transport.pause) {\n let i = 0;\n const l = this.upgrades.length;\n for (; i < l; i++) {\n this.probe(this.upgrades[i]);\n }\n }\n }\n /**\n * Handles a packet.\n *\n * @api private\n */\n onPacket(packet) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n this.emitReserved(\"packet\", packet);\n // Socket is live - any packet counts\n this.emitReserved(\"heartbeat\");\n switch (packet.type) {\n case \"open\":\n this.onHandshake(JSON.parse(packet.data));\n break;\n case \"ping\":\n this.resetPingTimeout();\n this.sendPacket(\"pong\");\n this.emitReserved(\"ping\");\n this.emitReserved(\"pong\");\n break;\n case \"error\":\n const err = new Error(\"server error\");\n // @ts-ignore\n err.code = packet.data;\n this.onError(err);\n break;\n case \"message\":\n this.emitReserved(\"data\", packet.data);\n this.emitReserved(\"message\", packet.data);\n break;\n }\n }\n else {\n }\n }\n /**\n * Called upon handshake completion.\n *\n * @param {Object} data - handshake obj\n * @api private\n */\n onHandshake(data) {\n this.emitReserved(\"handshake\", data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this.upgrades = this.filterUpgrades(data.upgrades);\n this.pingInterval = data.pingInterval;\n this.pingTimeout = data.pingTimeout;\n this.maxPayload = data.maxPayload;\n this.onOpen();\n // In case open handler closes socket\n if (\"closed\" === this.readyState)\n return;\n this.resetPingTimeout();\n }\n /**\n * Sets and resets ping timeout timer based on server pings.\n *\n * @api private\n */\n resetPingTimeout() {\n this.clearTimeoutFn(this.pingTimeoutTimer);\n this.pingTimeoutTimer = this.setTimeoutFn(() => {\n this.onClose(\"ping timeout\");\n }, this.pingInterval + this.pingTimeout);\n if (this.opts.autoUnref) {\n this.pingTimeoutTimer.unref();\n }\n }\n /**\n * Called on `drain` event\n *\n * @api private\n */\n onDrain() {\n this.writeBuffer.splice(0, this.prevBufferLen);\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this.prevBufferLen = 0;\n if (0 === this.writeBuffer.length) {\n this.emitReserved(\"drain\");\n }\n else {\n this.flush();\n }\n }\n /**\n * Flush write buffers.\n *\n * @api private\n */\n flush() {\n if (\"closed\" !== this.readyState &&\n this.transport.writable &&\n !this.upgrading &&\n this.writeBuffer.length) {\n const packets = this.getWritablePackets();\n this.transport.send(packets);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this.prevBufferLen = packets.length;\n this.emitReserved(\"flush\");\n }\n }\n /**\n * Ensure the encoded size of the writeBuffer is below the maxPayload value sent by the server (only for HTTP\n * long-polling)\n *\n * @private\n */\n getWritablePackets() {\n const shouldCheckPayloadSize = this.maxPayload &&\n this.transport.name === \"polling\" &&\n this.writeBuffer.length > 1;\n if (!shouldCheckPayloadSize) {\n return this.writeBuffer;\n }\n let payloadSize = 1; // first packet type\n for (let i = 0; i < this.writeBuffer.length; i++) {\n const data = this.writeBuffer[i].data;\n if (data) {\n payloadSize += byteLength(data);\n }\n if (i > 0 && payloadSize > this.maxPayload) {\n return this.writeBuffer.slice(0, i);\n }\n payloadSize += 2; // separator + packet type\n }\n return this.writeBuffer;\n }\n /**\n * Sends a message.\n *\n * @param {String} message.\n * @param {Function} callback function.\n * @param {Object} options.\n * @return {Socket} for chaining.\n * @api public\n */\n write(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n send(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n /**\n * Sends a packet.\n *\n * @param {String} packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} callback function.\n * @api private\n */\n sendPacket(type, data, options, fn) {\n if (\"function\" === typeof data) {\n fn = data;\n data = undefined;\n }\n if (\"function\" === typeof options) {\n fn = options;\n options = null;\n }\n if (\"closing\" === this.readyState || \"closed\" === this.readyState) {\n return;\n }\n options = options || {};\n options.compress = false !== options.compress;\n const packet = {\n type: type,\n data: data,\n options: options\n };\n this.emitReserved(\"packetCreate\", packet);\n this.writeBuffer.push(packet);\n if (fn)\n this.once(\"flush\", fn);\n this.flush();\n }\n /**\n * Closes the connection.\n *\n * @api public\n */\n close() {\n const close = () => {\n this.onClose(\"forced close\");\n this.transport.close();\n };\n const cleanupAndClose = () => {\n this.off(\"upgrade\", cleanupAndClose);\n this.off(\"upgradeError\", cleanupAndClose);\n close();\n };\n const waitForUpgrade = () => {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n this.once(\"upgrade\", cleanupAndClose);\n this.once(\"upgradeError\", cleanupAndClose);\n };\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.readyState = \"closing\";\n if (this.writeBuffer.length) {\n this.once(\"drain\", () => {\n if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n });\n }\n else if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n }\n return this;\n }\n /**\n * Called upon transport error\n *\n * @api private\n */\n onError(err) {\n Socket.priorWebsocketSuccess = false;\n this.emitReserved(\"error\", err);\n this.onClose(\"transport error\", err);\n }\n /**\n * Called upon transport close.\n *\n * @api private\n */\n onClose(reason, description) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n // clear timers\n this.clearTimeoutFn(this.pingTimeoutTimer);\n // stop event from firing again for transport\n this.transport.removeAllListeners(\"close\");\n // ensure transport won't stay open\n this.transport.close();\n // ignore further transport communication\n this.transport.removeAllListeners();\n if (typeof removeEventListener === \"function\") {\n removeEventListener(\"beforeunload\", this.beforeunloadEventListener, false);\n removeEventListener(\"offline\", this.offlineEventListener, false);\n }\n // set ready state\n this.readyState = \"closed\";\n // clear session id\n this.id = null;\n // emit close event\n this.emitReserved(\"close\", reason, description);\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n }\n }\n /**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} server upgrades\n * @api private\n *\n */\n filterUpgrades(upgrades) {\n const filteredUpgrades = [];\n let i = 0;\n const j = upgrades.length;\n for (; i < j; i++) {\n if (~this.transports.indexOf(upgrades[i]))\n filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n }\n}\nSocket.protocol = protocol;\n","import { Socket } from \"./socket.js\";\nexport { Socket };\nexport const protocol = Socket.protocol;\nexport { Transport } from \"./transport.js\";\nexport { transports } from \"./transports/index.js\";\nexport { installTimerFunctions } from \"./util.js\";\nexport { parse } from \"./contrib/parseuri.js\";\nexport { nextTick } from \"./transports/websocket-constructor.js\";\n","const withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst isView = (obj) => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj.buffer instanceof ArrayBuffer;\n};\nconst toString = Object.prototype.toString;\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeFile = typeof File === \"function\" ||\n (typeof File !== \"undefined\" &&\n toString.call(File) === \"[object FileConstructor]\");\n/**\n * Returns true if obj is a Buffer, an ArrayBuffer, a Blob or a File.\n *\n * @private\n */\nexport function isBinary(obj) {\n return ((withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj))) ||\n (withNativeBlob && obj instanceof Blob) ||\n (withNativeFile && obj instanceof File));\n}\nexport function hasBinary(obj, toJSON) {\n if (!obj || typeof obj !== \"object\") {\n return false;\n }\n if (Array.isArray(obj)) {\n for (let i = 0, l = obj.length; i < l; i++) {\n if (hasBinary(obj[i])) {\n return true;\n }\n }\n return false;\n }\n if (isBinary(obj)) {\n return true;\n }\n if (obj.toJSON &&\n typeof obj.toJSON === \"function\" &&\n arguments.length === 1) {\n return hasBinary(obj.toJSON(), true);\n }\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\n return true;\n }\n }\n return false;\n}\n","import { isBinary } from \"./is-binary.js\";\n/**\n * Replaces every Buffer | ArrayBuffer | Blob | File in packet with a numbered placeholder.\n *\n * @param {Object} packet - socket.io event packet\n * @return {Object} with deconstructed packet and list of buffers\n * @public\n */\nexport function deconstructPacket(packet) {\n const buffers = [];\n const packetData = packet.data;\n const pack = packet;\n pack.data = _deconstructPacket(packetData, buffers);\n pack.attachments = buffers.length; // number of binary 'attachments'\n return { packet: pack, buffers: buffers };\n}\nfunction _deconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (isBinary(data)) {\n const placeholder = { _placeholder: true, num: buffers.length };\n buffers.push(data);\n return placeholder;\n }\n else if (Array.isArray(data)) {\n const newData = new Array(data.length);\n for (let i = 0; i < data.length; i++) {\n newData[i] = _deconstructPacket(data[i], buffers);\n }\n return newData;\n }\n else if (typeof data === \"object\" && !(data instanceof Date)) {\n const newData = {};\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n newData[key] = _deconstructPacket(data[key], buffers);\n }\n }\n return newData;\n }\n return data;\n}\n/**\n * Reconstructs a binary packet from its placeholder packet and buffers\n *\n * @param {Object} packet - event packet with placeholders\n * @param {Array} buffers - binary buffers to put in placeholder positions\n * @return {Object} reconstructed packet\n * @public\n */\nexport function reconstructPacket(packet, buffers) {\n packet.data = _reconstructPacket(packet.data, buffers);\n packet.attachments = undefined; // no longer useful\n return packet;\n}\nfunction _reconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (data && data._placeholder) {\n return buffers[data.num]; // appropriate buffer (should be natural order anyway)\n }\n else if (Array.isArray(data)) {\n for (let i = 0; i < data.length; i++) {\n data[i] = _reconstructPacket(data[i], buffers);\n }\n }\n else if (typeof data === \"object\") {\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n data[key] = _reconstructPacket(data[key], buffers);\n }\n }\n }\n return data;\n}\n","import { Emitter } from \"@socket.io/component-emitter\";\nimport { deconstructPacket, reconstructPacket } from \"./binary.js\";\nimport { isBinary, hasBinary } from \"./is-binary.js\";\n/**\n * Protocol version.\n *\n * @public\n */\nexport const protocol = 5;\nexport var PacketType;\n(function (PacketType) {\n PacketType[PacketType[\"CONNECT\"] = 0] = \"CONNECT\";\n PacketType[PacketType[\"DISCONNECT\"] = 1] = \"DISCONNECT\";\n PacketType[PacketType[\"EVENT\"] = 2] = \"EVENT\";\n PacketType[PacketType[\"ACK\"] = 3] = \"ACK\";\n PacketType[PacketType[\"CONNECT_ERROR\"] = 4] = \"CONNECT_ERROR\";\n PacketType[PacketType[\"BINARY_EVENT\"] = 5] = \"BINARY_EVENT\";\n PacketType[PacketType[\"BINARY_ACK\"] = 6] = \"BINARY_ACK\";\n})(PacketType || (PacketType = {}));\n/**\n * A socket.io Encoder instance\n */\nexport class Encoder {\n /**\n * Encoder constructor\n *\n * @param {function} replacer - custom replacer to pass down to JSON.parse\n */\n constructor(replacer) {\n this.replacer = replacer;\n }\n /**\n * Encode a packet as a single string if non-binary, or as a\n * buffer sequence, depending on packet type.\n *\n * @param {Object} obj - packet object\n */\n encode(obj) {\n if (obj.type === PacketType.EVENT || obj.type === PacketType.ACK) {\n if (hasBinary(obj)) {\n obj.type =\n obj.type === PacketType.EVENT\n ? PacketType.BINARY_EVENT\n : PacketType.BINARY_ACK;\n return this.encodeAsBinary(obj);\n }\n }\n return [this.encodeAsString(obj)];\n }\n /**\n * Encode packet as string.\n */\n encodeAsString(obj) {\n // first is type\n let str = \"\" + obj.type;\n // attachments if we have them\n if (obj.type === PacketType.BINARY_EVENT ||\n obj.type === PacketType.BINARY_ACK) {\n str += obj.attachments + \"-\";\n }\n // if we have a namespace other than `/`\n // we append it followed by a comma `,`\n if (obj.nsp && \"/\" !== obj.nsp) {\n str += obj.nsp + \",\";\n }\n // immediately followed by the id\n if (null != obj.id) {\n str += obj.id;\n }\n // json data\n if (null != obj.data) {\n str += JSON.stringify(obj.data, this.replacer);\n }\n return str;\n }\n /**\n * Encode packet as 'buffer sequence' by removing blobs, and\n * deconstructing packet into object with placeholders and\n * a list of buffers.\n */\n encodeAsBinary(obj) {\n const deconstruction = deconstructPacket(obj);\n const pack = this.encodeAsString(deconstruction.packet);\n const buffers = deconstruction.buffers;\n buffers.unshift(pack); // add packet info to beginning of data list\n return buffers; // write all the buffers\n }\n}\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n */\nexport class Decoder extends Emitter {\n /**\n * Decoder constructor\n *\n * @param {function} reviver - custom reviver to pass down to JSON.stringify\n */\n constructor(reviver) {\n super();\n this.reviver = reviver;\n }\n /**\n * Decodes an encoded packet string into packet JSON.\n *\n * @param {String} obj - encoded packet\n */\n add(obj) {\n let packet;\n if (typeof obj === \"string\") {\n packet = this.decodeString(obj);\n if (packet.type === PacketType.BINARY_EVENT ||\n packet.type === PacketType.BINARY_ACK) {\n // binary packet's json\n this.reconstructor = new BinaryReconstructor(packet);\n // no attachments, labeled binary but no binary data to follow\n if (packet.attachments === 0) {\n super.emitReserved(\"decoded\", packet);\n }\n }\n else {\n // non-binary full packet\n super.emitReserved(\"decoded\", packet);\n }\n }\n else if (isBinary(obj) || obj.base64) {\n // raw binary data\n if (!this.reconstructor) {\n throw new Error(\"got binary data when not reconstructing a packet\");\n }\n else {\n packet = this.reconstructor.takeBinaryData(obj);\n if (packet) {\n // received final buffer\n this.reconstructor = null;\n super.emitReserved(\"decoded\", packet);\n }\n }\n }\n else {\n throw new Error(\"Unknown type: \" + obj);\n }\n }\n /**\n * Decode a packet String (JSON data)\n *\n * @param {String} str\n * @return {Object} packet\n */\n decodeString(str) {\n let i = 0;\n // look up type\n const p = {\n type: Number(str.charAt(0)),\n };\n if (PacketType[p.type] === undefined) {\n throw new Error(\"unknown packet type \" + p.type);\n }\n // look up attachments if type binary\n if (p.type === PacketType.BINARY_EVENT ||\n p.type === PacketType.BINARY_ACK) {\n const start = i + 1;\n while (str.charAt(++i) !== \"-\" && i != str.length) { }\n const buf = str.substring(start, i);\n if (buf != Number(buf) || str.charAt(i) !== \"-\") {\n throw new Error(\"Illegal attachments\");\n }\n p.attachments = Number(buf);\n }\n // look up namespace (if any)\n if (\"/\" === str.charAt(i + 1)) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (\",\" === c)\n break;\n if (i === str.length)\n break;\n }\n p.nsp = str.substring(start, i);\n }\n else {\n p.nsp = \"/\";\n }\n // look up id\n const next = str.charAt(i + 1);\n if (\"\" !== next && Number(next) == next) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (null == c || Number(c) != c) {\n --i;\n break;\n }\n if (i === str.length)\n break;\n }\n p.id = Number(str.substring(start, i + 1));\n }\n // look up json data\n if (str.charAt(++i)) {\n const payload = this.tryParse(str.substr(i));\n if (Decoder.isPayloadValid(p.type, payload)) {\n p.data = payload;\n }\n else {\n throw new Error(\"invalid payload\");\n }\n }\n return p;\n }\n tryParse(str) {\n try {\n return JSON.parse(str, this.reviver);\n }\n catch (e) {\n return false;\n }\n }\n static isPayloadValid(type, payload) {\n switch (type) {\n case PacketType.CONNECT:\n return typeof payload === \"object\";\n case PacketType.DISCONNECT:\n return payload === undefined;\n case PacketType.CONNECT_ERROR:\n return typeof payload === \"string\" || typeof payload === \"object\";\n case PacketType.EVENT:\n case PacketType.BINARY_EVENT:\n return Array.isArray(payload) && payload.length > 0;\n case PacketType.ACK:\n case PacketType.BINARY_ACK:\n return Array.isArray(payload);\n }\n }\n /**\n * Deallocates a parser's resources\n */\n destroy() {\n if (this.reconstructor) {\n this.reconstructor.finishedReconstruction();\n }\n }\n}\n/**\n * A manager of a binary event's 'buffer sequence'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n */\nclass BinaryReconstructor {\n constructor(packet) {\n this.packet = packet;\n this.buffers = [];\n this.reconPack = packet;\n }\n /**\n * Method to be called when binary data received from connection\n * after a BINARY_EVENT packet.\n *\n * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n * @return {null | Object} returns null if more binary data is expected or\n * a reconstructed packet object if all buffers have been received.\n */\n takeBinaryData(binData) {\n this.buffers.push(binData);\n if (this.buffers.length === this.reconPack.attachments) {\n // done with buffer list\n const packet = reconstructPacket(this.reconPack, this.buffers);\n this.finishedReconstruction();\n return packet;\n }\n return null;\n }\n /**\n * Cleans up binary packet reconstruction variables.\n */\n finishedReconstruction() {\n this.reconPack = null;\n this.buffers = [];\n }\n}\n","export function on(obj, ev, fn) {\n obj.on(ev, fn);\n return function subDestroy() {\n obj.off(ev, fn);\n };\n}\n","import { PacketType } from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\n/**\n * Internal events.\n * These events can't be emitted by the user.\n */\nconst RESERVED_EVENTS = Object.freeze({\n connect: 1,\n connect_error: 1,\n disconnect: 1,\n disconnecting: 1,\n // EventEmitter reserved events: https://nodejs.org/api/events.html#events_event_newlistener\n newListener: 1,\n removeListener: 1,\n});\n/**\n * A Socket is the fundamental class for interacting with the server.\n *\n * A Socket belongs to a certain Namespace (by default /) and uses an underlying {@link Manager} to communicate.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(\"connected\");\n * });\n *\n * // send an event to the server\n * socket.emit(\"foo\", \"bar\");\n *\n * socket.on(\"foobar\", () => {\n * // an event was received from the server\n * });\n *\n * // upon disconnection\n * socket.on(\"disconnect\", (reason) => {\n * console.log(`disconnected due to ${reason}`);\n * });\n */\nexport class Socket extends Emitter {\n /**\n * `Socket` constructor.\n */\n constructor(io, nsp, opts) {\n super();\n /**\n * Whether the socket is currently connected to the server.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(socket.connected); // true\n * });\n *\n * socket.on(\"disconnect\", () => {\n * console.log(socket.connected); // false\n * });\n */\n this.connected = false;\n /**\n * Buffer for packets received before the CONNECT packet\n */\n this.receiveBuffer = [];\n /**\n * Buffer for packets that will be sent once the socket is connected\n */\n this.sendBuffer = [];\n this.ids = 0;\n this.acks = {};\n this.flags = {};\n this.io = io;\n this.nsp = nsp;\n if (opts && opts.auth) {\n this.auth = opts.auth;\n }\n if (this.io._autoConnect)\n this.open();\n }\n /**\n * Whether the socket is currently disconnected\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(socket.disconnected); // false\n * });\n *\n * socket.on(\"disconnect\", () => {\n * console.log(socket.disconnected); // true\n * });\n */\n get disconnected() {\n return !this.connected;\n }\n /**\n * Subscribe to open, close and packet events\n *\n * @private\n */\n subEvents() {\n if (this.subs)\n return;\n const io = this.io;\n this.subs = [\n on(io, \"open\", this.onopen.bind(this)),\n on(io, \"packet\", this.onpacket.bind(this)),\n on(io, \"error\", this.onerror.bind(this)),\n on(io, \"close\", this.onclose.bind(this)),\n ];\n }\n /**\n * Whether the Socket will try to reconnect when its Manager connects or reconnects.\n *\n * @example\n * const socket = io();\n *\n * console.log(socket.active); // true\n *\n * socket.on(\"disconnect\", (reason) => {\n * if (reason === \"io server disconnect\") {\n * // the disconnection was initiated by the server, you need to manually reconnect\n * console.log(socket.active); // false\n * }\n * // else the socket will automatically try to reconnect\n * console.log(socket.active); // true\n * });\n */\n get active() {\n return !!this.subs;\n }\n /**\n * \"Opens\" the socket.\n *\n * @example\n * const socket = io({\n * autoConnect: false\n * });\n *\n * socket.connect();\n */\n connect() {\n if (this.connected)\n return this;\n this.subEvents();\n if (!this.io[\"_reconnecting\"])\n this.io.open(); // ensure open\n if (\"open\" === this.io._readyState)\n this.onopen();\n return this;\n }\n /**\n * Alias for {@link connect()}.\n */\n open() {\n return this.connect();\n }\n /**\n * Sends a `message` event.\n *\n * This method mimics the WebSocket.send() method.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/send\n *\n * @example\n * socket.send(\"hello\");\n *\n * // this is equivalent to\n * socket.emit(\"message\", \"hello\");\n *\n * @return self\n */\n send(...args) {\n args.unshift(\"message\");\n this.emit.apply(this, args);\n return this;\n }\n /**\n * Override `emit`.\n * If the event is in `events`, it's emitted normally.\n *\n * @example\n * socket.emit(\"hello\", \"world\");\n *\n * // all serializable datastructures are supported (no need to call JSON.stringify)\n * socket.emit(\"hello\", 1, \"2\", { 3: [\"4\"], 5: Uint8Array.from([6]) });\n *\n * // with an acknowledgement from the server\n * socket.emit(\"hello\", \"world\", (val) => {\n * // ...\n * });\n *\n * @return self\n */\n emit(ev, ...args) {\n if (RESERVED_EVENTS.hasOwnProperty(ev)) {\n throw new Error('\"' + ev.toString() + '\" is a reserved event name');\n }\n args.unshift(ev);\n const packet = {\n type: PacketType.EVENT,\n data: args,\n };\n packet.options = {};\n packet.options.compress = this.flags.compress !== false;\n // event ack callback\n if (\"function\" === typeof args[args.length - 1]) {\n const id = this.ids++;\n const ack = args.pop();\n this._registerAckCallback(id, ack);\n packet.id = id;\n }\n const isTransportWritable = this.io.engine &&\n this.io.engine.transport &&\n this.io.engine.transport.writable;\n const discardPacket = this.flags.volatile && (!isTransportWritable || !this.connected);\n if (discardPacket) {\n }\n else if (this.connected) {\n this.notifyOutgoingListeners(packet);\n this.packet(packet);\n }\n else {\n this.sendBuffer.push(packet);\n }\n this.flags = {};\n return this;\n }\n /**\n * @private\n */\n _registerAckCallback(id, ack) {\n const timeout = this.flags.timeout;\n if (timeout === undefined) {\n this.acks[id] = ack;\n return;\n }\n // @ts-ignore\n const timer = this.io.setTimeoutFn(() => {\n delete this.acks[id];\n for (let i = 0; i < this.sendBuffer.length; i++) {\n if (this.sendBuffer[i].id === id) {\n this.sendBuffer.splice(i, 1);\n }\n }\n ack.call(this, new Error(\"operation has timed out\"));\n }, timeout);\n this.acks[id] = (...args) => {\n // @ts-ignore\n this.io.clearTimeoutFn(timer);\n ack.apply(this, [null, ...args]);\n };\n }\n /**\n * Sends a packet.\n *\n * @param packet\n * @private\n */\n packet(packet) {\n packet.nsp = this.nsp;\n this.io._packet(packet);\n }\n /**\n * Called upon engine `open`.\n *\n * @private\n */\n onopen() {\n if (typeof this.auth == \"function\") {\n this.auth((data) => {\n this.packet({ type: PacketType.CONNECT, data });\n });\n }\n else {\n this.packet({ type: PacketType.CONNECT, data: this.auth });\n }\n }\n /**\n * Called upon engine or manager `error`.\n *\n * @param err\n * @private\n */\n onerror(err) {\n if (!this.connected) {\n this.emitReserved(\"connect_error\", err);\n }\n }\n /**\n * Called upon engine `close`.\n *\n * @param reason\n * @param description\n * @private\n */\n onclose(reason, description) {\n this.connected = false;\n delete this.id;\n this.emitReserved(\"disconnect\", reason, description);\n }\n /**\n * Called with socket packet.\n *\n * @param packet\n * @private\n */\n onpacket(packet) {\n const sameNamespace = packet.nsp === this.nsp;\n if (!sameNamespace)\n return;\n switch (packet.type) {\n case PacketType.CONNECT:\n if (packet.data && packet.data.sid) {\n const id = packet.data.sid;\n this.onconnect(id);\n }\n else {\n this.emitReserved(\"connect_error\", new Error(\"It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)\"));\n }\n break;\n case PacketType.EVENT:\n case PacketType.BINARY_EVENT:\n this.onevent(packet);\n break;\n case PacketType.ACK:\n case PacketType.BINARY_ACK:\n this.onack(packet);\n break;\n case PacketType.DISCONNECT:\n this.ondisconnect();\n break;\n case PacketType.CONNECT_ERROR:\n this.destroy();\n const err = new Error(packet.data.message);\n // @ts-ignore\n err.data = packet.data.data;\n this.emitReserved(\"connect_error\", err);\n break;\n }\n }\n /**\n * Called upon a server event.\n *\n * @param packet\n * @private\n */\n onevent(packet) {\n const args = packet.data || [];\n if (null != packet.id) {\n args.push(this.ack(packet.id));\n }\n if (this.connected) {\n this.emitEvent(args);\n }\n else {\n this.receiveBuffer.push(Object.freeze(args));\n }\n }\n emitEvent(args) {\n if (this._anyListeners && this._anyListeners.length) {\n const listeners = this._anyListeners.slice();\n for (const listener of listeners) {\n listener.apply(this, args);\n }\n }\n super.emit.apply(this, args);\n }\n /**\n * Produces an ack callback to emit with an event.\n *\n * @private\n */\n ack(id) {\n const self = this;\n let sent = false;\n return function (...args) {\n // prevent double callbacks\n if (sent)\n return;\n sent = true;\n self.packet({\n type: PacketType.ACK,\n id: id,\n data: args,\n });\n };\n }\n /**\n * Called upon a server acknowlegement.\n *\n * @param packet\n * @private\n */\n onack(packet) {\n const ack = this.acks[packet.id];\n if (\"function\" === typeof ack) {\n ack.apply(this, packet.data);\n delete this.acks[packet.id];\n }\n else {\n }\n }\n /**\n * Called upon server connect.\n *\n * @private\n */\n onconnect(id) {\n this.id = id;\n this.connected = true;\n this.emitBuffered();\n this.emitReserved(\"connect\");\n }\n /**\n * Emit buffered events (received and emitted).\n *\n * @private\n */\n emitBuffered() {\n this.receiveBuffer.forEach((args) => this.emitEvent(args));\n this.receiveBuffer = [];\n this.sendBuffer.forEach((packet) => {\n this.notifyOutgoingListeners(packet);\n this.packet(packet);\n });\n this.sendBuffer = [];\n }\n /**\n * Called upon server disconnect.\n *\n * @private\n */\n ondisconnect() {\n this.destroy();\n this.onclose(\"io server disconnect\");\n }\n /**\n * Called upon forced client/server side disconnections,\n * this method ensures the manager stops tracking us and\n * that reconnections don't get triggered for this.\n *\n * @private\n */\n destroy() {\n if (this.subs) {\n // clean subscriptions to avoid reconnections\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs = undefined;\n }\n this.io[\"_destroy\"](this);\n }\n /**\n * Disconnects the socket manually. In that case, the socket will not try to reconnect.\n *\n * If this is the last active Socket instance of the {@link Manager}, the low-level connection will be closed.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"disconnect\", (reason) => {\n * // console.log(reason); prints \"io client disconnect\"\n * });\n *\n * socket.disconnect();\n *\n * @return self\n */\n disconnect() {\n if (this.connected) {\n this.packet({ type: PacketType.DISCONNECT });\n }\n // remove socket from pool\n this.destroy();\n if (this.connected) {\n // fire events\n this.onclose(\"io client disconnect\");\n }\n return this;\n }\n /**\n * Alias for {@link disconnect()}.\n *\n * @return self\n */\n close() {\n return this.disconnect();\n }\n /**\n * Sets the compress flag.\n *\n * @example\n * socket.compress(false).emit(\"hello\");\n *\n * @param compress - if `true`, compresses the sending data\n * @return self\n */\n compress(compress) {\n this.flags.compress = compress;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the event message will be dropped when this socket is not\n * ready to send messages.\n *\n * @example\n * socket.volatile.emit(\"hello\"); // the server may or may not receive it\n *\n * @returns self\n */\n get volatile() {\n this.flags.volatile = true;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the callback will be called with an error when the\n * given number of milliseconds have elapsed without an acknowledgement from the server:\n *\n * @example\n * socket.timeout(5000).emit(\"my-event\", (err) => {\n * if (err) {\n * // the server did not acknowledge the event in the given delay\n * }\n * });\n *\n * @returns self\n */\n timeout(timeout) {\n this.flags.timeout = timeout;\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback.\n *\n * @example\n * socket.onAny((event, ...args) => {\n * console.log(`got ${event}`);\n * });\n *\n * @param listener\n */\n onAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.push(listener);\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback. The listener is added to the beginning of the listeners array.\n *\n * @example\n * socket.prependAny((event, ...args) => {\n * console.log(`got event ${event}`);\n * });\n *\n * @param listener\n */\n prependAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.unshift(listener);\n return this;\n }\n /**\n * Removes the listener that will be fired when any event is emitted.\n *\n * @example\n * const catchAllListener = (event, ...args) => {\n * console.log(`got event ${event}`);\n * }\n *\n * socket.onAny(catchAllListener);\n *\n * // remove a specific listener\n * socket.offAny(catchAllListener);\n *\n * // or remove all listeners\n * socket.offAny();\n *\n * @param listener\n */\n offAny(listener) {\n if (!this._anyListeners) {\n return this;\n }\n if (listener) {\n const listeners = this._anyListeners;\n for (let i = 0; i < listeners.length; i++) {\n if (listener === listeners[i]) {\n listeners.splice(i, 1);\n return this;\n }\n }\n }\n else {\n this._anyListeners = [];\n }\n return this;\n }\n /**\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n * e.g. to remove listeners.\n */\n listenersAny() {\n return this._anyListeners || [];\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback.\n *\n * Note: acknowledgements sent to the server are not included.\n *\n * @example\n * socket.onAnyOutgoing((event, ...args) => {\n * console.log(`sent event ${event}`);\n * });\n *\n * @param listener\n */\n onAnyOutgoing(listener) {\n this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n this._anyOutgoingListeners.push(listener);\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback. The listener is added to the beginning of the listeners array.\n *\n * Note: acknowledgements sent to the server are not included.\n *\n * @example\n * socket.prependAnyOutgoing((event, ...args) => {\n * console.log(`sent event ${event}`);\n * });\n *\n * @param listener\n */\n prependAnyOutgoing(listener) {\n this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n this._anyOutgoingListeners.unshift(listener);\n return this;\n }\n /**\n * Removes the listener that will be fired when any event is emitted.\n *\n * @example\n * const catchAllListener = (event, ...args) => {\n * console.log(`sent event ${event}`);\n * }\n *\n * socket.onAnyOutgoing(catchAllListener);\n *\n * // remove a specific listener\n * socket.offAnyOutgoing(catchAllListener);\n *\n * // or remove all listeners\n * socket.offAnyOutgoing();\n *\n * @param [listener] - the catch-all listener (optional)\n */\n offAnyOutgoing(listener) {\n if (!this._anyOutgoingListeners) {\n return this;\n }\n if (listener) {\n const listeners = this._anyOutgoingListeners;\n for (let i = 0; i < listeners.length; i++) {\n if (listener === listeners[i]) {\n listeners.splice(i, 1);\n return this;\n }\n }\n }\n else {\n this._anyOutgoingListeners = [];\n }\n return this;\n }\n /**\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n * e.g. to remove listeners.\n */\n listenersAnyOutgoing() {\n return this._anyOutgoingListeners || [];\n }\n /**\n * Notify the listeners for each packet sent\n *\n * @param packet\n *\n * @private\n */\n notifyOutgoingListeners(packet) {\n if (this._anyOutgoingListeners && this._anyOutgoingListeners.length) {\n const listeners = this._anyOutgoingListeners.slice();\n for (const listener of listeners) {\n listener.apply(this, packet.data);\n }\n }\n }\n}\n","/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\nexport function Backoff(opts) {\n opts = opts || {};\n this.ms = opts.min || 100;\n this.max = opts.max || 10000;\n this.factor = opts.factor || 2;\n this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n this.attempts = 0;\n}\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\nBackoff.prototype.duration = function () {\n var ms = this.ms * Math.pow(this.factor, this.attempts++);\n if (this.jitter) {\n var rand = Math.random();\n var deviation = Math.floor(rand * this.jitter * ms);\n ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n }\n return Math.min(ms, this.max) | 0;\n};\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\nBackoff.prototype.reset = function () {\n this.attempts = 0;\n};\n/**\n * Set the minimum duration\n *\n * @api public\n */\nBackoff.prototype.setMin = function (min) {\n this.ms = min;\n};\n/**\n * Set the maximum duration\n *\n * @api public\n */\nBackoff.prototype.setMax = function (max) {\n this.max = max;\n};\n/**\n * Set the jitter\n *\n * @api public\n */\nBackoff.prototype.setJitter = function (jitter) {\n this.jitter = jitter;\n};\n","import { Socket as Engine, installTimerFunctions, nextTick, } from \"engine.io-client\";\nimport { Socket } from \"./socket.js\";\nimport * as parser from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport { Backoff } from \"./contrib/backo2.js\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\nexport class Manager extends Emitter {\n constructor(uri, opts) {\n var _a;\n super();\n this.nsps = {};\n this.subs = [];\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n opts.path = opts.path || \"/socket.io\";\n this.opts = opts;\n installTimerFunctions(this, opts);\n this.reconnection(opts.reconnection !== false);\n this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n this.reconnectionDelay(opts.reconnectionDelay || 1000);\n this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\n this.randomizationFactor((_a = opts.randomizationFactor) !== null && _a !== void 0 ? _a : 0.5);\n this.backoff = new Backoff({\n min: this.reconnectionDelay(),\n max: this.reconnectionDelayMax(),\n jitter: this.randomizationFactor(),\n });\n this.timeout(null == opts.timeout ? 20000 : opts.timeout);\n this._readyState = \"closed\";\n this.uri = uri;\n const _parser = opts.parser || parser;\n this.encoder = new _parser.Encoder();\n this.decoder = new _parser.Decoder();\n this._autoConnect = opts.autoConnect !== false;\n if (this._autoConnect)\n this.open();\n }\n reconnection(v) {\n if (!arguments.length)\n return this._reconnection;\n this._reconnection = !!v;\n return this;\n }\n reconnectionAttempts(v) {\n if (v === undefined)\n return this._reconnectionAttempts;\n this._reconnectionAttempts = v;\n return this;\n }\n reconnectionDelay(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelay;\n this._reconnectionDelay = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMin(v);\n return this;\n }\n randomizationFactor(v) {\n var _a;\n if (v === undefined)\n return this._randomizationFactor;\n this._randomizationFactor = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setJitter(v);\n return this;\n }\n reconnectionDelayMax(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelayMax;\n this._reconnectionDelayMax = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMax(v);\n return this;\n }\n timeout(v) {\n if (!arguments.length)\n return this._timeout;\n this._timeout = v;\n return this;\n }\n /**\n * Starts trying to reconnect if reconnection is enabled and we have not\n * started reconnecting yet\n *\n * @private\n */\n maybeReconnectOnOpen() {\n // Only try to reconnect if it's the first time we're connecting\n if (!this._reconnecting &&\n this._reconnection &&\n this.backoff.attempts === 0) {\n // keeps reconnection from firing twice for the same reconnection loop\n this.reconnect();\n }\n }\n /**\n * Sets the current transport `socket`.\n *\n * @param {Function} fn - optional, callback\n * @return self\n * @public\n */\n open(fn) {\n if (~this._readyState.indexOf(\"open\"))\n return this;\n this.engine = new Engine(this.uri, this.opts);\n const socket = this.engine;\n const self = this;\n this._readyState = \"opening\";\n this.skipReconnect = false;\n // emit `open`\n const openSubDestroy = on(socket, \"open\", function () {\n self.onopen();\n fn && fn();\n });\n // emit `error`\n const errorSub = on(socket, \"error\", (err) => {\n self.cleanup();\n self._readyState = \"closed\";\n this.emitReserved(\"error\", err);\n if (fn) {\n fn(err);\n }\n else {\n // Only do this if there is no fn to handle the error\n self.maybeReconnectOnOpen();\n }\n });\n if (false !== this._timeout) {\n const timeout = this._timeout;\n if (timeout === 0) {\n openSubDestroy(); // prevents a race condition with the 'open' event\n }\n // set timer\n const timer = this.setTimeoutFn(() => {\n openSubDestroy();\n socket.close();\n // @ts-ignore\n socket.emit(\"error\", new Error(\"timeout\"));\n }, timeout);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(function subDestroy() {\n clearTimeout(timer);\n });\n }\n this.subs.push(openSubDestroy);\n this.subs.push(errorSub);\n return this;\n }\n /**\n * Alias for open()\n *\n * @return self\n * @public\n */\n connect(fn) {\n return this.open(fn);\n }\n /**\n * Called upon transport open.\n *\n * @private\n */\n onopen() {\n // clear old subs\n this.cleanup();\n // mark as open\n this._readyState = \"open\";\n this.emitReserved(\"open\");\n // add new subs\n const socket = this.engine;\n this.subs.push(on(socket, \"ping\", this.onping.bind(this)), on(socket, \"data\", this.ondata.bind(this)), on(socket, \"error\", this.onerror.bind(this)), on(socket, \"close\", this.onclose.bind(this)), on(this.decoder, \"decoded\", this.ondecoded.bind(this)));\n }\n /**\n * Called upon a ping.\n *\n * @private\n */\n onping() {\n this.emitReserved(\"ping\");\n }\n /**\n * Called with data.\n *\n * @private\n */\n ondata(data) {\n try {\n this.decoder.add(data);\n }\n catch (e) {\n this.onclose(\"parse error\", e);\n }\n }\n /**\n * Called when parser fully decodes a packet.\n *\n * @private\n */\n ondecoded(packet) {\n // the nextTick call prevents an exception in a user-provided event listener from triggering a disconnection due to a \"parse error\"\n nextTick(() => {\n this.emitReserved(\"packet\", packet);\n }, this.setTimeoutFn);\n }\n /**\n * Called upon socket error.\n *\n * @private\n */\n onerror(err) {\n this.emitReserved(\"error\", err);\n }\n /**\n * Creates a new socket for the given `nsp`.\n *\n * @return {Socket}\n * @public\n */\n socket(nsp, opts) {\n let socket = this.nsps[nsp];\n if (!socket) {\n socket = new Socket(this, nsp, opts);\n this.nsps[nsp] = socket;\n }\n return socket;\n }\n /**\n * Called upon a socket close.\n *\n * @param socket\n * @private\n */\n _destroy(socket) {\n const nsps = Object.keys(this.nsps);\n for (const nsp of nsps) {\n const socket = this.nsps[nsp];\n if (socket.active) {\n return;\n }\n }\n this._close();\n }\n /**\n * Writes a packet.\n *\n * @param packet\n * @private\n */\n _packet(packet) {\n const encodedPackets = this.encoder.encode(packet);\n for (let i = 0; i < encodedPackets.length; i++) {\n this.engine.write(encodedPackets[i], packet.options);\n }\n }\n /**\n * Clean up transport subscriptions and packet buffer.\n *\n * @private\n */\n cleanup() {\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs.length = 0;\n this.decoder.destroy();\n }\n /**\n * Close the current socket.\n *\n * @private\n */\n _close() {\n this.skipReconnect = true;\n this._reconnecting = false;\n this.onclose(\"forced close\");\n if (this.engine)\n this.engine.close();\n }\n /**\n * Alias for close()\n *\n * @private\n */\n disconnect() {\n return this._close();\n }\n /**\n * Called upon engine close.\n *\n * @private\n */\n onclose(reason, description) {\n this.cleanup();\n this.backoff.reset();\n this._readyState = \"closed\";\n this.emitReserved(\"close\", reason, description);\n if (this._reconnection && !this.skipReconnect) {\n this.reconnect();\n }\n }\n /**\n * Attempt a reconnection.\n *\n * @private\n */\n reconnect() {\n if (this._reconnecting || this.skipReconnect)\n return this;\n const self = this;\n if (this.backoff.attempts >= this._reconnectionAttempts) {\n this.backoff.reset();\n this.emitReserved(\"reconnect_failed\");\n this._reconnecting = false;\n }\n else {\n const delay = this.backoff.duration();\n this._reconnecting = true;\n const timer = this.setTimeoutFn(() => {\n if (self.skipReconnect)\n return;\n this.emitReserved(\"reconnect_attempt\", self.backoff.attempts);\n // check again for the case socket closed in above events\n if (self.skipReconnect)\n return;\n self.open((err) => {\n if (err) {\n self._reconnecting = false;\n self.reconnect();\n this.emitReserved(\"reconnect_error\", err);\n }\n else {\n self.onreconnect();\n }\n });\n }, delay);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(function subDestroy() {\n clearTimeout(timer);\n });\n }\n }\n /**\n * Called upon successful reconnect.\n *\n * @private\n */\n onreconnect() {\n const attempt = this.backoff.attempts;\n this._reconnecting = false;\n this.backoff.reset();\n this.emitReserved(\"reconnect\", attempt);\n }\n}\n","import { url } from \"./url.js\";\nimport { Manager } from \"./manager.js\";\nimport { Socket } from \"./socket.js\";\n/**\n * Managers cache.\n */\nconst cache = {};\nfunction lookup(uri, opts) {\n if (typeof uri === \"object\") {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n const parsed = url(uri, opts.path || \"/socket.io\");\n const source = parsed.source;\n const id = parsed.id;\n const path = parsed.path;\n const sameNamespace = cache[id] && path in cache[id][\"nsps\"];\n const newConnection = opts.forceNew ||\n opts[\"force new connection\"] ||\n false === opts.multiplex ||\n sameNamespace;\n let io;\n if (newConnection) {\n io = new Manager(source, opts);\n }\n else {\n if (!cache[id]) {\n cache[id] = new Manager(source, opts);\n }\n io = cache[id];\n }\n if (parsed.query && !opts.query) {\n opts.query = parsed.queryKey;\n }\n return io.socket(parsed.path, opts);\n}\n// so that \"lookup\" can be used both as a function (e.g. `io(...)`) and as a\n// namespace (e.g. `io.connect(...)`), for backward compatibility\nObject.assign(lookup, {\n Manager,\n Socket,\n io: lookup,\n connect: lookup,\n});\n/**\n * Protocol version.\n *\n * @public\n */\nexport { protocol } from \"socket.io-parser\";\n/**\n * Expose constructors for standalone build.\n *\n * @public\n */\nexport { Manager, Socket, lookup as io, lookup as connect, lookup as default, };\n","import { parse } from \"engine.io-client\";\n/**\n * URL parser.\n *\n * @param uri - url\n * @param path - the request path of the connection\n * @param loc - An object meant to mimic window.location.\n * Defaults to window.location.\n * @public\n */\nexport function url(uri, path = \"\", loc) {\n let obj = uri;\n // default to window.location\n loc = loc || (typeof location !== \"undefined\" && location);\n if (null == uri)\n uri = loc.protocol + \"//\" + loc.host;\n // relative path support\n if (typeof uri === \"string\") {\n if (\"/\" === uri.charAt(0)) {\n if (\"/\" === uri.charAt(1)) {\n uri = loc.protocol + uri;\n }\n else {\n uri = loc.host + uri;\n }\n }\n if (!/^(https?|wss?):\\/\\//.test(uri)) {\n if (\"undefined\" !== typeof loc) {\n uri = loc.protocol + \"//\" + uri;\n }\n else {\n uri = \"https://\" + uri;\n }\n }\n // parse\n obj = parse(uri);\n }\n // make sure we treat `localhost:80` and `localhost` equally\n if (!obj.port) {\n if (/^(http|ws)$/.test(obj.protocol)) {\n obj.port = \"80\";\n }\n else if (/^(http|ws)s$/.test(obj.protocol)) {\n obj.port = \"443\";\n }\n }\n obj.path = obj.path || \"/\";\n const ipv6 = obj.host.indexOf(\":\") !== -1;\n const host = ipv6 ? \"[\" + obj.host + \"]\" : obj.host;\n // define unique id\n obj.id = obj.protocol + \"://\" + host + \":\" + obj.port + path;\n // define href\n obj.href =\n obj.protocol +\n \"://\" +\n host +\n (loc && loc.port === obj.port ? \"\" : \":\" + obj.port);\n return obj;\n}\n"],"names":["PACKET_TYPES","Object","create","PACKET_TYPES_REVERSE","keys","forEach","key","ERROR_PACKET","type","data","withNativeBlob","Blob","prototype","toString","call","withNativeArrayBuffer","ArrayBuffer","encodePacket","supportsBinary","callback","obj","encodeBlobAsBase64","isView","buffer","fileReader","FileReader","onload","content","result","split","readAsDataURL","chars","lookup","Uint8Array","i","length","charCodeAt","decodePacket","encodedPacket","binaryType","mapBinary","charAt","decodeBase64Packet","substring","decoded","base64","encoded1","encoded2","encoded3","encoded4","bufferLength","len","p","arraybuffer","bytes","decode","SEPARATOR","String","fromCharCode","Emitter","mixin","on","addEventListener","event","fn","this","_callbacks","push","once","off","apply","arguments","removeListener","removeAllListeners","removeEventListener","cb","callbacks","splice","emit","args","Array","slice","emitReserved","listeners","hasListeners","globalThisShim","self","window","Function","pick","_len","attr","_key","reduce","acc","k","hasOwnProperty","NATIVE_SET_TIMEOUT","setTimeout","NATIVE_CLEAR_TIMEOUT","clearTimeout","installTimerFunctions","opts","useNativeTimers","setTimeoutFn","bind","globalThis","clearTimeoutFn","prev","TransportError","reason","description","context","_this","_classCallCheck","_super","Error","Transport","_Emitter","_inherits","_super2","_createSuper","_this2","writable","_assertThisInitialized","query","readyState","socket","_createClass","value","_get","_getPrototypeOf","doOpen","doClose","onClose","packets","write","packet","onPacket","details","alphabet","map","seed","encode","num","encoded","Math","floor","yeast","now","Date","str","encodeURIComponent","qs","qry","pairs","l","pair","decodeURIComponent","XMLHttpRequest","err","hasCORS","XHR","xdomain","e","concat","join","empty","hasXHR2","responseType","Polling","_Transport","polling","location","isSSL","protocol","port","xd","hostname","xs","secure","forceBase64","get","poll","onPause","pause","total","doPoll","_this3","encodedPayload","encodedPackets","decodedPacket","decodePayload","onOpen","_this4","close","_this5","count","encodePayload","doWrite","schema","timestampRequests","timestampParam","sid","b64","Number","encodedQuery","indexOf","path","_extends","Request","uri","_this6","req","request","method","xhrStatus","onError","_this7","onData","pollXhr","_this8","async","undefined","_this9","xscheme","xhr","open","extraHeaders","setDisableHeaderCheck","setRequestHeader","withCredentials","requestTimeout","timeout","onreadystatechange","status","onLoad","send","document","index","requestsCount","requests","cleanup","fromError","abort","responseText","attachEvent","unloadHandler","nextTick","Promise","resolve","then","WebSocket","MozWebSocket","isReactNative","navigator","product","toLowerCase","WS","check","protocols","headers","ws","addEventListeners","onopen","autoUnref","_socket","unref","onclose","closeEvent","onmessage","ev","onerror","_loop","lastPacket","transports","websocket","re","parts","parse","src","b","replace","m","exec","source","host","authority","ipv6uri","pathNames","regx","names","queryKey","$0","$1","$2","Socket","writeBuffer","prevBufferLen","agent","upgrade","rememberUpgrade","rejectUnauthorized","perMessageDeflate","threshold","transportOptions","closeOnBeforeunload","id","upgrades","pingInterval","pingTimeout","pingTimeoutTimer","beforeunloadEventListener","transport","offlineEventListener","name","EIO","priorWebsocketSuccess","createTransport","shift","setTransport","onDrain","failed","onTransportOpen","msg","upgrading","flush","freezeTransport","error","onTransportClose","onupgrade","to","probe","onHandshake","JSON","resetPingTimeout","sendPacket","code","filterUpgrades","maxPayload","getWritablePackets","payloadSize","c","utf8Length","ceil","byteLength","size","options","compress","cleanupAndClose","waitForUpgrade","filteredUpgrades","j","Socket$1","withNativeFile","File","isBinary","hasBinary","toJSON","_typeof","isArray","deconstructPacket","buffers","packetData","pack","_deconstructPacket","attachments","placeholder","_placeholder","newData","reconstructPacket","_reconstructPacket","PacketType","Encoder","replacer","EVENT","ACK","encodeAsString","BINARY_EVENT","BINARY_ACK","encodeAsBinary","nsp","stringify","deconstruction","unshift","Decoder","reviver","decodeString","reconstructor","BinaryReconstructor","takeBinaryData","start","buf","next","payload","tryParse","substr","isPayloadValid","finishedReconstruction","CONNECT","DISCONNECT","CONNECT_ERROR","reconPack","binData","RESERVED_EVENTS","freeze","connect","connect_error","disconnect","disconnecting","newListener","io","connected","receiveBuffer","sendBuffer","ids","acks","flags","auth","_autoConnect","subs","onpacket","subEvents","_readyState","_len2","_key2","ack","pop","_registerAckCallback","isTransportWritable","engine","discardPacket","notifyOutgoingListeners","timer","_len3","_key3","_packet","onconnect","onevent","onack","ondisconnect","destroy","message","emitEvent","_anyListeners","_step","_iterator","_createForOfIteratorHelper","s","n","done","f","sent","_len4","_key4","emitBuffered","subDestroy","listener","_anyOutgoingListeners","_step2","_iterator2","Backoff","ms","min","max","factor","jitter","attempts","duration","pow","rand","random","deviation","reset","setMin","setMax","setJitter","Manager","_a","nsps","reconnection","reconnectionAttempts","Infinity","reconnectionDelay","reconnectionDelayMax","randomizationFactor","backoff","_parser","parser","encoder","decoder","autoConnect","v","_reconnection","_reconnectionAttempts","_reconnectionDelay","_randomizationFactor","_reconnectionDelayMax","_timeout","_reconnecting","reconnect","Engine","skipReconnect","openSubDestroy","errorSub","maybeReconnectOnOpen","onping","ondata","ondecoded","add","_i","_nsps","active","_close","delay","onreconnect","attempt","cache","parsed","loc","test","href","url","sameNamespace","forceNew","multiplex"],"mappings":"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"} \ No newline at end of file diff --git a/vendor/socketio/socket.io.msgpack.min.js b/vendor/socketio/socket.io.msgpack.min.js new file mode 100644 index 000000000..f4c785adc --- /dev/null +++ b/vendor/socketio/socket.io.msgpack.min.js @@ -0,0 +1,7 @@ +/*! + * Socket.IO v4.5.3 + * (c) 2014-2022 Guillermo Rauch + * Released under the MIT License. + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).io=e()}(this,(function(){"use strict";function t(t,e){return e.forEach((function(e){e&&"string"!=typeof e&&!Array.isArray(e)&&Object.keys(e).forEach((function(n){if("default"!==n&&!(n in t)){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})}}))})),Object.freeze(t)}function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(t)}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function r(t,e){for(var n=0;nt.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return s=t.done,t},e:function(t){a=!0,o=t},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}var _=Object.create(null);_.open="0",_.close="1",_.ping="2",_.pong="3",_.message="4",_.upgrade="5",_.noop="6";var b=Object.create(null);Object.keys(_).forEach((function(t){b[_[t]]=t}));for(var k={type:"error",data:"parser error"},w="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),O="function"==typeof ArrayBuffer,E=function(t,e,n){var r,i=t.type,o=t.data;return w&&o instanceof Blob?e?n(o):C(o,n):O&&(o instanceof ArrayBuffer||(r=o,"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(r):r&&r.buffer instanceof ArrayBuffer))?e?n(o):C(new Blob([o]),n):n(_[i]+(o||""))},C=function(t,e){var n=new FileReader;return n.onload=function(){var t=n.result.split(",")[1];e("b"+t)},n.readAsDataURL(t)},R="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",T="undefined"==typeof Uint8Array?[]:new Uint8Array(256),S=0;S1?{type:b[n],data:t.substring(1)}:{type:b[n]}:k},x=function(t,e){if(L){var n=function(t){var e,n,r,i,o,s=.75*t.length,a=t.length,c=0;"="===t[t.length-1]&&(s--,"="===t[t.length-2]&&s--);var u=new ArrayBuffer(s),h=new Uint8Array(u);for(e=0;e>4,h[c++]=(15&r)<<4|i>>2,h[c++]=(3&i)<<6|63&o;return u}(t);return B(n,e)}return{base64:!0,data:t}},B=function(t,e){return"blob"===e&&t instanceof ArrayBuffer?new Blob([t]):t},U=String.fromCharCode(30);function j(t){if(t)return function(t){for(var e in j.prototype)t[e]=j.prototype[e];return t}(t)}j.prototype.on=j.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+t]=this._callbacks["$"+t]||[]).push(e),this},j.prototype.once=function(t,e){function n(){this.off(t,n),e.apply(this,arguments)}return n.fn=e,this.on(t,n),this},j.prototype.off=j.prototype.removeListener=j.prototype.removeAllListeners=j.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var n,r=this._callbacks["$"+t];if(!r)return this;if(1==arguments.length)return delete this._callbacks["$"+t],this;for(var i=0;i1?e-1:0),r=1;r0);return e}function K(){var t=X(+new Date);return t!==I?(V=0,I=t):t+"."+X(V++)}for(;W<64;W++)z[$[W]]=W;function J(t){var e="";for(var n in t)t.hasOwnProperty(n)&&(e.length&&(e+="&"),e+=encodeURIComponent(n)+"="+encodeURIComponent(t[n]));return e}function Y(t){for(var e={},n=t.split("&"),r=0,i=n.length;r0&&void 0!==arguments[0]?arguments[0]:{};return o(t,{xd:this.xd,xs:this.xs},this.opts),new rt(this.uri(),t)}},{key:"doWrite",value:function(t,e){var n=this,r=this.request({method:"POST",data:t});r.on("success",e),r.on("error",(function(t,e){n.onError("xhr post error",t,e)}))}},{key:"doPoll",value:function(){var t=this,e=this.request();e.on("data",this.onData.bind(this)),e.on("error",(function(e,n){t.onError("xhr poll error",e,n)})),this.pollXhr=e}}]),r}(H),rt=function(t){s(r,t);var e=d(r);function r(t,i){var o;return n(this,r),D(l(o=e.call(this)),i),o.opts=i,o.method=i.method||"GET",o.uri=t,o.async=!1!==i.async,o.data=void 0!==i.data?i.data:null,o.create(),o}return i(r,[{key:"create",value:function(){var t=this,e=N(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");e.xdomain=!!this.opts.xd,e.xscheme=!!this.opts.xs;var n=this.xhr=new Z(e);try{n.open(this.method,this.uri,this.async);try{if(this.opts.extraHeaders)for(var i in n.setDisableHeaderCheck&&n.setDisableHeaderCheck(!0),this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(i)&&n.setRequestHeader(i,this.opts.extraHeaders[i])}catch(t){}if("POST"===this.method)try{n.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(t){}try{n.setRequestHeader("Accept","*/*")}catch(t){}"withCredentials"in n&&(n.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(n.timeout=this.opts.requestTimeout),n.onreadystatechange=function(){4===n.readyState&&(200===n.status||1223===n.status?t.onLoad():t.setTimeoutFn((function(){t.onError("number"==typeof n.status?n.status:0)}),0))},n.send(this.data)}catch(e){return void this.setTimeoutFn((function(){t.onError(e)}),0)}"undefined"!=typeof document&&(this.index=r.requestsCount++,r.requests[this.index]=this)}},{key:"onError",value:function(t){this.emitReserved("error",t,this.xhr),this.cleanup(!0)}},{key:"cleanup",value:function(t){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=tt,t)try{this.xhr.abort()}catch(t){}"undefined"!=typeof document&&delete r.requests[this.index],this.xhr=null}}},{key:"onLoad",value:function(){var t=this.xhr.responseText;null!==t&&(this.emitReserved("data",t),this.emitReserved("success"),this.cleanup())}},{key:"abort",value:function(){this.cleanup()}}]),r}(j);if(rt.requestsCount=0,rt.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",it);else if("function"==typeof addEventListener){addEventListener("onpagehide"in P?"pagehide":"unload",it,!1)}function it(){for(var t in rt.requests)rt.requests.hasOwnProperty(t)&&rt.requests[t].abort()}var ot="function"==typeof Promise&&"function"==typeof Promise.resolve?function(t){return Promise.resolve().then(t)}:function(t,e){return e(t,0)},st=P.WebSocket||P.MozWebSocket,at="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase(),ct=function(t){s(r,t);var e=d(r);function r(t){var i;return n(this,r),(i=e.call(this,t)).supportsBinary=!t.forceBase64,i}return i(r,[{key:"name",get:function(){return"websocket"}},{key:"doOpen",value:function(){if(this.check()){var t=this.uri(),e=this.opts.protocols,n=at?{}:N(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(n.headers=this.opts.extraHeaders);try{this.ws=at?new st(t,e,n):e?new st(t,e):new st(t)}catch(t){return this.emitReserved("error",t)}this.ws.binaryType=this.socket.binaryType||"arraybuffer",this.addEventListeners()}}},{key:"addEventListeners",value:function(){var t=this;this.ws.onopen=function(){t.opts.autoUnref&&t.ws._socket.unref(),t.onOpen()},this.ws.onclose=function(e){return t.onClose({description:"websocket connection closed",context:e})},this.ws.onmessage=function(e){return t.onData(e.data)},this.ws.onerror=function(e){return t.onError("websocket error",e)}}},{key:"write",value:function(t){var e=this;this.writable=!1;for(var n=function(n){var r=t[n],i=n===t.length-1;E(r,e.supportsBinary,(function(t){try{e.ws.send(t)}catch(t){}i&&ot((function(){e.writable=!0,e.emitReserved("drain")}),e.setTimeoutFn)}))},r=0;r1&&void 0!==arguments[1]?arguments[1]:{};return n(this,a),i=r.call(this),t&&"object"===e(t)&&(s=t,t=null),t?(t=lt(t),s.hostname=t.host,s.secure="https"===t.protocol||"wss"===t.protocol,s.port=t.port,t.query&&(s.query=t.query)):s.host&&(s.hostname=lt(s.host).host),D(l(i),s),i.secure=null!=s.secure?s.secure:"undefined"!=typeof location&&"https:"===location.protocol,s.hostname&&!s.port&&(s.port=i.secure?"443":"80"),i.hostname=s.hostname||("undefined"!=typeof location?location.hostname:"localhost"),i.port=s.port||("undefined"!=typeof location&&location.port?location.port:i.secure?"443":"80"),i.transports=s.transports||["polling","websocket"],i.readyState="",i.writeBuffer=[],i.prevBufferLen=0,i.opts=o({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!0},s),i.opts.path=i.opts.path.replace(/\/$/,"")+"/","string"==typeof i.opts.query&&(i.opts.query=Y(i.opts.query)),i.id=null,i.upgrades=null,i.pingInterval=null,i.pingTimeout=null,i.pingTimeoutTimer=null,"function"==typeof addEventListener&&(i.opts.closeOnBeforeunload&&(i.beforeunloadEventListener=function(){i.transport&&(i.transport.removeAllListeners(),i.transport.close())},addEventListener("beforeunload",i.beforeunloadEventListener,!1)),"localhost"!==i.hostname&&(i.offlineEventListener=function(){i.onClose("transport close",{description:"network connection lost"})},addEventListener("offline",i.offlineEventListener,!1))),i.open(),i}return i(a,[{key:"createTransport",value:function(t){var e=o({},this.opts.query);e.EIO=4,e.transport=t,this.id&&(e.sid=this.id);var n=o({},this.opts.transportOptions[t],this.opts,{query:e,socket:this,hostname:this.hostname,secure:this.secure,port:this.port});return new ut[t](n)}},{key:"open",value:function(){var t,e=this;if(this.opts.rememberUpgrade&&a.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))t="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((function(){e.emitReserved("error","No transports available")}),0);t=this.transports[0]}this.readyState="opening";try{t=this.createTransport(t)}catch(t){return this.transports.shift(),void this.open()}t.open(),this.setTransport(t)}},{key:"setTransport",value:function(t){var e=this;this.transport&&this.transport.removeAllListeners(),this.transport=t,t.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",(function(t){return e.onClose("transport close",t)}))}},{key:"probe",value:function(t){var e=this,n=this.createTransport(t),r=!1;a.priorWebsocketSuccess=!1;var i=function(){r||(n.send([{type:"ping",data:"probe"}]),n.once("packet",(function(t){if(!r)if("pong"===t.type&&"probe"===t.data){if(e.upgrading=!0,e.emitReserved("upgrading",n),!n)return;a.priorWebsocketSuccess="websocket"===n.name,e.transport.pause((function(){r||"closed"!==e.readyState&&(f(),e.setTransport(n),n.send([{type:"upgrade"}]),e.emitReserved("upgrade",n),n=null,e.upgrading=!1,e.flush())}))}else{var i=new Error("probe error");i.transport=n.name,e.emitReserved("upgradeError",i)}})))};function o(){r||(r=!0,f(),n.close(),n=null)}var s=function(t){var r=new Error("probe error: "+t);r.transport=n.name,o(),e.emitReserved("upgradeError",r)};function c(){s("transport closed")}function u(){s("socket closed")}function h(t){n&&t.name!==n.name&&o()}var f=function(){n.removeListener("open",i),n.removeListener("error",s),n.removeListener("close",c),e.off("close",u),e.off("upgrading",h)};n.once("open",i),n.once("error",s),n.once("close",c),this.once("close",u),this.once("upgrading",h),n.open()}},{key:"onOpen",value:function(){if(this.readyState="open",a.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade&&this.transport.pause)for(var t=0,e=this.upgrades.length;t1))return this.writeBuffer;for(var t,e=1,n=0;n=57344?n+=3:(r++,n+=4);return n}(t):Math.ceil(1.33*(t.byteLength||t.size))),n>0&&e>this.maxPayload)return this.writeBuffer.slice(0,n);e+=2}return this.writeBuffer}},{key:"write",value:function(t,e,n){return this.sendPacket("message",t,e,n),this}},{key:"send",value:function(t,e,n){return this.sendPacket("message",t,e,n),this}},{key:"sendPacket",value:function(t,e,n,r){if("function"==typeof e&&(r=e,e=void 0),"function"==typeof n&&(r=n,n=null),"closing"!==this.readyState&&"closed"!==this.readyState){(n=n||{}).compress=!1!==n.compress;var i={type:t,data:e,options:n};this.emitReserved("packetCreate",i),this.writeBuffer.push(i),r&&this.once("flush",r),this.flush()}}},{key:"close",value:function(){var t=this,e=function(){t.onClose("forced close"),t.transport.close()},n=function n(){t.off("upgrade",n),t.off("upgradeError",n),e()},r=function(){t.once("upgrade",n),t.once("upgradeError",n)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(function(){t.upgrading?r():e()})):this.upgrading?r():e()),this}},{key:"onError",value:function(t){a.priorWebsocketSuccess=!1,this.emitReserved("error",t),this.onClose("transport error",t)}},{key:"onClose",value:function(t,e){"opening"!==this.readyState&&"open"!==this.readyState&&"closing"!==this.readyState||(this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),"function"==typeof removeEventListener&&(removeEventListener("beforeunload",this.beforeunloadEventListener,!1),removeEventListener("offline",this.offlineEventListener,!1)),this.readyState="closed",this.id=null,this.emitReserved("close",t,e),this.writeBuffer=[],this.prevBufferLen=0)}},{key:"filterUpgrades",value:function(t){for(var e=[],n=0,r=t.length;n>6),t.setUint8(e++,128|63&r)):r<55296||r>=57344?(t.setUint8(e++,224|r>>12),t.setUint8(e++,128|r>>6&63),t.setUint8(e++,128|63&r)):(i++,r=65536+((1023&r)<<10|1023&n.charCodeAt(i)),t.setUint8(e++,240|r>>18),t.setUint8(e++,128|r>>12&63),t.setUint8(e++,128|r>>6&63),t.setUint8(e++,128|63&r))}function gt(t,n,r){var i=e(r),o=0,s=0,a=0,c=0,u=0,h=0;if("string"===i){if(u=function(t){for(var e=0,n=0,r=0,i=t.length;r=57344?n+=3:(r++,n+=4);return n}(r),u<32)t.push(160|u),h=1;else if(u<256)t.push(217,u),h=2;else if(u<65536)t.push(218,u>>8,u),h=3;else{if(!(u<4294967296))throw new Error("String too long");t.push(219,u>>24,u>>16,u>>8,u),h=5}return n.push({_str:r,_length:u,_offset:t.length}),h+u}if("number"===i)return Math.floor(r)===r&&isFinite(r)?r>=0?r<128?(t.push(r),1):r<256?(t.push(204,r),2):r<65536?(t.push(205,r>>8,r),3):r<4294967296?(t.push(206,r>>24,r>>16,r>>8,r),5):(a=r/Math.pow(2,32)>>0,c=r>>>0,t.push(207,a>>24,a>>16,a>>8,a,c>>24,c>>16,c>>8,c),9):r>=-32?(t.push(r),1):r>=-128?(t.push(208,r),2):r>=-32768?(t.push(209,r>>8,r),3):r>=-2147483648?(t.push(210,r>>24,r>>16,r>>8,r),5):(a=Math.floor(r/Math.pow(2,32)),c=r>>>0,t.push(211,a>>24,a>>16,a>>8,a,c>>24,c>>16,c>>8,c),9):(t.push(203),n.push({_float:r,_length:8,_offset:t.length}),9);if("object"===i){if(null===r)return t.push(192),1;if(Array.isArray(r)){if((u=r.length)<16)t.push(144|u),h=1;else if(u<65536)t.push(220,u>>8,u),h=3;else{if(!(u<4294967296))throw new Error("Array too large");t.push(221,u>>24,u>>16,u>>8,u),h=5}for(o=0;o>>0,t.push(215,0,a>>24,a>>16,a>>8,a,c>>24,c>>16,c>>8,c),10}if(r instanceof ArrayBuffer){if((u=r.byteLength)<256)t.push(196,u),h=2;else if(u<65536)t.push(197,u>>8,u),h=3;else{if(!(u<4294967296))throw new Error("Buffer too large");t.push(198,u>>24,u>>16,u>>8,u),h=5}return n.push({_bin:r,_length:u,_offset:t.length}),h+u}if("function"==typeof r.toJSON)return gt(t,n,r.toJSON());var l=[],p="",d=Object.keys(r);for(o=0,s=d.length;o>8,u),h=3;else{if(!(u<4294967296))throw new Error("Object too large");t.push(223,u>>24,u>>16,u>>8,u),h=5}for(o=0;o0&&(c=n[0]._offset);for(var u,h=0,f=0,l=0,p=e.length;l=65536?(i-=65536,r+=String.fromCharCode(55296+(i>>>10),56320+(1023&i))):r+=String.fromCharCode(i)}else r+=String.fromCharCode((15&a)<<12|(63&t.getUint8(++o))<<6|(63&t.getUint8(++o))<<0);else r+=String.fromCharCode((31&a)<<6|63&t.getUint8(++o));else r+=String.fromCharCode(a)}return r}(this._view,this._offset,t);return this._offset+=t,e},_t.prototype._bin=function(t){var e=this._buffer.slice(this._offset,this._offset+t);return this._offset+=t,e},_t.prototype._parse=function(){var t,e=this._view.getUint8(this._offset++),n=0,r=0,i=0,o=0;if(e<192)return e<128?e:e<144?this._map(15&e):e<160?this._array(15&e):this._str(31&e);if(e>223)return-1*(255-e+1);switch(e){case 192:return null;case 194:return!1;case 195:return!0;case 196:return n=this._view.getUint8(this._offset),this._offset+=1,this._bin(n);case 197:return n=this._view.getUint16(this._offset),this._offset+=2,this._bin(n);case 198:return n=this._view.getUint32(this._offset),this._offset+=4,this._bin(n);case 199:return n=this._view.getUint8(this._offset),r=this._view.getInt8(this._offset+1),this._offset+=2,[r,this._bin(n)];case 200:return n=this._view.getUint16(this._offset),r=this._view.getInt8(this._offset+2),this._offset+=3,[r,this._bin(n)];case 201:return n=this._view.getUint32(this._offset),r=this._view.getInt8(this._offset+4),this._offset+=5,[r,this._bin(n)];case 202:return t=this._view.getFloat32(this._offset),this._offset+=4,t;case 203:return t=this._view.getFloat64(this._offset),this._offset+=8,t;case 204:return t=this._view.getUint8(this._offset),this._offset+=1,t;case 205:return t=this._view.getUint16(this._offset),this._offset+=2,t;case 206:return t=this._view.getUint32(this._offset),this._offset+=4,t;case 207:return i=this._view.getUint32(this._offset)*Math.pow(2,32),o=this._view.getUint32(this._offset+4),this._offset+=8,i+o;case 208:return t=this._view.getInt8(this._offset),this._offset+=1,t;case 209:return t=this._view.getInt16(this._offset),this._offset+=2,t;case 210:return t=this._view.getInt32(this._offset),this._offset+=4,t;case 211:return i=this._view.getInt32(this._offset)*Math.pow(2,32),o=this._view.getUint32(this._offset+4),this._offset+=8,i+o;case 212:return r=this._view.getInt8(this._offset),this._offset+=1,0===r?void(this._offset+=1):[r,this._bin(1)];case 213:return r=this._view.getInt8(this._offset),this._offset+=1,[r,this._bin(2)];case 214:return r=this._view.getInt8(this._offset),this._offset+=1,[r,this._bin(4)];case 215:return r=this._view.getInt8(this._offset),this._offset+=1,0===r?(i=this._view.getInt32(this._offset)*Math.pow(2,32),o=this._view.getUint32(this._offset+4),this._offset+=8,new Date(i+o)):[r,this._bin(8)];case 216:return r=this._view.getInt8(this._offset),this._offset+=1,[r,this._bin(16)];case 217:return n=this._view.getUint8(this._offset),this._offset+=1,this._str(n);case 218:return n=this._view.getUint16(this._offset),this._offset+=2,this._str(n);case 219:return n=this._view.getUint32(this._offset),this._offset+=4,this._str(n);case 220:return n=this._view.getUint16(this._offset),this._offset+=2,this._array(n);case 221:return n=this._view.getUint32(this._offset),this._offset+=4,this._array(n);case 222:return n=this._view.getUint16(this._offset),this._offset+=2,this._map(n);case 223:return n=this._view.getUint32(this._offset),this._offset+=4,this._map(n)}throw new Error("Could not parse")};var bt=function(t){var e=new _t(t),n=e._parse();if(e._offset!==t.byteLength)throw new Error(t.byteLength-e._offset+" trailing bytes");return n};yt.encode=mt,yt.decode=bt;var kt,wt={exports:{}};!function(t){function e(t){if(t)return function(t){for(var n in e.prototype)t[n]=e.prototype[n];return t}(t)}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+t]=this._callbacks["$"+t]||[]).push(e),this},e.prototype.once=function(t,e){function n(){this.off(t,n),e.apply(this,arguments)}return n.fn=e,this.on(t,n),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var n,r=this._callbacks["$"+t];if(!r)return this;if(1==arguments.length)return delete this._callbacks["$"+t],this;for(var i=0;i=Rt.CONNECT&&t.type<=Rt.CONNECT_ERROR))throw new Error("invalid packet type");if(!St(t.nsp))throw new Error("invalid namespace");if(!function(t){switch(t.type){case Rt.CONNECT:return void 0===t.data||Lt(t.data);case Rt.DISCONNECT:return void 0===t.data;case Rt.CONNECT_ERROR:return St(t.data)||Lt(t.data);default:return Array.isArray(t.data)}}(t))throw new Error("invalid payload");if(!(void 0===t.id||Tt(t.id)))throw new Error("invalid packet id")},xt.prototype.destroy=function(){};var Bt=dt.Encoder=At,Ut=dt.Decoder=xt,jt=t({__proto__:null,default:dt,protocol:Ct,get PacketType(){return kt},Encoder:Bt,Decoder:Ut},[dt]);function Pt(t,e,n){return t.on(e,n),function(){t.off(e,n)}}var Nt=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1}),qt=function(t){s(r,t);var e=d(r);function r(t,i,o){var s;return n(this,r),(s=e.call(this)).connected=!1,s.receiveBuffer=[],s.sendBuffer=[],s.ids=0,s.acks={},s.flags={},s.io=t,s.nsp=i,o&&o.auth&&(s.auth=o.auth),s.io._autoConnect&&s.open(),s}return i(r,[{key:"disconnected",get:function(){return!this.connected}},{key:"subEvents",value:function(){if(!this.subs){var t=this.io;this.subs=[Pt(t,"open",this.onopen.bind(this)),Pt(t,"packet",this.onpacket.bind(this)),Pt(t,"error",this.onerror.bind(this)),Pt(t,"close",this.onclose.bind(this))]}}},{key:"active",get:function(){return!!this.subs}},{key:"connect",value:function(){return this.connected||(this.subEvents(),this.io._reconnecting||this.io.open(),"open"===this.io._readyState&&this.onopen()),this}},{key:"open",value:function(){return this.connect()}},{key:"send",value:function(){for(var t=arguments.length,e=new Array(t),n=0;n1?e-1:0),r=1;r0&&t.jitter<=1?t.jitter:0,this.attempts=0}Mt.prototype.duration=function(){var t=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var e=Math.random(),n=Math.floor(e*this.jitter*t);t=0==(1&Math.floor(10*e))?t-n:t+n}return 0|Math.min(t,this.max)},Mt.prototype.reset=function(){this.attempts=0},Mt.prototype.setMin=function(t){this.ms=t},Mt.prototype.setMax=function(t){this.max=t},Mt.prototype.setJitter=function(t){this.jitter=t};var Dt=function(t){s(o,t);var r=d(o);function o(t,i){var s,a;n(this,o),(s=r.call(this)).nsps={},s.subs=[],t&&"object"===e(t)&&(i=t,t=void 0),(i=i||{}).path=i.path||"/socket.io",s.opts=i,D(l(s),i),s.reconnection(!1!==i.reconnection),s.reconnectionAttempts(i.reconnectionAttempts||1/0),s.reconnectionDelay(i.reconnectionDelay||1e3),s.reconnectionDelayMax(i.reconnectionDelayMax||5e3),s.randomizationFactor(null!==(a=i.randomizationFactor)&&void 0!==a?a:.5),s.backoff=new Mt({min:s.reconnectionDelay(),max:s.reconnectionDelayMax(),jitter:s.randomizationFactor()}),s.timeout(null==i.timeout?2e4:i.timeout),s._readyState="closed",s.uri=t;var c=i.parser||jt;return s.encoder=new c.Encoder,s.decoder=new c.Decoder,s._autoConnect=!1!==i.autoConnect,s._autoConnect&&s.open(),s}return i(o,[{key:"reconnection",value:function(t){return arguments.length?(this._reconnection=!!t,this):this._reconnection}},{key:"reconnectionAttempts",value:function(t){return void 0===t?this._reconnectionAttempts:(this._reconnectionAttempts=t,this)}},{key:"reconnectionDelay",value:function(t){var e;return void 0===t?this._reconnectionDelay:(this._reconnectionDelay=t,null===(e=this.backoff)||void 0===e||e.setMin(t),this)}},{key:"randomizationFactor",value:function(t){var e;return void 0===t?this._randomizationFactor:(this._randomizationFactor=t,null===(e=this.backoff)||void 0===e||e.setJitter(t),this)}},{key:"reconnectionDelayMax",value:function(t){var e;return void 0===t?this._reconnectionDelayMax:(this._reconnectionDelayMax=t,null===(e=this.backoff)||void 0===e||e.setMax(t),this)}},{key:"timeout",value:function(t){return arguments.length?(this._timeout=t,this):this._timeout}},{key:"maybeReconnectOnOpen",value:function(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}},{key:"open",value:function(t){var e=this;if(~this._readyState.indexOf("open"))return this;this.engine=new pt(this.uri,this.opts);var n=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;var i=Pt(n,"open",(function(){r.onopen(),t&&t()})),o=Pt(n,"error",(function(n){r.cleanup(),r._readyState="closed",e.emitReserved("error",n),t?t(n):r.maybeReconnectOnOpen()}));if(!1!==this._timeout){var s=this._timeout;0===s&&i();var a=this.setTimeoutFn((function(){i(),n.close(),n.emit("error",new Error("timeout"))}),s);this.opts.autoUnref&&a.unref(),this.subs.push((function(){clearTimeout(a)}))}return this.subs.push(i),this.subs.push(o),this}},{key:"connect",value:function(t){return this.open(t)}},{key:"onopen",value:function(){this.cleanup(),this._readyState="open",this.emitReserved("open");var t=this.engine;this.subs.push(Pt(t,"ping",this.onping.bind(this)),Pt(t,"data",this.ondata.bind(this)),Pt(t,"error",this.onerror.bind(this)),Pt(t,"close",this.onclose.bind(this)),Pt(this.decoder,"decoded",this.ondecoded.bind(this)))}},{key:"onping",value:function(){this.emitReserved("ping")}},{key:"ondata",value:function(t){try{this.decoder.add(t)}catch(t){this.onclose("parse error",t)}}},{key:"ondecoded",value:function(t){var e=this;ot((function(){e.emitReserved("packet",t)}),this.setTimeoutFn)}},{key:"onerror",value:function(t){this.emitReserved("error",t)}},{key:"socket",value:function(t,e){var n=this.nsps[t];return n||(n=new qt(this,t,e),this.nsps[t]=n),n}},{key:"_destroy",value:function(t){for(var e=0,n=Object.keys(this.nsps);e=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{var n=this.backoff.duration();this._reconnecting=!0;var r=this.setTimeoutFn((function(){e.skipReconnect||(t.emitReserved("reconnect_attempt",e.backoff.attempts),e.skipReconnect||e.open((function(n){n?(e._reconnecting=!1,e.reconnect(),t.emitReserved("reconnect_error",n)):e.onreconnect()})))}),n);this.opts.autoUnref&&r.unref(),this.subs.push((function(){clearTimeout(r)}))}}},{key:"onreconnect",value:function(){var t=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",t)}}]),o}(j),It={};function Ft(t,n){"object"===e(t)&&(n=t,t=void 0);var r,i=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2?arguments[2]:void 0,r=t;n=n||"undefined"!=typeof location&&location,null==t&&(t=n.protocol+"//"+n.host),"string"==typeof t&&("/"===t.charAt(0)&&(t="/"===t.charAt(1)?n.protocol+t:n.host+t),/^(https?|wss?):\/\//.test(t)||(t=void 0!==n?n.protocol+"//"+t:"https://"+t),r=lt(t)),r.port||(/^(http|ws)$/.test(r.protocol)?r.port="80":/^(http|ws)s$/.test(r.protocol)&&(r.port="443")),r.path=r.path||"/";var i=-1!==r.host.indexOf(":")?"["+r.host+"]":r.host;return r.id=r.protocol+"://"+i+":"+r.port+e,r.href=r.protocol+"://"+i+(n&&n.port===r.port?"":":"+r.port),r}(t,(n=n||{}).path||"/socket.io"),o=i.source,s=i.id,a=i.path,c=It[s]&&a in It[s].nsps;return n.forceNew||n["force new connection"]||!1===n.multiplex||c?r=new Dt(o,n):(It[s]||(It[s]=new Dt(o,n)),r=It[s]),i.query&&!n.query&&(n.query=i.queryKey),r.socket(i.path,n)}return o(Ft,{Manager:Dt,Socket:qt,io:Ft,connect:Ft}),Ft})); +//# sourceMappingURL=socket.io.msgpack.min.js.map diff --git a/vendor/socketio/socket.io.msgpack.min.js.map b/vendor/socketio/socket.io.msgpack.min.js.map new file mode 100644 index 000000000..6c09ccfb5 --- /dev/null +++ b/vendor/socketio/socket.io.msgpack.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"socket.io.msgpack.min.js","sources":["../node_modules/engine.io-parser/build/esm/commons.js","../node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.js","../node_modules/engine.io-parser/build/esm/encodePacket.browser.js","../node_modules/engine.io-parser/build/esm/decodePacket.browser.js","../node_modules/engine.io-parser/build/esm/index.js","../node_modules/@socket.io/component-emitter/index.mjs","../node_modules/engine.io-client/build/esm/globalThis.browser.js","../node_modules/engine.io-client/build/esm/util.js","../node_modules/engine.io-client/build/esm/contrib/yeast.js","../node_modules/engine.io-client/build/esm/transport.js","../node_modules/engine.io-client/build/esm/contrib/parseqs.js","../node_modules/engine.io-client/build/esm/contrib/has-cors.js","../node_modules/engine.io-client/build/esm/transports/xmlhttprequest.browser.js","../node_modules/engine.io-client/build/esm/transports/polling.js","../node_modules/engine.io-client/build/esm/transports/websocket-constructor.browser.js","../node_modules/engine.io-client/build/esm/transports/websocket.js","../node_modules/engine.io-client/build/esm/transports/index.js","../node_modules/engine.io-client/build/esm/contrib/parseuri.js","../node_modules/engine.io-client/build/esm/socket.js","../node_modules/engine.io-client/build/esm/index.js","../node_modules/notepack.io/browser/encode.js","../node_modules/notepack.io/browser/decode.js","../node_modules/notepack.io/lib/index.js","../node_modules/component-emitter/index.js","../node_modules/socket.io-msgpack-parser/index.js","../build/esm/on.js","../build/esm/socket.js","../build/esm/contrib/backo2.js","../build/esm/manager.js","../build/esm/index.js","../build/esm/url.js"],"sourcesContent":["const PACKET_TYPES = Object.create(null); // no Map = no polyfill\nPACKET_TYPES[\"open\"] = \"0\";\nPACKET_TYPES[\"close\"] = \"1\";\nPACKET_TYPES[\"ping\"] = \"2\";\nPACKET_TYPES[\"pong\"] = \"3\";\nPACKET_TYPES[\"message\"] = \"4\";\nPACKET_TYPES[\"upgrade\"] = \"5\";\nPACKET_TYPES[\"noop\"] = \"6\";\nconst PACKET_TYPES_REVERSE = Object.create(null);\nObject.keys(PACKET_TYPES).forEach(key => {\n PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nconst ERROR_PACKET = { type: \"error\", data: \"parser error\" };\nexport { PACKET_TYPES, PACKET_TYPES_REVERSE, ERROR_PACKET };\n","const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nexport const encode = (arraybuffer) => {\n let bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nexport const decode = (base64) => {\n let bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n const arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n","import { PACKET_TYPES } from \"./commons.js\";\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n// ArrayBuffer.isView method is not defined in IE10\nconst isView = obj => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj && obj.buffer instanceof ArrayBuffer;\n};\nconst encodePacket = ({ type, data }, supportsBinary, callback) => {\n if (withNativeBlob && data instanceof Blob) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(data, callback);\n }\n }\n else if (withNativeArrayBuffer &&\n (data instanceof ArrayBuffer || isView(data))) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(new Blob([data]), callback);\n }\n }\n // plain string\n return callback(PACKET_TYPES[type] + (data || \"\"));\n};\nconst encodeBlobAsBase64 = (data, callback) => {\n const fileReader = new FileReader();\n fileReader.onload = function () {\n const content = fileReader.result.split(\",\")[1];\n callback(\"b\" + content);\n };\n return fileReader.readAsDataURL(data);\n};\nexport default encodePacket;\n","import { ERROR_PACKET, PACKET_TYPES_REVERSE } from \"./commons.js\";\nimport { decode } from \"./contrib/base64-arraybuffer.js\";\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst decodePacket = (encodedPacket, binaryType) => {\n if (typeof encodedPacket !== \"string\") {\n return {\n type: \"message\",\n data: mapBinary(encodedPacket, binaryType)\n };\n }\n const type = encodedPacket.charAt(0);\n if (type === \"b\") {\n return {\n type: \"message\",\n data: decodeBase64Packet(encodedPacket.substring(1), binaryType)\n };\n }\n const packetType = PACKET_TYPES_REVERSE[type];\n if (!packetType) {\n return ERROR_PACKET;\n }\n return encodedPacket.length > 1\n ? {\n type: PACKET_TYPES_REVERSE[type],\n data: encodedPacket.substring(1)\n }\n : {\n type: PACKET_TYPES_REVERSE[type]\n };\n};\nconst decodeBase64Packet = (data, binaryType) => {\n if (withNativeArrayBuffer) {\n const decoded = decode(data);\n return mapBinary(decoded, binaryType);\n }\n else {\n return { base64: true, data }; // fallback for old browsers\n }\n};\nconst mapBinary = (data, binaryType) => {\n switch (binaryType) {\n case \"blob\":\n return data instanceof ArrayBuffer ? new Blob([data]) : data;\n case \"arraybuffer\":\n default:\n return data; // assuming the data is already an ArrayBuffer\n }\n};\nexport default decodePacket;\n","import encodePacket from \"./encodePacket.js\";\nimport decodePacket from \"./decodePacket.js\";\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst encodePayload = (packets, callback) => {\n // some packets may be added to the array while encoding, so the initial length must be saved\n const length = packets.length;\n const encodedPackets = new Array(length);\n let count = 0;\n packets.forEach((packet, i) => {\n // force base64 encoding for binary packets\n encodePacket(packet, false, encodedPacket => {\n encodedPackets[i] = encodedPacket;\n if (++count === length) {\n callback(encodedPackets.join(SEPARATOR));\n }\n });\n });\n};\nconst decodePayload = (encodedPayload, binaryType) => {\n const encodedPackets = encodedPayload.split(SEPARATOR);\n const packets = [];\n for (let i = 0; i < encodedPackets.length; i++) {\n const decodedPacket = decodePacket(encodedPackets[i], binaryType);\n packets.push(decodedPacket);\n if (decodedPacket.type === \"error\") {\n break;\n }\n }\n return packets;\n};\nexport const protocol = 4;\nexport { encodePacket, encodePayload, decodePacket, decodePayload };\n","/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nexport function Emitter(obj) {\n if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n function on() {\n this.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks['$' + event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks['$' + event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n // Remove event specific arrays for event types that no\n // one is subscribed for to avoid memory leak.\n if (callbacks.length === 0) {\n delete this._callbacks['$' + event];\n }\n\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n\n var args = new Array(arguments.length - 1)\n , callbacks = this._callbacks['$' + event];\n\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n// alias used for reserved events (protected method)\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks['$' + event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","export const globalThisShim = (() => {\n if (typeof self !== \"undefined\") {\n return self;\n }\n else if (typeof window !== \"undefined\") {\n return window;\n }\n else {\n return Function(\"return this\")();\n }\n})();\n","import { globalThisShim as globalThis } from \"./globalThis.js\";\nexport function pick(obj, ...attr) {\n return attr.reduce((acc, k) => {\n if (obj.hasOwnProperty(k)) {\n acc[k] = obj[k];\n }\n return acc;\n }, {});\n}\n// Keep a reference to the real timeout functions so they can be used when overridden\nconst NATIVE_SET_TIMEOUT = setTimeout;\nconst NATIVE_CLEAR_TIMEOUT = clearTimeout;\nexport function installTimerFunctions(obj, opts) {\n if (opts.useNativeTimers) {\n obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globalThis);\n obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globalThis);\n }\n else {\n obj.setTimeoutFn = setTimeout.bind(globalThis);\n obj.clearTimeoutFn = clearTimeout.bind(globalThis);\n }\n}\n// base64 encoded buffers are about 33% bigger (https://en.wikipedia.org/wiki/Base64)\nconst BASE64_OVERHEAD = 1.33;\n// we could also have used `new Blob([obj]).size`, but it isn't supported in IE9\nexport function byteLength(obj) {\n if (typeof obj === \"string\") {\n return utf8Length(obj);\n }\n // arraybuffer or blob\n return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD);\n}\nfunction utf8Length(str) {\n let c = 0, length = 0;\n for (let i = 0, l = str.length; i < l; i++) {\n c = str.charCodeAt(i);\n if (c < 0x80) {\n length += 1;\n }\n else if (c < 0x800) {\n length += 2;\n }\n else if (c < 0xd800 || c >= 0xe000) {\n length += 3;\n }\n else {\n i++;\n length += 4;\n }\n }\n return length;\n}\n","// imported from https://github.com/unshiftio/yeast\n'use strict';\nconst alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split(''), length = 64, map = {};\nlet seed = 0, i = 0, prev;\n/**\n * Return a string representing the specified number.\n *\n * @param {Number} num The number to convert.\n * @returns {String} The string representation of the number.\n * @api public\n */\nexport function encode(num) {\n let encoded = '';\n do {\n encoded = alphabet[num % length] + encoded;\n num = Math.floor(num / length);\n } while (num > 0);\n return encoded;\n}\n/**\n * Return the integer value specified by the given string.\n *\n * @param {String} str The string to convert.\n * @returns {Number} The integer value represented by the string.\n * @api public\n */\nexport function decode(str) {\n let decoded = 0;\n for (i = 0; i < str.length; i++) {\n decoded = decoded * length + map[str.charAt(i)];\n }\n return decoded;\n}\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\nexport function yeast() {\n const now = encode(+new Date());\n if (now !== prev)\n return seed = 0, prev = now;\n return now + '.' + encode(seed++);\n}\n//\n// Map each character to its index.\n//\nfor (; i < length; i++)\n map[alphabet[i]] = i;\n","import { decodePacket } from \"engine.io-parser\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions } from \"./util.js\";\nclass TransportError extends Error {\n constructor(reason, description, context) {\n super(reason);\n this.description = description;\n this.context = context;\n this.type = \"TransportError\";\n }\n}\nexport class Transport extends Emitter {\n /**\n * Transport abstract constructor.\n *\n * @param {Object} options.\n * @api private\n */\n constructor(opts) {\n super();\n this.writable = false;\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.query = opts.query;\n this.readyState = \"\";\n this.socket = opts.socket;\n }\n /**\n * Emits an error.\n *\n * @param {String} reason\n * @param description\n * @param context - the error context\n * @return {Transport} for chaining\n * @api protected\n */\n onError(reason, description, context) {\n super.emitReserved(\"error\", new TransportError(reason, description, context));\n return this;\n }\n /**\n * Opens the transport.\n *\n * @api public\n */\n open() {\n if (\"closed\" === this.readyState || \"\" === this.readyState) {\n this.readyState = \"opening\";\n this.doOpen();\n }\n return this;\n }\n /**\n * Closes the transport.\n *\n * @api public\n */\n close() {\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.doClose();\n this.onClose();\n }\n return this;\n }\n /**\n * Sends multiple packets.\n *\n * @param {Array} packets\n * @api public\n */\n send(packets) {\n if (\"open\" === this.readyState) {\n this.write(packets);\n }\n else {\n // this might happen if the transport was silently closed in the beforeunload event handler\n }\n }\n /**\n * Called upon open\n *\n * @api protected\n */\n onOpen() {\n this.readyState = \"open\";\n this.writable = true;\n super.emitReserved(\"open\");\n }\n /**\n * Called with data.\n *\n * @param {String} data\n * @api protected\n */\n onData(data) {\n const packet = decodePacket(data, this.socket.binaryType);\n this.onPacket(packet);\n }\n /**\n * Called with a decoded packet.\n *\n * @api protected\n */\n onPacket(packet) {\n super.emitReserved(\"packet\", packet);\n }\n /**\n * Called upon close.\n *\n * @api protected\n */\n onClose(details) {\n this.readyState = \"closed\";\n super.emitReserved(\"close\", details);\n }\n}\n","// imported from https://github.com/galkn/querystring\n/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */\nexport function encode(obj) {\n let str = '';\n for (let i in obj) {\n if (obj.hasOwnProperty(i)) {\n if (str.length)\n str += '&';\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n }\n }\n return str;\n}\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */\nexport function decode(qs) {\n let qry = {};\n let pairs = qs.split('&');\n for (let i = 0, l = pairs.length; i < l; i++) {\n let pair = pairs[i].split('=');\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n return qry;\n}\n","// imported from https://github.com/component/has-cors\nlet value = false;\ntry {\n value = typeof XMLHttpRequest !== 'undefined' &&\n 'withCredentials' in new XMLHttpRequest();\n}\ncatch (err) {\n // if XMLHttp support is disabled in IE then it will throw\n // when trying to create\n}\nexport const hasCORS = value;\n","// browser shim for xmlhttprequest module\nimport { hasCORS } from \"../contrib/has-cors.js\";\nimport { globalThisShim as globalThis } from \"../globalThis.js\";\nexport function XHR(opts) {\n const xdomain = opts.xdomain;\n // XMLHttpRequest can be disabled on IE\n try {\n if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n }\n catch (e) { }\n if (!xdomain) {\n try {\n return new globalThis[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n }\n catch (e) { }\n }\n}\n","import { Transport } from \"../transport.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { encode } from \"../contrib/parseqs.js\";\nimport { encodePayload, decodePayload } from \"engine.io-parser\";\nimport { XHR as XMLHttpRequest } from \"./xmlhttprequest.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions, pick } from \"../util.js\";\nimport { globalThisShim as globalThis } from \"../globalThis.js\";\nfunction empty() { }\nconst hasXHR2 = (function () {\n const xhr = new XMLHttpRequest({\n xdomain: false\n });\n return null != xhr.responseType;\n})();\nexport class Polling extends Transport {\n /**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @api public\n */\n constructor(opts) {\n super(opts);\n this.polling = false;\n if (typeof location !== \"undefined\") {\n const isSSL = \"https:\" === location.protocol;\n let port = location.port;\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? \"443\" : \"80\";\n }\n this.xd =\n (typeof location !== \"undefined\" &&\n opts.hostname !== location.hostname) ||\n port !== opts.port;\n this.xs = opts.secure !== isSSL;\n }\n /**\n * XHR supports binary\n */\n const forceBase64 = opts && opts.forceBase64;\n this.supportsBinary = hasXHR2 && !forceBase64;\n }\n /**\n * Transport name.\n */\n get name() {\n return \"polling\";\n }\n /**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @api private\n */\n doOpen() {\n this.poll();\n }\n /**\n * Pauses polling.\n *\n * @param {Function} callback upon buffers are flushed and transport is paused\n * @api private\n */\n pause(onPause) {\n this.readyState = \"pausing\";\n const pause = () => {\n this.readyState = \"paused\";\n onPause();\n };\n if (this.polling || !this.writable) {\n let total = 0;\n if (this.polling) {\n total++;\n this.once(\"pollComplete\", function () {\n --total || pause();\n });\n }\n if (!this.writable) {\n total++;\n this.once(\"drain\", function () {\n --total || pause();\n });\n }\n }\n else {\n pause();\n }\n }\n /**\n * Starts polling cycle.\n *\n * @api public\n */\n poll() {\n this.polling = true;\n this.doPoll();\n this.emitReserved(\"poll\");\n }\n /**\n * Overloads onData to detect payloads.\n *\n * @api private\n */\n onData(data) {\n const callback = packet => {\n // if its the first message we consider the transport open\n if (\"opening\" === this.readyState && packet.type === \"open\") {\n this.onOpen();\n }\n // if its a close packet, we close the ongoing requests\n if (\"close\" === packet.type) {\n this.onClose({ description: \"transport closed by the server\" });\n return false;\n }\n // otherwise bypass onData and handle the message\n this.onPacket(packet);\n };\n // decode payload\n decodePayload(data, this.socket.binaryType).forEach(callback);\n // if an event did not trigger closing\n if (\"closed\" !== this.readyState) {\n // if we got data we're not polling\n this.polling = false;\n this.emitReserved(\"pollComplete\");\n if (\"open\" === this.readyState) {\n this.poll();\n }\n else {\n }\n }\n }\n /**\n * For polling, send a close packet.\n *\n * @api private\n */\n doClose() {\n const close = () => {\n this.write([{ type: \"close\" }]);\n };\n if (\"open\" === this.readyState) {\n close();\n }\n else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n this.once(\"open\", close);\n }\n }\n /**\n * Writes a packets payload.\n *\n * @param {Array} data packets\n * @param {Function} drain callback\n * @api private\n */\n write(packets) {\n this.writable = false;\n encodePayload(packets, data => {\n this.doWrite(data, () => {\n this.writable = true;\n this.emitReserved(\"drain\");\n });\n });\n }\n /**\n * Generates uri for connection.\n *\n * @api private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"https\" : \"http\";\n let port = \"\";\n // cache busting is forced\n if (false !== this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"https\" === schema && Number(this.opts.port) !== 443) ||\n (\"http\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n const encodedQuery = encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n /**\n * Creates a request.\n *\n * @param {String} method\n * @api private\n */\n request(opts = {}) {\n Object.assign(opts, { xd: this.xd, xs: this.xs }, this.opts);\n return new Request(this.uri(), opts);\n }\n /**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @api private\n */\n doWrite(data, fn) {\n const req = this.request({\n method: \"POST\",\n data: data\n });\n req.on(\"success\", fn);\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr post error\", xhrStatus, context);\n });\n }\n /**\n * Starts a poll cycle.\n *\n * @api private\n */\n doPoll() {\n const req = this.request();\n req.on(\"data\", this.onData.bind(this));\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr poll error\", xhrStatus, context);\n });\n this.pollXhr = req;\n }\n}\nexport class Request extends Emitter {\n /**\n * Request constructor\n *\n * @param {Object} options\n * @api public\n */\n constructor(uri, opts) {\n super();\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.method = opts.method || \"GET\";\n this.uri = uri;\n this.async = false !== opts.async;\n this.data = undefined !== opts.data ? opts.data : null;\n this.create();\n }\n /**\n * Creates the XHR object and sends the request.\n *\n * @api private\n */\n create() {\n const opts = pick(this.opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n opts.xdomain = !!this.opts.xd;\n opts.xscheme = !!this.opts.xs;\n const xhr = (this.xhr = new XMLHttpRequest(opts));\n try {\n xhr.open(this.method, this.uri, this.async);\n try {\n if (this.opts.extraHeaders) {\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (let i in this.opts.extraHeaders) {\n if (this.opts.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this.opts.extraHeaders[i]);\n }\n }\n }\n }\n catch (e) { }\n if (\"POST\" === this.method) {\n try {\n xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n }\n catch (e) { }\n }\n try {\n xhr.setRequestHeader(\"Accept\", \"*/*\");\n }\n catch (e) { }\n // ie6 check\n if (\"withCredentials\" in xhr) {\n xhr.withCredentials = this.opts.withCredentials;\n }\n if (this.opts.requestTimeout) {\n xhr.timeout = this.opts.requestTimeout;\n }\n xhr.onreadystatechange = () => {\n if (4 !== xhr.readyState)\n return;\n if (200 === xhr.status || 1223 === xhr.status) {\n this.onLoad();\n }\n else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n this.setTimeoutFn(() => {\n this.onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n }, 0);\n }\n };\n xhr.send(this.data);\n }\n catch (e) {\n // Need to defer since .create() is called directly from the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n this.setTimeoutFn(() => {\n this.onError(e);\n }, 0);\n return;\n }\n if (typeof document !== \"undefined\") {\n this.index = Request.requestsCount++;\n Request.requests[this.index] = this;\n }\n }\n /**\n * Called upon error.\n *\n * @api private\n */\n onError(err) {\n this.emitReserved(\"error\", err, this.xhr);\n this.cleanup(true);\n }\n /**\n * Cleans up house.\n *\n * @api private\n */\n cleanup(fromError) {\n if (\"undefined\" === typeof this.xhr || null === this.xhr) {\n return;\n }\n this.xhr.onreadystatechange = empty;\n if (fromError) {\n try {\n this.xhr.abort();\n }\n catch (e) { }\n }\n if (typeof document !== \"undefined\") {\n delete Request.requests[this.index];\n }\n this.xhr = null;\n }\n /**\n * Called upon load.\n *\n * @api private\n */\n onLoad() {\n const data = this.xhr.responseText;\n if (data !== null) {\n this.emitReserved(\"data\", data);\n this.emitReserved(\"success\");\n this.cleanup();\n }\n }\n /**\n * Aborts the request.\n *\n * @api public\n */\n abort() {\n this.cleanup();\n }\n}\nRequest.requestsCount = 0;\nRequest.requests = {};\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\nif (typeof document !== \"undefined\") {\n // @ts-ignore\n if (typeof attachEvent === \"function\") {\n // @ts-ignore\n attachEvent(\"onunload\", unloadHandler);\n }\n else if (typeof addEventListener === \"function\") {\n const terminationEvent = \"onpagehide\" in globalThis ? \"pagehide\" : \"unload\";\n addEventListener(terminationEvent, unloadHandler, false);\n }\n}\nfunction unloadHandler() {\n for (let i in Request.requests) {\n if (Request.requests.hasOwnProperty(i)) {\n Request.requests[i].abort();\n }\n }\n}\n","import { globalThisShim as globalThis } from \"../globalThis.js\";\nexport const nextTick = (() => {\n const isPromiseAvailable = typeof Promise === \"function\" && typeof Promise.resolve === \"function\";\n if (isPromiseAvailable) {\n return cb => Promise.resolve().then(cb);\n }\n else {\n return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);\n }\n})();\nexport const WebSocket = globalThis.WebSocket || globalThis.MozWebSocket;\nexport const usingBrowserWebSocket = true;\nexport const defaultBinaryType = \"arraybuffer\";\n","import { Transport } from \"../transport.js\";\nimport { encode } from \"../contrib/parseqs.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { pick } from \"../util.js\";\nimport { defaultBinaryType, nextTick, usingBrowserWebSocket, WebSocket } from \"./websocket-constructor.js\";\nimport { encodePacket } from \"engine.io-parser\";\n// detect ReactNative environment\nconst isReactNative = typeof navigator !== \"undefined\" &&\n typeof navigator.product === \"string\" &&\n navigator.product.toLowerCase() === \"reactnative\";\nexport class WS extends Transport {\n /**\n * WebSocket transport constructor.\n *\n * @api {Object} connection options\n * @api public\n */\n constructor(opts) {\n super(opts);\n this.supportsBinary = !opts.forceBase64;\n }\n /**\n * Transport name.\n *\n * @api public\n */\n get name() {\n return \"websocket\";\n }\n /**\n * Opens socket.\n *\n * @api private\n */\n doOpen() {\n if (!this.check()) {\n // let probe timeout\n return;\n }\n const uri = this.uri();\n const protocols = this.opts.protocols;\n // React Native only supports the 'headers' option, and will print a warning if anything else is passed\n const opts = isReactNative\n ? {}\n : pick(this.opts, \"agent\", \"perMessageDeflate\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"localAddress\", \"protocolVersion\", \"origin\", \"maxPayload\", \"family\", \"checkServerIdentity\");\n if (this.opts.extraHeaders) {\n opts.headers = this.opts.extraHeaders;\n }\n try {\n this.ws =\n usingBrowserWebSocket && !isReactNative\n ? protocols\n ? new WebSocket(uri, protocols)\n : new WebSocket(uri)\n : new WebSocket(uri, protocols, opts);\n }\n catch (err) {\n return this.emitReserved(\"error\", err);\n }\n this.ws.binaryType = this.socket.binaryType || defaultBinaryType;\n this.addEventListeners();\n }\n /**\n * Adds event listeners to the socket\n *\n * @api private\n */\n addEventListeners() {\n this.ws.onopen = () => {\n if (this.opts.autoUnref) {\n this.ws._socket.unref();\n }\n this.onOpen();\n };\n this.ws.onclose = closeEvent => this.onClose({\n description: \"websocket connection closed\",\n context: closeEvent\n });\n this.ws.onmessage = ev => this.onData(ev.data);\n this.ws.onerror = e => this.onError(\"websocket error\", e);\n }\n /**\n * Writes data to socket.\n *\n * @param {Array} array of packets.\n * @api private\n */\n write(packets) {\n this.writable = false;\n // encodePacket efficient as it uses WS framing\n // no need for encodePayload\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n encodePacket(packet, this.supportsBinary, data => {\n // always create a new object (GH-437)\n const opts = {};\n if (!usingBrowserWebSocket) {\n if (packet.options) {\n opts.compress = packet.options.compress;\n }\n if (this.opts.perMessageDeflate) {\n const len = \n // @ts-ignore\n \"string\" === typeof data ? Buffer.byteLength(data) : data.length;\n if (len < this.opts.perMessageDeflate.threshold) {\n opts.compress = false;\n }\n }\n }\n // Sometimes the websocket has already been closed but the browser didn't\n // have a chance of informing us about it yet, in that case send will\n // throw an error\n try {\n if (usingBrowserWebSocket) {\n // TypeError is thrown when passing the second argument on Safari\n this.ws.send(data);\n }\n else {\n this.ws.send(data, opts);\n }\n }\n catch (e) {\n }\n if (lastPacket) {\n // fake drain\n // defer to next tick to allow Socket to clear writeBuffer\n nextTick(() => {\n this.writable = true;\n this.emitReserved(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n /**\n * Closes socket.\n *\n * @api private\n */\n doClose() {\n if (typeof this.ws !== \"undefined\") {\n this.ws.close();\n this.ws = null;\n }\n }\n /**\n * Generates uri for connection.\n *\n * @api private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"wss\" : \"ws\";\n let port = \"\";\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"wss\" === schema && Number(this.opts.port) !== 443) ||\n (\"ws\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n // append timestamp to URI\n if (this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n const encodedQuery = encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n /**\n * Feature detection for WebSocket.\n *\n * @return {Boolean} whether this transport is available.\n * @api public\n */\n check() {\n return !!WebSocket;\n }\n}\n","import { Polling } from \"./polling.js\";\nimport { WS } from \"./websocket.js\";\nexport const transports = {\n websocket: WS,\n polling: Polling\n};\n","// imported from https://github.com/galkn/parseuri\n/**\n * Parses an URI\n *\n * @author Steven Levithan (MIT license)\n * @api private\n */\nconst re = /^(?:(?![^:@]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\nconst parts = [\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\n];\nexport function parse(str) {\n const src = str, b = str.indexOf('['), e = str.indexOf(']');\n if (b != -1 && e != -1) {\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\n }\n let m = re.exec(str || ''), uri = {}, i = 14;\n while (i--) {\n uri[parts[i]] = m[i] || '';\n }\n if (b != -1 && e != -1) {\n uri.source = src;\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\n uri.ipv6uri = true;\n }\n uri.pathNames = pathNames(uri, uri['path']);\n uri.queryKey = queryKey(uri, uri['query']);\n return uri;\n}\nfunction pathNames(obj, path) {\n const regx = /\\/{2,9}/g, names = path.replace(regx, \"/\").split(\"/\");\n if (path.slice(0, 1) == '/' || path.length === 0) {\n names.splice(0, 1);\n }\n if (path.slice(-1) == '/') {\n names.splice(names.length - 1, 1);\n }\n return names;\n}\nfunction queryKey(uri, query) {\n const data = {};\n query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {\n if ($1) {\n data[$1] = $2;\n }\n });\n return data;\n}\n","import { transports } from \"./transports/index.js\";\nimport { installTimerFunctions, byteLength } from \"./util.js\";\nimport { decode } from \"./contrib/parseqs.js\";\nimport { parse } from \"./contrib/parseuri.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { protocol } from \"engine.io-parser\";\nexport class Socket extends Emitter {\n /**\n * Socket constructor.\n *\n * @param {String|Object} uri or options\n * @param {Object} opts - options\n * @api public\n */\n constructor(uri, opts = {}) {\n super();\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = null;\n }\n if (uri) {\n uri = parse(uri);\n opts.hostname = uri.host;\n opts.secure = uri.protocol === \"https\" || uri.protocol === \"wss\";\n opts.port = uri.port;\n if (uri.query)\n opts.query = uri.query;\n }\n else if (opts.host) {\n opts.hostname = parse(opts.host).host;\n }\n installTimerFunctions(this, opts);\n this.secure =\n null != opts.secure\n ? opts.secure\n : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? \"443\" : \"80\";\n }\n this.hostname =\n opts.hostname ||\n (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n this.port =\n opts.port ||\n (typeof location !== \"undefined\" && location.port\n ? location.port\n : this.secure\n ? \"443\"\n : \"80\");\n this.transports = opts.transports || [\"polling\", \"websocket\"];\n this.readyState = \"\";\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n this.opts = Object.assign({\n path: \"/engine.io\",\n agent: false,\n withCredentials: false,\n upgrade: true,\n timestampParam: \"t\",\n rememberUpgrade: false,\n rejectUnauthorized: true,\n perMessageDeflate: {\n threshold: 1024\n },\n transportOptions: {},\n closeOnBeforeunload: true\n }, opts);\n this.opts.path = this.opts.path.replace(/\\/$/, \"\") + \"/\";\n if (typeof this.opts.query === \"string\") {\n this.opts.query = decode(this.opts.query);\n }\n // set on handshake\n this.id = null;\n this.upgrades = null;\n this.pingInterval = null;\n this.pingTimeout = null;\n // set on heartbeat\n this.pingTimeoutTimer = null;\n if (typeof addEventListener === \"function\") {\n if (this.opts.closeOnBeforeunload) {\n // Firefox closes the connection when the \"beforeunload\" event is emitted but not Chrome. This event listener\n // ensures every browser behaves the same (no \"disconnect\" event at the Socket.IO level when the page is\n // closed/reloaded)\n this.beforeunloadEventListener = () => {\n if (this.transport) {\n // silently close the transport\n this.transport.removeAllListeners();\n this.transport.close();\n }\n };\n addEventListener(\"beforeunload\", this.beforeunloadEventListener, false);\n }\n if (this.hostname !== \"localhost\") {\n this.offlineEventListener = () => {\n this.onClose(\"transport close\", {\n description: \"network connection lost\"\n });\n };\n addEventListener(\"offline\", this.offlineEventListener, false);\n }\n }\n this.open();\n }\n /**\n * Creates transport of the given type.\n *\n * @param {String} transport name\n * @return {Transport}\n * @api private\n */\n createTransport(name) {\n const query = Object.assign({}, this.opts.query);\n // append engine.io protocol identifier\n query.EIO = protocol;\n // transport name\n query.transport = name;\n // session id if we already have one\n if (this.id)\n query.sid = this.id;\n const opts = Object.assign({}, this.opts.transportOptions[name], this.opts, {\n query,\n socket: this,\n hostname: this.hostname,\n secure: this.secure,\n port: this.port\n });\n return new transports[name](opts);\n }\n /**\n * Initializes transport to use and starts probe.\n *\n * @api private\n */\n open() {\n let transport;\n if (this.opts.rememberUpgrade &&\n Socket.priorWebsocketSuccess &&\n this.transports.indexOf(\"websocket\") !== -1) {\n transport = \"websocket\";\n }\n else if (0 === this.transports.length) {\n // Emit error on next tick so it can be listened to\n this.setTimeoutFn(() => {\n this.emitReserved(\"error\", \"No transports available\");\n }, 0);\n return;\n }\n else {\n transport = this.transports[0];\n }\n this.readyState = \"opening\";\n // Retry with the next transport if the transport is disabled (jsonp: false)\n try {\n transport = this.createTransport(transport);\n }\n catch (e) {\n this.transports.shift();\n this.open();\n return;\n }\n transport.open();\n this.setTransport(transport);\n }\n /**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @api private\n */\n setTransport(transport) {\n if (this.transport) {\n this.transport.removeAllListeners();\n }\n // set up transport\n this.transport = transport;\n // set up transport listeners\n transport\n .on(\"drain\", this.onDrain.bind(this))\n .on(\"packet\", this.onPacket.bind(this))\n .on(\"error\", this.onError.bind(this))\n .on(\"close\", reason => this.onClose(\"transport close\", reason));\n }\n /**\n * Probes a transport.\n *\n * @param {String} transport name\n * @api private\n */\n probe(name) {\n let transport = this.createTransport(name);\n let failed = false;\n Socket.priorWebsocketSuccess = false;\n const onTransportOpen = () => {\n if (failed)\n return;\n transport.send([{ type: \"ping\", data: \"probe\" }]);\n transport.once(\"packet\", msg => {\n if (failed)\n return;\n if (\"pong\" === msg.type && \"probe\" === msg.data) {\n this.upgrading = true;\n this.emitReserved(\"upgrading\", transport);\n if (!transport)\n return;\n Socket.priorWebsocketSuccess = \"websocket\" === transport.name;\n this.transport.pause(() => {\n if (failed)\n return;\n if (\"closed\" === this.readyState)\n return;\n cleanup();\n this.setTransport(transport);\n transport.send([{ type: \"upgrade\" }]);\n this.emitReserved(\"upgrade\", transport);\n transport = null;\n this.upgrading = false;\n this.flush();\n });\n }\n else {\n const err = new Error(\"probe error\");\n // @ts-ignore\n err.transport = transport.name;\n this.emitReserved(\"upgradeError\", err);\n }\n });\n };\n function freezeTransport() {\n if (failed)\n return;\n // Any callback called by transport should be ignored since now\n failed = true;\n cleanup();\n transport.close();\n transport = null;\n }\n // Handle any error that happens while probing\n const onerror = err => {\n const error = new Error(\"probe error: \" + err);\n // @ts-ignore\n error.transport = transport.name;\n freezeTransport();\n this.emitReserved(\"upgradeError\", error);\n };\n function onTransportClose() {\n onerror(\"transport closed\");\n }\n // When the socket is closed while we're probing\n function onclose() {\n onerror(\"socket closed\");\n }\n // When the socket is upgraded while we're probing\n function onupgrade(to) {\n if (transport && to.name !== transport.name) {\n freezeTransport();\n }\n }\n // Remove all listeners on the transport and on self\n const cleanup = () => {\n transport.removeListener(\"open\", onTransportOpen);\n transport.removeListener(\"error\", onerror);\n transport.removeListener(\"close\", onTransportClose);\n this.off(\"close\", onclose);\n this.off(\"upgrading\", onupgrade);\n };\n transport.once(\"open\", onTransportOpen);\n transport.once(\"error\", onerror);\n transport.once(\"close\", onTransportClose);\n this.once(\"close\", onclose);\n this.once(\"upgrading\", onupgrade);\n transport.open();\n }\n /**\n * Called when connection is deemed open.\n *\n * @api private\n */\n onOpen() {\n this.readyState = \"open\";\n Socket.priorWebsocketSuccess = \"websocket\" === this.transport.name;\n this.emitReserved(\"open\");\n this.flush();\n // we check for `readyState` in case an `open`\n // listener already closed the socket\n if (\"open\" === this.readyState &&\n this.opts.upgrade &&\n this.transport.pause) {\n let i = 0;\n const l = this.upgrades.length;\n for (; i < l; i++) {\n this.probe(this.upgrades[i]);\n }\n }\n }\n /**\n * Handles a packet.\n *\n * @api private\n */\n onPacket(packet) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n this.emitReserved(\"packet\", packet);\n // Socket is live - any packet counts\n this.emitReserved(\"heartbeat\");\n switch (packet.type) {\n case \"open\":\n this.onHandshake(JSON.parse(packet.data));\n break;\n case \"ping\":\n this.resetPingTimeout();\n this.sendPacket(\"pong\");\n this.emitReserved(\"ping\");\n this.emitReserved(\"pong\");\n break;\n case \"error\":\n const err = new Error(\"server error\");\n // @ts-ignore\n err.code = packet.data;\n this.onError(err);\n break;\n case \"message\":\n this.emitReserved(\"data\", packet.data);\n this.emitReserved(\"message\", packet.data);\n break;\n }\n }\n else {\n }\n }\n /**\n * Called upon handshake completion.\n *\n * @param {Object} data - handshake obj\n * @api private\n */\n onHandshake(data) {\n this.emitReserved(\"handshake\", data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this.upgrades = this.filterUpgrades(data.upgrades);\n this.pingInterval = data.pingInterval;\n this.pingTimeout = data.pingTimeout;\n this.maxPayload = data.maxPayload;\n this.onOpen();\n // In case open handler closes socket\n if (\"closed\" === this.readyState)\n return;\n this.resetPingTimeout();\n }\n /**\n * Sets and resets ping timeout timer based on server pings.\n *\n * @api private\n */\n resetPingTimeout() {\n this.clearTimeoutFn(this.pingTimeoutTimer);\n this.pingTimeoutTimer = this.setTimeoutFn(() => {\n this.onClose(\"ping timeout\");\n }, this.pingInterval + this.pingTimeout);\n if (this.opts.autoUnref) {\n this.pingTimeoutTimer.unref();\n }\n }\n /**\n * Called on `drain` event\n *\n * @api private\n */\n onDrain() {\n this.writeBuffer.splice(0, this.prevBufferLen);\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this.prevBufferLen = 0;\n if (0 === this.writeBuffer.length) {\n this.emitReserved(\"drain\");\n }\n else {\n this.flush();\n }\n }\n /**\n * Flush write buffers.\n *\n * @api private\n */\n flush() {\n if (\"closed\" !== this.readyState &&\n this.transport.writable &&\n !this.upgrading &&\n this.writeBuffer.length) {\n const packets = this.getWritablePackets();\n this.transport.send(packets);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this.prevBufferLen = packets.length;\n this.emitReserved(\"flush\");\n }\n }\n /**\n * Ensure the encoded size of the writeBuffer is below the maxPayload value sent by the server (only for HTTP\n * long-polling)\n *\n * @private\n */\n getWritablePackets() {\n const shouldCheckPayloadSize = this.maxPayload &&\n this.transport.name === \"polling\" &&\n this.writeBuffer.length > 1;\n if (!shouldCheckPayloadSize) {\n return this.writeBuffer;\n }\n let payloadSize = 1; // first packet type\n for (let i = 0; i < this.writeBuffer.length; i++) {\n const data = this.writeBuffer[i].data;\n if (data) {\n payloadSize += byteLength(data);\n }\n if (i > 0 && payloadSize > this.maxPayload) {\n return this.writeBuffer.slice(0, i);\n }\n payloadSize += 2; // separator + packet type\n }\n return this.writeBuffer;\n }\n /**\n * Sends a message.\n *\n * @param {String} message.\n * @param {Function} callback function.\n * @param {Object} options.\n * @return {Socket} for chaining.\n * @api public\n */\n write(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n send(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n /**\n * Sends a packet.\n *\n * @param {String} packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} callback function.\n * @api private\n */\n sendPacket(type, data, options, fn) {\n if (\"function\" === typeof data) {\n fn = data;\n data = undefined;\n }\n if (\"function\" === typeof options) {\n fn = options;\n options = null;\n }\n if (\"closing\" === this.readyState || \"closed\" === this.readyState) {\n return;\n }\n options = options || {};\n options.compress = false !== options.compress;\n const packet = {\n type: type,\n data: data,\n options: options\n };\n this.emitReserved(\"packetCreate\", packet);\n this.writeBuffer.push(packet);\n if (fn)\n this.once(\"flush\", fn);\n this.flush();\n }\n /**\n * Closes the connection.\n *\n * @api public\n */\n close() {\n const close = () => {\n this.onClose(\"forced close\");\n this.transport.close();\n };\n const cleanupAndClose = () => {\n this.off(\"upgrade\", cleanupAndClose);\n this.off(\"upgradeError\", cleanupAndClose);\n close();\n };\n const waitForUpgrade = () => {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n this.once(\"upgrade\", cleanupAndClose);\n this.once(\"upgradeError\", cleanupAndClose);\n };\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.readyState = \"closing\";\n if (this.writeBuffer.length) {\n this.once(\"drain\", () => {\n if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n });\n }\n else if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n }\n return this;\n }\n /**\n * Called upon transport error\n *\n * @api private\n */\n onError(err) {\n Socket.priorWebsocketSuccess = false;\n this.emitReserved(\"error\", err);\n this.onClose(\"transport error\", err);\n }\n /**\n * Called upon transport close.\n *\n * @api private\n */\n onClose(reason, description) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n // clear timers\n this.clearTimeoutFn(this.pingTimeoutTimer);\n // stop event from firing again for transport\n this.transport.removeAllListeners(\"close\");\n // ensure transport won't stay open\n this.transport.close();\n // ignore further transport communication\n this.transport.removeAllListeners();\n if (typeof removeEventListener === \"function\") {\n removeEventListener(\"beforeunload\", this.beforeunloadEventListener, false);\n removeEventListener(\"offline\", this.offlineEventListener, false);\n }\n // set ready state\n this.readyState = \"closed\";\n // clear session id\n this.id = null;\n // emit close event\n this.emitReserved(\"close\", reason, description);\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n }\n }\n /**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} server upgrades\n * @api private\n *\n */\n filterUpgrades(upgrades) {\n const filteredUpgrades = [];\n let i = 0;\n const j = upgrades.length;\n for (; i < j; i++) {\n if (~this.transports.indexOf(upgrades[i]))\n filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n }\n}\nSocket.protocol = protocol;\n","import { Socket } from \"./socket.js\";\nexport { Socket };\nexport const protocol = Socket.protocol;\nexport { Transport } from \"./transport.js\";\nexport { transports } from \"./transports/index.js\";\nexport { installTimerFunctions } from \"./util.js\";\nexport { parse } from \"./contrib/parseuri.js\";\nexport { nextTick } from \"./transports/websocket-constructor.js\";\n","'use strict';\n\nfunction utf8Write(view, offset, str) {\n var c = 0;\n for (var i = 0, l = str.length; i < l; i++) {\n c = str.charCodeAt(i);\n if (c < 0x80) {\n view.setUint8(offset++, c);\n }\n else if (c < 0x800) {\n view.setUint8(offset++, 0xc0 | (c >> 6));\n view.setUint8(offset++, 0x80 | (c & 0x3f));\n }\n else if (c < 0xd800 || c >= 0xe000) {\n view.setUint8(offset++, 0xe0 | (c >> 12));\n view.setUint8(offset++, 0x80 | (c >> 6) & 0x3f);\n view.setUint8(offset++, 0x80 | (c & 0x3f));\n }\n else {\n i++;\n c = 0x10000 + (((c & 0x3ff) << 10) | (str.charCodeAt(i) & 0x3ff));\n view.setUint8(offset++, 0xf0 | (c >> 18));\n view.setUint8(offset++, 0x80 | (c >> 12) & 0x3f);\n view.setUint8(offset++, 0x80 | (c >> 6) & 0x3f);\n view.setUint8(offset++, 0x80 | (c & 0x3f));\n }\n }\n}\n\nfunction utf8Length(str) {\n var c = 0, length = 0;\n for (var i = 0, l = str.length; i < l; i++) {\n c = str.charCodeAt(i);\n if (c < 0x80) {\n length += 1;\n }\n else if (c < 0x800) {\n length += 2;\n }\n else if (c < 0xd800 || c >= 0xe000) {\n length += 3;\n }\n else {\n i++;\n length += 4;\n }\n }\n return length;\n}\n\nfunction _encode(bytes, defers, value) {\n var type = typeof value, i = 0, l = 0, hi = 0, lo = 0, length = 0, size = 0;\n\n if (type === 'string') {\n length = utf8Length(value);\n\n // fixstr\n if (length < 0x20) {\n bytes.push(length | 0xa0);\n size = 1;\n }\n // str 8\n else if (length < 0x100) {\n bytes.push(0xd9, length);\n size = 2;\n }\n // str 16\n else if (length < 0x10000) {\n bytes.push(0xda, length >> 8, length);\n size = 3;\n }\n // str 32\n else if (length < 0x100000000) {\n bytes.push(0xdb, length >> 24, length >> 16, length >> 8, length);\n size = 5;\n } else {\n throw new Error('String too long');\n }\n defers.push({ _str: value, _length: length, _offset: bytes.length });\n return size + length;\n }\n if (type === 'number') {\n // TODO: encode to float 32?\n\n // float 64\n if (Math.floor(value) !== value || !isFinite(value)) {\n bytes.push(0xcb);\n defers.push({ _float: value, _length: 8, _offset: bytes.length });\n return 9;\n }\n\n if (value >= 0) {\n // positive fixnum\n if (value < 0x80) {\n bytes.push(value);\n return 1;\n }\n // uint 8\n if (value < 0x100) {\n bytes.push(0xcc, value);\n return 2;\n }\n // uint 16\n if (value < 0x10000) {\n bytes.push(0xcd, value >> 8, value);\n return 3;\n }\n // uint 32\n if (value < 0x100000000) {\n bytes.push(0xce, value >> 24, value >> 16, value >> 8, value);\n return 5;\n }\n // uint 64\n hi = (value / Math.pow(2, 32)) >> 0;\n lo = value >>> 0;\n bytes.push(0xcf, hi >> 24, hi >> 16, hi >> 8, hi, lo >> 24, lo >> 16, lo >> 8, lo);\n return 9;\n } else {\n // negative fixnum\n if (value >= -0x20) {\n bytes.push(value);\n return 1;\n }\n // int 8\n if (value >= -0x80) {\n bytes.push(0xd0, value);\n return 2;\n }\n // int 16\n if (value >= -0x8000) {\n bytes.push(0xd1, value >> 8, value);\n return 3;\n }\n // int 32\n if (value >= -0x80000000) {\n bytes.push(0xd2, value >> 24, value >> 16, value >> 8, value);\n return 5;\n }\n // int 64\n hi = Math.floor(value / Math.pow(2, 32));\n lo = value >>> 0;\n bytes.push(0xd3, hi >> 24, hi >> 16, hi >> 8, hi, lo >> 24, lo >> 16, lo >> 8, lo);\n return 9;\n }\n }\n if (type === 'object') {\n // nil\n if (value === null) {\n bytes.push(0xc0);\n return 1;\n }\n\n if (Array.isArray(value)) {\n length = value.length;\n\n // fixarray\n if (length < 0x10) {\n bytes.push(length | 0x90);\n size = 1;\n }\n // array 16\n else if (length < 0x10000) {\n bytes.push(0xdc, length >> 8, length);\n size = 3;\n }\n // array 32\n else if (length < 0x100000000) {\n bytes.push(0xdd, length >> 24, length >> 16, length >> 8, length);\n size = 5;\n } else {\n throw new Error('Array too large');\n }\n for (i = 0; i < length; i++) {\n size += _encode(bytes, defers, value[i]);\n }\n return size;\n }\n\n // fixext 8 / Date\n if (value instanceof Date) {\n var time = value.getTime();\n hi = Math.floor(time / Math.pow(2, 32));\n lo = time >>> 0;\n bytes.push(0xd7, 0, hi >> 24, hi >> 16, hi >> 8, hi, lo >> 24, lo >> 16, lo >> 8, lo);\n return 10;\n }\n\n if (value instanceof ArrayBuffer) {\n length = value.byteLength;\n\n // bin 8\n if (length < 0x100) {\n bytes.push(0xc4, length);\n size = 2;\n } else\n // bin 16\n if (length < 0x10000) {\n bytes.push(0xc5, length >> 8, length);\n size = 3;\n } else\n // bin 32\n if (length < 0x100000000) {\n bytes.push(0xc6, length >> 24, length >> 16, length >> 8, length);\n size = 5;\n } else {\n throw new Error('Buffer too large');\n }\n defers.push({ _bin: value, _length: length, _offset: bytes.length });\n return size + length;\n }\n\n if (typeof value.toJSON === 'function') {\n return _encode(bytes, defers, value.toJSON());\n }\n\n var keys = [], key = '';\n\n var allKeys = Object.keys(value);\n for (i = 0, l = allKeys.length; i < l; i++) {\n key = allKeys[i];\n if (typeof value[key] !== 'function') {\n keys.push(key);\n }\n }\n length = keys.length;\n\n // fixmap\n if (length < 0x10) {\n bytes.push(length | 0x80);\n size = 1;\n }\n // map 16\n else if (length < 0x10000) {\n bytes.push(0xde, length >> 8, length);\n size = 3;\n }\n // map 32\n else if (length < 0x100000000) {\n bytes.push(0xdf, length >> 24, length >> 16, length >> 8, length);\n size = 5;\n } else {\n throw new Error('Object too large');\n }\n\n for (i = 0; i < length; i++) {\n key = keys[i];\n size += _encode(bytes, defers, key);\n size += _encode(bytes, defers, value[key]);\n }\n return size;\n }\n // false/true\n if (type === 'boolean') {\n bytes.push(value ? 0xc3 : 0xc2);\n return 1;\n }\n // fixext 1 / undefined\n if (type === 'undefined') {\n bytes.push(0xd4, 0, 0);\n return 3;\n }\n throw new Error('Could not encode');\n}\n\nfunction encode(value) {\n var bytes = [];\n var defers = [];\n var size = _encode(bytes, defers, value);\n var buf = new ArrayBuffer(size);\n var view = new DataView(buf);\n\n var deferIndex = 0;\n var deferWritten = 0;\n var nextOffset = -1;\n if (defers.length > 0) {\n nextOffset = defers[0]._offset;\n }\n\n var defer, deferLength = 0, offset = 0;\n for (var i = 0, l = bytes.length; i < l; i++) {\n view.setUint8(deferWritten + i, bytes[i]);\n if (i + 1 !== nextOffset) { continue; }\n defer = defers[deferIndex];\n deferLength = defer._length;\n offset = deferWritten + nextOffset;\n if (defer._bin) {\n var bin = new Uint8Array(defer._bin);\n for (var j = 0; j < deferLength; j++) {\n view.setUint8(offset + j, bin[j]);\n }\n } else if (defer._str) {\n utf8Write(view, offset, defer._str);\n } else if (defer._float !== undefined) {\n view.setFloat64(offset, defer._float);\n }\n deferIndex++;\n deferWritten += deferLength;\n if (defers[deferIndex]) {\n nextOffset = defers[deferIndex]._offset;\n }\n }\n return buf;\n}\n\nmodule.exports = encode;\n","'use strict';\n\nfunction Decoder(buffer) {\n this._offset = 0;\n if (buffer instanceof ArrayBuffer) {\n this._buffer = buffer;\n this._view = new DataView(this._buffer);\n } else if (ArrayBuffer.isView(buffer)) {\n this._buffer = buffer.buffer;\n this._view = new DataView(this._buffer, buffer.byteOffset, buffer.byteLength);\n } else {\n throw new Error('Invalid argument');\n }\n}\n\nfunction utf8Read(view, offset, length) {\n var string = '', chr = 0;\n for (var i = offset, end = offset + length; i < end; i++) {\n var byte = view.getUint8(i);\n if ((byte & 0x80) === 0x00) {\n string += String.fromCharCode(byte);\n continue;\n }\n if ((byte & 0xe0) === 0xc0) {\n string += String.fromCharCode(\n ((byte & 0x1f) << 6) |\n (view.getUint8(++i) & 0x3f)\n );\n continue;\n }\n if ((byte & 0xf0) === 0xe0) {\n string += String.fromCharCode(\n ((byte & 0x0f) << 12) |\n ((view.getUint8(++i) & 0x3f) << 6) |\n ((view.getUint8(++i) & 0x3f) << 0)\n );\n continue;\n }\n if ((byte & 0xf8) === 0xf0) {\n chr = ((byte & 0x07) << 18) |\n ((view.getUint8(++i) & 0x3f) << 12) |\n ((view.getUint8(++i) & 0x3f) << 6) |\n ((view.getUint8(++i) & 0x3f) << 0);\n if (chr >= 0x010000) { // surrogate pair\n chr -= 0x010000;\n string += String.fromCharCode((chr >>> 10) + 0xD800, (chr & 0x3FF) + 0xDC00);\n } else {\n string += String.fromCharCode(chr);\n }\n continue;\n }\n throw new Error('Invalid byte ' + byte.toString(16));\n }\n return string;\n}\n\nDecoder.prototype._array = function (length) {\n var value = new Array(length);\n for (var i = 0; i < length; i++) {\n value[i] = this._parse();\n }\n return value;\n};\n\nDecoder.prototype._map = function (length) {\n var key = '', value = {};\n for (var i = 0; i < length; i++) {\n key = this._parse();\n value[key] = this._parse();\n }\n return value;\n};\n\nDecoder.prototype._str = function (length) {\n var value = utf8Read(this._view, this._offset, length);\n this._offset += length;\n return value;\n};\n\nDecoder.prototype._bin = function (length) {\n var value = this._buffer.slice(this._offset, this._offset + length);\n this._offset += length;\n return value;\n};\n\nDecoder.prototype._parse = function () {\n var prefix = this._view.getUint8(this._offset++);\n var value, length = 0, type = 0, hi = 0, lo = 0;\n\n if (prefix < 0xc0) {\n // positive fixint\n if (prefix < 0x80) {\n return prefix;\n }\n // fixmap\n if (prefix < 0x90) {\n return this._map(prefix & 0x0f);\n }\n // fixarray\n if (prefix < 0xa0) {\n return this._array(prefix & 0x0f);\n }\n // fixstr\n return this._str(prefix & 0x1f);\n }\n\n // negative fixint\n if (prefix > 0xdf) {\n return (0xff - prefix + 1) * -1;\n }\n\n switch (prefix) {\n // nil\n case 0xc0:\n return null;\n // false\n case 0xc2:\n return false;\n // true\n case 0xc3:\n return true;\n\n // bin\n case 0xc4:\n length = this._view.getUint8(this._offset);\n this._offset += 1;\n return this._bin(length);\n case 0xc5:\n length = this._view.getUint16(this._offset);\n this._offset += 2;\n return this._bin(length);\n case 0xc6:\n length = this._view.getUint32(this._offset);\n this._offset += 4;\n return this._bin(length);\n\n // ext\n case 0xc7:\n length = this._view.getUint8(this._offset);\n type = this._view.getInt8(this._offset + 1);\n this._offset += 2;\n return [type, this._bin(length)];\n case 0xc8:\n length = this._view.getUint16(this._offset);\n type = this._view.getInt8(this._offset + 2);\n this._offset += 3;\n return [type, this._bin(length)];\n case 0xc9:\n length = this._view.getUint32(this._offset);\n type = this._view.getInt8(this._offset + 4);\n this._offset += 5;\n return [type, this._bin(length)];\n\n // float\n case 0xca:\n value = this._view.getFloat32(this._offset);\n this._offset += 4;\n return value;\n case 0xcb:\n value = this._view.getFloat64(this._offset);\n this._offset += 8;\n return value;\n\n // uint\n case 0xcc:\n value = this._view.getUint8(this._offset);\n this._offset += 1;\n return value;\n case 0xcd:\n value = this._view.getUint16(this._offset);\n this._offset += 2;\n return value;\n case 0xce:\n value = this._view.getUint32(this._offset);\n this._offset += 4;\n return value;\n case 0xcf:\n hi = this._view.getUint32(this._offset) * Math.pow(2, 32);\n lo = this._view.getUint32(this._offset + 4);\n this._offset += 8;\n return hi + lo;\n\n // int\n case 0xd0:\n value = this._view.getInt8(this._offset);\n this._offset += 1;\n return value;\n case 0xd1:\n value = this._view.getInt16(this._offset);\n this._offset += 2;\n return value;\n case 0xd2:\n value = this._view.getInt32(this._offset);\n this._offset += 4;\n return value;\n case 0xd3:\n hi = this._view.getInt32(this._offset) * Math.pow(2, 32);\n lo = this._view.getUint32(this._offset + 4);\n this._offset += 8;\n return hi + lo;\n\n // fixext\n case 0xd4:\n type = this._view.getInt8(this._offset);\n this._offset += 1;\n if (type === 0x00) {\n this._offset += 1;\n return void 0;\n }\n return [type, this._bin(1)];\n case 0xd5:\n type = this._view.getInt8(this._offset);\n this._offset += 1;\n return [type, this._bin(2)];\n case 0xd6:\n type = this._view.getInt8(this._offset);\n this._offset += 1;\n return [type, this._bin(4)];\n case 0xd7:\n type = this._view.getInt8(this._offset);\n this._offset += 1;\n if (type === 0x00) {\n hi = this._view.getInt32(this._offset) * Math.pow(2, 32);\n lo = this._view.getUint32(this._offset + 4);\n this._offset += 8;\n return new Date(hi + lo);\n }\n return [type, this._bin(8)];\n case 0xd8:\n type = this._view.getInt8(this._offset);\n this._offset += 1;\n return [type, this._bin(16)];\n\n // str\n case 0xd9:\n length = this._view.getUint8(this._offset);\n this._offset += 1;\n return this._str(length);\n case 0xda:\n length = this._view.getUint16(this._offset);\n this._offset += 2;\n return this._str(length);\n case 0xdb:\n length = this._view.getUint32(this._offset);\n this._offset += 4;\n return this._str(length);\n\n // array\n case 0xdc:\n length = this._view.getUint16(this._offset);\n this._offset += 2;\n return this._array(length);\n case 0xdd:\n length = this._view.getUint32(this._offset);\n this._offset += 4;\n return this._array(length);\n\n // map\n case 0xde:\n length = this._view.getUint16(this._offset);\n this._offset += 2;\n return this._map(length);\n case 0xdf:\n length = this._view.getUint32(this._offset);\n this._offset += 4;\n return this._map(length);\n }\n\n throw new Error('Could not parse');\n};\n\nfunction decode(buffer) {\n var decoder = new Decoder(buffer);\n var value = decoder._parse();\n if (decoder._offset !== buffer.byteLength) {\n throw new Error((buffer.byteLength - decoder._offset) + ' trailing bytes');\n }\n return value;\n}\n\nmodule.exports = decode;\n","exports.encode = require('./encode');\nexports.decode = require('./decode');\n","\r\n/**\r\n * Expose `Emitter`.\r\n */\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = Emitter;\r\n}\r\n\r\n/**\r\n * Initialize a new `Emitter`.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction Emitter(obj) {\r\n if (obj) return mixin(obj);\r\n};\r\n\r\n/**\r\n * Mixin the emitter properties.\r\n *\r\n * @param {Object} obj\r\n * @return {Object}\r\n * @api private\r\n */\r\n\r\nfunction mixin(obj) {\r\n for (var key in Emitter.prototype) {\r\n obj[key] = Emitter.prototype[key];\r\n }\r\n return obj;\r\n}\r\n\r\n/**\r\n * Listen on the given `event` with `fn`.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.on =\r\nEmitter.prototype.addEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\r\n .push(fn);\r\n return this;\r\n};\r\n\r\n/**\r\n * Adds an `event` listener that will be invoked a single\r\n * time then automatically removed.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.once = function(event, fn){\r\n function on() {\r\n this.off(event, on);\r\n fn.apply(this, arguments);\r\n }\r\n\r\n on.fn = fn;\r\n this.on(event, on);\r\n return this;\r\n};\r\n\r\n/**\r\n * Remove the given callback for `event` or all\r\n * registered callbacks.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.off =\r\nEmitter.prototype.removeListener =\r\nEmitter.prototype.removeAllListeners =\r\nEmitter.prototype.removeEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n\r\n // all\r\n if (0 == arguments.length) {\r\n this._callbacks = {};\r\n return this;\r\n }\r\n\r\n // specific event\r\n var callbacks = this._callbacks['$' + event];\r\n if (!callbacks) return this;\r\n\r\n // remove all handlers\r\n if (1 == arguments.length) {\r\n delete this._callbacks['$' + event];\r\n return this;\r\n }\r\n\r\n // remove specific handler\r\n var cb;\r\n for (var i = 0; i < callbacks.length; i++) {\r\n cb = callbacks[i];\r\n if (cb === fn || cb.fn === fn) {\r\n callbacks.splice(i, 1);\r\n break;\r\n }\r\n }\r\n\r\n // Remove event specific arrays for event types that no\r\n // one is subscribed for to avoid memory leak.\r\n if (callbacks.length === 0) {\r\n delete this._callbacks['$' + event];\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Emit `event` with the given args.\r\n *\r\n * @param {String} event\r\n * @param {Mixed} ...\r\n * @return {Emitter}\r\n */\r\n\r\nEmitter.prototype.emit = function(event){\r\n this._callbacks = this._callbacks || {};\r\n\r\n var args = new Array(arguments.length - 1)\r\n , callbacks = this._callbacks['$' + event];\r\n\r\n for (var i = 1; i < arguments.length; i++) {\r\n args[i - 1] = arguments[i];\r\n }\r\n\r\n if (callbacks) {\r\n callbacks = callbacks.slice(0);\r\n for (var i = 0, len = callbacks.length; i < len; ++i) {\r\n callbacks[i].apply(this, args);\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Return array of callbacks for `event`.\r\n *\r\n * @param {String} event\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.listeners = function(event){\r\n this._callbacks = this._callbacks || {};\r\n return this._callbacks['$' + event] || [];\r\n};\r\n\r\n/**\r\n * Check if this emitter has `event` handlers.\r\n *\r\n * @param {String} event\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.hasListeners = function(event){\r\n return !! this.listeners(event).length;\r\n};\r\n","var msgpack = require(\"notepack.io\");\nvar Emitter = require(\"component-emitter\");\n\nexports.protocol = 5;\n\n/**\n * Packet types (see https://github.com/socketio/socket.io-protocol)\n */\n\nvar PacketType = (exports.PacketType = {\n CONNECT: 0,\n DISCONNECT: 1,\n EVENT: 2,\n ACK: 3,\n CONNECT_ERROR: 4,\n});\n\nvar isInteger =\n Number.isInteger ||\n function (value) {\n return (\n typeof value === \"number\" &&\n isFinite(value) &&\n Math.floor(value) === value\n );\n };\n\nvar isString = function (value) {\n return typeof value === \"string\";\n};\n\nvar isObject = function (value) {\n return Object.prototype.toString.call(value) === \"[object Object]\";\n};\n\nfunction Encoder() {}\n\nEncoder.prototype.encode = function (packet) {\n return [msgpack.encode(packet)];\n};\n\nfunction Decoder() {}\n\nEmitter(Decoder.prototype);\n\nDecoder.prototype.add = function (obj) {\n var decoded = msgpack.decode(obj);\n this.checkPacket(decoded);\n this.emit(\"decoded\", decoded);\n};\n\nfunction isDataValid(decoded) {\n switch (decoded.type) {\n case PacketType.CONNECT:\n return decoded.data === undefined || isObject(decoded.data);\n case PacketType.DISCONNECT:\n return decoded.data === undefined;\n case PacketType.CONNECT_ERROR:\n return isString(decoded.data) || isObject(decoded.data);\n default:\n return Array.isArray(decoded.data);\n }\n}\n\nDecoder.prototype.checkPacket = function (decoded) {\n var isTypeValid =\n isInteger(decoded.type) &&\n decoded.type >= PacketType.CONNECT &&\n decoded.type <= PacketType.CONNECT_ERROR;\n if (!isTypeValid) {\n throw new Error(\"invalid packet type\");\n }\n\n if (!isString(decoded.nsp)) {\n throw new Error(\"invalid namespace\");\n }\n\n if (!isDataValid(decoded)) {\n throw new Error(\"invalid payload\");\n }\n\n var isAckValid = decoded.id === undefined || isInteger(decoded.id);\n if (!isAckValid) {\n throw new Error(\"invalid packet id\");\n }\n};\n\nDecoder.prototype.destroy = function () {};\n\nexports.Encoder = Encoder;\nexports.Decoder = Decoder;\n","export function on(obj, ev, fn) {\n obj.on(ev, fn);\n return function subDestroy() {\n obj.off(ev, fn);\n };\n}\n","import { PacketType } from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\n/**\n * Internal events.\n * These events can't be emitted by the user.\n */\nconst RESERVED_EVENTS = Object.freeze({\n connect: 1,\n connect_error: 1,\n disconnect: 1,\n disconnecting: 1,\n // EventEmitter reserved events: https://nodejs.org/api/events.html#events_event_newlistener\n newListener: 1,\n removeListener: 1,\n});\n/**\n * A Socket is the fundamental class for interacting with the server.\n *\n * A Socket belongs to a certain Namespace (by default /) and uses an underlying {@link Manager} to communicate.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(\"connected\");\n * });\n *\n * // send an event to the server\n * socket.emit(\"foo\", \"bar\");\n *\n * socket.on(\"foobar\", () => {\n * // an event was received from the server\n * });\n *\n * // upon disconnection\n * socket.on(\"disconnect\", (reason) => {\n * console.log(`disconnected due to ${reason}`);\n * });\n */\nexport class Socket extends Emitter {\n /**\n * `Socket` constructor.\n */\n constructor(io, nsp, opts) {\n super();\n /**\n * Whether the socket is currently connected to the server.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(socket.connected); // true\n * });\n *\n * socket.on(\"disconnect\", () => {\n * console.log(socket.connected); // false\n * });\n */\n this.connected = false;\n /**\n * Buffer for packets received before the CONNECT packet\n */\n this.receiveBuffer = [];\n /**\n * Buffer for packets that will be sent once the socket is connected\n */\n this.sendBuffer = [];\n this.ids = 0;\n this.acks = {};\n this.flags = {};\n this.io = io;\n this.nsp = nsp;\n if (opts && opts.auth) {\n this.auth = opts.auth;\n }\n if (this.io._autoConnect)\n this.open();\n }\n /**\n * Whether the socket is currently disconnected\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(socket.disconnected); // false\n * });\n *\n * socket.on(\"disconnect\", () => {\n * console.log(socket.disconnected); // true\n * });\n */\n get disconnected() {\n return !this.connected;\n }\n /**\n * Subscribe to open, close and packet events\n *\n * @private\n */\n subEvents() {\n if (this.subs)\n return;\n const io = this.io;\n this.subs = [\n on(io, \"open\", this.onopen.bind(this)),\n on(io, \"packet\", this.onpacket.bind(this)),\n on(io, \"error\", this.onerror.bind(this)),\n on(io, \"close\", this.onclose.bind(this)),\n ];\n }\n /**\n * Whether the Socket will try to reconnect when its Manager connects or reconnects.\n *\n * @example\n * const socket = io();\n *\n * console.log(socket.active); // true\n *\n * socket.on(\"disconnect\", (reason) => {\n * if (reason === \"io server disconnect\") {\n * // the disconnection was initiated by the server, you need to manually reconnect\n * console.log(socket.active); // false\n * }\n * // else the socket will automatically try to reconnect\n * console.log(socket.active); // true\n * });\n */\n get active() {\n return !!this.subs;\n }\n /**\n * \"Opens\" the socket.\n *\n * @example\n * const socket = io({\n * autoConnect: false\n * });\n *\n * socket.connect();\n */\n connect() {\n if (this.connected)\n return this;\n this.subEvents();\n if (!this.io[\"_reconnecting\"])\n this.io.open(); // ensure open\n if (\"open\" === this.io._readyState)\n this.onopen();\n return this;\n }\n /**\n * Alias for {@link connect()}.\n */\n open() {\n return this.connect();\n }\n /**\n * Sends a `message` event.\n *\n * This method mimics the WebSocket.send() method.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/send\n *\n * @example\n * socket.send(\"hello\");\n *\n * // this is equivalent to\n * socket.emit(\"message\", \"hello\");\n *\n * @return self\n */\n send(...args) {\n args.unshift(\"message\");\n this.emit.apply(this, args);\n return this;\n }\n /**\n * Override `emit`.\n * If the event is in `events`, it's emitted normally.\n *\n * @example\n * socket.emit(\"hello\", \"world\");\n *\n * // all serializable datastructures are supported (no need to call JSON.stringify)\n * socket.emit(\"hello\", 1, \"2\", { 3: [\"4\"], 5: Uint8Array.from([6]) });\n *\n * // with an acknowledgement from the server\n * socket.emit(\"hello\", \"world\", (val) => {\n * // ...\n * });\n *\n * @return self\n */\n emit(ev, ...args) {\n if (RESERVED_EVENTS.hasOwnProperty(ev)) {\n throw new Error('\"' + ev.toString() + '\" is a reserved event name');\n }\n args.unshift(ev);\n const packet = {\n type: PacketType.EVENT,\n data: args,\n };\n packet.options = {};\n packet.options.compress = this.flags.compress !== false;\n // event ack callback\n if (\"function\" === typeof args[args.length - 1]) {\n const id = this.ids++;\n const ack = args.pop();\n this._registerAckCallback(id, ack);\n packet.id = id;\n }\n const isTransportWritable = this.io.engine &&\n this.io.engine.transport &&\n this.io.engine.transport.writable;\n const discardPacket = this.flags.volatile && (!isTransportWritable || !this.connected);\n if (discardPacket) {\n }\n else if (this.connected) {\n this.notifyOutgoingListeners(packet);\n this.packet(packet);\n }\n else {\n this.sendBuffer.push(packet);\n }\n this.flags = {};\n return this;\n }\n /**\n * @private\n */\n _registerAckCallback(id, ack) {\n const timeout = this.flags.timeout;\n if (timeout === undefined) {\n this.acks[id] = ack;\n return;\n }\n // @ts-ignore\n const timer = this.io.setTimeoutFn(() => {\n delete this.acks[id];\n for (let i = 0; i < this.sendBuffer.length; i++) {\n if (this.sendBuffer[i].id === id) {\n this.sendBuffer.splice(i, 1);\n }\n }\n ack.call(this, new Error(\"operation has timed out\"));\n }, timeout);\n this.acks[id] = (...args) => {\n // @ts-ignore\n this.io.clearTimeoutFn(timer);\n ack.apply(this, [null, ...args]);\n };\n }\n /**\n * Sends a packet.\n *\n * @param packet\n * @private\n */\n packet(packet) {\n packet.nsp = this.nsp;\n this.io._packet(packet);\n }\n /**\n * Called upon engine `open`.\n *\n * @private\n */\n onopen() {\n if (typeof this.auth == \"function\") {\n this.auth((data) => {\n this.packet({ type: PacketType.CONNECT, data });\n });\n }\n else {\n this.packet({ type: PacketType.CONNECT, data: this.auth });\n }\n }\n /**\n * Called upon engine or manager `error`.\n *\n * @param err\n * @private\n */\n onerror(err) {\n if (!this.connected) {\n this.emitReserved(\"connect_error\", err);\n }\n }\n /**\n * Called upon engine `close`.\n *\n * @param reason\n * @param description\n * @private\n */\n onclose(reason, description) {\n this.connected = false;\n delete this.id;\n this.emitReserved(\"disconnect\", reason, description);\n }\n /**\n * Called with socket packet.\n *\n * @param packet\n * @private\n */\n onpacket(packet) {\n const sameNamespace = packet.nsp === this.nsp;\n if (!sameNamespace)\n return;\n switch (packet.type) {\n case PacketType.CONNECT:\n if (packet.data && packet.data.sid) {\n const id = packet.data.sid;\n this.onconnect(id);\n }\n else {\n this.emitReserved(\"connect_error\", new Error(\"It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)\"));\n }\n break;\n case PacketType.EVENT:\n case PacketType.BINARY_EVENT:\n this.onevent(packet);\n break;\n case PacketType.ACK:\n case PacketType.BINARY_ACK:\n this.onack(packet);\n break;\n case PacketType.DISCONNECT:\n this.ondisconnect();\n break;\n case PacketType.CONNECT_ERROR:\n this.destroy();\n const err = new Error(packet.data.message);\n // @ts-ignore\n err.data = packet.data.data;\n this.emitReserved(\"connect_error\", err);\n break;\n }\n }\n /**\n * Called upon a server event.\n *\n * @param packet\n * @private\n */\n onevent(packet) {\n const args = packet.data || [];\n if (null != packet.id) {\n args.push(this.ack(packet.id));\n }\n if (this.connected) {\n this.emitEvent(args);\n }\n else {\n this.receiveBuffer.push(Object.freeze(args));\n }\n }\n emitEvent(args) {\n if (this._anyListeners && this._anyListeners.length) {\n const listeners = this._anyListeners.slice();\n for (const listener of listeners) {\n listener.apply(this, args);\n }\n }\n super.emit.apply(this, args);\n }\n /**\n * Produces an ack callback to emit with an event.\n *\n * @private\n */\n ack(id) {\n const self = this;\n let sent = false;\n return function (...args) {\n // prevent double callbacks\n if (sent)\n return;\n sent = true;\n self.packet({\n type: PacketType.ACK,\n id: id,\n data: args,\n });\n };\n }\n /**\n * Called upon a server acknowlegement.\n *\n * @param packet\n * @private\n */\n onack(packet) {\n const ack = this.acks[packet.id];\n if (\"function\" === typeof ack) {\n ack.apply(this, packet.data);\n delete this.acks[packet.id];\n }\n else {\n }\n }\n /**\n * Called upon server connect.\n *\n * @private\n */\n onconnect(id) {\n this.id = id;\n this.connected = true;\n this.emitBuffered();\n this.emitReserved(\"connect\");\n }\n /**\n * Emit buffered events (received and emitted).\n *\n * @private\n */\n emitBuffered() {\n this.receiveBuffer.forEach((args) => this.emitEvent(args));\n this.receiveBuffer = [];\n this.sendBuffer.forEach((packet) => {\n this.notifyOutgoingListeners(packet);\n this.packet(packet);\n });\n this.sendBuffer = [];\n }\n /**\n * Called upon server disconnect.\n *\n * @private\n */\n ondisconnect() {\n this.destroy();\n this.onclose(\"io server disconnect\");\n }\n /**\n * Called upon forced client/server side disconnections,\n * this method ensures the manager stops tracking us and\n * that reconnections don't get triggered for this.\n *\n * @private\n */\n destroy() {\n if (this.subs) {\n // clean subscriptions to avoid reconnections\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs = undefined;\n }\n this.io[\"_destroy\"](this);\n }\n /**\n * Disconnects the socket manually. In that case, the socket will not try to reconnect.\n *\n * If this is the last active Socket instance of the {@link Manager}, the low-level connection will be closed.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"disconnect\", (reason) => {\n * // console.log(reason); prints \"io client disconnect\"\n * });\n *\n * socket.disconnect();\n *\n * @return self\n */\n disconnect() {\n if (this.connected) {\n this.packet({ type: PacketType.DISCONNECT });\n }\n // remove socket from pool\n this.destroy();\n if (this.connected) {\n // fire events\n this.onclose(\"io client disconnect\");\n }\n return this;\n }\n /**\n * Alias for {@link disconnect()}.\n *\n * @return self\n */\n close() {\n return this.disconnect();\n }\n /**\n * Sets the compress flag.\n *\n * @example\n * socket.compress(false).emit(\"hello\");\n *\n * @param compress - if `true`, compresses the sending data\n * @return self\n */\n compress(compress) {\n this.flags.compress = compress;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the event message will be dropped when this socket is not\n * ready to send messages.\n *\n * @example\n * socket.volatile.emit(\"hello\"); // the server may or may not receive it\n *\n * @returns self\n */\n get volatile() {\n this.flags.volatile = true;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the callback will be called with an error when the\n * given number of milliseconds have elapsed without an acknowledgement from the server:\n *\n * @example\n * socket.timeout(5000).emit(\"my-event\", (err) => {\n * if (err) {\n * // the server did not acknowledge the event in the given delay\n * }\n * });\n *\n * @returns self\n */\n timeout(timeout) {\n this.flags.timeout = timeout;\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback.\n *\n * @example\n * socket.onAny((event, ...args) => {\n * console.log(`got ${event}`);\n * });\n *\n * @param listener\n */\n onAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.push(listener);\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback. The listener is added to the beginning of the listeners array.\n *\n * @example\n * socket.prependAny((event, ...args) => {\n * console.log(`got event ${event}`);\n * });\n *\n * @param listener\n */\n prependAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.unshift(listener);\n return this;\n }\n /**\n * Removes the listener that will be fired when any event is emitted.\n *\n * @example\n * const catchAllListener = (event, ...args) => {\n * console.log(`got event ${event}`);\n * }\n *\n * socket.onAny(catchAllListener);\n *\n * // remove a specific listener\n * socket.offAny(catchAllListener);\n *\n * // or remove all listeners\n * socket.offAny();\n *\n * @param listener\n */\n offAny(listener) {\n if (!this._anyListeners) {\n return this;\n }\n if (listener) {\n const listeners = this._anyListeners;\n for (let i = 0; i < listeners.length; i++) {\n if (listener === listeners[i]) {\n listeners.splice(i, 1);\n return this;\n }\n }\n }\n else {\n this._anyListeners = [];\n }\n return this;\n }\n /**\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n * e.g. to remove listeners.\n */\n listenersAny() {\n return this._anyListeners || [];\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback.\n *\n * Note: acknowledgements sent to the server are not included.\n *\n * @example\n * socket.onAnyOutgoing((event, ...args) => {\n * console.log(`sent event ${event}`);\n * });\n *\n * @param listener\n */\n onAnyOutgoing(listener) {\n this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n this._anyOutgoingListeners.push(listener);\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback. The listener is added to the beginning of the listeners array.\n *\n * Note: acknowledgements sent to the server are not included.\n *\n * @example\n * socket.prependAnyOutgoing((event, ...args) => {\n * console.log(`sent event ${event}`);\n * });\n *\n * @param listener\n */\n prependAnyOutgoing(listener) {\n this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n this._anyOutgoingListeners.unshift(listener);\n return this;\n }\n /**\n * Removes the listener that will be fired when any event is emitted.\n *\n * @example\n * const catchAllListener = (event, ...args) => {\n * console.log(`sent event ${event}`);\n * }\n *\n * socket.onAnyOutgoing(catchAllListener);\n *\n * // remove a specific listener\n * socket.offAnyOutgoing(catchAllListener);\n *\n * // or remove all listeners\n * socket.offAnyOutgoing();\n *\n * @param [listener] - the catch-all listener (optional)\n */\n offAnyOutgoing(listener) {\n if (!this._anyOutgoingListeners) {\n return this;\n }\n if (listener) {\n const listeners = this._anyOutgoingListeners;\n for (let i = 0; i < listeners.length; i++) {\n if (listener === listeners[i]) {\n listeners.splice(i, 1);\n return this;\n }\n }\n }\n else {\n this._anyOutgoingListeners = [];\n }\n return this;\n }\n /**\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n * e.g. to remove listeners.\n */\n listenersAnyOutgoing() {\n return this._anyOutgoingListeners || [];\n }\n /**\n * Notify the listeners for each packet sent\n *\n * @param packet\n *\n * @private\n */\n notifyOutgoingListeners(packet) {\n if (this._anyOutgoingListeners && this._anyOutgoingListeners.length) {\n const listeners = this._anyOutgoingListeners.slice();\n for (const listener of listeners) {\n listener.apply(this, packet.data);\n }\n }\n }\n}\n","/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\nexport function Backoff(opts) {\n opts = opts || {};\n this.ms = opts.min || 100;\n this.max = opts.max || 10000;\n this.factor = opts.factor || 2;\n this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n this.attempts = 0;\n}\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\nBackoff.prototype.duration = function () {\n var ms = this.ms * Math.pow(this.factor, this.attempts++);\n if (this.jitter) {\n var rand = Math.random();\n var deviation = Math.floor(rand * this.jitter * ms);\n ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n }\n return Math.min(ms, this.max) | 0;\n};\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\nBackoff.prototype.reset = function () {\n this.attempts = 0;\n};\n/**\n * Set the minimum duration\n *\n * @api public\n */\nBackoff.prototype.setMin = function (min) {\n this.ms = min;\n};\n/**\n * Set the maximum duration\n *\n * @api public\n */\nBackoff.prototype.setMax = function (max) {\n this.max = max;\n};\n/**\n * Set the jitter\n *\n * @api public\n */\nBackoff.prototype.setJitter = function (jitter) {\n this.jitter = jitter;\n};\n","import { Socket as Engine, installTimerFunctions, nextTick, } from \"engine.io-client\";\nimport { Socket } from \"./socket.js\";\nimport * as parser from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport { Backoff } from \"./contrib/backo2.js\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\nexport class Manager extends Emitter {\n constructor(uri, opts) {\n var _a;\n super();\n this.nsps = {};\n this.subs = [];\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n opts.path = opts.path || \"/socket.io\";\n this.opts = opts;\n installTimerFunctions(this, opts);\n this.reconnection(opts.reconnection !== false);\n this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n this.reconnectionDelay(opts.reconnectionDelay || 1000);\n this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\n this.randomizationFactor((_a = opts.randomizationFactor) !== null && _a !== void 0 ? _a : 0.5);\n this.backoff = new Backoff({\n min: this.reconnectionDelay(),\n max: this.reconnectionDelayMax(),\n jitter: this.randomizationFactor(),\n });\n this.timeout(null == opts.timeout ? 20000 : opts.timeout);\n this._readyState = \"closed\";\n this.uri = uri;\n const _parser = opts.parser || parser;\n this.encoder = new _parser.Encoder();\n this.decoder = new _parser.Decoder();\n this._autoConnect = opts.autoConnect !== false;\n if (this._autoConnect)\n this.open();\n }\n reconnection(v) {\n if (!arguments.length)\n return this._reconnection;\n this._reconnection = !!v;\n return this;\n }\n reconnectionAttempts(v) {\n if (v === undefined)\n return this._reconnectionAttempts;\n this._reconnectionAttempts = v;\n return this;\n }\n reconnectionDelay(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelay;\n this._reconnectionDelay = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMin(v);\n return this;\n }\n randomizationFactor(v) {\n var _a;\n if (v === undefined)\n return this._randomizationFactor;\n this._randomizationFactor = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setJitter(v);\n return this;\n }\n reconnectionDelayMax(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelayMax;\n this._reconnectionDelayMax = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMax(v);\n return this;\n }\n timeout(v) {\n if (!arguments.length)\n return this._timeout;\n this._timeout = v;\n return this;\n }\n /**\n * Starts trying to reconnect if reconnection is enabled and we have not\n * started reconnecting yet\n *\n * @private\n */\n maybeReconnectOnOpen() {\n // Only try to reconnect if it's the first time we're connecting\n if (!this._reconnecting &&\n this._reconnection &&\n this.backoff.attempts === 0) {\n // keeps reconnection from firing twice for the same reconnection loop\n this.reconnect();\n }\n }\n /**\n * Sets the current transport `socket`.\n *\n * @param {Function} fn - optional, callback\n * @return self\n * @public\n */\n open(fn) {\n if (~this._readyState.indexOf(\"open\"))\n return this;\n this.engine = new Engine(this.uri, this.opts);\n const socket = this.engine;\n const self = this;\n this._readyState = \"opening\";\n this.skipReconnect = false;\n // emit `open`\n const openSubDestroy = on(socket, \"open\", function () {\n self.onopen();\n fn && fn();\n });\n // emit `error`\n const errorSub = on(socket, \"error\", (err) => {\n self.cleanup();\n self._readyState = \"closed\";\n this.emitReserved(\"error\", err);\n if (fn) {\n fn(err);\n }\n else {\n // Only do this if there is no fn to handle the error\n self.maybeReconnectOnOpen();\n }\n });\n if (false !== this._timeout) {\n const timeout = this._timeout;\n if (timeout === 0) {\n openSubDestroy(); // prevents a race condition with the 'open' event\n }\n // set timer\n const timer = this.setTimeoutFn(() => {\n openSubDestroy();\n socket.close();\n // @ts-ignore\n socket.emit(\"error\", new Error(\"timeout\"));\n }, timeout);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(function subDestroy() {\n clearTimeout(timer);\n });\n }\n this.subs.push(openSubDestroy);\n this.subs.push(errorSub);\n return this;\n }\n /**\n * Alias for open()\n *\n * @return self\n * @public\n */\n connect(fn) {\n return this.open(fn);\n }\n /**\n * Called upon transport open.\n *\n * @private\n */\n onopen() {\n // clear old subs\n this.cleanup();\n // mark as open\n this._readyState = \"open\";\n this.emitReserved(\"open\");\n // add new subs\n const socket = this.engine;\n this.subs.push(on(socket, \"ping\", this.onping.bind(this)), on(socket, \"data\", this.ondata.bind(this)), on(socket, \"error\", this.onerror.bind(this)), on(socket, \"close\", this.onclose.bind(this)), on(this.decoder, \"decoded\", this.ondecoded.bind(this)));\n }\n /**\n * Called upon a ping.\n *\n * @private\n */\n onping() {\n this.emitReserved(\"ping\");\n }\n /**\n * Called with data.\n *\n * @private\n */\n ondata(data) {\n try {\n this.decoder.add(data);\n }\n catch (e) {\n this.onclose(\"parse error\", e);\n }\n }\n /**\n * Called when parser fully decodes a packet.\n *\n * @private\n */\n ondecoded(packet) {\n // the nextTick call prevents an exception in a user-provided event listener from triggering a disconnection due to a \"parse error\"\n nextTick(() => {\n this.emitReserved(\"packet\", packet);\n }, this.setTimeoutFn);\n }\n /**\n * Called upon socket error.\n *\n * @private\n */\n onerror(err) {\n this.emitReserved(\"error\", err);\n }\n /**\n * Creates a new socket for the given `nsp`.\n *\n * @return {Socket}\n * @public\n */\n socket(nsp, opts) {\n let socket = this.nsps[nsp];\n if (!socket) {\n socket = new Socket(this, nsp, opts);\n this.nsps[nsp] = socket;\n }\n return socket;\n }\n /**\n * Called upon a socket close.\n *\n * @param socket\n * @private\n */\n _destroy(socket) {\n const nsps = Object.keys(this.nsps);\n for (const nsp of nsps) {\n const socket = this.nsps[nsp];\n if (socket.active) {\n return;\n }\n }\n this._close();\n }\n /**\n * Writes a packet.\n *\n * @param packet\n * @private\n */\n _packet(packet) {\n const encodedPackets = this.encoder.encode(packet);\n for (let i = 0; i < encodedPackets.length; i++) {\n this.engine.write(encodedPackets[i], packet.options);\n }\n }\n /**\n * Clean up transport subscriptions and packet buffer.\n *\n * @private\n */\n cleanup() {\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs.length = 0;\n this.decoder.destroy();\n }\n /**\n * Close the current socket.\n *\n * @private\n */\n _close() {\n this.skipReconnect = true;\n this._reconnecting = false;\n this.onclose(\"forced close\");\n if (this.engine)\n this.engine.close();\n }\n /**\n * Alias for close()\n *\n * @private\n */\n disconnect() {\n return this._close();\n }\n /**\n * Called upon engine close.\n *\n * @private\n */\n onclose(reason, description) {\n this.cleanup();\n this.backoff.reset();\n this._readyState = \"closed\";\n this.emitReserved(\"close\", reason, description);\n if (this._reconnection && !this.skipReconnect) {\n this.reconnect();\n }\n }\n /**\n * Attempt a reconnection.\n *\n * @private\n */\n reconnect() {\n if (this._reconnecting || this.skipReconnect)\n return this;\n const self = this;\n if (this.backoff.attempts >= this._reconnectionAttempts) {\n this.backoff.reset();\n this.emitReserved(\"reconnect_failed\");\n this._reconnecting = false;\n }\n else {\n const delay = this.backoff.duration();\n this._reconnecting = true;\n const timer = this.setTimeoutFn(() => {\n if (self.skipReconnect)\n return;\n this.emitReserved(\"reconnect_attempt\", self.backoff.attempts);\n // check again for the case socket closed in above events\n if (self.skipReconnect)\n return;\n self.open((err) => {\n if (err) {\n self._reconnecting = false;\n self.reconnect();\n this.emitReserved(\"reconnect_error\", err);\n }\n else {\n self.onreconnect();\n }\n });\n }, delay);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(function subDestroy() {\n clearTimeout(timer);\n });\n }\n }\n /**\n * Called upon successful reconnect.\n *\n * @private\n */\n onreconnect() {\n const attempt = this.backoff.attempts;\n this._reconnecting = false;\n this.backoff.reset();\n this.emitReserved(\"reconnect\", attempt);\n }\n}\n","import { url } from \"./url.js\";\nimport { Manager } from \"./manager.js\";\nimport { Socket } from \"./socket.js\";\n/**\n * Managers cache.\n */\nconst cache = {};\nfunction lookup(uri, opts) {\n if (typeof uri === \"object\") {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n const parsed = url(uri, opts.path || \"/socket.io\");\n const source = parsed.source;\n const id = parsed.id;\n const path = parsed.path;\n const sameNamespace = cache[id] && path in cache[id][\"nsps\"];\n const newConnection = opts.forceNew ||\n opts[\"force new connection\"] ||\n false === opts.multiplex ||\n sameNamespace;\n let io;\n if (newConnection) {\n io = new Manager(source, opts);\n }\n else {\n if (!cache[id]) {\n cache[id] = new Manager(source, opts);\n }\n io = cache[id];\n }\n if (parsed.query && !opts.query) {\n opts.query = parsed.queryKey;\n }\n return io.socket(parsed.path, opts);\n}\n// so that \"lookup\" can be used both as a function (e.g. `io(...)`) and as a\n// namespace (e.g. `io.connect(...)`), for backward compatibility\nObject.assign(lookup, {\n Manager,\n Socket,\n io: lookup,\n connect: lookup,\n});\n/**\n * Protocol version.\n *\n * @public\n */\nexport { protocol } from \"socket.io-parser\";\n/**\n * Expose constructors for standalone build.\n *\n * @public\n */\nexport { Manager, Socket, lookup as io, lookup as connect, lookup as default, };\n","import { parse } from \"engine.io-client\";\n/**\n * URL parser.\n *\n * @param uri - url\n * @param path - the request path of the connection\n * @param loc - An object meant to mimic window.location.\n * Defaults to window.location.\n * @public\n */\nexport function url(uri, path = \"\", loc) {\n let obj = uri;\n // default to window.location\n loc = loc || (typeof location !== \"undefined\" && location);\n if (null == uri)\n uri = loc.protocol + \"//\" + loc.host;\n // relative path support\n if (typeof uri === \"string\") {\n if (\"/\" === uri.charAt(0)) {\n if (\"/\" === uri.charAt(1)) {\n uri = loc.protocol + uri;\n }\n else {\n uri = loc.host + uri;\n }\n }\n if (!/^(https?|wss?):\\/\\//.test(uri)) {\n if (\"undefined\" !== typeof loc) {\n uri = loc.protocol + \"//\" + uri;\n }\n else {\n uri = \"https://\" + uri;\n }\n }\n // parse\n obj = parse(uri);\n }\n // make sure we treat `localhost:80` and `localhost` equally\n if (!obj.port) {\n if (/^(http|ws)$/.test(obj.protocol)) {\n obj.port = \"80\";\n }\n else if (/^(http|ws)s$/.test(obj.protocol)) {\n obj.port = \"443\";\n }\n }\n obj.path = obj.path || \"/\";\n const ipv6 = obj.host.indexOf(\":\") !== -1;\n const host = ipv6 ? \"[\" + obj.host + \"]\" : obj.host;\n // define unique id\n obj.id = obj.protocol + \"://\" + host + \":\" + obj.port + path;\n // define href\n obj.href =\n obj.protocol +\n \"://\" +\n host +\n (loc && loc.port === obj.port ? \"\" : \":\" + obj.port);\n return obj;\n}\n"],"names":["PACKET_TYPES","Object","create","PACKET_TYPES_REVERSE","keys","forEach","key","ERROR_PACKET","type","data","withNativeBlob","Blob","prototype","toString","call","withNativeArrayBuffer","ArrayBuffer","encodePacket","supportsBinary","callback","obj","encodeBlobAsBase64","isView","buffer","fileReader","FileReader","onload","content","result","split","readAsDataURL","chars","lookup","Uint8Array","i","length","charCodeAt","decodePacket","encodedPacket","binaryType","mapBinary","charAt","decodeBase64Packet","substring","decoded","base64","encoded1","encoded2","encoded3","encoded4","bufferLength","len","p","arraybuffer","bytes","decode","SEPARATOR","String","fromCharCode","Emitter","mixin","on","addEventListener","event","fn","this","_callbacks","push","Emitter$1","once","off","apply","arguments","removeListener","removeAllListeners","removeEventListener","cb","callbacks","splice","emit","args","Array","slice","emitReserved","listeners","hasListeners","globalThisShim","self","window","Function","pick","_len","attr","_key","reduce","acc","k","hasOwnProperty","NATIVE_SET_TIMEOUT","setTimeout","NATIVE_CLEAR_TIMEOUT","clearTimeout","installTimerFunctions","opts","useNativeTimers","setTimeoutFn","bind","globalThis","clearTimeoutFn","prev","TransportError","reason","description","context","_this","_classCallCheck","_super","Error","Transport","_Emitter","_inherits","_super2","_createSuper","_this2","writable","_assertThisInitialized","query","readyState","socket","_createClass","value","_get","_getPrototypeOf","doOpen","doClose","onClose","packets","write","packet","onPacket","details","alphabet","map","seed","encode","num","encoded","Math","floor","yeast","now","Date","str","encodeURIComponent","qs","qry","pairs","l","pair","decodeURIComponent","XMLHttpRequest","err","hasCORS","XHR","xdomain","e","concat","join","empty","hasXHR2","responseType","Polling","_Transport","polling","location","isSSL","protocol","port","xd","hostname","xs","secure","forceBase64","get","poll","onPause","pause","total","doPoll","_this3","encodedPayload","encodedPackets","decodedPacket","decodePayload","onOpen","_this4","close","_this5","count","encodePayload","doWrite","schema","timestampRequests","timestampParam","sid","b64","Number","encodedQuery","indexOf","path","_extends","Request","uri","_this6","req","request","method","xhrStatus","onError","_this7","onData","pollXhr","_this8","async","undefined","_this9","xscheme","xhr","open","extraHeaders","setDisableHeaderCheck","setRequestHeader","withCredentials","requestTimeout","timeout","onreadystatechange","status","onLoad","send","document","index","requestsCount","requests","cleanup","fromError","abort","responseText","attachEvent","unloadHandler","nextTick","Promise","resolve","then","WebSocket","MozWebSocket","isReactNative","navigator","product","toLowerCase","WS","check","protocols","headers","ws","addEventListeners","onopen","autoUnref","_socket","unref","onclose","closeEvent","onmessage","ev","onerror","_loop","lastPacket","transports","websocket","re","parts","parse","src","b","replace","m","exec","source","host","authority","ipv6uri","pathNames","regx","names","queryKey","$0","$1","$2","Socket","writeBuffer","prevBufferLen","agent","upgrade","rememberUpgrade","rejectUnauthorized","perMessageDeflate","threshold","transportOptions","closeOnBeforeunload","id","upgrades","pingInterval","pingTimeout","pingTimeoutTimer","beforeunloadEventListener","transport","offlineEventListener","name","EIO","priorWebsocketSuccess","createTransport","shift","setTransport","onDrain","failed","onTransportOpen","msg","upgrading","flush","freezeTransport","error","onTransportClose","onupgrade","to","probe","onHandshake","JSON","resetPingTimeout","sendPacket","code","filterUpgrades","maxPayload","getWritablePackets","payloadSize","c","utf8Length","ceil","byteLength","size","options","compress","cleanupAndClose","waitForUpgrade","filteredUpgrades","j","Socket$1","utf8Write","view","offset","setUint8","_encode","defers","hi","lo","_str","_length","_offset","isFinite","pow","_float","isArray","time","getTime","_bin","toJSON","allKeys","encode_1","buf","DataView","deferIndex","deferWritten","nextOffset","defer","deferLength","bin","setFloat64","Decoder","_buffer","_view","byteOffset","_array","_parse","_map","string","chr","end","byte","getUint8","utf8Read","prefix","getUint16","getUint32","getInt8","getFloat32","getFloat64","getInt16","getInt32","decode_1","decoder","lib","require$$0","require$$1","module","exports","msgpack","socket_ioMsgpackParser","PacketType","PacketType_1","CONNECT","DISCONNECT","EVENT","ACK","CONNECT_ERROR","isInteger","isString","isObject","Encoder","add","checkPacket","nsp","isDataValid","destroy","Encoder_1","Decoder_1","RESERVED_EVENTS","freeze","connect","connect_error","disconnect","disconnecting","newListener","io","connected","receiveBuffer","sendBuffer","ids","acks","flags","auth","_autoConnect","subs","onpacket","subEvents","_readyState","unshift","_len2","_key2","ack","pop","_registerAckCallback","isTransportWritable","engine","discardPacket","notifyOutgoingListeners","timer","_len3","_key3","_packet","onconnect","BINARY_EVENT","onevent","BINARY_ACK","onack","ondisconnect","message","emitEvent","_anyListeners","_step","_iterator","_createForOfIteratorHelper","s","n","done","f","sent","_len4","_key4","emitBuffered","subDestroy","listener","_anyOutgoingListeners","_step2","_iterator2","Backoff","ms","min","max","factor","jitter","attempts","duration","rand","random","deviation","reset","setMin","setMax","setJitter","Manager","_a","nsps","reconnection","reconnectionAttempts","Infinity","reconnectionDelay","reconnectionDelayMax","randomizationFactor","backoff","_parser","parser","encoder","autoConnect","v","_reconnection","_reconnectionAttempts","_reconnectionDelay","_randomizationFactor","_reconnectionDelayMax","_timeout","_reconnecting","reconnect","Engine","skipReconnect","openSubDestroy","errorSub","maybeReconnectOnOpen","onping","ondata","ondecoded","_i","_nsps","active","_close","delay","onreconnect","attempt","cache","_typeof","parsed","loc","test","href","url","sameNamespace","forceNew","multiplex"],"mappings":"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"} \ No newline at end of file From a4a8e6dcca1f337c03187b7032c04fb2e5fbcdad Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Tue, 25 Oct 2022 11:44:45 +0300 Subject: [PATCH 25/32] Use socket.io --- apps/documenteditor/forms/app.js | 2 +- apps/documenteditor/forms/app_dev.js | 2 +- apps/documenteditor/main/app.js | 2 +- apps/documenteditor/main/app_dev.js | 2 +- apps/presentationeditor/main/app.js | 2 +- apps/presentationeditor/main/app.reporter.js | 2 +- apps/presentationeditor/main/app_dev.js | 2 +- apps/presentationeditor/main/app_dev.reporter.js | 2 +- apps/spreadsheeteditor/main/app.js | 2 +- apps/spreadsheeteditor/main/app_dev.js | 2 +- build/Gruntfile.js | 4 ++-- build/appforms.json | 4 ++-- build/bower.json | 2 +- build/common.json | 10 +++++----- build/documenteditor.json | 4 ++-- build/presentationeditor.json | 4 ++-- build/spreadsheeteditor.json | 4 ++-- test/documenteditor/main/index.html | 2 +- test/presentationeditor/main/index.html | 2 +- test/spreadsheeteditor/main/index.html | 2 +- 20 files changed, 29 insertions(+), 29 deletions(-) diff --git a/apps/documenteditor/forms/app.js b/apps/documenteditor/forms/app.js index de1001615..2a10cb3f4 100644 --- a/apps/documenteditor/forms/app.js +++ b/apps/documenteditor/forms/app.js @@ -46,7 +46,7 @@ require.config({ perfectscrollbar: 'common/main/lib/mods/perfect-scrollbar', jmousewheel : '../vendor/perfect-scrollbar/src/jquery.mousewheel', xregexp : '../vendor/xregexp/xregexp-all-min', - socketio : '../vendor/socketio/socket.io.min.js', + socketio : '../vendor/socketio/socket.io.min', allfonts : '../../sdkjs/common/AllFonts', sdk : '../../sdkjs/word/sdk-all-min', api : 'api/documents/api', diff --git a/apps/documenteditor/forms/app_dev.js b/apps/documenteditor/forms/app_dev.js index 5cdc1d891..d85f0b468 100644 --- a/apps/documenteditor/forms/app_dev.js +++ b/apps/documenteditor/forms/app_dev.js @@ -46,7 +46,7 @@ require.config({ perfectscrollbar: 'common/main/lib/mods/perfect-scrollbar', jmousewheel : '../vendor/perfect-scrollbar/src/jquery.mousewheel', xregexp : '../vendor/xregexp/xregexp-all-min', - socketio : '../vendor/socketio/socket.io.min.js', + socketio : '../vendor/socketio/socket.io.min', api : 'api/documents/api', core : 'common/main/lib/core/application', notification : 'common/main/lib/core/NotificationCenter', diff --git a/apps/documenteditor/main/app.js b/apps/documenteditor/main/app.js index 45607f0e9..8e57bd105 100644 --- a/apps/documenteditor/main/app.js +++ b/apps/documenteditor/main/app.js @@ -53,7 +53,7 @@ require.config({ perfectscrollbar: 'common/main/lib/mods/perfect-scrollbar', jmousewheel : '../vendor/perfect-scrollbar/src/jquery.mousewheel', xregexp : '../vendor/xregexp/xregexp-all-min', - socketio : '../vendor/socketio/socket.io.min.js', + socketio : '../vendor/socketio/socket.io.min', allfonts : '../../sdkjs/common/AllFonts', sdk : '../../sdkjs/word/sdk-all-min', api : 'api/documents/api', diff --git a/apps/documenteditor/main/app_dev.js b/apps/documenteditor/main/app_dev.js index 93f883f46..fcf7ac26f 100644 --- a/apps/documenteditor/main/app_dev.js +++ b/apps/documenteditor/main/app_dev.js @@ -53,7 +53,7 @@ require.config({ perfectscrollbar: 'common/main/lib/mods/perfect-scrollbar', jmousewheel : '../vendor/perfect-scrollbar/src/jquery.mousewheel', xregexp : '../vendor/xregexp/xregexp-all-min', - socketio : '../vendor/socketio/socket.io.min.js', + socketio : '../vendor/socketio/socket.io.min', api : 'api/documents/api', core : 'common/main/lib/core/application', notification : 'common/main/lib/core/NotificationCenter', diff --git a/apps/presentationeditor/main/app.js b/apps/presentationeditor/main/app.js index e5a3e3e8a..52ee654b1 100644 --- a/apps/presentationeditor/main/app.js +++ b/apps/presentationeditor/main/app.js @@ -53,7 +53,7 @@ require.config({ perfectscrollbar: 'common/main/lib/mods/perfect-scrollbar', jmousewheel : '../vendor/perfect-scrollbar/src/jquery.mousewheel', xregexp : '../vendor/xregexp/xregexp-all-min', - socketio : '../vendor/socketio/socket.io.min.js', + socketio : '../vendor/socketio/socket.io.min', allfonts : '../../sdkjs/common/AllFonts', sdk : '../../sdkjs/slide/sdk-all-min', api : 'api/documents/api', diff --git a/apps/presentationeditor/main/app.reporter.js b/apps/presentationeditor/main/app.reporter.js index 4fd41f738..e06d14850 100644 --- a/apps/presentationeditor/main/app.reporter.js +++ b/apps/presentationeditor/main/app.reporter.js @@ -48,7 +48,7 @@ require.config({ jquery : '../vendor/jquery/jquery.min', underscore : '../vendor/underscore/underscore-min', xregexp : '../vendor/xregexp/xregexp-all-min', - socketio : '../vendor/socketio/socket.io.min.js', + socketio : '../vendor/socketio/socket.io.min', allfonts : '../../sdkjs/common/AllFonts', sdk : '../../sdkjs/slide/sdk-all-min' }, diff --git a/apps/presentationeditor/main/app_dev.js b/apps/presentationeditor/main/app_dev.js index 74b97e47f..d3765f0d4 100644 --- a/apps/presentationeditor/main/app_dev.js +++ b/apps/presentationeditor/main/app_dev.js @@ -53,7 +53,7 @@ require.config({ perfectscrollbar: 'common/main/lib/mods/perfect-scrollbar', jmousewheel : '../vendor/perfect-scrollbar/src/jquery.mousewheel', xregexp : '../vendor/xregexp/xregexp-all-min', - socketio : '../vendor/socketio/socket.io.min.js', + socketio : '../vendor/socketio/socket.io.min', api : 'api/documents/api', core : 'common/main/lib/core/application', notification : 'common/main/lib/core/NotificationCenter', diff --git a/apps/presentationeditor/main/app_dev.reporter.js b/apps/presentationeditor/main/app_dev.reporter.js index 9dcbaa11d..9334926a1 100644 --- a/apps/presentationeditor/main/app_dev.reporter.js +++ b/apps/presentationeditor/main/app_dev.reporter.js @@ -48,7 +48,7 @@ require.config({ jquery : '../vendor/jquery/jquery', underscore : '../vendor/underscore/underscore', xregexp : '../vendor/xregexp/xregexp-all-min', - socketio : '../vendor/socketio/socket.io.min.js', + socketio : '../vendor/socketio/socket.io.min', allfonts : '../../sdkjs/common/AllFonts' }, shim: { diff --git a/apps/spreadsheeteditor/main/app.js b/apps/spreadsheeteditor/main/app.js index c7a4626f1..d00247a5f 100644 --- a/apps/spreadsheeteditor/main/app.js +++ b/apps/spreadsheeteditor/main/app.js @@ -53,7 +53,7 @@ require.config({ perfectscrollbar: 'common/main/lib/mods/perfect-scrollbar', jmousewheel : '../vendor/perfect-scrollbar/src/jquery.mousewheel', xregexp : '../vendor/xregexp/xregexp-all-min', - socketio : '../vendor/socketio/socket.io.min.js', + socketio : '../vendor/socketio/socket.io.min', allfonts : '../../sdkjs/common/AllFonts', sdk : '../../sdkjs/cell/sdk-all-min', api : 'api/documents/api', diff --git a/apps/spreadsheeteditor/main/app_dev.js b/apps/spreadsheeteditor/main/app_dev.js index b1c5782ed..d807bf1c7 100644 --- a/apps/spreadsheeteditor/main/app_dev.js +++ b/apps/spreadsheeteditor/main/app_dev.js @@ -53,7 +53,7 @@ require.config({ perfectscrollbar: 'common/main/lib/mods/perfect-scrollbar', jmousewheel : '../vendor/perfect-scrollbar/src/jquery.mousewheel', xregexp : '../vendor/xregexp/xregexp-all-min', - socketio : '../vendor/socketio/socket.io.min.js', + socketio : '../vendor/socketio/socket.io.min', api : 'api/documents/api', core : 'common/main/lib/core/application', notification : 'common/main/lib/core/NotificationCenter', diff --git a/build/Gruntfile.js b/build/Gruntfile.js index 480ba124c..a5e9b2649 100644 --- a/build/Gruntfile.js +++ b/build/Gruntfile.js @@ -281,7 +281,7 @@ module.exports = function(grunt) { }, } }); - doRegisterTask('sockjs'); + doRegisterTask('socketio'); doRegisterTask('xregexp'); doRegisterTask('megapixel'); doRegisterTask('jquery'); @@ -673,7 +673,7 @@ module.exports = function(grunt) { grunt.registerTask('deploy-apps-common', ['apps-common-init', 'clean', 'copy', 'imagemin', 'svgmin']); grunt.registerTask('deploy-sdk', ['sdk-init', 'clean', copyTask]); - grunt.registerTask('deploy-sockjs', ['sockjs-init', 'clean', 'copy']); + grunt.registerTask('deploy-socketio', ['socketio-init', 'clean', 'copy']); grunt.registerTask('deploy-xregexp', ['xregexp-init', 'clean', 'copy']); grunt.registerTask('deploy-megapixel', ['megapixel-init', 'clean', 'copy']); grunt.registerTask('deploy-jquery', ['jquery-init', 'clean', 'copy']); diff --git a/build/appforms.json b/build/appforms.json index 7a2f2ed9c..7750b7b67 100644 --- a/build/appforms.json +++ b/build/appforms.json @@ -32,7 +32,7 @@ "perfectscrollbar": "common/main/lib/mods/perfect-scrollbar", "jmousewheel": "../vendor/perfect-scrollbar/src/jquery.mousewheel", "xregexp": "empty:", - "sockjs": "empty:", + "socketio": "empty:", "coapisettings": "empty:", "allfonts": "empty:", "sdk": "empty:", @@ -85,7 +85,7 @@ "coapisettings", "allfonts", "xregexp", - "sockjs" + "socketio" ] }, "gateway": { diff --git a/build/bower.json b/build/bower.json index c99679ee9..e23eff4dc 100644 --- a/build/bower.json +++ b/build/bower.json @@ -10,7 +10,7 @@ "requirejs-text": "~2.0.5", "less": "~1.5.0", "bootstrap": "~3.0.3", - "sockjs": "~0.3.2", + "socketio": "~4.5.3", "perfect-scrollbar": "latest" } } \ No newline at end of file diff --git a/build/common.json b/build/common.json index e6dae49ed..238c9e3f9 100644 --- a/build/common.json +++ b/build/common.json @@ -180,14 +180,14 @@ } } }, - "sockjs": { + "socketio": { "clean": [ - "../deploy/web-apps/vendor/sockjs" + "../deploy/web-apps/vendor/socketio" ], "copy": { "script": { - "src": "../vendor/sockjs/sockjs.min.js", - "dest": "../deploy/web-apps/vendor/sockjs/sockjs.min.js" + "src": "../vendor/socketio/socket.io.min.js", + "dest": "../deploy/web-apps/vendor/socketio/socket.io.min.js" } } }, @@ -272,7 +272,7 @@ "deploy-api", "deploy-apps-common", "deploy-sdk", - "deploy-sockjs", + "deploy-socketio", "deploy-xregexp", "deploy-requirejs", "deploy-megapixel", diff --git a/build/documenteditor.json b/build/documenteditor.json index 86d0f48ce..3ebde78d9 100644 --- a/build/documenteditor.json +++ b/build/documenteditor.json @@ -30,7 +30,7 @@ "perfectscrollbar": "common/main/lib/mods/perfect-scrollbar", "jmousewheel": "../vendor/perfect-scrollbar/src/jquery.mousewheel", "xregexp": "empty:", - "sockjs": "empty:", + "socketio": "empty:", "coapisettings": "empty:", "allfonts": "empty:", "sdk": "empty:", @@ -83,7 +83,7 @@ "coapisettings", "allfonts", "xregexp", - "sockjs" + "socketio" ] }, "gateway": { diff --git a/build/presentationeditor.json b/build/presentationeditor.json index f66c8b22f..d7b9d1279 100644 --- a/build/presentationeditor.json +++ b/build/presentationeditor.json @@ -30,7 +30,7 @@ "perfectscrollbar": "common/main/lib/mods/perfect-scrollbar", "jmousewheel": "../vendor/perfect-scrollbar/src/jquery.mousewheel", "xregexp": "empty:", - "sockjs": "empty:", + "socketio": "empty:", "coapisettings": "empty:", "allfonts": "empty:", "sdk": "empty:", @@ -83,7 +83,7 @@ "coapisettings", "allfonts", "xregexp", - "sockjs" + "socketio" ] }, "gateway": { diff --git a/build/spreadsheeteditor.json b/build/spreadsheeteditor.json index df58fe594..1ec8adb39 100644 --- a/build/spreadsheeteditor.json +++ b/build/spreadsheeteditor.json @@ -30,7 +30,7 @@ "perfectscrollbar": "common/main/lib/mods/perfect-scrollbar", "jmousewheel": "../vendor/perfect-scrollbar/src/jquery.mousewheel", "xregexp": "empty:", - "sockjs": "empty:", + "socketio": "empty:", "coapisettings": "empty:", "allfonts": "empty:", "sdk": "empty:", @@ -83,7 +83,7 @@ "coapisettings", "allfonts", "xregexp", - "sockjs" + "socketio" ] }, "gateway": { diff --git a/test/documenteditor/main/index.html b/test/documenteditor/main/index.html index b1ef1a729..e31e3fcf6 100644 --- a/test/documenteditor/main/index.html +++ b/test/documenteditor/main/index.html @@ -77,7 +77,7 @@ - + diff --git a/test/presentationeditor/main/index.html b/test/presentationeditor/main/index.html index 4ee99595f..39f61c785 100644 --- a/test/presentationeditor/main/index.html +++ b/test/presentationeditor/main/index.html @@ -147,7 +147,7 @@ - + diff --git a/test/spreadsheeteditor/main/index.html b/test/spreadsheeteditor/main/index.html index 9ee008707..f5da45b3b 100644 --- a/test/spreadsheeteditor/main/index.html +++ b/test/spreadsheeteditor/main/index.html @@ -113,7 +113,7 @@ - + From 97d106c3fab022a80eed427f782c4f7269614689 Mon Sep 17 00:00:00 2001 From: OVSharova Date: Tue, 25 Oct 2022 15:50:27 +0300 Subject: [PATCH 26/32] bug 59288 --- .../main/app/controller/DocumentHolder.js | 15 ++++++++++++--- .../main/app/view/DocumentHolder.js | 8 +++++++- apps/spreadsheeteditor/main/locale/en.json | 1 + 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js b/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js index e26c5b81e..a2c425f69 100644 --- a/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js +++ b/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js @@ -216,6 +216,7 @@ define([ view.pmiFilterCells.menu.on('item:click', _.bind(me.onFilterCells, me)); view.pmiReapply.on('click', _.bind(me.onReapply, me)); view.pmiCondFormat.on('click', _.bind(me.onCondFormat, me)); + view.mnuRefreshPivot.on('click', _.bind(me.onRefreshPivot, me)); view.mnuGroupPivot.on('click', _.bind(me.onGroupPivot, me)); view.mnuUnGroupPivot.on('click', _.bind(me.onGroupPivot, me)); view.pmiClear.menu.on('item:click', _.bind(me.onClear, me)); @@ -576,6 +577,12 @@ define([ })).show(); }, + onRefreshPivot: function(){ + if (this.api) { + this.propsPivot.asc_refresh(this.api); + } + }, + onGroupPivot: function(item) { item.value=='grouping' ? this.api.asc_groupPivot() : this.api.asc_ungroupPivot(); }, @@ -2267,13 +2274,13 @@ define([ seltype !== Asc.c_oAscSelectionType.RangeChart && seltype !== Asc.c_oAscSelectionType.RangeChartText && seltype !== Asc.c_oAscSelectionType.RangeShapeText && seltype !== Asc.c_oAscSelectionType.RangeSlicer)) { if (!documentHolder.ssMenu || !showMenu && !documentHolder.ssMenu.isVisible()) return; - + this.propsPivot = cellinfo.asc_getPivotTableInfo(); var iscelledit = this.api.isCellEdited, formatTableInfo = cellinfo.asc_getFormatTableInfo(), isinsparkline = (cellinfo.asc_getSparklineInfo()!==null), isintable = (formatTableInfo !== null), ismultiselect = cellinfo.asc_getMultiselect(), - inPivot = !!cellinfo.asc_getPivotTableInfo(); + inPivot = !!this.propsPivot; documentHolder.ssMenu.formatTableName = (isintable) ? formatTableInfo.asc_getTableName() : null; documentHolder.ssMenu.cellColor = xfs.asc_getFillColor(); documentHolder.ssMenu.fontColor = xfs.asc_getFontColor(); @@ -2294,6 +2301,7 @@ define([ documentHolder.pmiFilterCells.setVisible(iscellmenu && !iscelledit && !diagramOrMergeEditor && !inPivot); documentHolder.pmiReapply.setVisible((iscellmenu||isallmenu) && !iscelledit && !diagramOrMergeEditor && !inPivot); documentHolder.pmiCondFormat.setVisible(!iscelledit && !diagramOrMergeEditor); + documentHolder.mnuRefreshPivot.setVisible(iscellmenu && !iscelledit && !diagramOrMergeEditor && inPivot); documentHolder.mnuGroupPivot.setVisible(iscellmenu && !iscelledit && !diagramOrMergeEditor && inPivot); documentHolder.mnuUnGroupPivot.setVisible(iscellmenu && !iscelledit && !diagramOrMergeEditor && inPivot); documentHolder.ssMenu.items[12].setVisible((iscellmenu||isallmenu||isinsparkline) && !iscelledit); @@ -2325,7 +2333,7 @@ define([ /** coauthoring begin **/ var celcomments = cellinfo.asc_getComments(); // celcomments===null - has comment, but no permissions to view it - documentHolder.ssMenu.items[19].setVisible(iscellmenu && !iscelledit && this.permissions.canCoAuthoring && this.permissions.canComments && celcomments && (celcomments.length < 1)); + documentHolder.ssMenu.items[20].setVisible(iscellmenu && !iscelledit && this.permissions.canCoAuthoring && this.permissions.canComments && celcomments && (celcomments.length < 1)); documentHolder.pmiAddComment.setVisible(iscellmenu && !iscelledit && this.permissions.canCoAuthoring && this.permissions.canComments && celcomments && (celcomments.length < 1)); /** coauthoring end **/ documentHolder.pmiCellMenuSeparator.setVisible(iscellmenu && !iscelledit || isrowmenu || iscolmenu || isallmenu); @@ -2394,6 +2402,7 @@ define([ var canGroup = this.api.asc_canGroupPivot(); documentHolder.mnuGroupPivot.setDisabled(isPivotLocked || !canGroup || this._state.wsLock); documentHolder.mnuUnGroupPivot.setDisabled(isPivotLocked || !canGroup || this._state.wsLock); + documentHolder.mnuRefreshPivot.setDisabled(isPivotLocked || this._state.wsLock); } if (showMenu) this.showPopupMenu(documentHolder.ssMenu, {}, event); diff --git a/apps/spreadsheeteditor/main/app/view/DocumentHolder.js b/apps/spreadsheeteditor/main/app/view/DocumentHolder.js index 1cb8e067e..a1474e39e 100644 --- a/apps/spreadsheeteditor/main/app/view/DocumentHolder.js +++ b/apps/spreadsheeteditor/main/app/view/DocumentHolder.js @@ -335,6 +335,10 @@ define([ caption : me.txtReapply }); + me.mnuRefreshPivot = new Common.UI.MenuItem({ + caption : me.txtRefresh + }); + me.mnuGroupPivot = new Common.UI.MenuItem({ caption : this.txtGroup, value : 'grouping' @@ -584,6 +588,7 @@ define([ me.pmiSortCells, me.pmiFilterCells, me.pmiReapply, + me.mnuRefreshPivot, me.mnuGroupPivot, me.mnuUnGroupPivot, {caption: '--'}, @@ -1319,7 +1324,8 @@ define([ tipMarkersDash: 'Dash bullets', chartDataText: 'Select Chart Data', chartTypeText: 'Change Chart Type', - txtGetLink: 'Get link to this range' + txtGetLink: 'Get link to this range', + txtRefresh: 'Refresh' }, SSE.Views.DocumentHolder || {})); }); \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/locale/en.json b/apps/spreadsheeteditor/main/locale/en.json index a279d12bd..4d6ab42f0 100644 --- a/apps/spreadsheeteditor/main/locale/en.json +++ b/apps/spreadsheeteditor/main/locale/en.json @@ -2242,6 +2242,7 @@ "SSE.Views.DocumentHolder.txtPaste": "Paste", "SSE.Views.DocumentHolder.txtPercentage": "Percentage", "SSE.Views.DocumentHolder.txtReapply": "Reapply", + "SSE.Views.DocumentHolder.txtRefresh": "Refresh", "SSE.Views.DocumentHolder.txtRow": "Entire row", "SSE.Views.DocumentHolder.txtRowHeight": "Set Row Height", "SSE.Views.DocumentHolder.txtScientific": "Scientific", From 36c3aeb576bf7fad0cf64dcc3569b43635e44448 Mon Sep 17 00:00:00 2001 From: Alexei Koshelev Date: Tue, 25 Oct 2022 17:11:56 +0300 Subject: [PATCH 27/32] [DE] Added item "Show as picture" in context menu --- .../main/app/controller/DocumentHolder.js | 7 +++++++ .../main/app/view/DocumentHolder.js | 13 +++++++++++++ apps/presentationeditor/main/locale/en.json | 1 + apps/presentationeditor/main/locale/ru.json | 1 + 4 files changed, 22 insertions(+) diff --git a/apps/presentationeditor/main/app/controller/DocumentHolder.js b/apps/presentationeditor/main/app/controller/DocumentHolder.js index 12e5e4da7..989e31790 100644 --- a/apps/presentationeditor/main/app/controller/DocumentHolder.js +++ b/apps/presentationeditor/main/app/controller/DocumentHolder.js @@ -370,6 +370,7 @@ define([ view.menuRemoveHyperlinkPara.on('click', _.bind(me.removeHyperlink, me)); view.menuRemoveHyperlinkTable.on('click', _.bind(me.removeHyperlink, me)); view.menuChartEdit.on('click', _.bind(me.editChartClick, me, undefined)); + view.menuSaveAsPicture.on('click', _.bind(me.saveAsPicture, me)); view.menuAddCommentPara.on('click', _.bind(me.addComment, me)); view.menuAddCommentTable.on('click', _.bind(me.addComment, me)); view.menuAddCommentImg.on('click', _.bind(me.addComment, me)); @@ -1351,6 +1352,12 @@ define([ }, + saveAsPicture: function() { + if(this.api) { + this.api.asc_SaveDrawingAsPicture(); + } + }, + /** coauthoring begin **/ addComment: function(item, e, eOpt){ if (this.api && this.mode.canCoAuthoring && this.mode.canComments) { diff --git a/apps/presentationeditor/main/app/view/DocumentHolder.js b/apps/presentationeditor/main/app/view/DocumentHolder.js index 49d6c7132..5c718eb4e 100644 --- a/apps/presentationeditor/main/app/view/DocumentHolder.js +++ b/apps/presentationeditor/main/app/view/DocumentHolder.js @@ -1795,6 +1795,14 @@ define([ }) }); + me.menuSaveAsPicture = new Common.UI.MenuItem({ + caption : me.textSaveAsPicture + }); + + var menuSaveAsPictureSeparator = new Common.UI.MenuItem({ + caption : '--' + }); + /** coauthoring begin **/ me.menuAddCommentPara = new Common.UI.MenuItem({ iconCls: 'menu__icon btn-menu-comments', @@ -2253,6 +2261,7 @@ define([ me.menuChartEdit.setVisible(_.isUndefined(value.imgProps) && !_.isUndefined(value.chartProps) && (_.isUndefined(value.shapeProps) || value.shapeProps.isChart)); me.menuChartAdvanced.setVisible(_.isUndefined(value.imgProps) && !_.isUndefined(value.chartProps) && (_.isUndefined(value.shapeProps) || value.shapeProps.isChart)); menuImgShapeSeparator.setVisible(me.menuImageAdvanced.isVisible() || me.menuShapeAdvanced.isVisible() || me.menuChartEdit.isVisible() || me.menuChartAdvanced.isVisible()); + /** coauthoring begin **/ me.menuAddCommentImg.setVisible(me.api.can_AddQuotedComment()!==false && me.mode.canCoAuthoring && me.mode.canComments); menuCommentSeparatorImg.setVisible(me.menuAddCommentImg.isVisible()); @@ -2276,6 +2285,7 @@ define([ me.menuImgCut.setDisabled(disabled || !cancopy); me.menuImgPaste.setDisabled(disabled); menuImgShapeArrange.setDisabled(disabled); + me.menuSaveAsPicture.setDisabled(disabled); me.menuAddToLayoutImg.setDisabled(disabled); }, items: [ @@ -2296,6 +2306,8 @@ define([ me.menuShapeAdvanced ,me.menuChartEdit ,me.menuChartAdvanced + ,menuSaveAsPictureSeparator + ,me.menuSaveAsPicture /** coauthoring begin **/ ,menuCommentSeparatorImg, me.menuAddCommentImg, @@ -2411,6 +2423,7 @@ define([ txtSlide : 'Slide', cellAlignText : 'Cell Vertical Alignment', advancedShapeText : 'Shape Advanced Settings', + textSaveAsPicture : 'Save as picture', /** coauthoring begin **/ addCommentText : 'Add Comment', /** coauthoring end **/ diff --git a/apps/presentationeditor/main/locale/en.json b/apps/presentationeditor/main/locale/en.json index fe12ef131..37f5669d0 100644 --- a/apps/presentationeditor/main/locale/en.json +++ b/apps/presentationeditor/main/locale/en.json @@ -1592,6 +1592,7 @@ "PE.Views.DateTimeDialog.textUpdate": "Update automatically", "PE.Views.DateTimeDialog.txtTitle": "Date & Time", "PE.Views.DocumentHolder.aboveText": "Above", + "PE.Views.DocumentHolder.textSaveAsPicture": "Save as picture", "PE.Views.DocumentHolder.addCommentText": "Add Comment", "PE.Views.DocumentHolder.addToLayoutText": "Add to Layout", "PE.Views.DocumentHolder.advancedChartText": "Chart Advanced Settings", diff --git a/apps/presentationeditor/main/locale/ru.json b/apps/presentationeditor/main/locale/ru.json index 2a6f5dea6..3ce1d6ed6 100644 --- a/apps/presentationeditor/main/locale/ru.json +++ b/apps/presentationeditor/main/locale/ru.json @@ -1592,6 +1592,7 @@ "PE.Views.DateTimeDialog.textUpdate": "Обновлять автоматически", "PE.Views.DateTimeDialog.txtTitle": "Дата и время", "PE.Views.DocumentHolder.aboveText": "Выше", + "PE.Views.DocumentHolder.textSaveAsPicture": "Сохранить как картинку", "PE.Views.DocumentHolder.addCommentText": "Добавить комментарий", "PE.Views.DocumentHolder.addToLayoutText": "Добавить в макет", "PE.Views.DocumentHolder.advancedChartText": "Дополнительные параметры диаграммы", From 8de0da306a02d8ac3d4297afe9d77c3c54000a79 Mon Sep 17 00:00:00 2001 From: Kirill Volkov Date: Tue, 25 Oct 2022 18:27:09 +0300 Subject: [PATCH 28/32] Changed icons Changed home, print, save icons --- .../resources/img/toolbar/1.25x/btn-home.png | Bin 653 -> 338 bytes .../resources/img/toolbar/1.25x/btn-print.png | Bin 310 -> 185 bytes .../resources/img/toolbar/1.25x/btn-save.png | Bin 295 -> 204 bytes .../resources/img/toolbar/1.5x/btn-home.png | Bin 750 -> 360 bytes .../resources/img/toolbar/1.5x/btn-print.png | Bin 328 -> 195 bytes .../resources/img/toolbar/1.5x/btn-save.png | Bin 296 -> 219 bytes .../resources/img/toolbar/1.75x/btn-home.png | Bin 1012 -> 417 bytes .../resources/img/toolbar/1.75x/btn-print.png | Bin 351 -> 214 bytes .../resources/img/toolbar/1.75x/btn-save.png | Bin 330 -> 244 bytes .../main/resources/img/toolbar/1x/btn-home.png | Bin 511 -> 287 bytes .../resources/img/toolbar/1x/btn-print.png | Bin 297 -> 178 bytes .../main/resources/img/toolbar/1x/btn-save.png | Bin 256 -> 194 bytes .../main/resources/img/toolbar/2x/btn-home.png | Bin 968 -> 511 bytes .../resources/img/toolbar/2x/btn-print.png | Bin 482 -> 308 bytes .../main/resources/img/toolbar/2x/btn-save.png | Bin 455 -> 315 bytes 15 files changed, 0 insertions(+), 0 deletions(-) diff --git a/apps/common/main/resources/img/toolbar/1.25x/btn-home.png b/apps/common/main/resources/img/toolbar/1.25x/btn-home.png index 57f8f883cd7b8ee21eb8e44d11466d10d1968362..f7e24f02539dc9db8f1257545431aff296a5fee8 100644 GIT binary patch delta 312 zcmV-80muH01=0eLBYy!INklB?wJ{+h{MqRQY3|fKB4eBmhew27e0JB+kq)V2MUX35Ajy z3n9k45{gQ$=nsefF#90DxJ(F#{&4yrf^j*M$pb8zlc}ROx9~KXJiwAOndsfZfe)Dl zNy%T8W0YAC^b}l`qtDDijVlGQDHzJ=;TyLCh`oZ*Q7{q^byk*PluAKDVz|LbKv=;@ zKuUvw6ITO)6EQsjQo6?mDcx%z4dew7Zew%qDM@2N2bZe?^JG%heMF*(%MvSa`N0t!h)K~z{r?Uc<;12GUr zLkZ*r1wb>Q2SCsQ3O7V4p#*3Kap&g>+=#^TK4)hcyklnr0e=Z8PkKsr?DcpOk4Jw& z(=@;Ccermq2NNY;;(ZXSx(a*vjC$(@_i+$W;(~kljN%3NF`CzNDBGyn^3i=)d?``l zz-=@h+fSi*H2;f3&}MD(C%A>j?ei0ku}YLUQ=7HTpWqfAr>CZQ!ZAkgbuL54Nwego z0*(u`vFb645`Q~&oQzBKV;5*tkJ&P;CyvrnpF`BRdZtK}*l9g+gwgmR3iV7ho-E-T zdx|mus&@cNFdKZ8tL+c6s zvOd15y$eA2#+C>86DDYDr3-*WzOlst=9^o^2^#4FAkXL)-|-crLUzzL7P*TaD@5yQ z-8&N9;yb>g$P3xQ8oTJ{TOnFc>)!c6a;6QerI2jh4h_Is3Tc;I;0DtpmI}E^PoG?) z;_EEr25x=)8pWm%&!!N!Zifb7Q%LKk5XJvpA#;4oRJ>G3K3DIjJZ{|%4Zs}VGDWG7 ze6HT_E!+tY6|c}U!)RVITepK}jg`E@?me7gG%wjMxqv|DU*Pkt&t~)ixi@_9wB$^} P00000NkvXXu0mjf_Ng5U diff --git a/apps/common/main/resources/img/toolbar/1.25x/btn-print.png b/apps/common/main/resources/img/toolbar/1.25x/btn-print.png index 0dcdf890e74c864821d65d4d07d7eba85c423b0d..ac9fc12f5437b962cd93c4691207d8af18de3822 100644 GIT binary patch delta 157 zcmV;O0Al~P0=WT@B!7TOL_t(|+U=IX4Zt7_1KEGcjN-Q6ei}PLMUhY9hd?KAlC_L6 zDse9mE7%JF1UNzw!RGys2zKtb$Vnn>F6g`nxsdXLrb2=4@4=pfCZSJ}s!&#B%!^d} zNJ^yAM;MVx)yj&Px#1ZP1_ zK>z@;j|==^1poj5%Sl8*RCodHm4OO_FbqUb+5i8d`IF2J3t6|uoa;a(4+=_?G)H?a zkR-`bmUSpG7Lcgwq8#)ZuXVt|#up(}ju$`UCfrtt^##Cr#DB(j&$9K!_8+E+cl|=2 zbG8oai)fvhZDbUq1XX%MCj6Oc1p~=j>uh*JF8#7==X+SLH92c|FZZ#Z9uoAEaU+8E zE{9f#;Inb2Ni}tPNZUAbgPB};tKsEr^U)ot@nK3+MMQK*YW%nP$kDpQo8k!(aE2G~ h2x)jhk|c+C0u*>KE3E^LS~may002ovPDHLkV1js;cPan? diff --git a/apps/common/main/resources/img/toolbar/1.25x/btn-save.png b/apps/common/main/resources/img/toolbar/1.25x/btn-save.png index 9d7fe5b5fb80d614ed87f65889cfafcae787a0af..28f0e9caa307b36c81a53b2327564353a80a3667 100644 GIT binary patch delta 176 zcmV;h08js?0?YxBB!81hL_t(|+U?d$3cw%?1W=FS(Y$$%GS!`=3Qp8bI|HFE0`?(( zQc@I!jnx8Ctv@pp05EWA{h5WpjeYsP!eZK=^F0wM1ci$V}s2^Io&B`E|EL=Zu?pYfw(`1CXW ebqp(t^3yzvAt$!B%$l130000Px#1ZP1_ zK>z@;j|==^1poj5yh%hsRCodHm0=FUAP9wV*+F(RZ>~3C(z(PCW__$bnwBpir497) zekepi5TKM6420Cb2!NRjW0V$<#-^ik9l9=~W@NH4*XX+T$bTL)s1YF(U zh>+=HW?#Tzq`z-wtbZm;XZX%ECrx^PA_JzzH=hdhI;(f&N!Xx=V-4luK^Nf`Mv#57 zbjUS~?Gspo)${P4VLvQu?DfPMIU8Z*Y+S~Owb?8AZ?3vnTmQJZDg{AsU*5yjJjA3G S_GSP8002ovP6b4+LSTXpDR4&s diff --git a/apps/common/main/resources/img/toolbar/1.5x/btn-home.png b/apps/common/main/resources/img/toolbar/1.5x/btn-home.png index 1f222514450ea347087a48357af77681d7d0b0e9..1650fd23ffb675491dd1fd6507f19ceddb69f894 100644 GIT binary patch delta 334 zcmV-U0kQt>1?U2hBYy!eNklY4g-tD`bUWnuii<$_aemW6R=x|9iFly>=t5&XP3MZKrO5- ztYu?Z37{6%7S>JkDu6Sm{ie_XN&%cX?Kg!U0ZLz->zngh*nbhA^u@W(o!4pt7**H- zGZE|rFsiTvNb=6ec9j&+v3N|oCU?9#Z*<}nTv${XTl{XRbmA3USX3BW{BEg%jRm`h z-Qh4}D;YcPVRtyp*g9I$Q~6HGl}K9B6WxDbawXESLkXN6Tj|EH9zCiz{Y1U|-= zxhT#Yzl)T>$w$~Sm_n(5QH4?gQxxhm(G1vU)B~7e9}P^g&%g}Kz`qTQbz{u?1C<+N g-e<8`EY`Q{4WEPh`BZoRUjP6A07*qoM6N<$f+(bx(EtDd delta 727 zcmV;|0x13H0`3KnBYyw{XF*Lt006O%3;baP00009a7bBm000XT000XT0n*)m`~Uy| z8FWQhbW?9;ba!ELWdLwtX>N2bZe?^JG%heMF*(%MvSa`N0&7V`K~z{r?U>C?LQxQf zK@wvDPy|v4E@(vQfw&=70Ae4u;SO4`1%ewqN8a2FlevHV$baU2$(O)=_i^XI2_bZD z#eToPiRbVPUk(rJ@rEh%8NQgcVo!x(w~bRS)Zz_OAj57Or_EZGr!axMQ_Hm~ykRm< zpoMGR-l(g^4ake{rug3H6hKdS0ogVb2UJ~T?`s(O3FM3fp6hJ9$1 z&{g#=Mc4Qf-hV-%3%MrOi|XwS>o#jbQN2shHGYRZXyF^MfU+-JZ*Lf* zuJJqULA!@V-!qAQh=Z4F5-a9FpVUmhk!yG7`B0x z7Yoc#U&e1J*DMm4d+dGOFRvTWLqLI{zKq|Hq)-BLkG+rkg>a8W21}U=oHL+@fF+~? z=Lq*$Sjn8;e^p%b_F4ma2*^t2^!}^jnzz>)?ztIyi2rln`33M1SdU-rlGp$M002ov JPDHLkV1f!rV*UUC diff --git a/apps/common/main/resources/img/toolbar/1.5x/btn-print.png b/apps/common/main/resources/img/toolbar/1.5x/btn-print.png index da832c324eb5bc5b80c2e927001a3635b01cd989..27245d77a3bd390b2b85af5ee71a1297d849bd72 100644 GIT binary patch delta 167 zcmV;Y09gOX0>c52B!7xYL_t(|+U=M@3cw%?1pEI_<|*6uUZ`dh1f78#MF)*0UKaqs zM#K|JMr0?I6v`8huvUzHSG{5^!aE8(Ih)RDGiR-wR^tVzu4CxzxEjTOg*(JYg^%0e zV}&aVk741;!edsr@>!Y@E_;>`Mi}9}g}-iPM>t(tI>Ju7NFcYgyYO*89smHak{b-# VVmSG~o!|ff002ovPDHLkV1felNfH16 delta 301 zcmV+|0n+}%0muT7B!3BTNLh0L01FcU01FcV0GgZ_00001b5ch_0Itp)=>Px#1ZP1_ zK>z@;j|==^1poj5-AP12RCodHmSGNqAPj|{%kF>NwexPFDut{ zCH-vZTf6F)I&JN4*E)QQ;1ItmDVT8WrGrIo4eB|!KZAbfqVk)ydR+8rE$K40iG9My z&bF3x8GFWbB_^FNEg<;MG{H~LnIb* t1`PONVC#v;)ey4s#A7&w5JCufQ#MyDk_Px#1ZP1_ zK>z@;j|==^1poj5y-7qtRCodHmeC4>FbqX6V;|zD_0QWs$;{S=G16g@`e3~Wf|8oX z17ZpgLdXKtJtPoXw;_m#REbgd*pNU5IV--`3lh@$=2p()XMeq9rK7@1K~Op>+^;F= zjIdG=kj@DA`>?b}*pgQYKGMgVI)p9x{`^}SP6Tss?PCdtn*Q16ftx|$)j1-pKLGFH zBaQeEA*sHjadT?zXxz-Kj+pM!kEoLSu9qfMH{4TKOvF31bvT9X?v T{K>HZ00003GYA&gAnZPx9#I4ut@KN8h5B2YNxz==NeL5A=eb(U;cJ z5fDe7Y3&Lq9RYFV@Lar>8a<+41SHDQ+E5TkjULgj03=y=w0~Btme~A6fVTA9fTjT@ zHa`VGJA0mMXj)Lhxbz41_Q{xOK?&p1AK2T+G1E$(<>Uq15}ZaDilSMk8_C4#1V%z6vC`xb7(sR|d&%?br9Cj3*-RdROMBop0bi1bUDp}d zNfWS_JU;+}Gk>tt6_#wDWXn{ m-&v8&IcGANOeWL4^ajn6Rcj>V#6AE3002ovPDHLkU;%;(#j(}^ delta 991 zcmV<510ejN1M~-wBYyw{XF*Lt006O%3;baP00009a7bBm000XT000XT0n*)m`~Uy| z8FWQhbW?9;ba!ELWdLwtX>N2bZe?^JG%heMF*(%MvSa`N193@2K~!i%?U&mwEkO{5 zg%B=?LtG*eui!>_ONa0VT;R^>8Sn%=0T<#XWJJhV;^#*18EoI9k7E;#y%tmuvc>W zFbj_%S5euXgGG1;%ybqWLkrt;(2Gynhf`>iqO!jT?|_+}LJ#(P@kvX$g_?*PxC5_E zAICf69WcXNsDIqR9e5pDKXBZe*J=s;qdy^MKf*;w`2GOd&+$9h3GaXj`A2_3@(33p z`}zI=3CHhXJh#;@@J_K`pJzA)EtBvGYRnnTzH__-Hpn~0etn+d6tppu@ChnsF#FEQ zh1JGhwESeuK#ys74>k4#W>qWifR3y-_M+t{V+MM$(|_9O~R;DfbR&j7#zb+<;ze z>^eM$O0txvuy@KO+=5-$gf=;?rQAE9(cUSSa0_~IO>RP)oYqp_MqHBl2`FI=UO`=} zv6OoU6o2EA%uj$9mvRkWL8Y;jHxZZQCD@0oQtllP#wB?PdU3gCmGT&`B(ntn2FX$$ z9nLGsEWvSHiOEuKX)MWhLWzdfQf}rnmgK&04Y9S9D{)Dtt1zI!rABZsyH8chB|a|6 zWEFaAbw<|_xtFCX<;44yOqXGRfqjhNeHHH&N`E>8G37VM%NK}U&Vw{&e%i7 zJB~9k^a!zs&|{p5AxDheg>R5$kZnC^l^DV?mCckUHl|99jPqCdJKRHi7rsIM_aFoa zRbr@xgDE7mns2NUBjfy4{toxT1YrL~_(I2$7#kOSBJz9)2|MRA*Np)5<^VCIwXde ze)Zoa#*^c5Oz1Sv1kV9!x=2V?Vmvrbq#39+*^mytgxDq}W=Kq|#0-gvm6-oCG4P|o zFUaxM#6ZS*^J&;a_mq8W&jioPM}uFGv{)tvFwUD#1F~hH)?`CE_>yBPF-dh#*|+vg z@SIC3F-c_0K&{C}iGAi;?K-9OnQN)7qlfBhpSf1MPAPrnT1KPM#5c-vYV04lvAF;M N002ovPDHLkV1k>h(s}>@ diff --git a/apps/common/main/resources/img/toolbar/1.75x/btn-print.png b/apps/common/main/resources/img/toolbar/1.75x/btn-print.png index f427948fb88baaf62609b4282b05af15d7386dee..1ae4e22da31ba8c11a6bf72c549df59c24ed25e8 100644 GIT binary patch delta 186 zcmV;r07d`b0@eYLB!8VrL_t(|+U?m}3cw%?1yT3E$t)%921;u)u@B~gzaob~jE-T9 zF~)o;v9APHR1cDwkxYVsNeDOr800M2KEenij4;qXR0k?|DzF0~or{Sp{sj4^An0j2)qwoPx#1ZP1_ zK>z@;j|==^1poj5^hrcPRCodH*HI3FFc1XL!Fc~G(wnSkG&Z^m+fE@E=Oz3Y3Uz3^ zEg&Ky@@wYhGUA#sh?&jC8P=Caf52hezaO*!A=~}}aVeO9f`17pn1C0ISAhVoDtYZU ztAkg8p1*es+NUbjunNMyhpj+a-h0-j(oq3zIx3*rS}+q%Vp`x}T6_ZvCZJ#f3MP;Z zMyG4|WqOa(b=N+IE#28?YAOY;XxH+^cHMupjGorLP){&_vGMbQDcI*YV9tBC6n0H< zJM#U^@_A1-aXqWP!y+%sURI1yr(NqekDh0A5rhr>_3dUjAodOXNIj0-F WTzhRE+Ip=30000ws()KE_}U8K!5& zE(IDhO!!!xA5JjPlo4t>u#?-^=~bazqom?j3z0MH>#pb@RtV%T`n>NDhjNdB|G|{& z&0Yr?UOTELGX3$|WZ+n<3YLHp&1)FbuQhMhcmC_WVYl3jnKS?9Ys+&~W#u)6WHA7N Mr>mdKI;Vst08p=7@&Et; delta 303 zcmeyuc#3I)NU}oXkrghb7(7*O7r?V?Xzw zL{=dGzNd?0NCo5D>x^8@1_CY@mws`$x5C{&?}6YpH<2YNNoW1MS}O%^Me%-Y7C7tT z@?`yzRExwtIw$T8AaFvBp%#0IGMDb^`wW*zbb(^?`;21mv=^0PYNu48OQ{ZcSvM_C z*jtkMFvMF}#Nrq%n^u|Bni5mCpgHqWwl=zxC$XIVRR1pj1S4=4w} z!1sl4J)j)?0$((5Vx6oZS|20mT)2sKvW94Vyh7*Jnz&Aj{(PJXw@TNEYY+W7CvO|e z<6)#8jz>17jW?DL4aQ->TI=)ECXiPy#B2Zbbk9002ov JPDHLkV1mL6bkYC- delta 485 zcmVs&WB>pGd`Uz>R7gv$kx>r9AP@yT zm;UL+JeB@=wYo$1k)3wB#8o_wbyS%q|I0xrYa)C1=EP;%=Fi%r5c7a&mWsF)TSED<`HUvr8;lIb~Wh zV^&TKOD31h$|=K=M^?&-wB+G}m2yg2GSZdHh7NQk!{J>yp>>k3q)@qMSveZY65yL! z()U&FY019n2!C^Y1EnOq*xzT`gS5^P_j&caZT+$o*Z^L`G9~Wwt@CDmweVXJ$Aeg8 zDTH|*oN=@D)xvM>=5PaaPGMK&jGLR!TL9hf=G)CnA#h+VY~stlXU zjt2zao^Jf&&?Hi2*j#ozAo%ul;}?e}5msF^7(VD`JcTfu;$s!p8M<%I@}Q&nQAD=a bXS;j>({WPbO?6Ug00000NkvXXu0mjfkoDkT diff --git a/apps/common/main/resources/img/toolbar/1x/btn-print.png b/apps/common/main/resources/img/toolbar/1x/btn-print.png index 89e8aa53ba2bb4b56cb257ec9c7f43b34caafb84..626a4f244863f8eae732cf0c24a58d49b64f4a76 100644 GIT binary patch delta 150 zcmV;H0BQfJ0W^ zsq8H{W$a}D48BYO#HOAOh#fuY0U29qyGdImyAk-ah+4*+MF4aPxB}_{rhmbenE3=$ zV}=1#r`Q9OrubUG(N+eKju{3}*(&KbN%~z}DxJ~;5iWfX_z!a@WdHyG07*qoM6N<$ Eg42{e{r~^~ delta 270 zcmV+p0rCE_0jUCzB!3BTNLh0L01FcU01FcV0GgZ_00001b5ch_0Itp)=>Px#1ZP1_ zK>z@;j|==^1poj5zDYzuRCodHlz|F^FbqUb+5i8d`IF2Jg`;bFnH47JgF>}Qdi0tC z4>x65hl{afi@E#ansmKS&68qwfigCVnQ?JgAlnLPi#g`Y9)GrV`|eW3H0@4XmdVZ7 z8WyA6IkVXaBSH%;ffG(-TEPHOlU(wd@nC)^o~`}$nc?|M}yEYT>2hdc5H(R%*H UF!|1H00000Ne4wvM6N<$g2dNxYybcN diff --git a/apps/common/main/resources/img/toolbar/1x/btn-save.png b/apps/common/main/resources/img/toolbar/1x/btn-save.png index 7f9b5fbbabbd06030bac8f566c66852e88a06531..b7c188efbd7d0ab0e68a222c85d4adfcff82c9be 100644 GIT binary patch delta 166 zcmV;X09pTl0>S~1B!7uXL_t(|+U?ar4uBvG1VEm`Py5t9W%W>!+5>I_2cq4i5s{d| z*w9+#XVJSrlrS#?px`1b5Mk_V%yrv{5J32`kDKeZ5!nT7ERq4*l}65h2+w=CPXRsD zA&~)QzxWhL{>uXUv-r`?mC8xE03!pU UXbz%N0ssI207*qoM6N<$g8UascmMzZ delta 228 zcmVPx#1ZP1_ zK>z@;j|==^1poj5l}SWFRCodHlVJ*gAPj{^bP$i~P4y;A!eESYZ~4b)AB@z-;}aQC z@H0v)1}Y3{!o27~b@K_KBAv1ZUaRzLIZHs?k%O egHkC77UKYimJt-oB#3$d0000fewFBwE?Zgr+!4fRN z5;#f5+&j)Y5E&$!dCB}(f$Z?%yursqBoc{4DO6DuDPv4!qtyJ=77K+c5T4p%p(rlD zW{cJ4NwLtgQs6aPtma!5Vlnx>0NhBi|LzNb_X2Pu#jacPvwvPP04xn-8lDd~`rQDq zG>mC@eoKDVLuLYGOSe6k(?VHi^+oc#nE=_+Z4c(OP}W&}u_hoPV3aer&H%3_AYL%g zSoXPfPQRN1uPln@?(4ctem8|&SqS0;>)7%`zk5fl*PPA8@w<1#dd<~bs)TP)=e)rx z0k|sF8)VlyZ-4OR{5U-9jE9C^j+1%V84va830-tf+(q$V{_5hsjXt4^&MCX7b1;Wp z+@~H&%`kr7niyZS9%X)tB|qms`cS_cosAjJTZa?le}_eWH#!?*%g_AQ=sT07*qoM6N<$f=d79=>Px# literal 968 zcmeAS@N?(olHy`uVBq!ia0vp^0YI$5!3HEV6KWZO6id3JuOkD)#(wTUiL5|AXMsm# zF$05`3J5dK7Cj~c6qGD+jVKAuPb(=;EJ|f4NX*PD(aTFMQ83Xn&@;5Wa&1!z0|T?G zr;B4qhV$7Ox3g3Xd0d!x{{PS3wx`YJd1=_J&S^z~n^L!{e`#diy|PQ$bQ$}zhi_u^ zrUzG7UAd56WM22^TJY5i>^vdcp7=d_m|NSC^}<#1>dZ3nKOYVqUa?U8Ou${u@&o+6 zwk=XsmjqvxpOR~pzt;WJ$G&)aptJvpJu}X4uQyw9U$>H_&LcnVLsrqg7O7ntpVQpF zy|P#MP=0#dA^zj}vY%6m@}*2m9FOJ8me2EPvvv-D(EceeO=e$b){Dk7yH{4ddpO&I z+n#5CsyKh;((6rOqSZ1VK{B+FpKP{&30IyniOp#EeNZcUHdn;wy9T^twAXX|I6#9MhgY+Zb%VkzK#? z$uq;JvsbkJn`&9~`Nk*TGY_6>&EK|pirw6+7u14(ZkfCF%gZ$nmX_VKNvjY(dg08u z*~j_vl@6bNQ}Mj_#XjN8gtX(<`6=J$c6<=Zt%|?2pZBnq!T#l4*s0tb#}DWD}6GW zv3c_fW2Ynkxx(S~?%(4h5!W qB$3BoJ{(B@{AI<$^N*iCl)wA$+a;;(%l86v9fPNN1-+@5pC^q`jM6u;PYU@n0ze^Yb zFYGh{006-CnQP@*rL$t~C8d-y*UF`zSb8}GhCtp{*&r~Aj_eS)ZT>2KUIjk6N*@Fw z5P?4{P?ffpbQY$qEuG^F@=m9-IBhNIY`J2pb)9dNYFz}11%Hkb`jNmPx#1ZP1_ zK>z@;j|==^1poj6cS%G+RCodHnB8r|FbssxMF(g$=w{L8@&@h(ten_DV(5o5>DUkV z0ep%~QOrRn2_S?JLdf+ADW()+jF{pMXGA2Vn8Z#@;a=a&ynk?UiV4mv3-`jkzDJEq zTqVzY(ghgl&GQ9ff($3<%v+ZvlQI+<#!X6JW(?4JY;H|7xIg9 z_)BrC4VV{#6YCp>;no^-h)XI^&AU~~rzp+KJ3ng8p$bezR>@mtuU*ia`{KJdDPcZnDu;E$Uj0sK;3bz)SUU={P=lX zi6#4l5ve${D4(;6xi{bJ-2=CITv(g8DsS%|xXsgodqJQPiwpCP3@Xq}j{>#stYL&d yDtA^g;s64C?!zj#?WN_;9c0~>5JCtcSK}X3KwXMn3GEdC0000#P=0@$Gt}9_m>iZs05TFDgmPq)qqk&HDCl{1mGv)@_!`20pfB8pa(iaZ2t!I zKpn*PRKRrN{o4S)?XLig{*#&l6y7EQ2q1s}ns7F*`yL^Hg4uW*4Ra)*Vm5ApfQs3; zMFP(Lq^0|vy)nLPKL7y)5I_I{1Q0*~0R-@3s%OH#=Hsgu+$_F216Webv*F`hTqXcZ n(6iy=!}gMhh#H89hz7j?r14=d+!(9u00000NkvXXu0mjf1+js| delta 430 zcmV;f0a5=Z8BYyx1a7bBm000&x000&x0ZCFM@Bjb+0drDELIAGL9O(c600d`2 zO+f$vv5yPF5;K-Xt2NJpA-uQGN zGBw>=Z^hF71hT}blxANCK<9|4=hX0DKhS@wpgpj}>5*Xx&z=YUr+~;`3NmzU~?sHJdrwr-jgXQ|-UP&#k_CS_qF{Klfj^?q7QX-zO1kaEl_KgP(h^PY5A|5JEgK YpM`&J$u}hSR{#J207*qoM6N<$g6xaG!vFvP From 52b16899d54f5ecbeb6d00e0a680ea646c7fb2e7 Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Tue, 25 Oct 2022 21:50:44 +0300 Subject: [PATCH 29/32] [DE] Fix button name for offline files --- apps/documenteditor/main/app/view/FormsTab.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/documenteditor/main/app/view/FormsTab.js b/apps/documenteditor/main/app/view/FormsTab.js index a95da5b75..83a9a10ed 100644 --- a/apps/documenteditor/main/app/view/FormsTab.js +++ b/apps/documenteditor/main/app/view/FormsTab.js @@ -355,7 +355,7 @@ define([ cls: 'btn-toolbar x-huge icon-top', lock: [_set.lostConnect, _set.disableOnStart], iconCls: 'toolbar__icon save-form', - caption: this.appConfig.canRequestSaveAs || !!this.appConfig.saveAsUrl ? this.capBtnSaveForm : this.capBtnDownloadForm, + caption: this.appConfig.canRequestSaveAs || !!this.appConfig.saveAsUrl || this.appConfig.isOffline ? this.capBtnSaveForm : this.capBtnDownloadForm, // disabled: this.appConfig.isEdit && this.appConfig.canFeatureContentControl && this.appConfig.canFeatureForms, // disable only for edit mode, dataHint: '1', dataHintDirection: 'bottom', From 4a4d4d0832c4eb8dbbaabc50b0f5275a73934176 Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Tue, 25 Oct 2022 22:12:37 +0300 Subject: [PATCH 30/32] [PE] Refactoring --- .../main/app/controller/DocumentHolder.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/apps/presentationeditor/main/app/controller/DocumentHolder.js b/apps/presentationeditor/main/app/controller/DocumentHolder.js index 12e5e4da7..2633ceacf 100644 --- a/apps/presentationeditor/main/app/controller/DocumentHolder.js +++ b/apps/presentationeditor/main/app/controller/DocumentHolder.js @@ -2164,6 +2164,16 @@ define([ tip.isHidden = true; } } else { + if (_.isUndefined(this._XY)) { + this._XY = [ + this.documentHolder.cmpEl.offset().left - $(window).scrollLeft(), + this.documentHolder.cmpEl.offset().top - $(window).scrollTop() + ]; + this._Width = this.documentHolder.cmpEl.width(); + this._Height = this.documentHolder.cmpEl.height(); + this._BodyWidth = $('body').width(); + } + if (!tip.parentEl) { tip.parentEl = $('
'); this.documentHolder.cmpEl.append(tip.parentEl); From 1c6676564592ea99e41e98a4069e5e3feccfbe92 Mon Sep 17 00:00:00 2001 From: Maxim Kadushkin Date: Wed, 26 Oct 2022 12:29:48 +0300 Subject: [PATCH 31/32] [desktop] changed supported features info --- apps/common/main/lib/controller/Desktop.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/common/main/lib/controller/Desktop.js b/apps/common/main/lib/controller/Desktop.js index 046dda207..60a4cd401 100644 --- a/apps/common/main/lib/controller/Desktop.js +++ b/apps/common/main/lib/controller/Desktop.js @@ -45,7 +45,8 @@ define([ version: '{{PRODUCT_VERSION}}', eventloading: true, titlebuttons: true, - uithemes: true + uithemes: true, + btnhome: true, }; var native = window.desktop || window.AscDesktopEditor; From 85364ac61449476d618fa41afcff3afbd0683815 Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Thu, 27 Oct 2022 12:52:50 +0300 Subject: [PATCH 32/32] Fix Bug 58931 --- apps/common/main/lib/controller/Comments.js | 11 ++++++++--- apps/common/main/lib/view/Comments.js | 10 +++++++++- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/apps/common/main/lib/controller/Comments.js b/apps/common/main/lib/controller/Comments.js index 115657f63..2203d87fb 100644 --- a/apps/common/main/lib/controller/Comments.js +++ b/apps/common/main/lib/controller/Comments.js @@ -406,9 +406,11 @@ define([ reply = null, addReply = null, ascComment = buildCommentData(), // new asc_CCommentData(null), - comment = t.findComment(id); + comment = t.findComment(id), + oldCommentVal = ''; if (comment && ascComment) { + oldCommentVal = comment.get('comment'); ascComment.asc_putText(commentVal); ascComment.asc_putQuoteText(comment.get('quote')); ascComment.asc_putTime(t.utcDateToString(new Date(comment.get('time')))); @@ -452,6 +454,7 @@ define([ } t.api.asc_changeComment(id, ascComment); + t.mode && t.mode.canRequestSendNotify && t.view.pickEMail(ascComment.asc_getGuid(), commentVal, oldCommentVal); return true; } @@ -465,7 +468,8 @@ define([ reply = null, addReply = null, ascComment = buildCommentData(), // new asc_CCommentData(null), - comment = me.findComment(id); + comment = me.findComment(id), + oldReplyVal = ''; if (ascComment && comment) { ascComment.asc_putText(comment.get('comment')); @@ -489,6 +493,7 @@ define([ addReply = buildCommentData(); // new asc_CCommentData(); if (addReply) { if (reply.get('id') === replyId && !_.isUndefined(replyVal)) { + oldReplyVal = reply.get('reply'); addReply.asc_putText(replyVal); addReply.asc_putUserId(me.currentUserId); addReply.asc_putUserName(AscCommon.UserInfoParser.getCurrentName()); @@ -508,7 +513,7 @@ define([ } me.api.asc_changeComment(id, ascComment); - + me.mode && me.mode.canRequestSendNotify && me.view.pickEMail(ascComment.asc_getGuid(), replyVal, oldReplyVal); return true; } } diff --git a/apps/common/main/lib/view/Comments.js b/apps/common/main/lib/view/Comments.js index 21732dd11..879779f17 100644 --- a/apps/common/main/lib/view/Comments.js +++ b/apps/common/main/lib/view/Comments.js @@ -806,11 +806,19 @@ define([ return str_res; }, - pickEMail: function (commentId, message) { + pickEMail: function (commentId, message, oldMessage) { + var old_arr = []; + if (oldMessage) { + old_arr = Common.Utils.String.htmlEncode(oldMessage).match(/\B[@+][A-Z0-9._%+-]+@[A-Z0-9._-]+\.[A-Z]+\b/gi); + old_arr = _.map(old_arr, function(str){ + return str.slice(1, str.length); + }); + } var arr = Common.Utils.String.htmlEncode(message).match(/\B[@+][A-Z0-9._%+-]+@[A-Z0-9._-]+\.[A-Z]+\b/gi); arr = _.map(arr, function(str){ return str.slice(1, str.length); }); + arr = _.difference(arr, old_arr); (arr.length>0) && Common.Gateway.requestSendNotify({ emails: arr, actionId: commentId, // comment id