New MeshAgents (except macOS and FreeBSD + Many fixes + MessageBox feature.

Ylian Saint-Hilaire committed May 18, 2020 at 17:57 UTC 0c1fbc43693e2e07cd2e562eefa3c403284652ca
29 files changed +1602 -1500
MeshCentralServer.njsproj
+1
@@ -449,6 +449,7 @@
449 <Content Include="public\translate.bat" />
450 <Content Include="public\translator.htm" />
451 <Content Include="readme.md" />
452 + <Content Include="sample-config-advanced.json" />
453 <Content Include="sample-config.json" />
454 <Content Include="SourceFileList.txt" />
455 <Content Include="translate\readme.txt" />
agents/MeshCmd-signed.exe
Binary files a/agents/MeshCmd-signed.exe and b/agents/MeshCmd-signed.exe differ
agents/MeshCmd64-signed.exe
Binary files a/agents/MeshCmd64-signed.exe and b/agents/MeshCmd64-signed.exe differ
agents/MeshService-signed.exe
Binary files a/agents/MeshService-signed.exe and b/agents/MeshService-signed.exe differ
agents/MeshService.exe
Binary files a/agents/MeshService.exe and b/agents/MeshService.exe differ
agents/MeshService64-signed.exe
Binary files a/agents/MeshService64-signed.exe and b/agents/MeshService64-signed.exe differ
agents/MeshService64.exe
Binary files a/agents/MeshService64.exe and b/agents/MeshService64.exe differ
agents/meshagent_arm
Binary files a/agents/meshagent_arm and b/agents/meshagent_arm differ
agents/meshagent_arm-linaro
Binary files a/agents/meshagent_arm-linaro and b/agents/meshagent_arm-linaro differ
agents/meshagent_arm64
Binary files a/agents/meshagent_arm64 and b/agents/meshagent_arm64 differ
agents/meshagent_armhf
Binary files a/agents/meshagent_armhf and b/agents/meshagent_armhf differ
agents/meshagent_mips
Binary files a/agents/meshagent_mips and b/agents/meshagent_mips differ
agents/meshagent_pogo
Binary files a/agents/meshagent_pogo and b/agents/meshagent_pogo differ
agents/meshagent_poky
Binary files a/agents/meshagent_poky and b/agents/meshagent_poky differ
agents/meshagent_poky64
Binary files a/agents/meshagent_poky64 and b/agents/meshagent_poky64 differ
agents/meshagent_x86
Binary files a/agents/meshagent_x86 and b/agents/meshagent_x86 differ
agents/meshagent_x86-64
Binary files a/agents/meshagent_x86-64 and b/agents/meshagent_x86-64 differ
agents/meshagent_x86-64_nokvm
Binary files a/agents/meshagent_x86-64_nokvm and b/agents/meshagent_x86-64_nokvm differ
agents/meshagent_x86_nokvm
Binary files a/agents/meshagent_x86_nokvm and b/agents/meshagent_x86_nokvm differ
agents/meshcore.js
+9
@@ -683,6 +683,15 @@ function createMeshCore(agent) {
683 }
684 break;
685 }
686 + case 'messagebox': {
687 + // Display a message box
688 + if (data.title && data.msg) {
689 + MeshServerLog("Displaying message box, title=" + data.title + ", message=" + data.msg, data);
690 + data.msg = data.msg.split('\r').join('\\r').split('\n').join('\\n');
691 + try { require('message-box').create(data.title, data.msg, 120); } catch (ex) { }
692 + }
693 + break;
694 + }
695 case 'ps': {
696 // Return the list of running processes
697 if (data.sessionid) {
docs/MeshCentral2 Install Guide v0.0.9.odt
Binary files a/docs/MeshCentral2 Install Guide v0.0.9.odt and b/docs/MeshCentral2 Install Guide v0.0.9.odt differ
public/scripts/agent-desktop-0.0.2-min.js
+1 -1
@@ -1 +1 @@
1 -var CreateAgentRemoteDesktop=function(e,t){var g={};"string"==typeof(g.CanvasId=e)&&(g.CanvasId=Q(e)),g.Canvas=g.CanvasId.getContext("2d"),g.scrolldiv=t,g.State=0,g.PendingOperations=[],g.tilesReceived=0,g.TilesDrawn=0,g.KillDraw=0,g.ipad=!1,g.tabletKeyboardVisible=!1,g.LastX=0,g.LastY=0,g.touchenabled=0,g.submenuoffset=0,g.touchtimer=null,g.TouchArray={},g.connectmode=0,g.connectioncount=0,g.rotation=0,g.protocol=2,g.debugmode=0,g.firstUpKeys=[],g.stopInput=!1,g.localKeyMap=!0,g.pressedKeys=[],g.sessionid=0,g.username,g.oldie=!1,g.CompressionLevel=50,g.ScalingLevel=1024,g.FrameRateTimer=100,g.FirstDraw=!1,g.ScreenWidth=960,g.ScreenHeight=700,g.width=960,g.height=960,g.displays=null,g.selectedDisplay=null,g.onScreenSizeChange=null,g.onMessage=null,g.onConnectCountChanged=null,g.onDebugMessage=null,g.onTouchEnabledChanged=null,g.onDisplayinfo=null;var v=!(g.accumulator=null),p="default";g.mouseCursorActive=function(e){v!=e&&(v=e,g.CanvasId.style.cursor=1==e?p:"default")};var f=["default","progress","crosshair","pointer","help","text","no-drop","move","nesw-resize","ns-resize","nwse-resize","w-resize","alias","wait","none","not-allowed","col-resize","row-resize","copy","zoom-in","zoom-out"];g.Start=function(){g.State=0,g.accumulator=null},g.Stop=function(){g.setRotation(0),g.UnGrabKeyInput(),g.UnGrabMouseInput(),g.touchenabled=0,null!=g.onScreenSizeChange&&g.onScreenSizeChange(g,g.ScreenWidth,g.ScreenHeight,g.CanvasId),g.Canvas.clearRect(0,0,g.CanvasId.width,g.CanvasId.height)},g.xxStateChange=function(e){if(g.State!=e)switch(g.State=e,g.CanvasId.style.cursor="default",e){case 0:g.Stop()}},g.send=function(e){1<g.debugmode&&console.log("KSend("+e.length+"): "+rstr2hex(e)),null!=g.parent&&g.parent.send(e)},g.ProcessPictureMsg=function(e,t,n){var o=new Image;o.xcount=g.tilesReceived++;var a=g.tilesReceived;o.src="data:image/jpeg;base64,"+btoa(e.substring(4,e.length)),o.onload=function(){if(null!=g.Canvas&&g.KillDraw<a&&0!=g.State)for(g.PendingOperations.push([a,2,o,t,n]);g.DoPendingOperations(););},o.error=function(){console.log("DecodeTileError")}},g.DoPendingOperations=function(){if(0==g.PendingOperations.length)return!1;for(var e=0;e<g.PendingOperations.length;e++){var t=g.PendingOperations[e];if(t[0]==g.TilesDrawn+1)return 1==t[1]?g.ProcessCopyRectMsg(t[2]):2==t[1]&&(g.Canvas.drawImage(t[2],g.rotX(t[3],t[4]),g.rotY(t[3],t[4])),delete t[2]),g.PendingOperations.splice(e,1),delete t,g.TilesDrawn++,g.TilesDrawn==g.tilesReceived&&g.KillDraw<g.TilesDrawn&&(g.KillDraw=g.TilesDrawn=g.tilesReceived=0),!0}return g.oldie&&0<g.PendingOperations.length&&g.TilesDrawn++,!1},g.ProcessCopyRectMsg=function(e){var t=((255&e.charCodeAt(0))<<8)+(255&e.charCodeAt(1)),n=((255&e.charCodeAt(2))<<8)+(255&e.charCodeAt(3)),o=((255&e.charCodeAt(4))<<8)+(255&e.charCodeAt(5)),a=((255&e.charCodeAt(6))<<8)+(255&e.charCodeAt(7)),r=((255&e.charCodeAt(8))<<8)+(255&e.charCodeAt(9)),s=((255&e.charCodeAt(10))<<8)+(255&e.charCodeAt(11));g.Canvas.drawImage(Canvas.canvas,t,n,r,s,o,a,r,s)},g.SendUnPause=function(){g.send(String.fromCharCode(0,8,0,5,0))},g.SendPause=function(){g.send(String.fromCharCode(0,8,0,5,1))},g.SendCompressionLevel=function(e,t,n,o){t&&(g.CompressionLevel=t),n&&(g.ScalingLevel=n),o&&(g.FrameRateTimer=o),g.send(String.fromCharCode(0,5,0,10,e,g.CompressionLevel)+g.shortToStr(g.ScalingLevel)+g.shortToStr(g.FrameRateTimer))},g.SendRefresh=function(){g.send(String.fromCharCode(0,6,0,4))},g.ProcessScreenMsg=function(e,t){for(0<g.debugmode&&console.log("ScreenSize: "+e+" x "+t),g.Canvas.setTransform(1,0,0,1,0,0),g.rotation=0,g.FirstDraw=!0,g.ScreenWidth=g.width=e,g.ScreenHeight=g.height=t,g.KillDraw=g.tilesReceived;0<g.PendingOperations.length;)g.PendingOperations.shift();g.SendCompressionLevel(1),g.SendUnPause(),null!=g.onScreenSizeChange&&g.onScreenSizeChange(g,g.ScreenWidth,g.ScreenHeight,g.CanvasId)},g.ProcessData=function(e){for(var t=0;t<e.length;){var n=g.ProcessDataEx(e.substring(t));if(null==n||0==n)break;t+=n}},g.ProcessDataEx=function(e){if(null!=g.accumulator&&(e=g.accumulator+e,g.accumulator=null),1<g.debugmode&&console.log("KRecv("+e.length+"): "+rstr2hex(e.substring(0,Math.min(e.length,40)))),!(e.length<4)){var t=null,n=0,o=0,a=ReadShort(e,0),r=ReadShort(e,2),s=0;if(null!=g.recordedData&&(g.recordedData.push(S(2,1,e.length)),g.recordedData.push(e)),27==a&&8==r){if(e.length<12)return;if(a=ReadShort(e,8),(r=ReadInt(e,4))+8>e.length)return void(g.accumulator=e);e=e.substring(8),s=8}if(r!=e.length&&0<g.debugmode&&console.log(r,e.length,r==e.length),18<=a&&65!=a&&88!=a)return console.error("Invalid KVM command "+a+" of size "+r),console.log("Invalid KVM data",e.length,rstr2hex(e.substring(0,40))+"..."),void(g.parent&&g.parent.setConsoleMessage&&g.parent.setConsoleMessage("Received invalid network data",5));if(!(r>e.length)){switch(3!=a&&4!=a&&7!=a||(n=((255&(t=e.substring(4,r)).charCodeAt(0))<<8)+(255&t.charCodeAt(1)),o=((255&t.charCodeAt(2))<<8)+(255&t.charCodeAt(3)),0<g.debugmode&&console.log("CMD"+a+" at X="+n+" Y="+o)),a){case 3:g.FirstDraw&&g.onResize(),g.ProcessPictureMsg(t,n,o);break;case 4:g.FirstDraw&&g.onResize(),g.TilesDrawn==g.tilesReceived?g.ProcessCopyRectMsg(t):g.PendingOperations.push([++tilesReceived,1,t]);break;case 7:g.ProcessScreenMsg(n,o),g.SendKeyMsgKC(g.KeyAction.UP,16),g.SendKeyMsgKC(g.KeyAction.UP,17),g.SendKeyMsgKC(g.KeyAction.UP,18),g.SendKeyMsgKC(g.KeyAction.UP,91),g.SendKeyMsgKC(g.KeyAction.UP,92),g.SendKeyMsgKC(g.KeyAction.UP,16),g.send(String.fromCharCode(0,14,0,4));break;case 11:var i=0,c={},u=((255&e.charCodeAt(4))<<8)+(255&e.charCodeAt(5));if(0<u){i=((255&e.charCodeAt(6+2*u))<<8)+(255&e.charCodeAt(7+2*u));for(var l=0;l<u;l++){var d=((255&e.charCodeAt(6+2*l))<<8)+(255&e.charCodeAt(7+2*l));c[d]=65535==d?"All Displays":"Display "+d}}g.displays=c,g.selectedDisplay=i,null!=g.onDisplayinfo&&g.onDisplayinfo(g,c,i);break;case 12:break;case 14:g.touchenabled=1,g.TouchArray={},null!=g.onTouchEnabledChanged&&g.onTouchEnabledChanged(g.touchenabled);break;case 15:g.TouchArray={};break;case 16:g.connectioncount=ReadInt(e,4),null!=g.onConnectCountChanged&&g.onConnectCountChanged(g.connectioncount,g);break;case 17:null!=g.onMessage&&g.onMessage(e.substring(4,r),g);break;case 65:"."!=(e=e.substring(4))[0]?(console.log(e),g.parent&&g.parent.setConsoleMessage&&g.parent.setConsoleMessage(e)):console.log("KVM: "+e.substring(1));break;case 88:if(5!=r)break;var h=e.charCodeAt(4);f.length<h&&(h=0),p=f[h],v&&(g.CanvasId.style.cursor=p)}return r+s}g.accumulator=e}},g.MouseButton={NONE:0,LEFT:2,RIGHT:8,MIDDLE:32},g.KeyAction={NONE:0,DOWN:1,UP:2,SCROLL:3,EXUP:4,EXDOWN:5,DBLCLICK:6},g.InputType={KEY:1,MOUSE:2,CTRLALTDEL:10,TOUCH:15},g.Alternate=0;var o={Pause:19,CapsLock:20,Space:32,Quote:222,Minus:189,NumpadMultiply:106,NumpadAdd:107,PrintScreen:44,Comma:188,NumpadSubtract:109,NumpadDecimal:110,Period:190,Slash:191,NumpadDivide:111,Semicolon:186,Equal:187,OSLeft:91,BracketLeft:219,OSRight:91,Backslash:220,BracketRight:221,ContextMenu:93,Backquote:192,NumLock:144,ScrollLock:145,Backspace:8,Tab:9,Enter:13,NumpadEnter:13,Escape:27,Delete:46,Home:36,PageUp:33,PageDown:34,ArrowLeft:37,ArrowUp:38,ArrowRight:39,ArrowDown:40,End:35,Insert:45,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,ShiftLeft:16,ShiftRight:16,ControlLeft:17,ControlRight:17,AltLeft:18,AltRight:18,MetaLeft:91,MetaRight:92,VolumeMute:181};function S(e,t,n){var o=Date.now();return"number"==typeof n?(g.recordedSize+=n,g.shortToStr(e)+g.shortToStr(t)+g.intToStr(n)+g.intToStr(o>>32)+g.intToStr(32&o)):(g.recordedSize+=n.length,g.shortToStr(e)+g.shortToStr(t)+g.intToStr(n.length)+g.intToStr(o>>32)+g.intToStr(32&o)+n)}return g.SendKeyMsg=function(e,t){var n;null!=e&&((t=t||window.event).code&&0==g.localKeyMap?null!=(n=function(e){return e.code.startsWith("Key")&&4==e.code.length?e.code.charCodeAt(3):e.code.startsWith("Digit")&&6==e.code.length?e.code.charCodeAt(5):e.code.startsWith("Numpad")&&7==e.code.length?e.code.charCodeAt(6)+48:o[e.code]}(t))&&g.SendKeyMsgKC(e,n):(59==(n=t.keyCode)?n=186:173==n?n=189:61==n&&(n=187),g.SendKeyMsgKC(e,n)))},g.SendMessage=function(e){3==g.State&&g.send(String.fromCharCode(0,17)+g.shortToStr(4+e.length)+e)},g.SendKeyMsgKC=function(e,t){if(3==g.State)if("object"==typeof e)for(var n in e)g.SendKeyMsgKC(e[n][0],e[n][1]);else{if(1==e)-1==g.pressedKeys.indexOf(t)&&g.pressedKeys.unshift(t);else if(2==e){-1!=(n=g.pressedKeys.indexOf(t))&&g.pressedKeys.splice(n,1)}g.send(String.fromCharCode(0,g.InputType.KEY,0,6,e-1,t))}},g.sendcad=function(){g.SendCtrlAltDelMsg()},g.SendCtrlAltDelMsg=function(){3==g.State&&g.send(String.fromCharCode(0,g.InputType.CTRLALTDEL,0,4))},g.SendEscKey=function(){3==g.State&&g.send(String.fromCharCode(0,g.InputType.KEY,0,6,0,27,0,g.InputType.KEY,0,6,1,27))},g.SendStartMsg=function(){g.SendKeyMsgKC(g.KeyAction.EXDOWN,91),g.SendKeyMsgKC(g.KeyAction.EXUP,91)},g.SendCharmsMsg=function(){g.SendKeyMsgKC(g.KeyAction.EXDOWN,91),g.SendKeyMsgKC(g.KeyAction.DOWN,67),g.SendKeyMsgKC(g.KeyAction.UP,67),g.SendKeyMsgKC(g.KeyAction.EXUP,91)},g.SendTouchMsg1=function(e,t,n,o){3==g.State&&g.send(String.fromCharCode(0,g.InputType.TOUCH)+g.shortToStr(14)+String.fromCharCode(1,e)+g.intToStr(t)+g.shortToStr(n)+g.shortToStr(o))},g.SendTouchMsg2=function(e,t){var n,o="";for(var a in g.TouchArray)a==e?n=t:1==g.TouchArray[a].f?(n=65542,g.TouchArray[a].f=3,"START"+a):2==g.TouchArray[a].f?(n=262144,"STOP"+a):n=131078,o+=String.fromCharCode(a)+g.intToStr(n)+g.shortToStr(g.TouchArray[a].x)+g.shortToStr(g.TouchArray[a].y),2==g.TouchArray[a].f&&delete g.TouchArray[a];3==g.State&&g.send(String.fromCharCode(0,g.InputType.TOUCH)+g.shortToStr(5+o.length)+String.fromCharCode(2)+o),0==Object.keys(g.TouchArray).length&&null!=g.touchtimer&&(clearInterval(g.touchtimer),g.touchtimer=null)},g.SendMouseMsg=function(e,t){if(3==g.State&&null!=e&&null!=g.Canvas){if(!t)t=window.event;var n=g.Canvas.canvas.height/g.CanvasId.clientHeight,o=g.Canvas.canvas.width/g.CanvasId.clientWidth,a=g.GetPositionOfControl(g.Canvas.canvas),r=(t.pageX-a[0])*o,s=(t.pageY-a[1])*n;if(t.addx&&(r+=t.addx),t.addy&&(s+=t.addy),0<=r&&r<=g.Canvas.canvas.width&&0<=s&&s<=g.Canvas.canvas.height){var i=0,c=0;e==g.KeyAction.UP||e==g.KeyAction.DOWN?t.which?i=1==t.which?g.MouseButton.LEFT:2==t.which?g.MouseButton.MIDDLE:g.MouseButton.RIGHT:t.button&&(i=0==t.button?g.MouseButton.LEFT:1==t.button?g.MouseButton.MIDDLE:g.MouseButton.RIGHT):e==g.KeyAction.SCROLL&&(t.detail?c=120*t.detail*-1:t.wheelDelta&&(c=3*t.wheelDelta));var u="";u=e==g.KeyAction.DBLCLICK?String.fromCharCode(0,g.InputType.MOUSE,0,10,0,136,r/256&255,255&r,s/256&255,255&s):e==g.KeyAction.SCROLL?String.fromCharCode(0,g.InputType.MOUSE,0,12,0,0,r/256&255,255&r,s/256&255,255&s,c/256&255,255&c):String.fromCharCode(0,g.InputType.MOUSE,0,10,0,e==g.KeyAction.DOWN?i:2*i&255,r/256&255,255&r,s/256&255,255&s),g.Action==g.KeyAction.NONE?0==g.Alternate||g.ipad?(g.send(u),g.Alternate=1):g.Alternate=0:g.send(u)}}},g.GetDisplayNumbers=function(){g.send(String.fromCharCode(0,11,0,4))},g.SetDisplay=function(e){g.send(String.fromCharCode(0,12,0,6,e>>8,255&e))},g.intToStr=function(e){return String.fromCharCode(e>>24&255,e>>16&255,e>>8&255,255&e)},g.shortToStr=function(e){return String.fromCharCode(e>>8&255,255&e)},g.onResize=function(){0!=g.ScreenWidth&&0!=g.ScreenHeight&&(g.Canvas.canvas.width==g.ScreenWidth&&g.Canvas.canvas.height==g.ScreenHeight||(g.FirstDraw&&(g.Canvas.canvas.width=g.ScreenWidth,g.Canvas.canvas.height=g.ScreenHeight,g.Canvas.fillRect(0,0,g.ScreenWidth,g.ScreenHeight),null!=g.onScreenSizeChange&&g.onScreenSizeChange(g,g.ScreenWidth,g.ScreenHeight,g.CanvasId)),g.FirstDraw=!1))},g.xxMouseInputGrab=!1,g.xxKeyInputGrab=!1,g.xxMouseMove=function(e){return 3==g.State&&g.SendMouseMsg(g.KeyAction.NONE,e),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},g.xxMouseUp=function(e){return 3==g.State&&g.SendMouseMsg(g.KeyAction.UP,e),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},g.xxMouseDown=function(e){return 3==g.State&&g.SendMouseMsg(g.KeyAction.DOWN,e),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},g.xxMouseDblClick=function(e){return 3==g.State&&g.SendMouseMsg(g.KeyAction.DBLCLICK,e),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},g.xxDOMMouseScroll=function(e){return 3!=g.State||(g.SendMouseMsg(g.KeyAction.SCROLL,e),!1)},g.xxMouseWheel=function(e){return 3!=g.State||(g.SendMouseMsg(g.KeyAction.SCROLL,e),!1)},g.xxKeyUp=function(e){return 3==g.State&&g.SendKeyMsg(g.KeyAction.UP,e),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},g.xxKeyDown=function(e){return 3==g.State&&g.SendKeyMsg(g.KeyAction.DOWN,e),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},g.xxKeyPress=function(e){return e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},g.handleKeys=function(e){return 1!=g.stopInput&&3==desktop.State&&g.xxKeyPress(e)},g.handleKeyUp=function(e){if(1==g.stopInput||3!=desktop.State)return!1;if(g.firstUpKeys.length<5&&(g.firstUpKeys.push(e.keyCode),5==g.firstUpKeys.length)){var t=g.firstUpKeys.join(",");"16,17,91,91,16"!=t&&"16,17,18,91,92"!=t||(g.stopInput=!0)}return g.xxKeyUp(e)},g.handleKeyDown=function(e){return 1!=g.stopInput&&3==desktop.State&&g.xxKeyDown(e)},g.handleReleaseKeys=function(){var e=JSON.parse(JSON.stringify(g.pressedKeys));for(var t in e)g.SendKeyMsgKC(g.KeyAction.UP,e[t])},g.mousedblclick=function(e){return 1!=g.stopInput&&g.xxMouseDblClick(e)},g.mousedown=function(e){return 1!=g.stopInput&&g.xxMouseDown(e)},g.mouseup=function(e){return 1!=g.stopInput&&g.xxMouseUp(e)},g.mousemove=function(e){return 1!=g.stopInput&&g.xxMouseMove(e)},g.mousewheel=function(e){return 1!=g.stopInput&&g.xxMouseWheel(e)},g.xxMsTouchEvent=function(e){if(4!=e.originalEvent.pointerType){if(e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),"MSPointerDown"==e.type||"MSPointerMove"==e.type||"MSPointerUp"==e.type){var t=0,n=e.originalEvent.pointerId%256,o=e.offsetX*(Canvas.canvas.width/g.CanvasId.clientWidth),a=e.offsetY*(Canvas.canvas.height/g.CanvasId.clientHeight);"MSPointerDown"==e.type?t=65542:"MSPointerMove"==e.type?t=131078:"MSPointerUp"==e.type&&(t=262144),g.TouchArray[n]||(g.TouchArray[n]={x:o,y:a}),g.SendTouchMsg2(n,t),"MSPointerUp"==e.type&&delete g.TouchArray[n]}else alert(e.type);return!0}},g.xxTouchStart=function(e){if(3==g.State)if(e.preventDefault&&e.preventDefault(),0==g.touchenabled||1==g.touchenabled){if(1<e.originalEvent.touches.length)return;var t=e.originalEvent.touches[0];e.which=1,g.LastX=e.pageX=t.pageX,g.LastY=e.pageY=t.pageY,g.SendMouseMsg(KeyAction.DOWN,e)}else{var n=g.GetPositionOfControl(Canvas.canvas);for(var o in e.originalEvent.changedTouches)if(e.originalEvent.changedTouches[o].identifier){var a=e.originalEvent.changedTouches[o].identifier%256;g.TouchArray[a]||(g.TouchArray[a]={x:(e.originalEvent.touches[o].pageX-n[0])*(Canvas.canvas.width/g.CanvasId.clientWidth),y:(e.originalEvent.touches[o].pageY-n[1])*(Canvas.canvas.height/g.CanvasId.clientHeight),f:1})}0<Object.keys(g.TouchArray).length&&null==touchtimer&&(g.touchtimer=setInterval(function(){g.SendTouchMsg2(256,0)},50))}},g.xxTouchMove=function(e){if(3==g.State)if(e.preventDefault&&e.preventDefault(),0==g.touchenabled||1==g.touchenabled){if(1<e.originalEvent.touches.length)return;var t=e.originalEvent.touches[0];e.which=1,g.LastX=e.pageX=t.pageX,g.LastY=e.pageY=t.pageY,g.SendMouseMsg(g.KeyAction.NONE,e)}else{var n=g.GetPositionOfControl(Canvas.canvas);for(var o in e.originalEvent.changedTouches)if(e.originalEvent.changedTouches[o].identifier){var a=e.originalEvent.changedTouches[o].identifier%256;g.TouchArray[a]&&(g.TouchArray[a].x=(e.originalEvent.touches[o].pageX-n[0])*(g.Canvas.canvas.width/g.CanvasId.clientWidth),g.TouchArray[a].y=(e.originalEvent.touches[o].pageY-n[1])*(g.Canvas.canvas.height/g.CanvasId.clientHeight))}}},g.xxTouchEnd=function(e){if(3==g.State)if(e.preventDefault&&e.preventDefault(),0==g.touchenabled||1==g.touchenabled){if(1<e.originalEvent.touches.length)return;e.which=1,e.pageX=LastX,e.pageY=LastY,g.SendMouseMsg(KeyAction.UP,e)}else for(var t in e.originalEvent.changedTouches)if(e.originalEvent.changedTouches[t].identifier){var n=e.originalEvent.changedTouches[t].identifier%256;g.TouchArray[n]&&(g.TouchArray[n].f=2)}},g.GrabMouseInput=function(){if(1!=g.xxMouseInputGrab){var e=g.CanvasId;e.onmousemove=g.xxMouseMove,e.onmouseup=g.xxMouseUp,e.onmousedown=g.xxMouseDown,e.touchstart=g.xxTouchStart,e.touchmove=g.xxTouchMove,e.touchend=g.xxTouchEnd,e.MSPointerDown=g.xxMsTouchEvent,e.MSPointerMove=g.xxMsTouchEvent,e.MSPointerUp=g.xxMsTouchEvent,navigator.userAgent.match(/mozilla/i)?e.DOMMouseScroll=g.xxDOMMouseScroll:e.onmousewheel=g.xxMouseWheel,g.xxMouseInputGrab=!0}},g.UnGrabMouseInput=function(){if(0!=g.xxMouseInputGrab){var e=g.CanvasId;e.onmousemove=null,e.onmouseup=null,e.onmousedown=null,e.touchstart=null,e.touchmove=null,e.touchend=null,e.MSPointerDown=null,e.MSPointerMove=null,e.MSPointerUp=null,navigator.userAgent.match(/mozilla/i)?e.DOMMouseScroll=null:e.onmousewheel=null,g.xxMouseInputGrab=!1}},g.GrabKeyInput=function(){1!=g.xxKeyInputGrab&&(document.onkeyup=g.xxKeyUp,document.onkeydown=g.xxKeyDown,document.onkeypress=g.xxKeyPress,g.xxKeyInputGrab=!0)},g.UnGrabKeyInput=function(){0!=g.xxKeyInputGrab&&(document.onkeyup=null,document.onkeydown=null,document.onkeypress=null,g.xxKeyInputGrab=!1)},g.GetPositionOfControl=function(e){var t=Array(2);for(t[0]=t[1]=0;e;)t[0]+=e.offsetLeft,t[1]+=e.offsetTop,e=e.offsetParent;return t},g.crotX=function(e,t){return 0==g.rotation?e:1==g.rotation?t:2==g.rotation?g.Canvas.canvas.width-e:3==g.rotation?g.Canvas.canvas.height-t:void 0},g.crotY=function(e,t){return 0==g.rotation?t:1==g.rotation?g.Canvas.canvas.width-e:2==g.rotation?g.Canvas.canvas.height-t:3==g.rotation?e:void 0},g.rotX=function(e,t){return 0==g.rotation||1==g.rotation?e:2==g.rotation?e-g.Canvas.canvas.width:3==g.rotation?e-g.Canvas.canvas.height:void 0},g.rotY=function(e,t){return 0==g.rotation||3==g.rotation?t:1==g.rotation?t-g.Canvas.canvas.width:2==g.rotation?t-g.Canvas.canvas.height:void 0},g.tcanvas=null,g.setRotation=function(e){for(;e<0;)e+=4;var t=e%4;if(t==g.rotation)return!0;var n=g.Canvas.canvas.width,o=g.Canvas.canvas.height;1!=g.rotation&&3!=g.rotation||(n=g.Canvas.canvas.height,o=g.Canvas.canvas.width),null==g.tcanvas&&(g.tcanvas=document.createElement("canvas"));var a=g.tcanvas.getContext("2d");return a.setTransform(1,0,0,1,0,0),a.canvas.width=n,a.canvas.height=o,a.rotate(-90*g.rotation*Math.PI/180),0==g.rotation&&a.drawImage(g.Canvas.canvas,0,0),1==g.rotation&&a.drawImage(g.Canvas.canvas,-g.Canvas.canvas.width,0),2==g.rotation&&a.drawImage(g.Canvas.canvas,-g.Canvas.canvas.width,-g.Canvas.canvas.height),3==g.rotation&&a.drawImage(g.Canvas.canvas,0,-g.Canvas.canvas.height),0!=g.rotation&&2!=g.rotation||(g.Canvas.canvas.height=n,g.Canvas.canvas.width=o),1!=g.rotation&&3!=g.rotation||(g.Canvas.canvas.height=o,g.Canvas.canvas.width=n),g.Canvas.setTransform(1,0,0,1,0,0),g.Canvas.rotate(90*t*Math.PI/180),g.rotation=t,g.Canvas.drawImage(g.tcanvas,g.rotX(0,0),g.rotY(0,0)),g.ScreenWidth=g.Canvas.canvas.width,g.ScreenHeight=g.Canvas.canvas.height,null!=g.onScreenSizeChange&&g.onScreenSizeChange(g,g.ScreenWidth,g.ScreenHeight,g.CanvasId),!0},g.StartRecording=function(){null==g.recordedData&&g.CanvasId.toBlob(function(e){var s=new FileReader;s.readAsArrayBuffer(e),s.onload=function(e){for(var t="",n=new Uint8Array(s.result),o=n.byteLength,a=0;a<o;a++)t+=String.fromCharCode(n[a]);g.recordedData=[],g.recordedStart=Date.now(),g.recordedSize=0,g.recordedData.push(S(1,0,JSON.stringify({magic:"MeshCentralRelaySession",ver:1,time:(new Date).toLocaleString(),protocol:2}))),g.recordedData.push(S(2,1,g.shortToStr(7)+g.shortToStr(8)+g.shortToStr(g.ScreenWidth)+g.shortToStr(g.ScreenHeight)));var r=4+t.length;65e3<r?g.recordedData.push(S(2,1,g.shortToStr(27)+g.shortToStr(8)+g.intToStr(r)+g.shortToStr(3)+g.shortToStr(0)+g.shortToStr(0)+g.shortToStr(0)+t)):g.recordedData.push(S(2,1,g.shortToStr(3)+g.shortToStr(r)+g.shortToStr(0)+g.shortToStr(0)+t))}})},g.StopRecording=function(){if(null!=g.recordedData){var e=g.recordedData;return e.push(S(3,0,"MeshCentralMCREC")),delete g.recordedData,delete g.recordedStart,delete g.recordedSize,e}},g.MuchTheSame=function(e,t){return Math.abs(e-t)<4},g.Debug=function(e){console.log(e)},g.getIEVersion=function(){var e=-1;if("Microsoft Internet Explorer"==navigator.appName){var t=navigator.userAgent;null!=new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})").exec(t)&&(e=parseFloat(RegExp.$1))}return e},g.haltEvent=function(e){return e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},g}
\ No newline at end of file
1 +var CreateAgentRemoteDesktop=function(e,n){var h={};"string"==typeof(h.CanvasId=e)&&(h.CanvasId=Q(e)),h.Canvas=h.CanvasId.getContext("2d"),h.scrolldiv=n,h.State=0,h.PendingOperations=[],h.tilesReceived=0,h.TilesDrawn=0,h.KillDraw=0,h.ipad=!1,h.tabletKeyboardVisible=!1,h.LastX=0,h.LastY=0,h.touchenabled=0,h.submenuoffset=0,h.touchtimer=null,h.TouchArray={},h.connectmode=0,h.connectioncount=0,h.rotation=0,h.protocol=2,h.debugmode=0,h.firstUpKeys=[],h.stopInput=!1,h.localKeyMap=!0,h.pressedKeys=[],h.sessionid=0,h.username,h.oldie=!1,h.CompressionLevel=50,h.ScalingLevel=1024,h.FrameRateTimer=100,h.FirstDraw=!1,h.ScreenWidth=960,h.ScreenHeight=700,h.width=960,h.height=960,h.displays=null,h.selectedDisplay=null,h.onScreenSizeChange=null,h.onMessage=null,h.onConnectCountChanged=null,h.onDebugMessage=null,h.onTouchEnabledChanged=null,h.onDisplayinfo=null;var g=!(h.accumulator=null),p="default";h.mouseCursorActive=function(e){g!=e&&(g=e,h.CanvasId.style.cursor=1==e?p:"default")};var v=["default","progress","crosshair","pointer","help","text","no-drop","move","nesw-resize","ns-resize","nwse-resize","w-resize","alias","wait","none","not-allowed","col-resize","row-resize","copy","zoom-in","zoom-out"];h.Start=function(){h.State=0,h.accumulator=null},h.Stop=function(){h.setRotation(0),h.UnGrabKeyInput(),h.UnGrabMouseInput(),h.touchenabled=0,null!=h.onScreenSizeChange&&h.onScreenSizeChange(h,h.ScreenWidth,h.ScreenHeight,h.CanvasId),h.Canvas.clearRect(0,0,h.CanvasId.width,h.CanvasId.height)},h.xxStateChange=function(e){if(h.State!=e)switch(h.State=e,h.CanvasId.style.cursor="default",e){case 0:h.Stop()}},h.send=function(e){1<h.debugmode&&console.log("KSend("+e.length+"): "+rstr2hex(e)),null!=h.parent&&h.parent.send(e)},h.ProcessPictureMsg=function(e,n,t){var o=new Image;o.xcount=h.tilesReceived++;for(var a=h.tilesReceived,r=e.slice(4),i=0,s=[];5e4<r.byteLength-i;)s.push(String.fromCharCode.apply(null,r.slice(i,i+5e4))),i+=5e4;0<i?s.push(String.fromCharCode.apply(null,r.slice(i))):s.push(String.fromCharCode.apply(null,r)),o.src="data:image/jpeg;base64,"+btoa(s.join("")),o.onload=function(){if(null!=h.Canvas&&h.KillDraw<a&&0!=h.State)for(h.PendingOperations.push([a,2,o,n,t]);h.DoPendingOperations(););else h.PendingOperations.push([a,0])},o.error=function(){console.log("DecodeTileError")}},h.DoPendingOperations=function(){if(0==h.PendingOperations.length)return!1;for(var e=0;e<h.PendingOperations.length;e++){var n=h.PendingOperations[e];if(n[0]==h.TilesDrawn+1)return 1==n[1]?h.ProcessCopyRectMsg(n[2]):2==n[1]&&(h.Canvas.drawImage(n[2],h.rotX(n[3],n[4]),h.rotY(n[3],n[4])),delete n[2]),h.PendingOperations.splice(e,1),delete n,h.TilesDrawn++,h.TilesDrawn==h.tilesReceived&&h.KillDraw<h.TilesDrawn&&(h.KillDraw=h.TilesDrawn=h.tilesReceived=0),!0}return h.oldie&&0<h.PendingOperations.length&&h.TilesDrawn++,!1},h.ProcessCopyRectMsg=function(e){var n=((255&e.charCodeAt(0))<<8)+(255&e.charCodeAt(1)),t=((255&e.charCodeAt(2))<<8)+(255&e.charCodeAt(3)),o=((255&e.charCodeAt(4))<<8)+(255&e.charCodeAt(5)),a=((255&e.charCodeAt(6))<<8)+(255&e.charCodeAt(7)),r=((255&e.charCodeAt(8))<<8)+(255&e.charCodeAt(9)),i=((255&e.charCodeAt(10))<<8)+(255&e.charCodeAt(11));h.Canvas.drawImage(Canvas.canvas,n,t,r,i,o,a,r,i)},h.SendUnPause=function(){h.send(String.fromCharCode(0,8,0,5,0))},h.SendPause=function(){h.send(String.fromCharCode(0,8,0,5,1))},h.SendCompressionLevel=function(e,n,t,o){n&&(h.CompressionLevel=n),t&&(h.ScalingLevel=t),o&&(h.FrameRateTimer=o),h.send(String.fromCharCode(0,5,0,10,e,h.CompressionLevel)+h.shortToStr(h.ScalingLevel)+h.shortToStr(h.FrameRateTimer))},h.SendRefresh=function(){h.send(String.fromCharCode(0,6,0,4))},h.ProcessScreenMsg=function(e,n){for(0<h.debugmode&&console.log("ScreenSize: "+e+" x "+n),h.Canvas.setTransform(1,0,0,1,0,0),h.rotation=0,h.FirstDraw=!0,h.ScreenWidth=h.width=e,h.ScreenHeight=h.height=n,h.KillDraw=h.tilesReceived;0<h.PendingOperations.length;)h.PendingOperations.shift();h.SendCompressionLevel(1),h.SendUnPause(),null!=h.onScreenSizeChange&&h.onScreenSizeChange(h,h.ScreenWidth,h.ScreenHeight,h.CanvasId)},h.ProcessBinaryCommand=function(e,n,t){var o,a;switch(3!=e&&4!=e&&7!=e||(o=(t[4]<<8)+t[5],a=(t[6]<<8)+t[7]),e){case 3:h.FirstDraw&&h.onResize(),h.ProcessPictureMsg(t.slice(4),o,a);break;case 7:h.ProcessScreenMsg(o,a),h.SendKeyMsgKC(h.KeyAction.UP,16),h.SendKeyMsgKC(h.KeyAction.UP,17),h.SendKeyMsgKC(h.KeyAction.UP,18),h.SendKeyMsgKC(h.KeyAction.UP,91),h.SendKeyMsgKC(h.KeyAction.UP,92),h.SendKeyMsgKC(h.KeyAction.UP,16),h.send(String.fromCharCode(0,14,0,4));break;case 11:var r=0,i={},s=(t[4]<<8)+t[5];if(0<s){r=(t[6+2*s]<<8)+t[7+2*s];for(var c=0;c<s;c++){var u=(t[6+2*c]<<8)+t[7+2*c];i[u]=65535==u?"All Displays":"Display "+u}}h.displays=i,h.selectedDisplay=r,null!=h.onDisplayinfo&&h.onDisplayinfo(h,i,r);break;case 12:break;case 14:h.touchenabled=1,h.TouchArray={},null!=h.onTouchEnabledChanged&&h.onTouchEnabledChanged(h.touchenabled);break;case 15:h.TouchArray={};break;case 17:var l=String.fromCharCode.apply(null,data.slice(4));h.Debug("Got KVM Message: "+l),null!=h.onMessage&&h.onMessage(l,h);break;case 65:"."!=(l=String.fromCharCode.apply(null,data.slice(4)))[0]?(console.log(l),h.parent&&h.parent.setConsoleMessage&&h.parent.setConsoleMessage(l)):console.log("KVM: "+l.substring(1));break;case 88:if(5!=n)break;var d=t[4];v.length<d&&(d=0),p=v[d],g&&(h.CanvasId.style.cursor=p);break;default:console.log("Unknown command",e,n)}},h.MouseButton={NONE:0,LEFT:2,RIGHT:8,MIDDLE:32},h.KeyAction={NONE:0,DOWN:1,UP:2,SCROLL:3,EXUP:4,EXDOWN:5,DBLCLICK:6},h.InputType={KEY:1,MOUSE:2,CTRLALTDEL:10,TOUCH:15},h.Alternate=0;var o={Pause:19,CapsLock:20,Space:32,Quote:222,Minus:189,NumpadMultiply:106,NumpadAdd:107,PrintScreen:44,Comma:188,NumpadSubtract:109,NumpadDecimal:110,Period:190,Slash:191,NumpadDivide:111,Semicolon:186,Equal:187,OSLeft:91,BracketLeft:219,OSRight:91,Backslash:220,BracketRight:221,ContextMenu:93,Backquote:192,NumLock:144,ScrollLock:145,Backspace:8,Tab:9,Enter:13,NumpadEnter:13,Escape:27,Delete:46,Home:36,PageUp:33,PageDown:34,ArrowLeft:37,ArrowUp:38,ArrowRight:39,ArrowDown:40,End:35,Insert:45,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,ShiftLeft:16,ShiftRight:16,ControlLeft:17,ControlRight:17,AltLeft:18,AltRight:18,MetaLeft:91,MetaRight:92,VolumeMute:181};function s(e,n,t){var o=Date.now();return"number"==typeof t?(h.recordedSize+=t,h.shortToStr(e)+h.shortToStr(n)+h.intToStr(t)+h.intToStr(o>>32)+h.intToStr(32&o)):(h.recordedSize+=t.length,h.shortToStr(e)+h.shortToStr(n)+h.intToStr(t.length)+h.intToStr(o>>32)+h.intToStr(32&o)+t)}return h.SendKeyMsg=function(e,n){var t;null!=e&&((n=n||window.event).code&&0==h.localKeyMap?null!=(t=function(e){return e.code.startsWith("Key")&&4==e.code.length?e.code.charCodeAt(3):e.code.startsWith("Digit")&&6==e.code.length?e.code.charCodeAt(5):e.code.startsWith("Numpad")&&7==e.code.length?e.code.charCodeAt(6)+48:o[e.code]}(n))&&h.SendKeyMsgKC(e,t):(59==(t=n.keyCode)?t=186:173==t?t=189:61==t&&(t=187),h.SendKeyMsgKC(e,t)))},h.SendMessage=function(e){3==h.State&&h.send(String.fromCharCode(0,17)+h.shortToStr(4+e.length)+e)},h.SendKeyMsgKC=function(e,n){if(3==h.State)if("object"==typeof e)for(var t in e)h.SendKeyMsgKC(e[t][0],e[t][1]);else{if(1==e)-1==h.pressedKeys.indexOf(n)&&h.pressedKeys.unshift(n);else if(2==e){-1!=(t=h.pressedKeys.indexOf(n))&&h.pressedKeys.splice(t,1)}h.send(String.fromCharCode(0,h.InputType.KEY,0,6,e-1,n))}},h.sendcad=function(){h.SendCtrlAltDelMsg()},h.SendCtrlAltDelMsg=function(){3==h.State&&h.send(String.fromCharCode(0,h.InputType.CTRLALTDEL,0,4))},h.SendEscKey=function(){3==h.State&&h.send(String.fromCharCode(0,h.InputType.KEY,0,6,0,27,0,h.InputType.KEY,0,6,1,27))},h.SendStartMsg=function(){h.SendKeyMsgKC(h.KeyAction.EXDOWN,91),h.SendKeyMsgKC(h.KeyAction.EXUP,91)},h.SendCharmsMsg=function(){h.SendKeyMsgKC(h.KeyAction.EXDOWN,91),h.SendKeyMsgKC(h.KeyAction.DOWN,67),h.SendKeyMsgKC(h.KeyAction.UP,67),h.SendKeyMsgKC(h.KeyAction.EXUP,91)},h.SendTouchMsg1=function(e,n,t,o){3==h.State&&h.send(String.fromCharCode(0,h.InputType.TOUCH)+h.shortToStr(14)+String.fromCharCode(1,e)+h.intToStr(n)+h.shortToStr(t)+h.shortToStr(o))},h.SendTouchMsg2=function(e,n){var t,o="";for(var a in h.TouchArray)a==e?t=n:1==h.TouchArray[a].f?(t=65542,h.TouchArray[a].f=3,"START"+a):2==h.TouchArray[a].f?(t=262144,"STOP"+a):t=131078,o+=String.fromCharCode(a)+h.intToStr(t)+h.shortToStr(h.TouchArray[a].x)+h.shortToStr(h.TouchArray[a].y),2==h.TouchArray[a].f&&delete h.TouchArray[a];3==h.State&&h.send(String.fromCharCode(0,h.InputType.TOUCH)+h.shortToStr(5+o.length)+String.fromCharCode(2)+o),0==Object.keys(h.TouchArray).length&&null!=h.touchtimer&&(clearInterval(h.touchtimer),h.touchtimer=null)},h.SendMouseMsg=function(e,n){if(3==h.State&&null!=e&&null!=h.Canvas){if(!n)n=window.event;var t=h.Canvas.canvas.height/h.CanvasId.clientHeight,o=h.Canvas.canvas.width/h.CanvasId.clientWidth,a=h.GetPositionOfControl(h.Canvas.canvas),r=(n.pageX-a[0])*o,i=(n.pageY-a[1])*t;if(n.addx&&(r+=n.addx),n.addy&&(i+=n.addy),0<=r&&r<=h.Canvas.canvas.width&&0<=i&&i<=h.Canvas.canvas.height){var s=0,c=0;e==h.KeyAction.UP||e==h.KeyAction.DOWN?n.which?s=1==n.which?h.MouseButton.LEFT:2==n.which?h.MouseButton.MIDDLE:h.MouseButton.RIGHT:n.button&&(s=0==n.button?h.MouseButton.LEFT:1==n.button?h.MouseButton.MIDDLE:h.MouseButton.RIGHT):e==h.KeyAction.SCROLL&&(n.detail?c=120*n.detail*-1:n.wheelDelta&&(c=3*n.wheelDelta));var u="";u=e==h.KeyAction.DBLCLICK?String.fromCharCode(0,h.InputType.MOUSE,0,10,0,136,r/256&255,255&r,i/256&255,255&i):e==h.KeyAction.SCROLL?String.fromCharCode(0,h.InputType.MOUSE,0,12,0,0,r/256&255,255&r,i/256&255,255&i,c/256&255,255&c):String.fromCharCode(0,h.InputType.MOUSE,0,10,0,e==h.KeyAction.DOWN?s:2*s&255,r/256&255,255&r,i/256&255,255&i),h.Action==h.KeyAction.NONE?0==h.Alternate||h.ipad?(h.send(u),h.Alternate=1):h.Alternate=0:h.send(u)}}},h.GetDisplayNumbers=function(){h.send(String.fromCharCode(0,11,0,4))},h.SetDisplay=function(e){h.send(String.fromCharCode(0,12,0,6,e>>8,255&e))},h.intToStr=function(e){return String.fromCharCode(e>>24&255,e>>16&255,e>>8&255,255&e)},h.shortToStr=function(e){return String.fromCharCode(e>>8&255,255&e)},h.onResize=function(){0!=h.ScreenWidth&&0!=h.ScreenHeight&&(h.Canvas.canvas.width==h.ScreenWidth&&h.Canvas.canvas.height==h.ScreenHeight||(h.FirstDraw&&(h.Canvas.canvas.width=h.ScreenWidth,h.Canvas.canvas.height=h.ScreenHeight,h.Canvas.fillRect(0,0,h.ScreenWidth,h.ScreenHeight),null!=h.onScreenSizeChange&&h.onScreenSizeChange(h,h.ScreenWidth,h.ScreenHeight,h.CanvasId)),h.FirstDraw=!1))},h.xxMouseInputGrab=!1,h.xxKeyInputGrab=!1,h.xxMouseMove=function(e){return 3==h.State&&h.SendMouseMsg(h.KeyAction.NONE,e),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},h.xxMouseUp=function(e){return 3==h.State&&h.SendMouseMsg(h.KeyAction.UP,e),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},h.xxMouseDown=function(e){return 3==h.State&&h.SendMouseMsg(h.KeyAction.DOWN,e),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},h.xxMouseDblClick=function(e){return 3==h.State&&h.SendMouseMsg(h.KeyAction.DBLCLICK,e),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},h.xxDOMMouseScroll=function(e){return 3!=h.State||(h.SendMouseMsg(h.KeyAction.SCROLL,e),!1)},h.xxMouseWheel=function(e){return 3!=h.State||(h.SendMouseMsg(h.KeyAction.SCROLL,e),!1)},h.xxKeyUp=function(e){return 3==h.State&&h.SendKeyMsg(h.KeyAction.UP,e),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},h.xxKeyDown=function(e){return 3==h.State&&h.SendKeyMsg(h.KeyAction.DOWN,e),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},h.xxKeyPress=function(e){return e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},h.handleKeys=function(e){return 1!=h.stopInput&&3==desktop.State&&h.xxKeyPress(e)},h.handleKeyUp=function(e){if(1==h.stopInput||3!=desktop.State)return!1;if(h.firstUpKeys.length<5&&(h.firstUpKeys.push(e.keyCode),5==h.firstUpKeys.length)){var n=h.firstUpKeys.join(",");"16,17,91,91,16"!=n&&"16,17,18,91,92"!=n||(h.stopInput=!0)}return h.xxKeyUp(e)},h.handleKeyDown=function(e){return 1!=h.stopInput&&3==desktop.State&&h.xxKeyDown(e)},h.handleReleaseKeys=function(){var e=JSON.parse(JSON.stringify(h.pressedKeys));for(var n in e)h.SendKeyMsgKC(h.KeyAction.UP,e[n])},h.mousedblclick=function(e){return 1!=h.stopInput&&h.xxMouseDblClick(e)},h.mousedown=function(e){return 1!=h.stopInput&&h.xxMouseDown(e)},h.mouseup=function(e){return 1!=h.stopInput&&h.xxMouseUp(e)},h.mousemove=function(e){return 1!=h.stopInput&&h.xxMouseMove(e)},h.mousewheel=function(e){return 1!=h.stopInput&&h.xxMouseWheel(e)},h.xxMsTouchEvent=function(e){if(4!=e.originalEvent.pointerType){if(e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),"MSPointerDown"==e.type||"MSPointerMove"==e.type||"MSPointerUp"==e.type){var n=0,t=e.originalEvent.pointerId%256,o=e.offsetX*(Canvas.canvas.width/h.CanvasId.clientWidth),a=e.offsetY*(Canvas.canvas.height/h.CanvasId.clientHeight);"MSPointerDown"==e.type?n=65542:"MSPointerMove"==e.type?n=131078:"MSPointerUp"==e.type&&(n=262144),h.TouchArray[t]||(h.TouchArray[t]={x:o,y:a}),h.SendTouchMsg2(t,n),"MSPointerUp"==e.type&&delete h.TouchArray[t]}else alert(e.type);return!0}},h.xxTouchStart=function(e){if(3==h.State)if(e.preventDefault&&e.preventDefault(),0==h.touchenabled||1==h.touchenabled){if(1<e.originalEvent.touches.length)return;var n=e.originalEvent.touches[0];e.which=1,h.LastX=e.pageX=n.pageX,h.LastY=e.pageY=n.pageY,h.SendMouseMsg(KeyAction.DOWN,e)}else{var t=h.GetPositionOfControl(Canvas.canvas);for(var o in e.originalEvent.changedTouches)if(e.originalEvent.changedTouches[o].identifier){var a=e.originalEvent.changedTouches[o].identifier%256;h.TouchArray[a]||(h.TouchArray[a]={x:(e.originalEvent.touches[o].pageX-t[0])*(Canvas.canvas.width/h.CanvasId.clientWidth),y:(e.originalEvent.touches[o].pageY-t[1])*(Canvas.canvas.height/h.CanvasId.clientHeight),f:1})}0<Object.keys(h.TouchArray).length&&null==touchtimer&&(h.touchtimer=setInterval(function(){h.SendTouchMsg2(256,0)},50))}},h.xxTouchMove=function(e){if(3==h.State)if(e.preventDefault&&e.preventDefault(),0==h.touchenabled||1==h.touchenabled){if(1<e.originalEvent.touches.length)return;var n=e.originalEvent.touches[0];e.which=1,h.LastX=e.pageX=n.pageX,h.LastY=e.pageY=n.pageY,h.SendMouseMsg(h.KeyAction.NONE,e)}else{var t=h.GetPositionOfControl(Canvas.canvas);for(var o in e.originalEvent.changedTouches)if(e.originalEvent.changedTouches[o].identifier){var a=e.originalEvent.changedTouches[o].identifier%256;h.TouchArray[a]&&(h.TouchArray[a].x=(e.originalEvent.touches[o].pageX-t[0])*(h.Canvas.canvas.width/h.CanvasId.clientWidth),h.TouchArray[a].y=(e.originalEvent.touches[o].pageY-t[1])*(h.Canvas.canvas.height/h.CanvasId.clientHeight))}}},h.xxTouchEnd=function(e){if(3==h.State)if(e.preventDefault&&e.preventDefault(),0==h.touchenabled||1==h.touchenabled){if(1<e.originalEvent.touches.length)return;e.which=1,e.pageX=LastX,e.pageY=LastY,h.SendMouseMsg(KeyAction.UP,e)}else for(var n in e.originalEvent.changedTouches)if(e.originalEvent.changedTouches[n].identifier){var t=e.originalEvent.changedTouches[n].identifier%256;h.TouchArray[t]&&(h.TouchArray[t].f=2)}},h.GrabMouseInput=function(){if(1!=h.xxMouseInputGrab){var e=h.CanvasId;e.onmousemove=h.xxMouseMove,e.onmouseup=h.xxMouseUp,e.onmousedown=h.xxMouseDown,e.touchstart=h.xxTouchStart,e.touchmove=h.xxTouchMove,e.touchend=h.xxTouchEnd,e.MSPointerDown=h.xxMsTouchEvent,e.MSPointerMove=h.xxMsTouchEvent,e.MSPointerUp=h.xxMsTouchEvent,navigator.userAgent.match(/mozilla/i)?e.DOMMouseScroll=h.xxDOMMouseScroll:e.onmousewheel=h.xxMouseWheel,h.xxMouseInputGrab=!0}},h.UnGrabMouseInput=function(){if(0!=h.xxMouseInputGrab){var e=h.CanvasId;e.onmousemove=null,e.onmouseup=null,e.onmousedown=null,e.touchstart=null,e.touchmove=null,e.touchend=null,e.MSPointerDown=null,e.MSPointerMove=null,e.MSPointerUp=null,navigator.userAgent.match(/mozilla/i)?e.DOMMouseScroll=null:e.onmousewheel=null,h.xxMouseInputGrab=!1}},h.GrabKeyInput=function(){1!=h.xxKeyInputGrab&&(document.onkeyup=h.xxKeyUp,document.onkeydown=h.xxKeyDown,document.onkeypress=h.xxKeyPress,h.xxKeyInputGrab=!0)},h.UnGrabKeyInput=function(){0!=h.xxKeyInputGrab&&(document.onkeyup=null,document.onkeydown=null,document.onkeypress=null,h.xxKeyInputGrab=!1)},h.GetPositionOfControl=function(e){var n=Array(2);for(n[0]=n[1]=0;e;)n[0]+=e.offsetLeft,n[1]+=e.offsetTop,e=e.offsetParent;return n},h.crotX=function(e,n){return 0==h.rotation?e:1==h.rotation?n:2==h.rotation?h.Canvas.canvas.width-e:3==h.rotation?h.Canvas.canvas.height-n:void 0},h.crotY=function(e,n){return 0==h.rotation?n:1==h.rotation?h.Canvas.canvas.width-e:2==h.rotation?h.Canvas.canvas.height-n:3==h.rotation?e:void 0},h.rotX=function(e,n){return 0==h.rotation||1==h.rotation?e:2==h.rotation?e-h.Canvas.canvas.width:3==h.rotation?e-h.Canvas.canvas.height:void 0},h.rotY=function(e,n){return 0==h.rotation||3==h.rotation?n:1==h.rotation?n-h.Canvas.canvas.width:2==h.rotation?n-h.Canvas.canvas.height:void 0},h.tcanvas=null,h.setRotation=function(e){for(;e<0;)e+=4;var n=e%4;if(n==h.rotation)return!0;var t=h.Canvas.canvas.width,o=h.Canvas.canvas.height;1!=h.rotation&&3!=h.rotation||(t=h.Canvas.canvas.height,o=h.Canvas.canvas.width),null==h.tcanvas&&(h.tcanvas=document.createElement("canvas"));var a=h.tcanvas.getContext("2d");return a.setTransform(1,0,0,1,0,0),a.canvas.width=t,a.canvas.height=o,a.rotate(-90*h.rotation*Math.PI/180),0==h.rotation&&a.drawImage(h.Canvas.canvas,0,0),1==h.rotation&&a.drawImage(h.Canvas.canvas,-h.Canvas.canvas.width,0),2==h.rotation&&a.drawImage(h.Canvas.canvas,-h.Canvas.canvas.width,-h.Canvas.canvas.height),3==h.rotation&&a.drawImage(h.Canvas.canvas,0,-h.Canvas.canvas.height),0!=h.rotation&&2!=h.rotation||(h.Canvas.canvas.height=t,h.Canvas.canvas.width=o),1!=h.rotation&&3!=h.rotation||(h.Canvas.canvas.height=o,h.Canvas.canvas.width=t),h.Canvas.setTransform(1,0,0,1,0,0),h.Canvas.rotate(90*n*Math.PI/180),h.rotation=n,h.Canvas.drawImage(h.tcanvas,h.rotX(0,0),h.rotY(0,0)),h.ScreenWidth=h.Canvas.canvas.width,h.ScreenHeight=h.Canvas.canvas.height,null!=h.onScreenSizeChange&&h.onScreenSizeChange(h,h.ScreenWidth,h.ScreenHeight,h.CanvasId),!0},h.StartRecording=function(){null==h.recordedData&&h.CanvasId.toBlob(function(e){var i=new FileReader;i.readAsArrayBuffer(e),i.onload=function(e){for(var n="",t=new Uint8Array(i.result),o=t.byteLength,a=0;a<o;a++)n+=String.fromCharCode(t[a]);h.recordedData=[],h.recordedStart=Date.now(),h.recordedSize=0,h.recordedData.push(s(1,0,JSON.stringify({magic:"MeshCentralRelaySession",ver:1,time:(new Date).toLocaleString(),protocol:2}))),h.recordedData.push(s(2,1,h.shortToStr(7)+h.shortToStr(8)+h.shortToStr(h.ScreenWidth)+h.shortToStr(h.ScreenHeight)));var r=4+n.length;65e3<r?h.recordedData.push(s(2,1,h.shortToStr(27)+h.shortToStr(8)+h.intToStr(r)+h.shortToStr(3)+h.shortToStr(0)+h.shortToStr(0)+h.shortToStr(0)+n)):h.recordedData.push(s(2,1,h.shortToStr(3)+h.shortToStr(r)+h.shortToStr(0)+h.shortToStr(0)+n))}})},h.StopRecording=function(){if(null!=h.recordedData){var e=h.recordedData;return e.push(s(3,0,"MeshCentralMCREC")),delete h.recordedData,delete h.recordedStart,delete h.recordedSize,e}},h.MuchTheSame=function(e,n){return Math.abs(e-n)<4},h.Debug=function(e){console.log(e)},h.getIEVersion=function(){var e=-1;if("Microsoft Internet Explorer"==navigator.appName){var n=navigator.userAgent;null!=new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})").exec(n)&&(e=parseFloat(RegExp.$1))}return e},h.haltEvent=function(e){return e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},h}
\ No newline at end of file
public/scripts/agent-desktop-0.0.2.js
+10 -5
@@ -107,14 +107,18 @@ var CreateAgentRemoteDesktop = function (canvasid, scrolldiv) {
107 //if (obj.targetnode != null) obj.Debug("ProcessPictureMsg " + X + "," + Y + " - " + obj.targetnode.substring(0, 8));
108 var tile = new Image();
109 tile.xcount = obj.tilesReceived++;
110 - //console.log('Tile #' + tile.xcount);
111 - var r = obj.tilesReceived;
112 - tile.src = "data:image/jpeg;base64," + btoa(String.fromCharCode.apply(null, data.slice(4)));
110 + var r = obj.tilesReceived, tdata = data.slice(4), ptr = 0, strs = [];
111 + // String.fromCharCode.apply() can't handle very large argument count, so we have to split like this.
112 + while ((tdata.byteLength - ptr) > 50000) { strs.push(String.fromCharCode.apply(null, tdata.slice(ptr, ptr + 50000))); ptr += 50000; }
113 + if (ptr > 0) { strs.push(String.fromCharCode.apply(null, tdata.slice(ptr))); } else { strs.push(String.fromCharCode.apply(null, tdata)); }
114 + tile.src = "data:image/jpeg;base64," + btoa(strs.join(''));
115 tile.onload = function () {
116 //console.log('DecodeTile #' + this.xcount);
115 - if (obj.Canvas != null && obj.KillDraw < r && obj.State != 0) {
117 + if ((obj.Canvas != null) && (obj.KillDraw < r) && (obj.State != 0)) {
118 obj.PendingOperations.push([r, 2, tile, X, Y]);
119 while (obj.DoPendingOperations()) { }
120 + } else {
121 + obj.PendingOperations.push([r, 0]);
122 }
123 }
124 tile.error = function () { console.log('DecodeTileError'); }
@@ -130,7 +134,7 @@ var CreateAgentRemoteDesktop = function (canvasid, scrolldiv) {
134 obj.PendingOperations.splice(i, 1);
135 delete Msg;
136 obj.TilesDrawn++;
133 - if (obj.TilesDrawn == obj.tilesReceived && obj.KillDraw < obj.TilesDrawn) { obj.KillDraw = obj.TilesDrawn = obj.tilesReceived = 0; }
137 + if ((obj.TilesDrawn == obj.tilesReceived) && (obj.KillDraw < obj.TilesDrawn)) { obj.KillDraw = obj.TilesDrawn = obj.tilesReceived = 0; }
138 return true;
139 }
140 }
@@ -164,6 +168,7 @@ var CreateAgentRemoteDesktop = function (canvasid, scrolldiv) {
168 if (level) { obj.CompressionLevel = level; }
169 if (scaling) { obj.ScalingLevel = scaling; }
170 if (frametimer) { obj.FrameRateTimer = frametimer; }
171 + //console.log('SendCompressionLevel', obj.CompressionLevel, obj.ScalingLevel, obj.FrameRateTimer);
172 obj.send(String.fromCharCode(0x00, 0x05, 0x00, 0x0A, type, obj.CompressionLevel) + obj.shortToStr(obj.ScalingLevel) + obj.shortToStr(obj.FrameRateTimer));
173 }
174
public/scripts/agent-redir-ws-0.1.1-min.js
+1 -1
@@ -1 +1 @@
1 -var CreateAgentRedirect=function(e,t,n,o,a,r){var c={};function s(){1==c.webSwitchOk&&1==c.webRtcActive&&(c.latency.current=-1,c.sendCtrlMsg('{"ctrlChannel":"102938","type":"webrtc0"}'),c.sendCtrlMsg('{"ctrlChannel":"102938","type":"webrtc1"}'),null!=c.onStateChanged&&c.onStateChanged(c,c.State))}((c.m=t).parent=c).meshserver=e,c.authCookie=o,c.rauthCookie=a,c.State=0,c.nodeid=null,c.options=null,c.socket=null,c.connectstate=-1,c.tunnelid=Math.random().toString(36).substring(2),c.protocol=t.protocol,c.onStateChanged=null,c.ctrlMsgAllowed=!0,c.attemptWebRTC=!1,c.webRtcActive=!1,c.webSwitchOk=!1,c.webchannel=null,c.webrtc=null,c.debugmode=0,c.serverIsRecording=!1,c.latency={lastSend:null,current:-1,callback:null},null==r&&(r="/"),c.consoleMessage=null,c.onConsoleMessageChange=null,c.metadata=null,c.onMetadataChange=null,c.Start=function(e){var t=window.location.protocol.replace("http","ws")+"//"+window.location.host+window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/"))+"/meshrelay.ashx?browser=1&p="+c.protocol+"&nodeid="+e+"&id="+c.tunnelid;null!=o&&""!=o&&(t+="&auth="+o),null!=urlargs&&null!=urlargs.slowrelay&&(t+="&slowrelay="+urlargs.slowrelay),c.nodeid=e,c.connectstate=0,c.socket=new WebSocket(t),c.socket.onopen=c.xxOnSocketConnected,c.socket.onmessage=c.xxOnMessage,c.socket.onerror=function(e){},c.socket.onclose=c.xxOnSocketClosed,c.xxStateChange(1);var n="*"+r+"meshrelay.ashx?p="+c.protocol+"&nodeid="+e+"&id="+c.tunnelid;null!=a&&""!=a&&(n+="&rauth="+a),c.meshserver.send({action:"msg",type:"tunnel",nodeid:c.nodeid,value:n,usage:c.protocol})},c.xxOnSocketConnected=function(){1==c.debugmode&&console.log("onSocketConnected"),c.xxStateChange(2)},c.xxOnControlCommand=function(e){var t;try{t=JSON.parse(e)}catch(e){return}"102938"==t.ctrlChannel?("undefined"!=typeof args&&args.redirtrace&&console.log("RedirRecv",t),"console"==t.type?c.setConsoleMessage(t.msg,t.msgid,t.msgargs,t.timeout):"metadata"==t.type?(c.metadata=t,c.onMetadataChange&&c.onMetadataChange(c.metadata)):"rtt"==t.type&&"number"==typeof t.time?(c.latency.current=(new Date).getTime()-t.time,null!=c.latency.callbacks&&c.latency.callback(c.latency.current)):null!=c.webrtc&&("answer"==t.type?c.webrtc.setRemoteDescription(new RTCSessionDescription(t),function(){},c.xxCloseWebRTC):"webrtc0"==t.type?(c.webSwitchOk=!0,s()):"webrtc1"==t.type?c.sendCtrlMsg('{"ctrlChannel":"102938","type":"webrtc2"}'):t.type)):c.xxOnSocketData(e)},c.setConsoleMessage=function(e,t,n,o){c.consoleMessage!=e&&(c.consoleMessage=e,c.consoleMessageId=t,c.consoleMessageArgs=n,c.consoleMessageTimeout=o,c.onConsoleMessageChange&&c.onConsoleMessageChange(c,c.consoleMessage,c.consoleMessageId))},c.sendCtrlMsg=function(e){if(1==c.ctrlMsgAllowed){"undefined"!=typeof args&&args.redirtrace&&console.log("RedirSend",typeof e,e);try{c.socket.send(e)}catch(e){}}},c.xxOnMessage=function(e){if(c.State<3&&("c"==e.data||"cr"==e.data)){if("cr"==e.data&&(c.serverIsRecording=!0),null!=c.options){delete c.options.action,c.options.type="options";try{c.sendCtrlMsg(JSON.stringify(c.options))}catch(e){}}try{c.socket.send(c.protocol)}catch(e){}if(c.xxStateChange(3),1==c.attemptWebRTC){"undefined"!=typeof RTCPeerConnection?c.webrtc=new RTCPeerConnection(null):"undefined"!=typeof webkitRTCPeerConnection&&(c.webrtc=new webkitRTCPeerConnection(null)),null!=c.webrtc&&c.webrtc.createDataChannel&&(c.webchannel=c.webrtc.createDataChannel("DataChannel",{}),c.webchannel.onmessage=c.xxOnMessage,c.webchannel.onopen=function(){c.webRtcActive=!0,s()},c.webchannel.onclose=function(e){c.webRtcActive&&c.Stop()},c.webrtc.onicecandidate=function(e){if(null==e.candidate)try{c.sendCtrlMsg(JSON.stringify(c.webrtcoffer))}catch(e){}else c.webrtcoffer.sdp+="a="+e.candidate.candidate+"\r\n"},c.webrtc.oniceconnectionstatechange=function(){null!=c.webrtc&&("disconnected"==c.webrtc.iceConnectionState?1==c.webRtcActive?c.Stop():c.xxCloseWebRTC():"failed"==c.webrtc.iceConnectionState&&c.xxCloseWebRTC())},c.webrtc.createOffer(function(e){c.webrtcoffer=e,c.webrtc.setLocalDescription(e,function(){},c.xxCloseWebRTC)},c.xxCloseWebRTC,{mandatory:{OfferToReceiveAudio:!1,OfferToReceiveVideo:!1}}))}}else if("string"!=typeof e.data){if("object"==typeof e.data){if(1==i)return void d.push(e.data);if(l.readAsBinaryString&&null==c.m.ProcessBinaryData)i=!0,l.readAsBinaryString(new Blob([e.data]));else if(l.readAsArrayBuffer)i=!0,l.readAsArrayBuffer(e.data);else{for(var t="",n=new Uint8Array(e.data),o=n.byteLength,a=0;a<o;a++)t+=String.fromCharCode(n[a]);c.xxOnSocketData(t)}}else c.xxOnSocketData(e.data);if(1!=c.webRtcActive){var r=(new Date).getTime();(null==c.latency.lastSend||5e3<r-c.latency.lastSend)&&(c.latency.lastSend=r,c.sendCtrlMsg('{"ctrlChannel":"102938","type":"rtt","time":'+r+"}"))}}else c.xxOnControlCommand(e.data)};var l=new FileReader,i=!1,d=[];return l.readAsBinaryString&&null==c.m.ProcessBinaryData?l.onload=function(e){c.xxOnSocketData(e.target.result),0==d.length?i=!1:l.readAsBinaryString(new Blob([d.shift()]))}:l.readAsArrayBuffer&&(l.onloadend=function(e){c.xxOnSocketData(e.target.result),0==d.length?i=!1:l.readAsArrayBuffer(d.shift())}),c.xxOnSocketData=function(e){if(e&&-1!=c.connectstate){if("object"==typeof e){if(c.m.ProcessBinaryData)return c.m.ProcessBinaryData(e);for(var t="",n=new Uint8Array(e),o=n.byteLength,a=0;a<o;a++)t+=String.fromCharCode(n[a]);e=t}else if("string"!=typeof e)return;return"undefined"!=typeof args&&args.redirtrace&&console.log("RedirRecv",typeof e,e.length,"{"==e[0]?e:rstr2hex(e).substring(0,64)),c.m.ProcessData(e)}},c.sendText=function(e){"string"!=typeof e&&(e=JSON.stringify(e)),c.send(encode_utf8(e))},c.send=function(e){"undefined"!=typeof args&&args.redirtrace&&console.log("RedirSend",typeof e,e.length,"{"==e[0]?e:rstr2hex(e).substring(0,64));try{if(null!=c.socket&&c.socket.readyState==WebSocket.OPEN)if("string"==typeof e)if(1==c.debugmode){for(var t=new Uint8Array(e.length),n=[],o=0;o<e.length;++o)t[o]=e.charCodeAt(o),n.push(e.charCodeAt(o));1==c.webRtcActive?c.webchannel.send(t.buffer):c.socket.send(t.buffer)}else{for(t=new Uint8Array(e.length),o=0;o<e.length;++o)t[o]=e.charCodeAt(o);1==c.webRtcActive?c.webchannel.send(t.buffer):c.socket.send(t.buffer)}else 1==c.webRtcActive?c.webchannel.send(e):c.socket.send(e)}catch(e){}},c.xxOnSocketClosed=function(){c.Stop(1)},c.xxStateChange=function(e){c.State!=e&&(c.State=e,c.m.xxStateChange(c.State),null!=c.onStateChanged&&c.onStateChanged(c,c.State))},c.xxCloseWebRTC=function(){if(null!=c.webchannel){try{c.webchannel.close()}catch(e){}c.webchannel=null}if(null!=c.webrtc){try{c.webrtc.close()}catch(e){}c.webrtc=null}c.webRtcActive=!1},c.Stop=function(e){if(1==c.debugmode&&console.log("stop",e),c.xxCloseWebRTC(),c.connectstate=-1,null!=c.socket){try{1==c.socket.readyState&&(c.sendCtrlMsg('{"ctrlChannel":"102938","type":"close"}'),c.socket.close())}catch(e){}c.socket=null}c.xxStateChange(0)},c}
\ No newline at end of file
1 +var CreateAgentRedirect=function(e,t,n,o,a,c){var s={};function l(){1==s.webSwitchOk&&1==s.webRtcActive&&(s.latency.current=-1,s.sendCtrlMsg('{"ctrlChannel":"102938","type":"webrtc0"}'),s.sendCtrlMsg('{"ctrlChannel":"102938","type":"webrtc1"}'),null!=s.onStateChanged&&s.onStateChanged(s,s.State))}((s.m=t).parent=s).meshserver=e,s.authCookie=o,s.rauthCookie=a,s.State=0,s.nodeid=null,s.options=null,s.socket=null,s.connectstate=-1,s.tunnelid=Math.random().toString(36).substring(2),s.protocol=t.protocol,s.onStateChanged=null,s.ctrlMsgAllowed=!0,s.attemptWebRTC=!1,s.webRtcActive=!1,s.webSwitchOk=!1,s.webchannel=null,s.webrtc=null,s.debugmode=0,s.serverIsRecording=!1,s.latency={lastSend:null,current:-1,callback:null},null==c&&(c="/"),s.consoleMessage=null,s.onConsoleMessageChange=null,s.metadata=null,s.onMetadataChange=null,s.Start=function(e){var t=window.location.protocol.replace("http","ws")+"//"+window.location.host+window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/"))+"/meshrelay.ashx?browser=1&p="+s.protocol+"&nodeid="+e+"&id="+s.tunnelid;null!=o&&""!=o&&(t+="&auth="+o),null!=urlargs&&null!=urlargs.slowrelay&&(t+="&slowrelay="+urlargs.slowrelay),s.nodeid=e,s.connectstate=0,s.socket=new WebSocket(t),s.socket.binaryType="arraybuffer",s.socket.onopen=s.xxOnSocketConnected,s.socket.onmessage=s.xxOnMessage,s.socket.onerror=function(e){},s.socket.onclose=s.xxOnSocketClosed,s.xxStateChange(1);var n="*"+c+"meshrelay.ashx?p="+s.protocol+"&nodeid="+e+"&id="+s.tunnelid;null!=a&&""!=a&&(n+="&rauth="+a),s.meshserver.send({action:"msg",type:"tunnel",nodeid:s.nodeid,value:n,usage:s.protocol})},s.xxOnSocketConnected=function(){1==s.debugmode&&console.log("onSocketConnected"),s.xxStateChange(2)},s.xxOnControlCommand=function(e){var t;try{t=JSON.parse(e)}catch(e){return}"102938"==t.ctrlChannel?("undefined"!=typeof args&&args.redirtrace&&console.log("RedirRecv",t),"console"==t.type?s.setConsoleMessage(t.msg,t.msgid,t.msgargs,t.timeout):"metadata"==t.type?(s.metadata=t,s.onMetadataChange&&s.onMetadataChange(s.metadata)):"rtt"==t.type&&"number"==typeof t.time?(s.latency.current=(new Date).getTime()-t.time,null!=s.latency.callbacks&&s.latency.callback(s.latency.current)):null!=s.webrtc&&("answer"==t.type?s.webrtc.setRemoteDescription(new RTCSessionDescription(t),function(){},s.xxCloseWebRTC):"webrtc0"==t.type?(s.webSwitchOk=!0,l()):"webrtc1"==t.type?s.sendCtrlMsg('{"ctrlChannel":"102938","type":"webrtc2"}'):t.type)):s.m.ProcessData(e)},s.setConsoleMessage=function(e,t,n,o){s.consoleMessage!=e&&(s.consoleMessage=e,s.consoleMessageId=t,s.consoleMessageArgs=n,s.consoleMessageTimeout=o,s.onConsoleMessageChange&&s.onConsoleMessageChange(s,s.consoleMessage,s.consoleMessageId))},s.sendCtrlMsg=function(e){if(1==s.ctrlMsgAllowed){"undefined"!=typeof args&&args.redirtrace&&console.log("RedirSend",typeof e,e);try{s.socket.send(e)}catch(e){}}},s.xxOnMessage=function(e){if(s.State<3&&("c"==e.data||"cr"==e.data)){if("cr"==e.data&&(s.serverIsRecording=!0),null!=s.options){delete s.options.action,s.options.type="options";try{s.sendCtrlMsg(JSON.stringify(s.options))}catch(e){}}try{s.socket.send(s.protocol)}catch(e){}if(s.xxStateChange(3),1==s.attemptWebRTC){"undefined"!=typeof RTCPeerConnection?s.webrtc=new RTCPeerConnection(null):"undefined"!=typeof webkitRTCPeerConnection&&(s.webrtc=new webkitRTCPeerConnection(null)),null!=s.webrtc&&s.webrtc.createDataChannel&&(s.webchannel=s.webrtc.createDataChannel("DataChannel",{}),s.webchannel.binaryType="arraybuffer",s.webchannel.onmessage=s.xxOnMessage,s.webchannel.onopen=function(){s.webRtcActive=!0,l()},s.webchannel.onclose=function(e){s.webRtcActive&&s.Stop()},s.webrtc.onicecandidate=function(e){if(null==e.candidate)try{s.sendCtrlMsg(JSON.stringify(s.webrtcoffer))}catch(e){}else s.webrtcoffer.sdp+="a="+e.candidate.candidate+"\r\n"},s.webrtc.oniceconnectionstatechange=function(){null!=s.webrtc&&("disconnected"==s.webrtc.iceConnectionState?1==s.webRtcActive?s.Stop():s.xxCloseWebRTC():"failed"==s.webrtc.iceConnectionState&&s.xxCloseWebRTC())},s.webrtc.createOffer(function(e){s.webrtcoffer=e,s.webrtc.setLocalDescription(e,function(){},s.xxCloseWebRTC)},s.xxCloseWebRTC,{mandatory:{OfferToReceiveAudio:!1,OfferToReceiveVideo:!1}}))}}else if("string"==typeof e.data)s.xxOnControlCommand(e.data);else if(s.m.ProcessBinaryCommand)if(0!=u){var t=new Uint8Array(e.data);if(g.push(t),u+=t.byteLength,d<=u){var n=new Uint8Array(u),o=0;for(var a in g)n.set(g[a],o),o+=g[a].byteLength;s.m.ProcessBinaryCommand(i,d,n),u=d=i=0,g=[]}}else{var c=((t=new Uint8Array(e.data))[0]<<8)+t[1],r=(t[2]<<8)+t[3];27==c&&8==r&&(c=(t[8]<<8)+t[9],r=(t[5]<<16)+(t[6]<<8)+t[7],t=t.slice(8)),r!=t.byteLength?(i=c,d=r,u=t.byteLength,g=[t]):s.m.ProcessBinaryCommand(c,r,t)}else s.m.ProcessBinaryData?s.m.ProcessBinaryData(new Uint8Array(e.data)):s.m.ProcessData(String.fromCharCode.apply(null,new Uint8Array(e.data)))};var i=0,d=0,u=0,g=[];return s.sendText=function(e){"string"!=typeof e&&(e=JSON.stringify(e)),s.send(encode_utf8(e))},s.send=function(e){"undefined"!=typeof args&&args.redirtrace&&console.log("RedirSend",typeof e,e.length,"{"==e[0]?e:rstr2hex(e).substring(0,64));try{if(null!=s.socket&&s.socket.readyState==WebSocket.OPEN)if("string"==typeof e)if(1==s.debugmode){for(var t=new Uint8Array(e.length),n=[],o=0;o<e.length;++o)t[o]=e.charCodeAt(o),n.push(e.charCodeAt(o));1==s.webRtcActive?s.webchannel.send(t.buffer):s.socket.send(t.buffer)}else{for(t=new Uint8Array(e.length),o=0;o<e.length;++o)t[o]=e.charCodeAt(o);1==s.webRtcActive?s.webchannel.send(t.buffer):s.socket.send(t.buffer)}else 1==s.webRtcActive?s.webchannel.send(e):s.socket.send(e)}catch(e){}},s.xxOnSocketClosed=function(){s.Stop(1)},s.xxStateChange=function(e){s.State!=e&&(s.State=e,s.m.xxStateChange(s.State),null!=s.onStateChanged&&s.onStateChanged(s,s.State))},s.xxCloseWebRTC=function(){if(null!=s.webchannel){try{s.webchannel.close()}catch(e){}s.webchannel=null}if(null!=s.webrtc){try{s.webrtc.close()}catch(e){}s.webrtc=null}s.webRtcActive=!1},s.Stop=function(e){if(1==s.debugmode&&console.log("stop",e),s.xxCloseWebRTC(),s.connectstate=-1,null!=s.socket){try{1==s.socket.readyState&&(s.sendCtrlMsg('{"ctrlChannel":"102938","type":"close"}'),s.socket.close())}catch(e){}s.socket=null}s.xxStateChange(0)},s}
\ No newline at end of file
public/scripts/agent-redir-ws-0.1.1.js
+30 -4
@@ -74,7 +74,7 @@ var CreateAgentRedirect = function (meshserver, module, serverPublicNamePort, au
74 obj.xxOnControlCommand = function (msg) {
75 var controlMsg;
76 try { controlMsg = JSON.parse(msg); } catch (e) { return; }
77 - if (controlMsg.ctrlChannel != '102938') { obj.xxOnSocketData(msg); return; }
77 + if (controlMsg.ctrlChannel != '102938') { obj.m.ProcessData(msg); return; }
78 //console.log(controlMsg);
79 if ((typeof args != 'undefined') && args.redirtrace) { console.log('RedirRecv', controlMsg); }
80 if (controlMsg.type == 'console') {
@@ -168,15 +168,38 @@ var CreateAgentRedirect = function (meshserver, module, serverPublicNamePort, au
168 }
169
170 // Control messages, most likely WebRTC setup
171 + //console.log('New data', e.data.byteLength);
172 if (typeof e.data == 'string') {
173 obj.xxOnControlCommand(e.data);
174 } else {
175 // Send the data to the module
176 if (obj.m.ProcessBinaryCommand) {
177 // Send as Binary Command
177 - var view = new Uint8Array(e.data), cmd = (view[0] << 8) + view[1], cmdsize = (view[2] << 8) + view[3];
178 - if ((cmd == 27) && (cmdsize == 8)) { cmd = (view[8] << 8) + view[9]; cmdsize = (view[5] << 16) + (view[6] << 8) + view[7]; view = view.slice(8); }
179 - if (cmdsize != view.byteLength) { console.log('REDIR-ERROR', cmd, cmdsize, view.byteLength); } else { obj.m.ProcessBinaryCommand(cmd, cmdsize, view); }
178 + if (cmdAccLen != 0) {
179 + // Accumulator is active
180 + var view = new Uint8Array(e.data);
181 + cmdAcc.push(view);
182 + cmdAccLen += view.byteLength;
183 + //console.log('Accumulating', cmdAccLen);
184 + if (cmdAccCmdSize <= cmdAccLen) {
185 + var tmp = new Uint8Array(cmdAccLen), tmpPtr = 0;
186 + for (var i in cmdAcc) { tmp.set(cmdAcc[i], tmpPtr); tmpPtr += cmdAcc[i].byteLength; }
187 + //console.log('AccumulatorCompleted');
188 + obj.m.ProcessBinaryCommand(cmdAccCmd, cmdAccCmdSize, tmp);
189 + cmdAccCmd = 0, cmdAccCmdSize = 0, cmdAccLen = 0, cmdAcc = [];
190 + }
191 + } else {
192 + // Accumulator is not active
193 + var view = new Uint8Array(e.data), cmd = (view[0] << 8) + view[1], cmdsize = (view[2] << 8) + view[3];
194 + if ((cmd == 27) && (cmdsize == 8)) { cmd = (view[8] << 8) + view[9]; cmdsize = (view[5] << 16) + (view[6] << 8) + view[7]; view = view.slice(8); }
195 + //console.log(cmdsize, view.byteLength);
196 + if (cmdsize != view.byteLength) {
197 + //console.log('AccumulatorRequired', cmd, cmdsize, view.byteLength);
198 + cmdAccCmd = cmd; cmdAccCmdSize = cmdsize; cmdAccLen = view.byteLength, cmdAcc = [view];
199 + } else {
200 + obj.m.ProcessBinaryCommand(cmd, cmdsize, view);
201 + }
202 + }
203 } else if (obj.m.ProcessBinaryData) {
204 // Send as Binary
205 obj.m.ProcessBinaryData(new Uint8Array(e.data));
@@ -187,6 +210,9 @@ var CreateAgentRedirect = function (meshserver, module, serverPublicNamePort, au
210 }
211 };
212
213 + // Command accumulator, this is used for WebRTC fragmentation
214 + var cmdAccCmd = 0, cmdAccCmdSize = 0, cmdAccLen = 0, cmdAcc = [];
215 +
216 obj.sendText = function (x) {
217 if (typeof x != 'string') { x = JSON.stringify(x); } // Turn into a string if needed
218 obj.send(encode_utf8(x)); // Encode UTF8 correctly
sample-config-advanced.json new
+264
@@ -0,0 +1,264 @@
1 +{
2 + "__comment__" : "This is a sample configuration file, all values and sections that start with underscore (_) are ignored. Edit a section and remove the _ in front of the name. Refer to the user's guide for details.",
3 + "settings": {
4 + "_Cert": "myserver.mydomain.com",
5 + "_MongoDb": "mongodb://127.0.0.1:27017",
6 + "_MongoDbName": "meshcentral",
7 + "_MongoDbChangeStream": true,
8 + "_MongoDumpPath": "C:\\Program Files\\MongoDB\\Server\\4.2\\bin\\mongodump.exe",
9 + "_WANonly": true,
10 + "_LANonly": true,
11 + "_SessionTime": 30,
12 + "_SessionKey": "MyReallySecretPassword1",
13 + "_SessionSameSite": "strict",
14 + "_DbEncryptKey": "MyReallySecretPassword2",
15 + "_DbRecordsEncryptKey": "MyReallySecretPassword",
16 + "_DbRecordsDecryptKey": "MyReallySecretPassword",
17 + "__DbExpire": "Amount of time to keep various events in the database, in seconds. Below are the default values.",
18 + "_DbExpire": {
19 + "events": 1728000,
20 + "powerevents": 864000,
21 + "statsevents": 2592000
22 + },
23 + "_Port": 443,
24 + "_AliasPort": 444,
25 + "_RedirPort": 80,
26 + "_RedirAliasPort": 80,
27 + "_AgentPort": 1234,
28 + "_AgentAliasPort": 1234,
29 + "_AgentAliasDNS": "agents.myserver.mydomain.com",
30 + "_ExactPorts": true,
31 + "_AllowLoginToken": true,
32 + "_AllowFraming": true,
33 + "_CookieIpCheck": false,
34 + "_CookieEncoding": "hex",
35 + "_WebRTC": false,
36 + "_Nice404": false,
37 + "_ClickOnce": false,
38 + "_SelfUpdate": true,
39 + "_BrowserPing": 60,
40 + "_BrowserPong": 60,
41 + "_AgentPing": 60,
42 + "_AgentPong": 60,
43 + "_AgentIdleTimeout": 150,
44 + "_MeshErrorLogPath": "c:\\tmp",
45 + "_NpmPath": "c:\\npm.exe",
46 + "_NpmProxy": "http://1.2.3.4:80",
47 + "_AllowHighQualityDesktop": true,
48 + "_DesktopMultiplex": true,
49 + "_UserAllowedIP": "127.0.0.1,192.168.1.0/24",
50 + "_UserBlockedIP": "127.0.0.1,::1,192.168.0.100",
51 + "_AgentAllowedIP": "192.168.0.100/24",
52 + "_AgentBlockedIP": "127.0.0.1,::1",
53 + "_AuthLog": "c:\\temp\\auth.log",
54 + "_LocalDiscovery": {
55 + "name": "Local server name",
56 + "info": "Information about this server"
57 + },
58 + "_TlsOffload": "127.0.0.1,::1",
59 + "_TrustedProxy": "127.0.0.1,::1",
60 + "_MpsPort": 44330,
61 + "_MpsAliasPort": 4433,
62 + "_MpsAliasHost": "mps.mydomain.com",
63 + "_MpsTlsOffload": true,
64 + "_No2FactorAuth": true,
65 + "_Log": "main,web,webrequest,cert",
66 + "_syslog": "meshcentral",
67 + "_syslogauth": "meshcentral-auth",
68 + "_syslogjson": "meshcentral-json",
69 + "_WebRtConfig": {
70 + "iceServers": [
71 + { "urls": "stun:stun.services.mozilla.com" },
72 + { "urls": "stun:stun.l.google.com:19302" }
73 + ]
74 + },
75 + "_AutoBackup": {
76 + "backupIntervalHours": 24,
77 + "keepLastDaysBackup": 10,
78 + "zipPassword": "MyReallySecretPassword3",
79 + "_backupPath": "C:\\backups"
80 + },
81 + "_Redirects": {
82 + "meshcommander": "https://www.meshcommander.com/"
83 + },
84 + "__MaxInvalidLogin": "Time in minutes, max amount of bad logins from a source IP in the time before logins are rejected.",
85 + "_MaxInvalidLogin": { "time": 10, "count": 10, "coolofftime": 10 },
86 + "_Plugins": { "enabled": true }
87 + },
88 + "_domaindefaults": {
89 + "__comment__": "Any settings in this section is used as default setting for all domains",
90 + "Title": "MyDefaultTitle",
91 + "Footer": "Default page footer",
92 + "NewAccounts": false
93 + },
94 + "_domains": {
95 + "": {
96 + "Title": "MyServer",
97 + "Title2": "Servername",
98 + "_TitlePicture": "title-sample.png",
99 + "_UserQuota": 1048576,
100 + "_MeshQuota": 248576,
101 + "Minify": true,
102 + "_NewAccounts": true,
103 + "_UserNameIsEmail": true,
104 + "_NewAccountEmailDomains": [ "sample.com" ],
105 + "_NewAccountsRights": [ "nonewgroups", "notools" ],
106 + "_ManageAllDeviceGroups": [ "admin" ],
107 + "_WelcomeText": "Sample Text on Login Page.",
108 + "_WelcomePicture": "mainwelcome.jpg",
109 + "___Hide__": "Sum of: 1 = Hide header, 2 = Hide tab, 4 = Hide footer, 8 = Hide title, 16 = Hide left bar",
110 + "_Hide": 4,
111 + "_Footer": "<a href='https://twitter.com/mytwitter'>Twitter</a>",
112 + "_CertUrl": "https://192.168.2.106:443/",
113 + "_PasswordRequirements": { "min": 8, "max": 128, "upper": 1, "lower": 1, "numeric": 1, "nonalpha": 1, "reset": 90, "force2factor": true, "skip2factor": "127.0.0.1,192.168.2.0/24" },
114 + "_AgentInviteCodes": true,
115 + "_AgentNoProxy": true,
116 + "_GeoLocation": true,
117 + "_UserAllowedIP": "127.0.0.1,192.168.1.0/24",
118 + "_UserBlockedIP": "127.0.0.1,::1,192.168.0.100",
119 + "_AgentAllowedIP": "192.168.0.100/24",
120 + "_AgentBlockedIP": "127.0.0.1,::1",
121 + "___UserSessionIdleTimeout__" : "Number of user idle minutes before auto-disconnect",
122 + "_UserSessionIdleTimeout" : 30,
123 + "__UserConsentFlags__" : "Set to: 1 for desktop, 2 for terminal, 3 for files, 7 for all",
124 + "_UserConsentFlags" : 7,
125 + "_UrlSwitching": false,
126 + "_DesktopPrivacyBarText": "Your privacy bar message",
127 + "_Limits": {
128 + "_MaxDevices": 100,
129 + "_MaxUserAccounts": 100,
130 + "_MaxUserSessions": 100,
131 + "_MaxAgentSessions": 100,
132 + "MaxSingleUserSessions": 10
133 + },
134 + "_AmtAcmActivation": {
135 + "log": "amtactivation.log",
136 + "certs": {
137 + "mycertname": {
138 + "certfiles": [ "amtacm-leafcert.crt", "amtacm-intermediate1.crt", "amtacm-intermediate2.crt", "amtacm-rootcert.crt" ],
139 + "keyfile": "amtacm-leafcert.key"
140 + }
141 + }
142 + },
143 + "_Redirects": {
144 + "meshcommander": "https://www.meshcommander.com/"
145 + },
146 + "_yubikey": { "id": "0000", "secret": "xxxxxxxxxxxxxxxxxxxxx", "_proxy": "http://myproxy.domain.com:80" },
147 + "_httpheaders": {
148 + "Strict-Transport-Security": "max-age=360000",
149 + "x-frame-options": "SAMEORIGIN",
150 + "Content-Security-Policy": "default-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; frame-src 'self'; media-src 'self'"
151 + },
152 + "_agentConfig": [ "webSocketMaskOverride=1" ],
153 + "_SessionRecording": {
154 + "_filepath": "C:\\temp",
155 + "_index": true,
156 + "_maxRecordings": 10,
157 + "_maxRecordingSizeMegabytes": 3,
158 + "__protocols__": "Is an array: 1 = Terminal, 2 = Desktop, 5 = Files, 100 = Intel AMT WSMAN, 101 = Intel AMT Redirection",
159 + "protocols": [ 1, 2, 101 ]
160 + },
161 + "_authStrategies": {
162 + "__comment__" : "This section is used to allow users to login using other accounts. You will need to get an API key from the services and register callback URL's",
163 + "twitter": {
164 + "__callbackurl": "https://server/auth-twitter-callback",
165 + "clientid": "xxxxxxxxxxxxxxxxxxxxxxx",
166 + "clientsecret": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
167 + },
168 + "google": {
169 + "__callbackurl": "https://server/auth-google-callback",
170 + "clientid": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com",
171 + "clientsecret": "xxxxxxxxxxxxxxxxxxxxxxx"
172 + },
173 + "github": {
174 + "__callbackurl": "https://server/auth-github-callback",
175 + "clientid": "xxxxxxxxxxxxxxxxxxxxxxx",
176 + "clientsecret": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
177 + },
178 + "reddit": {
179 + "__callbackurl": "https://server/auth-reddit-callback",
180 + "clientid": "xxxxxxxxxxxxxxxxxxxxxxx",
181 + "clientsecret": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
182 + }
183 + }
184 + },
185 + "_customer1": {
186 + "_DNS": "customer1.myserver.com",
187 + "_Title": "Customer1",
188 + "_Title2": "TestServer",
189 + "_NewAccounts": 1,
190 + "_Auth": "sspi",
191 + "__Auth": "ldap",
192 + "_LDAPUserName": "gecos",
193 + "_LDAPUserKey": "uid",
194 + "_LDAPUserEmail": "otherMail",
195 + "_LDAPPptions": {
196 + "URL": "test",
197 + "anne": {
198 + "gecos": "Anne O'Nyme",
199 + "displayName": "O Nyme anne",
200 + "uid": "anneonyme",
201 + "mail": "anneonyme@example.com",
202 + "email": "anneonyme@example.com",
203 + "otherMail": [ "other.anneonyme@example.com", "anneonyme@example.com" ]
204 + },
205 + "so": {
206 + "displayName": "Sticker Sophie",
207 + "gecos": "Sophie Sticker",
208 + "uid": "ssticker",
209 + "mail": "ssticker@example.com",
210 + "email": "ssticker@example.com",
211 + "otherMail": [ "other.ssticker@example.com", "ssticker@example.com" ]
212 + }
213 + },
214 + "__LDAPOptions": {
215 + "URL": "ldap://1.2.3.4:389",
216 + "BindDN": "CN=svc_meshcentral,CN=Users,DC=meshcentral,DC=local",
217 + "BindCredentials": "Password.1",
218 + "SearchBase": "DC=meshcentral,DC=local",
219 + "SearchFilter": "(sAMAccountName={{username}})"
220 + },
221 + "_Footer": "Test",
222 + "_CertUrl": "https://192.168.2.106:443/"
223 + },
224 + "_info": {
225 + "_share": "C:\\ExtraWebSite"
226 + }
227 + },
228 + "_letsencrypt": {
229 + "__comment__": "Requires NodeJS 8.x or better, Go to https://letsdebug.net/ first before trying Let's Encrypt.",
230 + "email": "myemail@myserver.com",
231 + "names": "myserver.com,customer1.myserver.com",
232 + "production": false
233 + },
234 + "_peers": {
235 + "serverId": "server1",
236 + "servers": {
237 + "server1": { "url": "wss://192.168.2.133:443/" },
238 + "server2": { "url": "wss://192.168.1.106:443/" }
239 + }
240 + },
241 + "_smtp": {
242 + "host": "smtp.myserver.com",
243 + "port": 25,
244 + "from": "myemail@myserver.com",
245 + "__tls__": "When 'tls' is set to true, TLS is used immidiatly when connecting. For SMTP servers that use TLSSTART, set this to 'false' and TLS will still be used.",
246 + "tls": false,
247 + "___tlscertcheck__": "When set to false, the TLS certificate of the SMTP server is not checked.",
248 + "_tlscertcheck": false,
249 + "__tlsstrict__": "When set to true, TLS cypher setup is more limited, SSLv2 and SSLv3 are not allowed.",
250 + "_tlsstrict": true
251 + },
252 + "_sms": {
253 + "provider": "twilio",
254 + "sid": "ACxxxxxxxxx",
255 + "auth": "xxxxxxx",
256 + "from": "+1-555-555-5555"
257 + },
258 + "__sms": {
259 + "provider": "plivo",
260 + "id": "xxxxxxx",
261 + "token": "xxxxxxx",
262 + "from": "1-555-555-5555"
263 + }
264 +}
sample-config.json
+10 -246
@@ -1,265 +1,29 @@
1 {
2 - "__comment__" : "This is a sample configuration file, all values and sections that start with underscore (_) are ignored. Edit a section and remove the _ in front of the name. Refer to the user's guide for details.",
2 + "__comment1__" : "This is a simple configuration file, all values and sections that start with underscore (_) are ignored. Edit a section and remove the _ in front of the name. Refer to the user's guide for details.",
3 + "__comment2__" : "See node_modules/meshcentral/sample-config-advanced.json for a more advanced example.",
4 "settings": {
5 "_Cert": "myserver.mydomain.com",
5 - "_MongoDb": "mongodb://127.0.0.1:27017",
6 - "_MongoDbName": "meshcentral",
7 - "_MongoDbChangeStream": true,
8 - "_MongoDumpPath": "C:\\Program Files\\MongoDB\\Server\\4.2\\bin\\mongodump.exe",
6 "_WANonly": true,
7 "_LANonly": true,
11 - "_SessionTime": 30,
8 "_SessionKey": "MyReallySecretPassword1",
13 - "_SessionSameSite": "strict",
14 - "_DbEncryptKey": "MyReallySecretPassword2",
15 - "_DbRecordsEncryptKey": "MyReallySecretPassword",
16 - "_DbRecordsDecryptKey": "MyReallySecretPassword",
17 - "__DbExpire": "Amount of time to keep various events in the database, in seconds. Below are the default values.",
18 - "_DbExpire": {
19 - "events": 1728000,
20 - "powerevents": 864000,
21 - "statsevents": 2592000
22 - },
9 "_Port": 443,
24 - "_AliasPort": 444,
10 + "_AliasPort": 443,
11 "_RedirPort": 80,
26 - "_RedirAliasPort": 80,
27 - "_AgentPort": 1234,
28 - "_AgentAliasPort": 1234,
29 - "_AgentAliasDNS": "agents.myserver.mydomain.com",
30 - "_ExactPorts": true,
31 - "_AllowLoginToken": true,
32 - "_AllowFraming": true,
33 - "_CookieIpCheck": false,
34 - "_CookieEncoding": "hex",
35 - "_WebRTC": false,
36 - "_Nice404": false,
37 - "_ClickOnce": false,
38 - "_SelfUpdate": true,
39 - "_BrowserPing": 60,
40 - "_BrowserPong": 60,
41 - "_AgentPing": 60,
42 - "_AgentPong": 60,
43 - "_AgentIdleTimeout": 150,
44 - "_MeshErrorLogPath": "c:\\tmp",
45 - "_NpmPath": "c:\\npm.exe",
46 - "_NpmProxy": "http://1.2.3.4:80",
47 - "_AllowHighQualityDesktop": true,
48 - "_DesktopMultiplex": true,
49 - "_UserAllowedIP": "127.0.0.1,192.168.1.0/24",
50 - "_UserBlockedIP": "127.0.0.1,::1,192.168.0.100",
51 - "_AgentAllowedIP": "192.168.0.100/24",
52 - "_AgentBlockedIP": "127.0.0.1,::1",
53 - "_AuthLog": "c:\\temp\\auth.log",
54 - "_LocalDiscovery": {
55 - "name": "Local server name",
56 - "info": "Information about this server"
57 - },
58 - "_TlsOffload": "127.0.0.1,::1",
59 - "_TrustedProxy": "127.0.0.1,::1",
60 - "_MpsPort": 44330,
61 - "_MpsAliasPort": 4433,
62 - "_MpsAliasHost": "mps.mydomain.com",
63 - "_MpsTlsOffload": true,
64 - "_No2FactorAuth": true,
65 - "_Log": "main,web,webrequest,cert",
66 - "_syslog": "meshcentral",
67 - "_syslogauth": "meshcentral-auth",
68 - "_syslogjson": "meshcentral-json",
69 - "_WebRtConfig": {
70 - "iceServers": [
71 - { "urls": "stun:stun.services.mozilla.com" },
72 - { "urls": "stun:stun.l.google.com:19302" }
73 - ]
74 - },
75 - "_AutoBackup": {
76 - "backupIntervalHours": 24,
77 - "keepLastDaysBackup": 10,
78 - "zipPassword": "MyReallySecretPassword3",
79 - "_backupPath": "C:\\backups"
80 - },
81 - "_Redirects": {
82 - "meshcommander": "https://www.meshcommander.com/"
83 - },
84 - "__MaxInvalidLogin": "Time in minutes, max amount of bad logins from a source IP in the time before logins are rejected.",
85 - "_MaxInvalidLogin": { "time": 10, "count": 10, "coolofftime": 10 },
86 - "_Plugins": { "enabled": true }
12 + "_RedirAliasPort": 80
13 },
88 - "_domaindefaults": {
89 - "__comment__": "Any settings in this section is used as default setting for all domains",
90 - "Title": "MyDefaultTitle",
91 - "Footer": "Default page footer",
92 - "NewAccounts": false
93 - },
94 - "_domains": {
14 + "domains": {
15 "": {
96 - "Title": "MyServer",
97 - "Title2": "Servername",
98 - "_TitlePicture": "title-sample.png",
99 - "_UserQuota": 1048576,
100 - "_MeshQuota": 248576,
101 - "Minify": true,
16 + "_Title": "MyServer",
17 + "_Title2": "Servername",
18 + "_Minify": true,
19 "_NewAccounts": true,
103 - "_UserNameIsEmail": true,
104 - "_NewAccountEmailDomains": [ "sample.com" ],
105 - "_NewAccountsRights": [ "nonewgroups", "notools" ],
106 - "_ManageAllDeviceGroups": [ "admin" ],
107 - "_WelcomeText": "Sample Text on Login Page.",
108 - "_WelcomePicture": "mainwelcome.jpg",
109 - "___Hide__": "Sum of: 1 = Hide header, 2 = Hide tab, 4 = Hide footer, 8 = Hide title, 16 = Hide left bar",
110 - "_Hide": 4,
111 - "_Footer": "<a href='https://twitter.com/mytwitter'>Twitter</a>",
112 - "_CertUrl": "https://192.168.2.106:443/",
113 - "_PasswordRequirements": { "min": 8, "max": 128, "upper": 1, "lower": 1, "numeric": 1, "nonalpha": 1, "reset": 90, "force2factor": true, "skip2factor": "127.0.0.1,192.168.2.0/24" },
114 - "_AgentInviteCodes": true,
115 - "_AgentNoProxy": true,
116 - "_GeoLocation": true,
117 - "_UserAllowedIP": "127.0.0.1,192.168.1.0/24",
118 - "_UserBlockedIP": "127.0.0.1,::1,192.168.0.100",
119 - "_AgentAllowedIP": "192.168.0.100/24",
120 - "_AgentBlockedIP": "127.0.0.1,::1",
121 - "___UserSessionIdleTimeout__" : "Number of user idle minutes before auto-disconnect",
122 - "_UserSessionIdleTimeout" : 30,
123 - "__UserConsentFlags__" : "Set to: 1 for desktop, 2 for terminal, 3 for files, 7 for all",
124 - "_UserConsentFlags" : 7,
125 - "_UrlSwitching": false,
126 - "_DesktopPrivacyBarText": "Your privacy bar message",
127 - "_Limits": {
128 - "_MaxDevices": 100,
129 - "_MaxUserAccounts": 100,
130 - "_MaxUserSessions": 100,
131 - "_MaxAgentSessions": 100,
132 - "MaxSingleUserSessions": 10
133 - },
134 - "_AmtAcmActivation": {
135 - "log": "amtactivation.log",
136 - "certs": {
137 - "mycertname": {
138 - "certfiles": [ "amtacm-leafcert.crt", "amtacm-intermediate1.crt", "amtacm-intermediate2.crt", "amtacm-rootcert.crt" ],
139 - "keyfile": "amtacm-leafcert.key"
140 - }
141 - }
142 - },
143 - "_Redirects": {
144 - "meshcommander": "https://www.meshcommander.com/"
145 - },
146 - "_yubikey": { "id": "0000", "secret": "xxxxxxxxxxxxxxxxxxxxx", "_proxy": "http://myproxy.domain.com:80" },
147 - "_httpheaders": {
148 - "Strict-Transport-Security": "max-age=360000",
149 - "x-frame-options": "SAMEORIGIN",
150 - "Content-Security-Policy": "default-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; frame-src 'self'; media-src 'self'"
151 - },
152 - "_agentConfig": [ "webSocketMaskOverride=1" ],
153 - "_SessionRecording": {
154 - "_filepath": "C:\\temp",
155 - "_index": true,
156 - "_maxRecordings": 10,
157 - "_maxRecordingSizeMegabytes": 3,
158 - "__protocols__": "Is an array: 1 = Terminal, 2 = Desktop, 5 = Files, 100 = Intel AMT WSMAN, 101 = Intel AMT Redirection",
159 - "protocols": [ 1, 2, 101 ]
160 - },
161 - "_authStrategies": {
162 - "__comment__" : "This section is used to allow users to login using other accounts. You will need to get an API key from the services and register callback URL's",
163 - "twitter": {
164 - "__callbackurl": "https://server/auth-twitter-callback",
165 - "clientid": "xxxxxxxxxxxxxxxxxxxxxxx",
166 - "clientsecret": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
167 - },
168 - "google": {
169 - "__callbackurl": "https://server/auth-google-callback",
170 - "clientid": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com",
171 - "clientsecret": "xxxxxxxxxxxxxxxxxxxxxxx"
172 - },
173 - "github": {
174 - "__callbackurl": "https://server/auth-github-callback",
175 - "clientid": "xxxxxxxxxxxxxxxxxxxxxxx",
176 - "clientsecret": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
177 - },
178 - "reddit": {
179 - "__callbackurl": "https://server/auth-reddit-callback",
180 - "clientid": "xxxxxxxxxxxxxxxxxxxxxxx",
181 - "clientsecret": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
182 - }
183 - }
184 - },
185 - "_customer1": {
186 - "_DNS": "customer1.myserver.com",
187 - "_Title": "Customer1",
188 - "_Title2": "TestServer",
189 - "_NewAccounts": 1,
190 - "_Auth": "sspi",
191 - "__Auth": "ldap",
192 - "_LDAPUserName": "gecos",
193 - "_LDAPUserKey": "uid",
194 - "_LDAPUserEmail": "otherMail",
195 - "_LDAPPptions": {
196 - "URL": "test",
197 - "anne": {
198 - "gecos": "Anne O'Nyme",
199 - "displayName": "O Nyme anne",
200 - "uid": "anneonyme",
201 - "mail": "anneonyme@example.com",
202 - "email": "anneonyme@example.com",
203 - "otherMail": [ "other.anneonyme@example.com", "anneonyme@example.com" ]
204 - },
205 - "so": {
206 - "displayName": "Sticker Sophie",
207 - "gecos": "Sophie Sticker",
208 - "uid": "ssticker",
209 - "mail": "ssticker@example.com",
210 - "email": "ssticker@example.com",
211 - "otherMail": [ "other.ssticker@example.com", "ssticker@example.com" ]
212 - }
213 - },
214 - "__LDAPOptions": {
215 - "URL": "ldap://1.2.3.4:389",
216 - "BindDN": "CN=svc_meshcentral,CN=Users,DC=meshcentral,DC=local",
217 - "BindCredentials": "Password.1",
218 - "SearchBase": "DC=meshcentral,DC=local",
219 - "SearchFilter": "(sAMAccountName={{username}})"
220 - },
221 - "_Footer": "Test",
222 - "_CertUrl": "https://192.168.2.106:443/"
223 - },
224 - "_info": {
225 - "_share": "C:\\ExtraWebSite"
20 + "_UserNameIsEmail": true
21 }
22 },
23 "_letsencrypt": {
229 - "__comment__": "Requires NodeJS 10.12 or better, Go to https://letsdebug.net/ first before trying Let's Encrypt.",
24 + "__comment__": "Requires NodeJS 8.x or better, Go to https://letsdebug.net/ first before trying Let's Encrypt.",
25 "email": "myemail@myserver.com",
26 "names": "myserver.com,customer1.myserver.com",
232 - "rsaKeySize": 3072,
27 "production": false
234 - },
235 - "_peers": {
236 - "serverId": "server1",
237 - "servers": {
238 - "server1": { "url": "wss://192.168.2.133:443/" },
239 - "server2": { "url": "wss://192.168.1.106:443/" }
240 - }
241 - },
242 - "_smtp": {
243 - "host": "smtp.myserver.com",
244 - "port": 25,
245 - "from": "myemail@myserver.com",
246 - "__tls__": "When 'tls' is set to true, TLS is used immidiatly when connecting. For SMTP servers that use TLSSTART, set this to 'false' and TLS will still be used.",
247 - "tls": false,
248 - "___tlscertcheck__": "When set to false, the TLS certificate of the SMTP server is not checked.",
249 - "_tlscertcheck": false,
250 - "__tlsstrict__": "When set to true, TLS cypher setup is more limited, SSLv2 and SSLv3 are not allowed.",
251 - "_tlsstrict": true
252 - },
253 - "_sms": {
254 - "provider": "twilio",
255 - "sid": "ACxxxxxxxxx",
256 - "auth": "xxxxxxx",
257 - "from": "+1-555-555-5555"
258 - },
259 - "__sms": {
260 - "provider": "plivo",
261 - "id": "xxxxxxx",
262 - "token": "xxxxxxx",
263 - "from": "1-555-555-5555"
28 }
29 }
translate/translate.json
+1260 -1241
@@ -14,8 +14,8 @@
14 "ru": " + CIRA",
15 "zh-chs": " + CIRA",
16 "xloc": [
17 - "default.handlebars->25->1180",
18 - "default.handlebars->25->1182"
17 + "default.handlebars->25->1184",
18 + "default.handlebars->25->1186"
19 ]
20 },
21 {
@@ -174,7 +174,7 @@
174 "ru": " Может быть использована подсказка пароля, но не рекоммендуется.",
175 "zh-chs": " 可以使用密碼提示,但不建議使用。",
176 "xloc": [
177 - "default.handlebars->25->1106"
177 + "default.handlebars->25->1110"
178 ]
179 },
180 {
@@ -191,8 +191,8 @@
191 "ru": " Для добавления в группу устройств, пользователь должен зайти на сервер хотя бы один раз.",
192 "zh-chs": " 用戶需要先登錄到該服務器一次,然後才能將其添加到設備組。",
193 "xloc": [
194 - "default.handlebars->25->1255",
195 - "default.handlebars->25->1561"
194 + "default.handlebars->25->1259",
195 + "default.handlebars->25->1565"
196 ]
197 },
198 {
@@ -375,7 +375,7 @@
375 "ru": "* Оставьте пустым для установления случайного пароля каждому устройству.",
376 "zh-chs": "*保留空白以為每個設備分配一個隨機密碼。",
377 "xloc": [
378 - "default.handlebars->25->1227"
378 + "default.handlebars->25->1231"
379 ]
380 },
381 {
@@ -408,7 +408,7 @@
408 "zh-chs": ",",
409 "xloc": [
410 "default-mobile.handlebars->9->349",
411 - "default.handlebars->25->1321"
411 + "default.handlebars->25->1325"
412 ]
413 },
414 {
@@ -443,7 +443,7 @@
443 "ru": ", MQTT онлайн",
444 "zh-chs": ",MQTT在線",
445 "xloc": [
446 - "default.handlebars->25->849"
446 + "default.handlebars->25->853"
447 ]
448 },
449 {
@@ -460,7 +460,7 @@
460 "ru": ", Soft-KVM",
461 "zh-chs": ",軟KVM",
462 "xloc": [
463 - "default.handlebars->25->695"
463 + "default.handlebars->25->699"
464 ]
465 },
466 {
@@ -479,9 +479,9 @@
479 "xloc": [
480 "default-mobile.handlebars->9->251",
481 "default-mobile.handlebars->9->260",
482 - "default.handlebars->25->702",
483 - "default.handlebars->25->733",
484 - "default.handlebars->25->745",
482 + "default.handlebars->25->706",
483 + "default.handlebars->25->737",
484 + "default.handlebars->25->749",
485 "xterm.handlebars->9->6"
486 ]
487 },
@@ -558,7 +558,7 @@
558 "en": ", {0} watching",
559 "nl": ", {0} kijken",
560 "xloc": [
561 - "default.handlebars->25->696"
561 + "default.handlebars->25->700"
562 ]
563 },
564 {
@@ -615,9 +615,9 @@
615 "xloc": [
616 "default-mobile.handlebars->9->262",
617 "default-mobile.handlebars->9->77",
618 - "default.handlebars->25->1362",
619 - "default.handlebars->25->1706",
620 - "default.handlebars->25->747"
618 + "default.handlebars->25->1366",
619 + "default.handlebars->25->1710",
620 + "default.handlebars->25->751"
621 ]
622 },
623 {
@@ -666,7 +666,7 @@
666 "ru": "1 активная сессия",
667 "zh-chs": "1個活動會話",
668 "xloc": [
669 - "default.handlebars->25->1624"
669 + "default.handlebars->25->1628"
670 ]
671 },
672 {
@@ -685,14 +685,14 @@
685 "xloc": [
686 "default-mobile.handlebars->9->353",
687 "default-mobile.handlebars->9->87",
688 - "default.handlebars->25->1381"
688 + "default.handlebars->25->1385"
689 ]
690 },
691 {
692 "en": "1 connection",
693 "nl": "1 verbinding",
694 "xloc": [
695 - "default.handlebars->25->698"
695 + "default.handlebars->25->702"
696 ]
697 },
698 {
@@ -728,7 +728,7 @@
728 "ru": "1 группа",
729 "zh-chs": "1組",
730 "xloc": [
731 - "default.handlebars->25->1589"
731 + "default.handlebars->25->1593"
732 ]
733 },
734 {
@@ -800,7 +800,7 @@
800 "ru": "Еще 1 пользователь не показан, используйте поиск чтобы найти пользователей...",
801 "zh-chs": "未再顯示1個用戶,請使用搜索框查找用戶...",
802 "xloc": [
803 - "default.handlebars->25->1416"
803 + "default.handlebars->25->1420"
804 ]
805 },
806 {
@@ -855,7 +855,7 @@
855 "default-mobile.handlebars->9->114",
856 "default-mobile.handlebars->9->117",
857 "default-mobile.handlebars->9->120",
858 - "default.handlebars->25->1420",
858 + "default.handlebars->25->1424",
859 "default.handlebars->25->210",
860 "default.handlebars->25->213",
861 "default.handlebars->25->216",
@@ -1127,8 +1127,8 @@
1127 "ru": "двухфакторная аутентификация включена",
1128 "zh-chs": "啟用第二因素身份驗證",
1129 "xloc": [
1130 - "default.handlebars->25->1433",
1131 - "default.handlebars->25->1611"
1130 + "default.handlebars->25->1437",
1131 + "default.handlebars->25->1615"
1132 ]
1133 },
1134 {
@@ -1492,7 +1492,7 @@
1492 "ru": "7-дневная статистика работы",
1493 "zh-chs": "7天電源狀態",
1494 "xloc": [
1495 - "default.handlebars->25->630"
1495 + "default.handlebars->25->634"
1496 ]
1497 },
1498 {
@@ -1839,7 +1839,7 @@
1839 "ru": "Отказано в доступе",
1840 "zh-chs": "拒絕訪問",
1841 "xloc": [
1842 - "default.handlebars->25->850"
1842 + "default.handlebars->25->854"
1843 ]
1844 },
1845 {
@@ -1874,7 +1874,7 @@
1874 "ru": "Доступ к файлам сервера",
1875 "zh-chs": "訪問服務器文件",
1876 "xloc": [
1877 - "default.handlebars->25->1567"
1877 + "default.handlebars->25->1571"
1878 ]
1879 },
1880 {
@@ -1949,8 +1949,8 @@
1949 "default-mobile.handlebars->9->62",
1950 "default-mobile.handlebars->9->64",
1951 "default-mobile.handlebars->container->page_content->column_l->p3->p3info->1->p3AccountActions->p2AccountSecurity->1->0",
1952 - "default.handlebars->25->1115",
1953 - "default.handlebars->25->1117",
1952 + "default.handlebars->25->1119",
1953 + "default.handlebars->25->1121",
1954 "default.handlebars->25->461",
1955 "default.handlebars->25->463"
1956 ]
@@ -1998,8 +1998,8 @@
1998 "ru": "Аккаунт заблокирован",
1999 "zh-chs": "帐户已被锁定",
2000 "xloc": [
2001 - "default.handlebars->25->1435",
2002 - "default.handlebars->25->1564"
2001 + "default.handlebars->25->1439",
2002 + "default.handlebars->25->1568"
2003 ]
2004 },
2005 {
@@ -2087,7 +2087,7 @@
2087 "ru": "Действиe",
2088 "zh-chs": "行動",
2089 "xloc": [
2090 - "default.handlebars->25->855",
2090 + "default.handlebars->25->859",
2091 "default.handlebars->container->column_l->p42->p42tbl->1->0->8"
2092 ]
2093 },
@@ -2105,8 +2105,8 @@
2105 "ru": "Файл действий",
2106 "zh-chs": "動作文件",
2107 "xloc": [
2108 - "default.handlebars->25->671",
2109 - "default.handlebars->25->673"
2108 + "default.handlebars->25->675",
2109 + "default.handlebars->25->677"
2110 ]
2111 },
2112 {
@@ -2183,7 +2183,7 @@
2183 "default-mobile.handlebars->9->202",
2184 "default.handlebars->25->483",
2185 "default.handlebars->25->485",
2186 - "default.handlebars->25->813"
2186 + "default.handlebars->25->817"
2187 ]
2188 },
2189 {
@@ -2200,8 +2200,8 @@
2200 "ru": "Активация",
2201 "zh-chs": "激活",
2202 "xloc": [
2203 - "default.handlebars->25->1193",
2204 - "default.handlebars->25->1195",
2203 + "default.handlebars->25->1197",
2204 + "default.handlebars->25->1199",
2205 "default.handlebars->25->236",
2206 "default.handlebars->25->238"
2207 ]
@@ -2237,7 +2237,7 @@
2237 "ru": "Добавить агент",
2238 "zh-chs": "添加代理",
2239 "xloc": [
2240 - "default.handlebars->25->1197",
2240 + "default.handlebars->25->1201",
2241 "default.handlebars->25->240"
2242 ]
2243 },
@@ -2272,8 +2272,8 @@
2272 "ru": "Добавить устройство",
2273 "zh-chs": "添加設備",
2274 "xloc": [
2275 - "default.handlebars->25->1541",
2276 - "default.handlebars->25->1657"
2275 + "default.handlebars->25->1545",
2276 + "default.handlebars->25->1661"
2277 ]
2278 },
2279 {
@@ -2290,7 +2290,7 @@
2290 "ru": "Добавить событие к устройству",
2291 "zh-chs": "添加設備事件",
2292 "xloc": [
2293 - "default.handlebars->25->613"
2293 + "default.handlebars->25->615"
2294 ]
2295 },
2296 {
@@ -2307,9 +2307,9 @@
2307 "ru": "Добавить группу устройств",
2308 "zh-chs": "添加設備組",
2309 "xloc": [
2310 - "default.handlebars->25->1287",
2311 - "default.handlebars->25->1535",
2312 - "default.handlebars->25->1645",
2310 + "default.handlebars->25->1291",
2311 + "default.handlebars->25->1539",
2312 + "default.handlebars->25->1649",
2313 "default.handlebars->25->198"
2314 ]
2315 },
@@ -2324,7 +2324,7 @@
2324 "nl": "Machtigingen voor apparaatgroep toevoegen",
2325 "zh-chs": "添加设备组权限",
2326 "xloc": [
2327 - "default.handlebars->25->1284"
2327 + "default.handlebars->25->1288"
2328 ]
2329 },
2330 {
@@ -2340,8 +2340,8 @@
2340 "ru": "Добавить разрешения для устройства",
2341 "zh-chs": "添加设备权限",
2342 "xloc": [
2343 - "default.handlebars->25->1289",
2344 - "default.handlebars->25->1291"
2343 + "default.handlebars->25->1293",
2344 + "default.handlebars->25->1295"
2345 ]
2346 },
2347 {
@@ -2426,7 +2426,7 @@
2426 "ru": "Добавить участие",
2427 "zh-chs": "添加會員",
2428 "xloc": [
2429 - "default.handlebars->25->1675"
2429 + "default.handlebars->25->1679"
2430 ]
2431 },
2432 {
@@ -2464,8 +2464,8 @@
2464 "default.handlebars->25->135",
2465 "default.handlebars->25->138",
2466 "default.handlebars->25->139",
2467 - "default.handlebars->25->883",
2468 - "default.handlebars->25->884"
2467 + "default.handlebars->25->887",
2468 + "default.handlebars->25->888"
2469 ]
2470 },
2471 {
@@ -2483,7 +2483,7 @@
2483 "zh-chs": "添加用戶",
2484 "xloc": [
2485 "default-mobile.handlebars->9->299",
2486 - "default.handlebars->25->570"
2486 + "default.handlebars->25->572"
2487 ]
2488 },
2489 {
@@ -2499,7 +2499,7 @@
2499 "ru": "Добавить разрешения для пользовательских устройств",
2500 "zh-chs": "添加用户设备权限",
2501 "xloc": [
2502 - "default.handlebars->25->1294"
2502 + "default.handlebars->25->1298"
2503 ]
2504 },
2505 {
@@ -2516,10 +2516,10 @@
2516 "ru": "Добавить группу пользователей",
2517 "zh-chs": "添加用戶組",
2518 "xloc": [
2519 - "default.handlebars->25->1187",
2520 - "default.handlebars->25->1286",
2521 - "default.handlebars->25->1651",
2522 - "default.handlebars->25->571"
2519 + "default.handlebars->25->1191",
2520 + "default.handlebars->25->1290",
2521 + "default.handlebars->25->1655",
2522 + "default.handlebars->25->573"
2523 ]
2524 },
2525 {
@@ -2533,7 +2533,7 @@
2533 "nl": "Gebruikersmachtigingen voor apparaatgroep toevoegen",
2534 "zh-chs": "添加用户组设备权限",
2535 "xloc": [
2536 - "default.handlebars->25->1296"
2536 + "default.handlebars->25->1300"
2537 ]
2538 },
2539 {
@@ -2578,8 +2578,8 @@
2578 "ru": "Добавить пользователей",
2579 "zh-chs": "添加用戶",
2580 "xloc": [
2581 - "default.handlebars->25->1186",
2582 - "default.handlebars->25->1530"
2581 + "default.handlebars->25->1190",
2582 + "default.handlebars->25->1534"
2583 ]
2584 },
2585 {
@@ -2596,7 +2596,7 @@
2596 "ru": "Добавить пользователей в группу устройств",
2597 "zh-chs": "將用戶添加到設備組",
2598 "xloc": [
2599 - "default.handlebars->25->1283"
2599 + "default.handlebars->25->1287"
2600 ]
2601 },
2602 {
@@ -2613,7 +2613,7 @@
2613 "ru": "Добавить пользователей в группу",
2614 "zh-chs": "將用戶添加到用戶組",
2615 "xloc": [
2616 - "default.handlebars->25->1563"
2616 + "default.handlebars->25->1567"
2617 ]
2618 },
2619 {
@@ -2664,7 +2664,7 @@
2664 "ru": "Добавить новый Intel&reg; AMT компьютер, находящийся в интернете.",
2665 "zh-chs": "添加位於互聯網上的新英特爾&reg;AMT計算機。",
2666 "xloc": [
2667 - "default.handlebars->25->1188",
2667 + "default.handlebars->25->1192",
2668 "default.handlebars->25->229"
2669 ]
2670 },
@@ -2682,7 +2682,7 @@
2682 "ru": "Добавить новый Intel&reg; AMT компьютер, находящийся в локальной сети.",
2683 "zh-chs": "添加位於本地網絡上的新英特爾&reg;AMT計算機。",
2684 "xloc": [
2685 - "default.handlebars->25->1190",
2685 + "default.handlebars->25->1194",
2686 "default.handlebars->25->231"
2687 ]
2688 },
@@ -2714,7 +2714,7 @@
2714 "nl": "Voeg een nieuwe computer toe aan deze apparaatgroep door de mesh-agent te installeren.",
2715 "zh-chs": "通过安装网状代理,将新计算机添加到该设备组。",
2716 "xloc": [
2717 - "default.handlebars->25->1196",
2717 + "default.handlebars->25->1200",
2718 "default.handlebars->25->239"
2719 ]
2720 },
@@ -2766,7 +2766,7 @@
2766 "ru": "Режим управления администратора (ACM)",
2767 "zh-chs": "管理員控制模式(ACM)",
2768 "xloc": [
2769 - "default.handlebars->25->815"
2769 + "default.handlebars->25->819"
2770 ]
2771 },
2772 {
@@ -2783,7 +2783,7 @@
2783 "ru": "Учетные данные администратора",
2784 "zh-chs": "管理員憑證",
2785 "xloc": [
2786 - "default.handlebars->25->821"
2786 + "default.handlebars->25->825"
2787 ]
2788 },
2789 {
@@ -2818,7 +2818,7 @@
2818 "ru": "Области администратора",
2819 "zh-chs": "管理領域",
2820 "xloc": [
2821 - "default.handlebars->25->1593"
2821 + "default.handlebars->25->1597"
2822 ]
2823 },
2824 {
@@ -2853,7 +2853,7 @@
2853 "ru": "Административные области",
2854 "zh-chs": "行政領域",
2855 "xloc": [
2856 - "default.handlebars->25->1486"
2856 + "default.handlebars->25->1490"
2857 ]
2858 },
2859 {
@@ -2870,7 +2870,7 @@
2870 "ru": "Администратор",
2871 "zh-chs": "管理員",
2872 "xloc": [
2873 - "default.handlebars->25->1427"
2873 + "default.handlebars->25->1431"
2874 ]
2875 },
2876 {
@@ -2887,7 +2887,7 @@
2887 "ru": "Африканский",
2888 "zh-chs": "南非語",
2889 "xloc": [
2890 - "default.handlebars->25->886"
2890 + "default.handlebars->25->890"
2891 ]
2892 },
2893 {
@@ -2907,8 +2907,8 @@
2907 "default-mobile.handlebars->9->144",
2908 "default-mobile.handlebars->9->197",
2909 "default-mobile.handlebars->9->213",
2910 - "default.handlebars->25->1348",
2911 - "default.handlebars->25->1356",
2910 + "default.handlebars->25->1352",
2911 + "default.handlebars->25->1360",
2912 "default.handlebars->25->177",
2913 "default.handlebars->25->383",
2914 "default.handlebars->container->column_l->p15->consoleTable->1->6->1->1->1->0->p15outputselecttd->p15outputselect->1"
@@ -2928,8 +2928,8 @@
2928 "ru": "Агент + Intel AMT",
2929 "zh-chs": "代理+英特爾AMT",
2930 "xloc": [
2931 - "default.handlebars->25->1350",
2932 - "default.handlebars->25->1358"
2931 + "default.handlebars->25->1354",
2932 + "default.handlebars->25->1362"
2933 ]
2934 },
2935 {
@@ -2964,7 +2964,7 @@
2964 "zh-chs": "代理控制台",
2965 "xloc": [
2966 "default-mobile.handlebars->9->334",
2967 - "default.handlebars->25->1304"
2967 + "default.handlebars->25->1308"
2968 ]
2969 },
2970 {
@@ -2981,7 +2981,7 @@
2981 "ru": "Счетчик ошибок агента",
2982 "zh-chs": "座席錯誤計數器",
2983 "xloc": [
2984 - "default.handlebars->25->1716"
2984 + "default.handlebars->25->1720"
2985 ]
2986 },
2987 {
@@ -3050,7 +3050,7 @@
3050 "ru": "Сессии агентов",
3051 "zh-chs": "座席會議",
3052 "xloc": [
3053 - "default.handlebars->25->1732"
3053 + "default.handlebars->25->1736"
3054 ]
3055 },
3056 {
@@ -3085,7 +3085,7 @@
3085 "ru": "Типы агента",
3086 "zh-chs": "代理類型",
3087 "xloc": [
3088 - "default.handlebars->25->1354",
3088 + "default.handlebars->25->1358",
3089 "default.handlebars->container->column_l->p21->3->1->meshOsChartDiv->1"
3090 ]
3091 },
@@ -3104,8 +3104,8 @@
3104 "zh-chs": "代理已連接",
3105 "xloc": [
3106 "default.handlebars->25->144",
3107 - "default.handlebars->25->561",
3108 - "default.handlebars->25->562"
3107 + "default.handlebars->25->563",
3108 + "default.handlebars->25->564"
3109 ]
3110 },
3111 {
@@ -3139,7 +3139,7 @@
3139 "ru": "Агент оффлайн",
3140 "zh-chs": "代理離線",
3141 "xloc": [
3142 - "default.handlebars->25->848"
3142 + "default.handlebars->25->852"
3143 ]
3144 },
3145 {
@@ -3156,7 +3156,7 @@
3156 "ru": "Агент онлайн",
3157 "zh-chs": "代理在線",
3158 "xloc": [
3159 - "default.handlebars->25->847"
3159 + "default.handlebars->25->851"
3160 ]
3161 },
3162 {
@@ -3173,7 +3173,7 @@
3173 "ru": "Агенты",
3174 "zh-chs": "代理商",
3175 "xloc": [
3176 - "default.handlebars->25->1745"
3176 + "default.handlebars->25->1749"
3177 ]
3178 },
3179 {
@@ -3190,7 +3190,7 @@
3190 "ru": "Албанский",
3191 "zh-chs": "阿爾巴尼亞語",
3192 "xloc": [
3193 - "default.handlebars->25->887"
3193 + "default.handlebars->25->891"
3194 ]
3195 },
3196 {
@@ -3240,9 +3240,9 @@
3240 "ru": "Фокусирование всех",
3241 "zh-chs": "全部聚焦",
3242 "xloc": [
3243 - "default.handlebars->25->703",
3244 - "default.handlebars->25->705",
3245 - "default.handlebars->25->706"
3243 + "default.handlebars->25->707",
3244 + "default.handlebars->25->709",
3245 + "default.handlebars->25->710"
3246 ]
3247 },
3248 {
@@ -3259,8 +3259,8 @@
3259 "ru": "Разрешить пользователям управлять этой группой и устройствами этой группы.",
3260 "zh-chs": "允許用戶管理此設備組和該組中的設備。",
3261 "xloc": [
3262 - "default.handlebars->25->1253",
3263 - "default.handlebars->25->1560"
3262 + "default.handlebars->25->1257",
3263 + "default.handlebars->25->1564"
3264 ]
3265 },
3266 {
@@ -3276,7 +3276,7 @@
3276 "ru": "Разрешить пользователям управлять этим устройством.",
3277 "zh-chs": "允许用户管理此设备。",
3278 "xloc": [
3279 - "default.handlebars->25->1254"
3279 + "default.handlebars->25->1258"
3280 ]
3281 },
3282 {
@@ -3329,7 +3329,7 @@
3329 "ru": "Поменять (F10 = ESC+0)",
3330 "zh-chs": "備用(F10 = ESC + 0)",
3331 "xloc": [
3332 - "default.handlebars->25->738"
3332 + "default.handlebars->25->742"
3333 ]
3334 },
3335 {
@@ -3363,8 +3363,8 @@
3363 "ru": "Всегда уведомлять",
3364 "zh-chs": "始終通知",
3365 "xloc": [
3366 - "default.handlebars->25->1167",
3367 - "default.handlebars->25->1602",
3366 + "default.handlebars->25->1171",
3367 + "default.handlebars->25->1606",
3368 "default.handlebars->25->519"
3369 ]
3370 },
@@ -3382,8 +3382,8 @@
3382 "ru": "Всегда запрашивать",
3383 "zh-chs": "總是提示",
3384 "xloc": [
3385 - "default.handlebars->25->1168",
3386 - "default.handlebars->25->1603",
3385 + "default.handlebars->25->1172",
3386 + "default.handlebars->25->1607",
3387 "default.handlebars->25->520"
3388 ]
3389 },
@@ -3583,7 +3583,7 @@
3583 "ru": "Арабский (Алжир)",
3584 "zh-chs": "阿拉伯文(阿爾及利亞)",
3585 "xloc": [
3586 - "default.handlebars->25->889"
3586 + "default.handlebars->25->893"
3587 ]
3588 },
3589 {
@@ -3600,7 +3600,7 @@
3600 "ru": "Арабский (Бахрейн)",
3601 "zh-chs": "阿拉伯文(巴林)",
3602 "xloc": [
3603 - "default.handlebars->25->890"
3603 + "default.handlebars->25->894"
3604 ]
3605 },
3606 {
@@ -3617,7 +3617,7 @@
3617 "ru": "Арабский (Египет)",
3618 "zh-chs": "阿拉伯文(埃及)",
3619 "xloc": [
3620 - "default.handlebars->25->891"
3620 + "default.handlebars->25->895"
3621 ]
3622 },
3623 {
@@ -3634,7 +3634,7 @@
3634 "ru": "Арабский (Ирак)",
3635 "zh-chs": "阿拉伯文(伊拉克)",
3636 "xloc": [
3637 - "default.handlebars->25->892"
3637 + "default.handlebars->25->896"
3638 ]
3639 },
3640 {
@@ -3651,7 +3651,7 @@
3651 "ru": "Арабский (Иордания)",
3652 "zh-chs": "阿拉伯語(約旦)",
3653 "xloc": [
3654 - "default.handlebars->25->893"
3654 + "default.handlebars->25->897"
3655 ]
3656 },
3657 {
@@ -3668,7 +3668,7 @@
3668 "ru": "Арабский (Кувейт)",
3669 "zh-chs": "阿拉伯文(科威特)",
3670 "xloc": [
3671 - "default.handlebars->25->894"
3671 + "default.handlebars->25->898"
3672 ]
3673 },
3674 {
@@ -3685,7 +3685,7 @@
3685 "ru": "Арабский (Ливан)",
3686 "zh-chs": "阿拉伯語(黎巴嫩)",
3687 "xloc": [
3688 - "default.handlebars->25->895"
3688 + "default.handlebars->25->899"
3689 ]
3690 },
3691 {
@@ -3702,7 +3702,7 @@
3702 "ru": "Арабский (Ливия)",
3703 "zh-chs": "阿拉伯文(利比亞)",
3704 "xloc": [
3705 - "default.handlebars->25->896"
3705 + "default.handlebars->25->900"
3706 ]
3707 },
3708 {
@@ -3719,7 +3719,7 @@
3719 "ru": "Арабский (Марокко)",
3720 "zh-chs": "阿拉伯文(摩洛哥)",
3721 "xloc": [
3722 - "default.handlebars->25->897"
3722 + "default.handlebars->25->901"
3723 ]
3724 },
3725 {
@@ -3736,7 +3736,7 @@
3736 "ru": "Арабский (Оман)",
3737 "zh-chs": "阿拉伯文(阿曼)",
3738 "xloc": [
3739 - "default.handlebars->25->898"
3739 + "default.handlebars->25->902"
3740 ]
3741 },
3742 {
@@ -3753,7 +3753,7 @@
3753 "ru": "Арабский (Катар)",
3754 "zh-chs": "阿拉伯語(卡塔爾)",
3755 "xloc": [
3756 - "default.handlebars->25->899"
3756 + "default.handlebars->25->903"
3757 ]
3758 },
3759 {
@@ -3770,7 +3770,7 @@
3770 "ru": "Арабский (Саудовская Аравия)",
3771 "zh-chs": "阿拉伯語(沙特阿拉伯)",
3772 "xloc": [
3773 - "default.handlebars->25->900"
3773 + "default.handlebars->25->904"
3774 ]
3775 },
3776 {
@@ -3787,7 +3787,7 @@
3787 "ru": "Арабский (стандартный)",
3788 "zh-chs": "阿拉伯語(標準)",
3789 "xloc": [
3790 - "default.handlebars->25->888"
3790 + "default.handlebars->25->892"
3791 ]
3792 },
3793 {
@@ -3804,7 +3804,7 @@
3804 "ru": "Арабский (Сирия)",
3805 "zh-chs": "阿拉伯語(敘利亞)",
3806 "xloc": [
3807 - "default.handlebars->25->901"
3807 + "default.handlebars->25->905"
3808 ]
3809 },
3810 {
@@ -3821,7 +3821,7 @@
3821 "ru": "Арабский (Тунис)",
3822 "zh-chs": "阿拉伯文(突尼斯)",
3823 "xloc": [
3824 - "default.handlebars->25->902"
3824 + "default.handlebars->25->906"
3825 ]
3826 },
3827 {
@@ -3838,7 +3838,7 @@
3838 "ru": "Арабский (О.А.Э.)",
3839 "zh-chs": "阿拉伯文(阿聯酋)",
3840 "xloc": [
3841 - "default.handlebars->25->903"
3841 + "default.handlebars->25->907"
3842 ]
3843 },
3844 {
@@ -3855,7 +3855,7 @@
3855 "ru": "Арабский (Йемен)",
3856 "zh-chs": "阿拉伯文(也門)",
3857 "xloc": [
3858 - "default.handlebars->25->904"
3858 + "default.handlebars->25->908"
3859 ]
3860 },
3861 {
@@ -3872,7 +3872,7 @@
3872 "ru": "Арагонский",
3873 "zh-chs": "阿拉貢人",
3874 "xloc": [
3875 - "default.handlebars->25->905"
3875 + "default.handlebars->25->909"
3876 ]
3877 },
3878 {
@@ -3889,7 +3889,7 @@
3889 "ru": "Архитектура",
3890 "zh-chs": "建築",
3891 "xloc": [
3892 - "default.handlebars->25->789"
3892 + "default.handlebars->25->793"
3893 ]
3894 },
3895 {
@@ -3924,7 +3924,7 @@
3924 "zh-chs": "您確定要刪除組{0}嗎?刪除設備組還將刪除該組中有關設備的所有信息。",
3925 "xloc": [
3926 "default-mobile.handlebars->9->305",
3927 - "default.handlebars->25->1231"
3927 + "default.handlebars->25->1235"
3928 ]
3929 },
3930 {
@@ -3941,7 +3941,7 @@
3941 "ru": "Вы действительно хотите удалить устройство \\\"{0}\\\"?",
3942 "zh-chs": "您確定要刪除節點{0}嗎?",
3943 "xloc": [
3944 - "default.handlebars->25->652"
3944 + "default.handlebars->25->656"
3945 ]
3946 },
3947 {
@@ -3958,7 +3958,7 @@
3958 "ru": "Вы действительно хотите деинсталировать выбранного агента?",
3959 "zh-chs": "您確定要卸載所選代理嗎?",
3960 "xloc": [
3961 - "default.handlebars->25->641"
3961 + "default.handlebars->25->645"
3962 ]
3963 },
3964 {
@@ -3975,7 +3975,7 @@
3975 "ru": "Вы действительно хотите деинсталлировать выбранных {0} агентов?",
3976 "zh-chs": "您確定要卸載所選的{0}代理嗎?",
3977 "xloc": [
3978 - "default.handlebars->25->640"
3978 + "default.handlebars->25->644"
3979 ]
3980 },
3981 {
@@ -3992,7 +3992,7 @@
3992 "ru": "Вы уверенны, что {0} плагин: {1}",
3993 "zh-chs": "您確定要{0}插件嗎:{1}",
3994 "xloc": [
3995 - "default.handlebars->25->1785"
3995 + "default.handlebars->25->1789"
3996 ]
3997 },
3998 {
@@ -4009,7 +4009,7 @@
4009 "ru": "Армянский",
4010 "zh-chs": "亞美尼亞人",
4011 "xloc": [
4012 - "default.handlebars->25->906"
4012 + "default.handlebars->25->910"
4013 ]
4014 },
4015 {
@@ -4054,7 +4054,7 @@
4054 "ru": "Ассамский",
4055 "zh-chs": "阿薩姆語",
4056 "xloc": [
4057 - "default.handlebars->25->907"
4057 + "default.handlebars->25->911"
4058 ]
4059 },
4060 {
@@ -4071,7 +4071,7 @@
4071 "ru": "Астурии",
4072 "zh-chs": "阿斯圖里亞斯人",
4073 "xloc": [
4074 - "default.handlebars->25->908"
4074 + "default.handlebars->25->912"
4075 ]
4076 },
4077 {
@@ -4088,7 +4088,7 @@
4088 "ru": "Приложение аутентификации",
4089 "zh-chs": "身份驗證應用",
4090 "xloc": [
4091 - "default.handlebars->25->1606"
4091 + "default.handlebars->25->1610"
4092 ]
4093 },
4094 {
@@ -4111,8 +4111,8 @@
4111 "default-mobile.handlebars->9->42",
4112 "default.handlebars->25->109",
4113 "default.handlebars->25->114",
4114 - "default.handlebars->25->872",
4115 - "default.handlebars->25->874"
4114 + "default.handlebars->25->876",
4115 + "default.handlebars->25->878"
4116 ]
4117 },
4118 {
@@ -4180,7 +4180,7 @@
4180 "ru": "Автоудаление",
4181 "zh-chs": "自動刪除",
4182 "xloc": [
4183 - "default.handlebars->25->1155"
4183 + "default.handlebars->25->1159"
4184 ]
4185 },
4186 {
@@ -4234,7 +4234,7 @@
4234 "ru": "Азербайджанский",
4235 "zh-chs": "阿塞拜疆",
4236 "xloc": [
4237 - "default.handlebars->25->909"
4237 + "default.handlebars->25->913"
4238 ]
4239 },
4240 {
@@ -4251,7 +4251,7 @@
4251 "ru": "BIOS",
4252 "zh-chs": "的BIOS",
4253 "xloc": [
4254 - "default.handlebars->25->827"
4254 + "default.handlebars->25->831"
4255 ]
4256 },
4257 {
@@ -4348,8 +4348,8 @@
4348 "ru": "Фоновый и интерактивный",
4349 "zh-chs": "背景與互動",
4350 "xloc": [
4351 - "default.handlebars->25->1331",
4352 - "default.handlebars->25->1338",
4351 + "default.handlebars->25->1335",
4352 + "default.handlebars->25->1342",
4353 "default.handlebars->25->308"
4354 ]
4355 },
@@ -4367,8 +4367,8 @@
4367 "ru": "Только фоновый",
4368 "zh-chs": "僅背景",
4369 "xloc": [
4370 - "default.handlebars->25->1332",
4371 - "default.handlebars->25->1339",
4370 + "default.handlebars->25->1336",
4371 + "default.handlebars->25->1343",
4372 "default.handlebars->25->309",
4373 "default.handlebars->25->331"
4374 ]
@@ -4404,7 +4404,7 @@
4404 "ru": "Резервные коды",
4405 "zh-chs": "備用碼",
4406 "xloc": [
4407 - "default.handlebars->25->1608"
4407 + "default.handlebars->25->1612"
4408 ]
4409 },
4410 {
@@ -4421,7 +4421,7 @@
4421 "ru": "Плохой ключ",
4422 "zh-chs": "錯誤的簽名",
4423 "xloc": [
4424 - "default.handlebars->25->1723"
4424 + "default.handlebars->25->1727"
4425 ]
4426 },
4427 {
@@ -4438,7 +4438,7 @@
4438 "ru": "Плохой веб-сертификат",
4439 "zh-chs": "錯誤的網絡證書",
4440 "xloc": [
4441 - "default.handlebars->25->1722"
4441 + "default.handlebars->25->1726"
4442 ]
4443 },
4444 {
@@ -4455,7 +4455,7 @@
4455 "ru": "Баскский",
4456 "zh-chs": "巴斯克",
4457 "xloc": [
4458 - "default.handlebars->25->910"
4458 + "default.handlebars->25->914"
4459 ]
4460 },
4461 {
@@ -4489,7 +4489,7 @@
4489 "ru": "Белорусский",
4490 "zh-chs": "白俄羅斯語",
4491 "xloc": [
4492 - "default.handlebars->25->912"
4492 + "default.handlebars->25->916"
4493 ]
4494 },
4495 {
@@ -4506,7 +4506,7 @@
4506 "ru": "Бенгальский",
4507 "zh-chs": "孟加拉",
4508 "xloc": [
4509 - "default.handlebars->25->913"
4509 + "default.handlebars->25->917"
4510 ]
4511 },
4512 {
@@ -4542,7 +4542,7 @@
4542 "ru": "Боснийский",
4543 "zh-chs": "波斯尼亞人",
4544 "xloc": [
4545 - "default.handlebars->25->914"
4545 + "default.handlebars->25->918"
4546 ]
4547 },
4548 {
@@ -4559,7 +4559,7 @@
4559 "ru": "Бретонский",
4560 "zh-chs": "布列塔尼",
4561 "xloc": [
4562 - "default.handlebars->25->915"
4562 + "default.handlebars->25->919"
4563 ]
4564 },
4565 {
@@ -4576,7 +4576,7 @@
4576 "ru": "Отправить сообщение",
4577 "zh-chs": "廣播",
4578 "xloc": [
4579 - "default.handlebars->25->1528",
4579 + "default.handlebars->25->1532",
4580 "default.handlebars->container->column_l->p4->3->1->0->3->1"
4581 ]
4582 },
@@ -4594,7 +4594,7 @@
4594 "ru": "Отправить сообщение",
4595 "zh-chs": "廣播消息",
4596 "xloc": [
4597 - "default.handlebars->25->1470"
4597 + "default.handlebars->25->1474"
4598 ]
4599 },
4600 {
@@ -4611,7 +4611,7 @@
4611 "ru": "Отправить сообщение всем подключенным пользователям.",
4612 "zh-chs": "向所有連接的用戶廣播消息。",
4613 "xloc": [
4614 - "default.handlebars->25->1469"
4614 + "default.handlebars->25->1473"
4615 ]
4616 },
4617 {
@@ -4628,7 +4628,7 @@
4628 "ru": "Болгарский",
4629 "zh-chs": "保加利亞語",
4630 "xloc": [
4631 - "default.handlebars->25->911"
4631 + "default.handlebars->25->915"
4632 ]
4633 },
4634 {
@@ -4645,7 +4645,7 @@
4645 "ru": "Бирманский",
4646 "zh-chs": "緬甸人",
4647 "xloc": [
4648 - "default.handlebars->25->916"
4648 + "default.handlebars->25->920"
4649 ]
4650 },
4651 {
@@ -4681,8 +4681,8 @@
4681 "zh-chs": "CIRA",
4682 "xloc": [
4683 "default-mobile.handlebars->9->145",
4684 - "default.handlebars->25->1219",
4685 - "default.handlebars->25->1224",
4684 + "default.handlebars->25->1223",
4685 + "default.handlebars->25->1228",
4686 "default.handlebars->25->179",
4687 "default.handlebars->25->385"
4688 ]
@@ -4701,7 +4701,7 @@
4701 "ru": "CIRA Сервер",
4702 "zh-chs": "CIRA服務器",
4703 "xloc": [
4704 - "default.handlebars->25->1773"
4704 + "default.handlebars->25->1777"
4705 ]
4706 },
4707 {
@@ -4718,7 +4718,7 @@
4718 "ru": "CIRA Сервер команды",
4719 "zh-chs": "CIRA服務器命令",
4720 "xloc": [
4721 - "default.handlebars->25->1774"
4721 + "default.handlebars->25->1778"
4722 ]
4723 },
4724 {
@@ -4734,7 +4734,7 @@
4734 "ru": "CPU",
4735 "zh-chs": "CPU",
4736 "xloc": [
4737 - "default.handlebars->25->833"
4737 + "default.handlebars->25->837"
4738 ]
4739 },
4740 {
@@ -4751,7 +4751,7 @@
4751 "ru": "Загрузка CPU",
4752 "zh-chs": "CPU負載",
4753 "xloc": [
4754 - "default.handlebars->25->1737"
4754 + "default.handlebars->25->1741"
4755 ]
4756 },
4757 {
@@ -4768,7 +4768,7 @@
4768 "ru": "Загрузка CPU за последние 15 минут",
4769 "zh-chs": "最近15分鐘的CPU負載",
4770 "xloc": [
4771 - "default.handlebars->25->1740"
4771 + "default.handlebars->25->1744"
4772 ]
4773 },
4774 {
@@ -4785,7 +4785,7 @@
4785 "ru": "Загрузка CPU за последние 5 минут",
4786 "zh-chs": "最近5分鐘的CPU負載",
4787 "xloc": [
4788 - "default.handlebars->25->1739"
4788 + "default.handlebars->25->1743"
4789 ]
4790 },
4791 {
@@ -4802,7 +4802,7 @@
4802 "ru": "Загрузка CPU за последнюю минуту",
4803 "zh-chs": "最後一分鐘的CPU負載",
4804 "xloc": [
4805 - "default.handlebars->25->1738"
4805 + "default.handlebars->25->1742"
4806 ]
4807 },
4808 {
@@ -4819,8 +4819,8 @@
4819 "ru": "CR+LF",
4820 "zh-chs": "CR +低頻",
4821 "xloc": [
4822 - "default.handlebars->25->731",
4823 - "default.handlebars->25->740",
4822 + "default.handlebars->25->735",
4823 + "default.handlebars->25->744",
4824 "default.handlebars->container->column_l->p12->termTable->1->1->6->1->1->terminalSettingsButtons"
4825 ]
4826 },
@@ -4838,8 +4838,8 @@
4838 "ru": "Формат CSV",
4839 "zh-chs": "CSV格式",
4840 "xloc": [
4841 - "default.handlebars->25->1402",
4842 - "default.handlebars->25->1461",
4841 + "default.handlebars->25->1406",
4842 + "default.handlebars->25->1465",
4843 "default.handlebars->25->412"
4844 ]
4845 },
@@ -4857,7 +4857,7 @@
4857 "ru": "Ошибка вызова",
4858 "zh-chs": "通話錯誤",
4859 "xloc": [
4860 - "default.handlebars->25->1786"
4860 + "default.handlebars->25->1790"
4861 ]
4862 },
4863 {
@@ -4876,7 +4876,7 @@
4876 "xloc": [
4877 "default-mobile.handlebars->9->51",
4878 "default-mobile.handlebars->dialog->idx_dlgButtonBar",
4879 - "default.handlebars->25->1136",
4879 + "default.handlebars->25->1140",
4880 "default.handlebars->container->dialog->idx_dlgButtonBar",
4881 "login-mobile.handlebars->dialog->idx_dlgButtonBar",
4882 "login.handlebars->dialog->idx_dlgButtonBar",
@@ -4894,8 +4894,8 @@
4894 "nl": "Capaciteit",
4895 "zh-chs": "容量",
4896 "xloc": [
4897 - "default.handlebars->25->841",
4898 - "default.handlebars->25->843"
4897 + "default.handlebars->25->845",
4898 + "default.handlebars->25->847"
4899 ]
4900 },
4901 {
@@ -4912,7 +4912,7 @@
4912 "ru": "Объем / Скорость",
4913 "zh-chs": "容量/速度",
4914 "xloc": [
4915 - "default.handlebars->25->836"
4915 + "default.handlebars->25->840"
4916 ]
4917 },
4918 {
@@ -4929,7 +4929,7 @@
4929 "ru": "Каталонский",
4930 "zh-chs": "加泰羅尼亞語",
4931 "xloc": [
4932 - "default.handlebars->25->917"
4932 + "default.handlebars->25->921"
4933 ]
4934 },
4935 {
@@ -4963,7 +4963,7 @@
4963 "ru": "Чаморро",
4964 "zh-chs": "查莫羅",
4965 "xloc": [
4966 - "default.handlebars->25->918"
4966 + "default.handlebars->25->922"
4967 ]
4968 },
4969 {
@@ -4994,7 +4994,7 @@
4994 "ru": "Смена email для {0}",
4995 "zh-chs": "更改{0}的電子郵件",
4996 "xloc": [
4997 - "default.handlebars->25->1634"
4997 + "default.handlebars->25->1638"
4998 ]
4999 },
5000 {
@@ -5011,9 +5011,9 @@
5011 "ru": "Смена группы",
5012 "zh-chs": "變更組",
5013 "xloc": [
5014 - "default.handlebars->25->542",
5015 - "default.handlebars->25->649",
5016 - "default.handlebars->25->650"
5014 + "default.handlebars->25->544",
5015 + "default.handlebars->25->653",
5016 + "default.handlebars->25->654"
5017 ]
5018 },
5019 {
@@ -5031,8 +5031,8 @@
5031 "zh-chs": "更改密碼",
5032 "xloc": [
5033 "default-mobile.handlebars->9->59",
5034 - "default.handlebars->25->1112",
5035 - "default.handlebars->25->1623"
5034 + "default.handlebars->25->1116",
5035 + "default.handlebars->25->1627"
5036 ]
5037 },
5038 {
@@ -5049,7 +5049,7 @@
5049 "ru": "Смена пароля для {0}",
5050 "zh-chs": "更改{0}的密碼",
5051 "xloc": [
5052 - "default.handlebars->25->1641"
5052 + "default.handlebars->25->1645"
5053 ]
5054 },
5055 {
@@ -5119,7 +5119,7 @@
5119 "ru": "Изменить пароль для этого пользователя",
5120 "zh-chs": "更改該用戶的密碼",
5121 "xloc": [
5122 - "default.handlebars->25->1622"
5122 + "default.handlebars->25->1626"
5123 ]
5124 },
5125 {
@@ -5153,7 +5153,7 @@
5153 "ru": "Измените адрес электронной почты вашей учетной записи здесь.",
5154 "zh-chs": "在此處更改您的帳戶電子郵件地址。",
5155 "xloc": [
5156 - "default.handlebars->25->1099"
5156 + "default.handlebars->25->1103"
5157 ]
5158 },
5159 {
@@ -5170,7 +5170,7 @@
5170 "ru": "Измените пароль своей учетной записи, введя старый пароль и дважды новый пароль в поля ниже.",
5171 "zh-chs": "在下面的框中兩次輸入舊密碼和新密碼,以更改帳戶密碼。",
5172 "xloc": [
5173 - "default.handlebars->25->1105"
5173 + "default.handlebars->25->1109"
5174 ]
5175 },
5176 {
@@ -5187,7 +5187,7 @@
5187 "ru": "Изменение языка потребует перезагрузить страницу.",
5188 "zh-chs": "更改語言將需要刷新頁面。",
5189 "xloc": [
5190 - "default.handlebars->25->1084"
5190 + "default.handlebars->25->1088"
5191 ]
5192 },
5193 {
@@ -5204,9 +5204,9 @@
5204 "ru": "Чат",
5205 "zh-chs": "聊天室",
5206 "xloc": [
5207 - "default.handlebars->25->1419",
5208 - "default.handlebars->25->591",
5209 - "default.handlebars->25->610"
5207 + "default.handlebars->25->1423",
5208 + "default.handlebars->25->593",
5209 + "default.handlebars->25->612"
5210 ]
5211 },
5212 {
@@ -5225,8 +5225,8 @@
5225 "xloc": [
5226 "default-mobile.handlebars->9->326",
5227 "default-mobile.handlebars->9->344",
5228 - "default.handlebars->25->1281",
5229 - "default.handlebars->25->1315"
5228 + "default.handlebars->25->1285",
5229 + "default.handlebars->25->1319"
5230 ]
5231 },
5232 {
@@ -5243,7 +5243,7 @@
5243 "ru": "Чеченский",
5244 "zh-chs": "車臣",
5245 "xloc": [
5246 - "default.handlebars->25->919"
5246 + "default.handlebars->25->923"
5247 ]
5248 },
5249 {
@@ -5324,8 +5324,8 @@
5324 "ru": "Проверка...",
5325 "zh-chs": "檢查...",
5326 "xloc": [
5327 - "default.handlebars->25->1780",
5328 - "default.handlebars->25->885"
5327 + "default.handlebars->25->1784",
5328 + "default.handlebars->25->889"
5329 ]
5330 },
5331 {
@@ -5342,7 +5342,7 @@
5342 "ru": "Китайский",
5343 "zh-chs": "中文",
5344 "xloc": [
5345 - "default.handlebars->25->920"
5345 + "default.handlebars->25->924"
5346 ]
5347 },
5348 {
@@ -5359,7 +5359,7 @@
5359 "ru": "Китайский (Гонконг)",
5360 "zh-chs": "中文(香港)",
5361 "xloc": [
5362 - "default.handlebars->25->921"
5362 + "default.handlebars->25->925"
5363 ]
5364 },
5365 {
@@ -5376,7 +5376,7 @@
5376 "ru": "Китайский (КНР)",
5377 "zh-chs": "中文(中國)",
5378 "xloc": [
5379 - "default.handlebars->25->922"
5379 + "default.handlebars->25->926"
5380 ]
5381 },
5382 {
@@ -5393,7 +5393,7 @@
5393 "ru": "Упрощенный китайский)",
5394 "zh-chs": "简体中文)",
5395 "xloc": [
5396 - "default.handlebars->25->1082"
5396 + "default.handlebars->25->1086"
5397 ]
5398 },
5399 {
@@ -5410,7 +5410,7 @@
5410 "ru": "Китайский (Сингапур)",
5411 "zh-chs": "中文(新加坡)",
5412 "xloc": [
5413 - "default.handlebars->25->923"
5413 + "default.handlebars->25->927"
5414 ]
5415 },
5416 {
@@ -5427,7 +5427,7 @@
5427 "ru": "Китайский (Тайвань)",
5428 "zh-chs": "中文(台灣)",
5429 "xloc": [
5430 - "default.handlebars->25->924"
5430 + "default.handlebars->25->928"
5431 ]
5432 },
5433 {
@@ -5462,7 +5462,7 @@
5462 "ru": "Чувашский",
5463 "zh-chs": "楚瓦什",
5464 "xloc": [
5465 - "default.handlebars->25->925"
5465 + "default.handlebars->25->929"
5466 ]
5467 },
5468 {
@@ -5502,11 +5502,11 @@
5502 "default-mobile.handlebars->9->283",
5503 "default-mobile.handlebars->9->285",
5504 "default-mobile.handlebars->9->287",
5505 - "default.handlebars->25->1396",
5506 - "default.handlebars->25->766",
5507 - "default.handlebars->25->768",
5505 + "default.handlebars->25->1400",
5506 "default.handlebars->25->770",
5507 "default.handlebars->25->772",
5508 + "default.handlebars->25->774",
5509 + "default.handlebars->25->776",
5510 "default.handlebars->container->column_l->p15->consoleTable->1->6->1->1->1->0->7",
5511 "default.handlebars->container->column_l->p41->3->1",
5512 "messenger.handlebars->xbottom"
@@ -5540,7 +5540,7 @@
5540 "nl": "Wis alle meldingen",
5541 "zh-chs": "全部清除",
5542 "xloc": [
5543 - "default.handlebars->25->1710"
5543 + "default.handlebars->25->1714"
5544 ]
5545 },
5546 {
@@ -5557,7 +5557,7 @@
5557 "ru": "Очистить ядро",
5558 "zh-chs": "清除核心",
5559 "xloc": [
5560 - "default.handlebars->25->857"
5560 + "default.handlebars->25->861"
5561 ]
5562 },
5563 {
@@ -5590,7 +5590,7 @@
5590 "ru": "Очистить это уведомление",
5591 "zh-chs": "清除此通知",
5592 "xloc": [
5593 - "default.handlebars->25->1709"
5593 + "default.handlebars->25->1713"
5594 ]
5595 },
5596 {
@@ -5635,8 +5635,8 @@
5635 "nl": "Klik hier om de apparaatgroepsnaam te bewerken",
5636 "zh-chs": "单击此处编辑设备组名称",
5637 "xloc": [
5638 - "default.handlebars->25->1147",
5639 - "default.handlebars->25->1352"
5638 + "default.handlebars->25->1151",
5639 + "default.handlebars->25->1356"
5640 ]
5641 },
5642 {
@@ -5666,7 +5666,7 @@
5666 "nl": "Klik hier om de gebruikersgroepsnaam te bewerken",
5667 "zh-chs": "单击此处编辑用户组名称",
5668 "xloc": [
5669 - "default.handlebars->25->1520"
5669 + "default.handlebars->25->1524"
5670 ]
5671 },
5672 {
@@ -5716,7 +5716,7 @@
5716 "zh-chs": "單擊確定將驗證郵件發送到:",
5717 "xloc": [
5718 "default-mobile.handlebars->9->44",
5719 - "default.handlebars->25->1096"
5719 + "default.handlebars->25->1100"
5720 ]
5721 },
5722 {
@@ -5750,7 +5750,7 @@
5750 "ru": "Режим управления клиентом (CCM)",
5751 "zh-chs": "客戶端控制模式(CCM)",
5752 "xloc": [
5753 - "default.handlebars->25->814"
5753 + "default.handlebars->25->818"
5754 ]
5755 },
5756 {
@@ -5767,8 +5767,8 @@
5767 "ru": "Клиент инициировал удаленный доступ",
5768 "zh-chs": "客戶端啟動的遠程訪問",
5769 "xloc": [
5770 - "default.handlebars->25->1218",
5771 - "default.handlebars->25->1223"
5770 + "default.handlebars->25->1222",
5771 + "default.handlebars->25->1227"
5772 ]
5773 },
5774 {
@@ -5805,7 +5805,7 @@
5805 "default-mobile.handlebars->9->26",
5806 "default.handlebars->25->121",
5807 "default.handlebars->25->129",
5808 - "default.handlebars->25->724"
5808 + "default.handlebars->25->728"
5809 ]
5810 },
5811 {
@@ -5840,8 +5840,8 @@
5840 "ru": "Общие группы устройств",
5841 "zh-chs": "通用設備組",
5842 "xloc": [
5843 - "default.handlebars->25->1536",
5844 - "default.handlebars->25->1646"
5843 + "default.handlebars->25->1540",
5844 + "default.handlebars->25->1650"
5845 ]
5846 },
5847 {
@@ -5858,8 +5858,8 @@
5858 "ru": "Общие устройства",
5859 "zh-chs": "通用設備",
5860 "xloc": [
5861 - "default.handlebars->25->1542",
5862 - "default.handlebars->25->1658"
5861 + "default.handlebars->25->1546",
5862 + "default.handlebars->25->1662"
5863 ]
5864 },
5865 {
@@ -5877,7 +5877,7 @@
5877 "zh-chs": "將{1}入口{2}中的{0}限製到此位置?",
5878 "xloc": [
5879 "default-mobile.handlebars->9->96",
5880 - "default.handlebars->25->1391"
5880 + "default.handlebars->25->1395"
5881 ]
5882 },
5883 {
@@ -5896,14 +5896,14 @@
5896 "xloc": [
5897 "default-mobile.handlebars->9->243",
5898 "default-mobile.handlebars->9->306",
5899 - "default.handlebars->25->1232",
5900 - "default.handlebars->25->1445",
5901 - "default.handlebars->25->1512",
5902 - "default.handlebars->25->1556",
5903 - "default.handlebars->25->1644",
5899 + "default.handlebars->25->1236",
5900 + "default.handlebars->25->1449",
5901 + "default.handlebars->25->1516",
5902 + "default.handlebars->25->1560",
5903 + "default.handlebars->25->1648",
5904 "default.handlebars->25->409",
5905 - "default.handlebars->25->644",
5906 - "default.handlebars->25->653"
5905 + "default.handlebars->25->648",
5906 + "default.handlebars->25->657"
5907 ]
5908 },
5909 {
@@ -5921,7 +5921,7 @@
5921 "zh-chs": "確認將1個副本複製到此位置?",
5922 "xloc": [
5923 "default-mobile.handlebars->9->276",
5924 - "default.handlebars->25->761"
5924 + "default.handlebars->25->765"
5925 ]
5926 },
5927 {
@@ -5939,7 +5939,7 @@
5939 "zh-chs": "確認{0}個條目的副本到此位置?",
5940 "xloc": [
5941 "default-mobile.handlebars->9->275",
5942 - "default.handlebars->25->760"
5942 + "default.handlebars->25->764"
5943 ]
5944 },
5945 {
@@ -5953,7 +5953,7 @@
5953 "nl": "Bevestig verwijdering geselecteerde account(s)?",
5954 "zh-chs": "确认删除选定的帐户?",
5955 "xloc": [
5956 - "default.handlebars->25->1444"
5956 + "default.handlebars->25->1448"
5957 ]
5958 },
5959 {
@@ -5984,7 +5984,7 @@
5984 "nl": "Bevestig verwijdering geselecteerde gebruikersgroep(en)?",
5985 "zh-chs": "确认删除选定的用户组?",
5986 "xloc": [
5987 - "default.handlebars->25->1511"
5987 + "default.handlebars->25->1515"
5988 ]
5989 },
5990 {
@@ -6001,7 +6001,7 @@
6001 "ru": "Подтвердить удаление пользователя {0}?",
6002 "zh-chs": "確認刪除用戶{0}?",
6003 "xloc": [
6004 - "default.handlebars->25->1643"
6004 + "default.handlebars->25->1647"
6005 ]
6006 },
6007 {
@@ -6015,7 +6015,7 @@
6015 "nl": "Bevestig lidmaatschap verwijderen van gebruiker \\\"{0}\\\"?",
6016 "zh-chs": "确认删除用户\\“ {0} \\”的成员身份?",
6017 "xloc": [
6018 - "default.handlebars->25->1559"
6018 + "default.handlebars->25->1563"
6019 ]
6020 },
6021 {
@@ -6029,7 +6029,7 @@
6029 "nl": "Bevestig lidmaatschap verwijdering van gebruikergroep \\\"{0}\\\"?",
6030 "zh-chs": "确认删除用户组 “{0}” 的成员身份?",
6031 "xloc": [
6032 - "default.handlebars->25->1673"
6032 + "default.handlebars->25->1677"
6033 ]
6034 },
6035 {
@@ -6047,7 +6047,7 @@
6047 "zh-chs": "確認將1個入口移動到此位置?",
6048 "xloc": [
6049 "default-mobile.handlebars->9->278",
6050 - "default.handlebars->25->763"
6050 + "default.handlebars->25->767"
6051 ]
6052 },
6053 {
@@ -6065,7 +6065,7 @@
6065 "zh-chs": "確認將{0}個條目移到此位置?",
6066 "xloc": [
6067 "default-mobile.handlebars->9->277",
6068 - "default.handlebars->25->762"
6068 + "default.handlebars->25->766"
6069 ]
6070 },
6071 {
@@ -6082,7 +6082,7 @@
6082 "ru": "Подтвердить перезапись?",
6083 "zh-chs": "確認覆蓋?",
6084 "xloc": [
6085 - "default.handlebars->25->1390"
6085 + "default.handlebars->25->1394"
6086 ]
6087 },
6088 {
@@ -6096,8 +6096,8 @@
6096 "nl": "Bevestig verwijdering van toegangsrechten voor apparaat \\\"{0}\\\"?",
6097 "zh-chs": "确认删除设备“ {0} ”的访问权限?",
6098 "xloc": [
6099 - "default.handlebars->25->1549",
6100 - "default.handlebars->25->1664"
6099 + "default.handlebars->25->1553",
6100 + "default.handlebars->25->1668"
6101 ]
6102 },
6103 {
@@ -6111,8 +6111,8 @@
6111 "nl": "Bevestig verwijdering van toegangsrechten voor apparaatgroep \\\"{0}\\\"?",
6112 "zh-chs": "是否确认删除设备组“ {0}”的访问权限?",
6113 "xloc": [
6114 - "default.handlebars->25->1551",
6115 - "default.handlebars->25->1677"
6114 + "default.handlebars->25->1555",
6115 + "default.handlebars->25->1681"
6116 ]
6117 },
6118 {
@@ -6126,7 +6126,7 @@
6126 "nl": "Bevestig verwijdering van toegangsrechten voor gebruiker \\\"{0}\\\"?",
6127 "zh-chs": "确认删除用户\\“ {0} \\”的访问权限?",
6128 "xloc": [
6129 - "default.handlebars->25->1666"
6129 + "default.handlebars->25->1670"
6130 ]
6131 },
6132 {
@@ -6140,7 +6140,7 @@
6140 "nl": "Bevestig verwijdering van toegangsrechten voor gebruikergroep \\\"{0}\\\"?",
6141 "zh-chs": "确认删除用户组“ {0}”的访问权限?",
6142 "xloc": [
6143 - "default.handlebars->25->1669"
6143 + "default.handlebars->25->1673"
6144 ]
6145 },
6146 {
@@ -6154,8 +6154,8 @@
6154 "nl": "Verwijdering van toegangsrechten bevestigen?",
6155 "zh-chs": "确认删除访问权限?",
6156 "xloc": [
6157 - "default.handlebars->25->1667",
6158 - "default.handlebars->25->1670"
6157 + "default.handlebars->25->1671",
6158 + "default.handlebars->25->1674"
6159 ]
6160 },
6161 {
@@ -6173,7 +6173,7 @@
6173 "zh-chs": "確認刪除身份驗證器應用程序兩步登錄?",
6174 "xloc": [
6175 "default-mobile.handlebars->9->43",
6176 - "default.handlebars->25->875"
6176 + "default.handlebars->25->879"
6177 ]
6178 },
6179 {
@@ -6228,7 +6228,7 @@
6228 "nl": "Bevestig de verwijdering van rechten voor gebruiker \\\"{0}\\\"?",
6229 "zh-chs": "确认删除用户“ {0} ”的权限?",
6230 "xloc": [
6231 - "default.handlebars->25->1324"
6231 + "default.handlebars->25->1328"
6232 ]
6233 },
6234 {
@@ -6242,7 +6242,7 @@
6242 "nl": "Bevestig de verwijdering van rechten voor de gebruikergroep \\\"{0}\\\"?",
6243 "zh-chs": "确认删除用户组“ {0} ”的权限?",
6244 "xloc": [
6245 - "default.handlebars->25->1326"
6245 + "default.handlebars->25->1330"
6246 ]
6247 },
6248 {
@@ -6290,8 +6290,8 @@
6290 "default-mobile.handlebars->9->258",
6291 "default-mobile.handlebars->container->page_content->column_l->p10->p10desktop->deskarea1->1->3",
6292 "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->0->1->3",
6293 - "default.handlebars->25->1171",
6294 - "default.handlebars->25->743",
6293 + "default.handlebars->25->1175",
6294 + "default.handlebars->25->747",
6295 "default.handlebars->container->column_l->p11->deskarea0->deskarea1->3->connectbutton1span",
6296 "default.handlebars->container->column_l->p12->termTable->1->1->0->1->3->connectbutton2span",
6297 "default.handlebars->container->column_l->p13->p13toolbar->1->0->1->3",
@@ -6330,8 +6330,8 @@
6330 "ru": "Подключиться к серверу",
6331 "zh-chs": "連接到服務器",
6332 "xloc": [
6333 - "default.handlebars->25->1222",
6334 - "default.handlebars->25->1226"
6333 + "default.handlebars->25->1226",
6334 + "default.handlebars->25->1230"
6335 ]
6336 },
6337 {
@@ -6402,7 +6402,7 @@
6402 "ru": "Подключено Intel&reg; AMT",
6403 "zh-chs": "連接的英特爾&reg;AMT",
6404 "xloc": [
6405 - "default.handlebars->25->1728"
6405 + "default.handlebars->25->1732"
6406 ]
6407 },
6408 {
@@ -6419,7 +6419,7 @@
6419 "ru": "Подключенные пользователи",
6420 "zh-chs": "關聯用戶",
6421 "xloc": [
6422 - "default.handlebars->25->1733"
6422 + "default.handlebars->25->1737"
6423 ]
6424 },
6425 {
@@ -6436,7 +6436,7 @@
6436 "ru": "Подключено сейчас",
6437 "zh-chs": "現在已連接",
6438 "xloc": [
6439 - "default.handlebars->25->793"
6439 + "default.handlebars->25->797"
6440 ]
6441 },
6442 {
@@ -6476,7 +6476,7 @@
6476 "default.handlebars->25->204",
6477 "default.handlebars->25->207",
6478 "default.handlebars->25->226",
6479 - "default.handlebars->25->784",
6479 + "default.handlebars->25->788",
6480 "default.handlebars->25->9",
6481 "xterm.handlebars->9->2"
6482 ]
@@ -6495,7 +6495,7 @@
6495 "ru": "Подключений ",
6496 "zh-chs": "連接數",
6497 "xloc": [
6498 - "default.handlebars->25->1744"
6498 + "default.handlebars->25->1748"
6499 ]
6500 },
6501 {
@@ -6512,7 +6512,7 @@
6512 "ru": "Ретранслятор подключения",
6513 "zh-chs": "連接繼電器",
6514 "xloc": [
6515 - "default.handlebars->25->1772"
6515 + "default.handlebars->25->1776"
6516 ]
6517 },
6518 {
@@ -6564,7 +6564,7 @@
6564 "zh-chs": "連接性",
6565 "xloc": [
6566 "default-mobile.handlebars->9->218",
6567 - "default.handlebars->25->1359",
6567 + "default.handlebars->25->1363",
6568 "default.handlebars->25->195",
6569 "default.handlebars->25->533",
6570 "default.handlebars->container->column_l->p21->3->1->meshConnChartDiv->1"
@@ -6584,8 +6584,8 @@
6584 "ru": "Консоль",
6585 "zh-chs": "安慰",
6586 "xloc": [
6587 - "default.handlebars->25->586",
6588 - "default.handlebars->25->605",
6587 + "default.handlebars->25->588",
6588 + "default.handlebars->25->607",
6589 "default.handlebars->container->topbar->1->1->MainSubMenuSpan->MainSubMenu->1->0->MainDevConsole",
6590 "default.handlebars->container->topbar->1->1->ServerSubMenuSpan->ServerSubMenu->1->0->ServerConsole",
6591 "default.handlebars->contextMenu->cxconsole"
@@ -6621,8 +6621,8 @@
6621 "ru": "контроль",
6622 "zh-chs": "控制",
6623 "xloc": [
6624 - "default.handlebars->25->585",
6625 - "default.handlebars->25->604"
6624 + "default.handlebars->25->587",
6625 + "default.handlebars->25->606"
6626 ]
6627 },
6628 {
@@ -6639,7 +6639,7 @@
6639 "ru": "Cookie-кодировщик",
6640 "zh-chs": "Cookie編碼器",
6641 "xloc": [
6642 - "default.handlebars->25->1758"
6642 + "default.handlebars->25->1762"
6643 ]
6644 },
6645 {
@@ -6765,8 +6765,8 @@
6765 "ru": "Скопировать ссылку в буфер обмена",
6766 "zh-chs": "複製鏈接到剪貼板",
6767 "xloc": [
6768 - "default.handlebars->25->1364",
6769 - "default.handlebars->25->1378",
6768 + "default.handlebars->25->1368",
6769 + "default.handlebars->25->1382",
6770 "default.handlebars->25->321"
6771 ]
6772 },
@@ -6944,7 +6944,7 @@
6944 "ru": "Основной сервер",
6945 "zh-chs": "核心服務器",
6946 "xloc": [
6947 - "default.handlebars->25->1757"
6947 + "default.handlebars->25->1761"
6948 ]
6949 },
6950 {
@@ -6961,7 +6961,7 @@
6961 "ru": "Kорсиканский",
6962 "zh-chs": "科西嘉人",
6963 "xloc": [
6964 - "default.handlebars->25->926"
6964 + "default.handlebars->25->930"
6965 ]
6966 },
6967 {
@@ -6978,7 +6978,7 @@
6978 "ru": "Создать учетную запись",
6979 "zh-chs": "創建帳號",
6980 "xloc": [
6981 - "default.handlebars->25->1482",
6981 + "default.handlebars->25->1486",
6982 "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->createpanel->1->1->9->1->12->1->1",
6983 "login.handlebars->container->column_l->centralTable->1->0->logincell->createpanel->1->9->1->12->1->1"
6984 ]
@@ -7014,7 +7014,7 @@
7014 "ru": "Создать группу пользователей",
7015 "zh-chs": "創建用戶組",
7016 "xloc": [
7017 - "default.handlebars->25->1517"
7017 + "default.handlebars->25->1521"
7018 ]
7019 },
7020 {
@@ -7031,7 +7031,7 @@
7031 "ru": "Создайте новую группу устройств, используя параметры ниже.",
7032 "zh-chs": "使用以下選項創建一個新的設備組。",
7033 "xloc": [
7034 - "default.handlebars->25->1119"
7034 + "default.handlebars->25->1123"
7035 ]
7036 },
7037 {
@@ -7065,7 +7065,7 @@
7065 "ru": "Создайте сразу несколько учетных записей, импортировав файл JSON в следующем формате:",
7066 "zh-chs": "通過導入以下格式的JSON文件一次創建多個帳戶:",
7067 "xloc": [
7068 - "default.handlebars->25->1452"
7068 + "default.handlebars->25->1456"
7069 ]
7070 },
7071 {
@@ -7100,7 +7100,7 @@
7100 "ru": "Создано",
7101 "zh-chs": "創建",
7102 "xloc": [
7103 - "default.handlebars->25->1582"
7103 + "default.handlebars->25->1586"
7104 ]
7105 },
7106 {
@@ -7135,7 +7135,7 @@
7135 "ru": "Кри (Канадский язык)",
7136 "zh-chs": "克里",
7137 "xloc": [
7138 - "default.handlebars->25->927"
7138 + "default.handlebars->25->931"
7139 ]
7140 },
7141 {
@@ -7152,7 +7152,7 @@
7152 "ru": "Хорватский",
7153 "zh-chs": "克羅地亞語",
7154 "xloc": [
7155 - "default.handlebars->25->928"
7155 + "default.handlebars->25->932"
7156 ]
7157 },
7158 {
@@ -7293,7 +7293,7 @@
7293 "ru": "Чешский",
7294 "zh-chs": "捷克文",
7295 "xloc": [
7296 - "default.handlebars->25->929"
7296 + "default.handlebars->25->933"
7297 ]
7298 },
7299 {
@@ -7327,7 +7327,7 @@
7327 "ru": "Датский",
7328 "zh-chs": "丹麥文",
7329 "xloc": [
7330 - "default.handlebars->25->930"
7330 + "default.handlebars->25->934"
7331 ]
7332 },
7333 {
@@ -7344,7 +7344,7 @@
7344 "ru": "DataChannel",
7345 "zh-chs": "數據通道",
7346 "xloc": [
7347 - "default.handlebars->25->694"
7347 + "default.handlebars->25->698"
7348 ]
7349 },
7350 {
@@ -7361,7 +7361,7 @@
7361 "ru": "Дата & Время",
7362 "zh-chs": "日期和時間",
7363 "xloc": [
7364 - "default.handlebars->25->1087"
7364 + "default.handlebars->25->1091"
7365 ]
7366 },
7367 {
@@ -7378,7 +7378,7 @@
7378 "ru": "День",
7379 "zh-chs": "天",
7380 "xloc": [
7381 - "default.handlebars->25->628"
7381 + "default.handlebars->25->632"
7382 ]
7383 },
7384 {
@@ -7395,7 +7395,7 @@
7395 "ru": "Деактивировать режим управления клиентом (CCM)",
7396 "zh-chs": "停用客戶端控制模式(CCM)",
7397 "xloc": [
7398 - "default.handlebars->25->1210"
7398 + "default.handlebars->25->1214"
7399 ]
7400 },
7401 {
@@ -7434,9 +7434,9 @@
7434 "default-mobile.handlebars->9->91",
7435 "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->2->1->1",
7436 "default-mobile.handlebars->container->page_content->column_l->p5->p5myfiles->p5toolbar->1->0->1->1",
7437 - "default.handlebars->25->1385",
7437 + "default.handlebars->25->1389",
7438 "default.handlebars->25->439",
7439 - "default.handlebars->25->753",
7439 + "default.handlebars->25->757",
7440 "default.handlebars->container->column_l->p13->p13toolbar->1->2->1->3",
7441 "default.handlebars->container->column_l->p5->p5toolbar->1->0->p5filehead->3",
7442 "default.handlebars->container->dialog->idx_dlgButtonBar->5",
@@ -7460,7 +7460,7 @@
7460 "zh-chs": "刪除帳戶",
7461 "xloc": [
7462 "default-mobile.handlebars->9->53",
7463 - "default.handlebars->25->1104"
7463 + "default.handlebars->25->1108"
7464 ]
7465 },
7466 {
@@ -7474,7 +7474,7 @@
7474 "nl": "Verwijder accounts",
7475 "zh-chs": "删除帐号",
7476 "xloc": [
7477 - "default.handlebars->25->1446"
7477 + "default.handlebars->25->1450"
7478 ]
7479 },
7480 {
@@ -7492,7 +7492,7 @@
7492 "zh-chs": "刪除裝置",
7493 "xloc": [
7494 "default-mobile.handlebars->9->222",
7495 - "default.handlebars->25->544"
7495 + "default.handlebars->25->546"
7496 ]
7497 },
7498 {
@@ -7511,8 +7511,8 @@
7511 "xloc": [
7512 "default-mobile.handlebars->9->304",
7513 "default-mobile.handlebars->9->307",
7514 - "default.handlebars->25->1203",
7515 - "default.handlebars->25->1233"
7514 + "default.handlebars->25->1207",
7515 + "default.handlebars->25->1237"
7516 ]
7517 },
7518 {
@@ -7530,7 +7530,7 @@
7530 "zh-chs": "刪除節點",
7531 "xloc": [
7532 "default-mobile.handlebars->9->241",
7533 - "default.handlebars->25->654"
7533 + "default.handlebars->25->658"
7534 ]
7535 },
7536 {
@@ -7564,7 +7564,7 @@
7564 "ru": "Удалить пользователя",
7565 "zh-chs": "刪除用戶",
7566 "xloc": [
7567 - "default.handlebars->25->1621"
7567 + "default.handlebars->25->1625"
7568 ]
7569 },
7570 {
@@ -7581,8 +7581,8 @@
7581 "ru": "Удалить группу пользователей",
7582 "zh-chs": "刪除用戶組",
7583 "xloc": [
7584 - "default.handlebars->25->1547",
7585 - "default.handlebars->25->1557"
7584 + "default.handlebars->25->1551",
7585 + "default.handlebars->25->1561"
7586 ]
7587 },
7588 {
@@ -7596,7 +7596,7 @@
7596 "nl": "Gebruikersgroepen verwijderen",
7597 "zh-chs": "删除用户组",
7598 "xloc": [
7599 - "default.handlebars->25->1513"
7599 + "default.handlebars->25->1517"
7600 ]
7601 },
7602 {
@@ -7613,7 +7613,7 @@
7613 "ru": "Удалить пользователя {0}",
7614 "zh-chs": "刪除用戶{0}",
7615 "xloc": [
7616 - "default.handlebars->25->1642"
7616 + "default.handlebars->25->1646"
7617 ]
7618 },
7619 {
@@ -7631,7 +7631,7 @@
7631 "zh-chs": "刪除帳戶",
7632 "xloc": [
7633 "default-mobile.handlebars->container->page_content->column_l->p3->p3info->1->p3AccountActions->p2AccountActions->3->9->0",
7634 - "default.handlebars->25->1442",
7634 + "default.handlebars->25->1446",
7635 "default.handlebars->container->column_l->p2->p2info->p2AccountActions->3->p2AccountPassActions->7"
7636 ]
7637 },
@@ -7663,7 +7663,7 @@
7663 "nl": "Verwijder groep",
7664 "zh-chs": "删除群组",
7665 "xloc": [
7666 - "default.handlebars->25->1509"
7666 + "default.handlebars->25->1513"
7667 ]
7668 },
7669 {
@@ -7699,8 +7699,8 @@
7699 "xloc": [
7700 "default-mobile.handlebars->9->270",
7701 "default-mobile.handlebars->9->93",
7702 - "default.handlebars->25->1387",
7703 - "default.handlebars->25->755"
7702 + "default.handlebars->25->1391",
7703 + "default.handlebars->25->759"
7704 ]
7705 },
7706 {
@@ -7717,7 +7717,7 @@
7717 "ru": "Удалить группу пользователей {0}?",
7718 "zh-chs": "刪除用戶組{0}?",
7719 "xloc": [
7720 - "default.handlebars->25->1555"
7720 + "default.handlebars->25->1559"
7721 ]
7722 },
7723 {
@@ -7736,8 +7736,8 @@
7736 "xloc": [
7737 "default-mobile.handlebars->9->269",
7738 "default-mobile.handlebars->9->92",
7739 - "default.handlebars->25->1386",
7740 - "default.handlebars->25->754"
7739 + "default.handlebars->25->1390",
7740 + "default.handlebars->25->758"
7741 ]
7742 },
7743 {
@@ -7767,7 +7767,7 @@
7767 "ko": "거부",
7768 "zh-chs": "被拒绝",
7769 "xloc": [
7770 - "default.handlebars->25->690"
7770 + "default.handlebars->25->694"
7771 ]
7772 },
7773 {
@@ -7850,18 +7850,18 @@
7850 "default-mobile.handlebars->9->296",
7851 "default-mobile.handlebars->9->309",
7852 "default-mobile.handlebars->9->70",
7853 - "default.handlebars->25->1124",
7854 - "default.handlebars->25->1152",
7855 - "default.handlebars->25->1235",
7856 - "default.handlebars->25->1516",
7857 - "default.handlebars->25->1523",
7858 - "default.handlebars->25->1524",
7859 - "default.handlebars->25->1553",
7853 + "default.handlebars->25->1128",
7854 + "default.handlebars->25->1156",
7855 + "default.handlebars->25->1239",
7856 + "default.handlebars->25->1520",
7857 + "default.handlebars->25->1527",
7858 + "default.handlebars->25->1528",
7859 + "default.handlebars->25->1557",
7860 "default.handlebars->25->478",
7861 "default.handlebars->25->479",
7862 - "default.handlebars->25->685",
7862 + "default.handlebars->25->689",
7863 "default.handlebars->25->78",
7864 - "default.handlebars->25->799",
7864 + "default.handlebars->25->803",
7865 "default.handlebars->container->column_l->p42->p42tbl->1->0->3"
7866 ]
7867 },
@@ -7893,8 +7893,8 @@
7893 "ru": "Рабочий стол",
7894 "zh-chs": "桌面",
7895 "xloc": [
7896 - "default.handlebars->25->1240",
7897 - "default.handlebars->25->1687",
7896 + "default.handlebars->25->1244",
7897 + "default.handlebars->25->1691",
7898 "default.handlebars->25->445",
7899 "default.handlebars->container->topbar->1->1->MainSubMenuSpan->MainSubMenu->1->0->MainDevDesktop",
7900 "default.handlebars->contextMenu->cxdesktop"
@@ -7931,8 +7931,8 @@
7931 "ru": "Уведомление на рабочем столе",
7932 "zh-chs": "桌面通知",
7933 "xloc": [
7934 - "default.handlebars->25->1162",
7935 - "default.handlebars->25->1597",
7934 + "default.handlebars->25->1166",
7935 + "default.handlebars->25->1601",
7936 "default.handlebars->25->514"
7937 ]
7938 },
@@ -7950,8 +7950,8 @@
7950 "ru": "Запрос рабочего стола",
7951 "zh-chs": "桌面提示",
7952 "xloc": [
7953 - "default.handlebars->25->1161",
7954 - "default.handlebars->25->1596",
7953 + "default.handlebars->25->1165",
7954 + "default.handlebars->25->1600",
7955 "default.handlebars->25->513"
7956 ]
7957 },
@@ -7969,8 +7969,8 @@
7969 "ru": "Запрос рабочего стола + панель инструментов",
7970 "zh-chs": "桌面提示+工具欄",
7971 "xloc": [
7972 - "default.handlebars->25->1159",
7973 - "default.handlebars->25->1594",
7972 + "default.handlebars->25->1163",
7973 + "default.handlebars->25->1598",
7974 "default.handlebars->25->511"
7975 ]
7976 },
@@ -8002,8 +8002,8 @@
8002 "ru": "Панель инструментов рабочего стола",
8003 "zh-chs": "桌面工具欄",
8004 "xloc": [
8005 - "default.handlebars->25->1160",
8006 - "default.handlebars->25->1595",
8005 + "default.handlebars->25->1164",
8006 + "default.handlebars->25->1599",
8007 "default.handlebars->25->512"
8008 ]
8009 },
@@ -8074,8 +8074,8 @@
8074 "ru": "Устройство",
8075 "zh-chs": "設備",
8076 "xloc": [
8077 - "default.handlebars->25->1262",
8078 - "default.handlebars->25->1661",
8077 + "default.handlebars->25->1266",
8078 + "default.handlebars->25->1665",
8079 "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->9->devListToolbarSort->sortselect->5"
8080 ]
8081 },
@@ -8094,7 +8094,7 @@
8094 "zh-chs": "設備動作",
8095 "xloc": [
8096 "default-mobile.handlebars->9->234",
8097 - "default.handlebars->25->627"
8097 + "default.handlebars->25->631"
8098 ]
8099 },
8100 {
@@ -8111,13 +8111,13 @@
8111 "ru": "Группа устройства",
8112 "zh-chs": "設備組",
8113 "xloc": [
8114 - "default.handlebars->25->1257",
8115 - "default.handlebars->25->1260",
8114 "default.handlebars->25->1261",
8117 - "default.handlebars->25->1539",
8118 - "default.handlebars->25->1545",
8119 - "default.handlebars->25->1649",
8120 - "default.handlebars->25->1696"
8115 + "default.handlebars->25->1264",
8116 + "default.handlebars->25->1265",
8117 + "default.handlebars->25->1543",
8118 + "default.handlebars->25->1549",
8119 + "default.handlebars->25->1653",
8120 + "default.handlebars->25->1700"
8121 ]
8122 },
8123 {
@@ -8135,7 +8135,7 @@
8135 "zh-chs": "設備組用戶",
8136 "xloc": [
8137 "default-mobile.handlebars->9->350",
8138 - "default.handlebars->25->1322"
8138 + "default.handlebars->25->1326"
8139 ]
8140 },
8141 {
@@ -8153,11 +8153,11 @@
8153 "zh-chs": "設備組",
8154 "xloc": [
8155 "default-mobile.handlebars->container->page_content->column_l->p3->p3info->1->3",
8156 - "default.handlebars->25->1411",
8157 - "default.handlebars->25->1503",
8158 - "default.handlebars->25->1526",
8159 - "default.handlebars->25->1591",
8160 - "default.handlebars->25->1731",
8156 + "default.handlebars->25->1415",
8157 + "default.handlebars->25->1507",
8158 + "default.handlebars->25->1530",
8159 + "default.handlebars->25->1595",
8160 + "default.handlebars->25->1735",
8161 "default.handlebars->container->column_l->p2->p2info->7"
8162 ]
8163 },
@@ -8192,7 +8192,13 @@
8192 "ru": "Местонахождение устройства",
8193 "zh-chs": "設備位置",
8194 "xloc": [
8195 - "default.handlebars->25->655"
8195 + "default.handlebars->25->659"
8196 + ]
8197 + },
8198 + {
8199 + "en": "Device Message",
8200 + "xloc": [
8201 + "default.handlebars->25->620"
8202 ]
8203 },
8204 {
@@ -8210,9 +8216,9 @@
8216 "zh-chs": "設備名稱",
8217 "xloc": [
8218 "default-mobile.handlebars->9->245",
8213 - "default.handlebars->25->1695",
8219 + "default.handlebars->25->1699",
8220 "default.handlebars->25->244",
8215 - "default.handlebars->25->683",
8221 + "default.handlebars->25->687",
8222 "player.handlebars->3->9"
8223 ]
8224 },
@@ -8230,7 +8236,7 @@
8236 "ru": "Уведомление устройства",
8237 "zh-chs": "設備通知",
8238 "xloc": [
8233 - "default.handlebars->25->618"
8239 + "default.handlebars->25->622"
8240 ]
8241 },
8242 {
@@ -8264,8 +8270,8 @@
8270 "ru": "Подключения устройств.",
8271 "zh-chs": "設備連接。",
8272 "xloc": [
8267 - "default.handlebars->25->1092",
8268 - "default.handlebars->25->1343"
8273 + "default.handlebars->25->1096",
8274 + "default.handlebars->25->1347"
8275 ]
8276 },
8277 {
@@ -8282,8 +8288,8 @@
8288 "ru": "Отключения устройств.",
8289 "zh-chs": "設備斷開連接。",
8290 "xloc": [
8285 - "default.handlebars->25->1093",
8286 - "default.handlebars->25->1344"
8291 + "default.handlebars->25->1097",
8292 + "default.handlebars->25->1348"
8293 ]
8294 },
8295 {
@@ -8300,7 +8306,7 @@
8306 "ru": "Примечания могут быть просмотрены и изменены другими администраторами.",
8307 "zh-chs": "其他設備組管理員可以查看和更改設備組註釋。",
8308 "xloc": [
8303 - "default.handlebars->25->616"
8309 + "default.handlebars->25->618"
8310 ]
8311 },
8312 {
@@ -8593,8 +8599,8 @@
8599 "nl": "Apparaten",
8600 "zh-chs": "设备",
8601 "xloc": [
8596 - "default.handlebars->25->1504",
8597 - "default.handlebars->25->1527"
8602 + "default.handlebars->25->1508",
8603 + "default.handlebars->25->1531"
8604 ]
8605 },
8606 {
@@ -8630,8 +8636,8 @@
8636 "xloc": [
8637 "default-mobile.handlebars->9->259",
8638 "default-mobile.handlebars->container->page_content->column_l->p10->p10desktop->deskarea1->1->3",
8633 - "default.handlebars->25->1172",
8634 - "default.handlebars->25->744",
8639 + "default.handlebars->25->1176",
8640 + "default.handlebars->25->748",
8641 "default.handlebars->container->column_l->p11->deskarea0->deskarea1->3->disconnectbutton1span",
8642 "default.handlebars->container->column_l->p12->termTable->1->1->0->1->3->disconnectbutton2span",
8643 "xterm.handlebars->p11->deskarea0->deskarea1->3"
@@ -8682,6 +8688,12 @@
8688 "xterm.handlebars->9->1"
8689 ]
8690 },
8691 + {
8692 + "en": "Display a message box on the remote device.",
8693 + "xloc": [
8694 + "default.handlebars->25->621"
8695 + ]
8696 + },
8697 {
8698 "cs": "Zobrazit upozornění na vzdáleném zařízení",
8699 "de": "Eine Benachrichtigung auf dem entfernten Rechner anzeigen",
@@ -8699,6 +8711,12 @@
8711 "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1"
8712 ]
8713 },
8714 + {
8715 + "en": "Display a text message on the remote device",
8716 + "xloc": [
8717 + "default.handlebars->25->542"
8718 + ]
8719 + },
8720 {
8721 "cs": "Zobrazit název skupiny zařízení",
8722 "de": "Gerätegruppenname anzeigen",
@@ -8713,7 +8731,7 @@
8731 "ru": "Отобразить имя группы устройств",
8732 "zh-chs": "顯示設備組名稱",
8733 "xloc": [
8716 - "default.handlebars->25->1091"
8734 + "default.handlebars->25->1095"
8735 ]
8736 },
8737 {
@@ -8730,7 +8748,7 @@
8748 "ru": "Отображаемое имя",
8749 "zh-chs": "顯示名稱",
8750 "xloc": [
8733 - "default.handlebars->25->715"
8751 + "default.handlebars->25->719"
8752 ]
8753 },
8754 {
@@ -8746,7 +8764,7 @@
8764 "ru": "Показать публичную ссылку",
8765 "zh-chs": "显示公共链接",
8766 "xloc": [
8749 - "default.handlebars->25->1363"
8767 + "default.handlebars->25->1367"
8768 ]
8769 },
8770 {
@@ -8763,7 +8781,7 @@
8781 "ru": "Ничего не делать",
8782 "zh-chs": "沒做什麼",
8783 "xloc": [
8766 - "default.handlebars->25->1216"
8784 + "default.handlebars->25->1220"
8785 ]
8786 },
8787 {
@@ -8776,8 +8794,8 @@
8794 "nl": "Niet configureren",
8795 "zh-chs": "不要配置",
8796 "xloc": [
8779 - "default.handlebars->25->1220",
8780 - "default.handlebars->25->1225"
8797 + "default.handlebars->25->1224",
8798 + "default.handlebars->25->1229"
8799 ]
8800 },
8801 {
@@ -8790,7 +8808,7 @@
8808 "nl": "Maak geen verbinding met de server",
8809 "zh-chs": "不要连接到服务器",
8810 "xloc": [
8793 - "default.handlebars->25->1221"
8811 + "default.handlebars->25->1225"
8812 ]
8813 },
8814 {
@@ -8890,7 +8908,7 @@
8908 "zh-chs": "下載文件",
8909 "xloc": [
8910 "default-mobile.handlebars->9->289",
8893 - "default.handlebars->25->773"
8911 + "default.handlebars->25->777"
8912 ]
8913 },
8914 {
@@ -8924,7 +8942,7 @@
8942 "ru": "Скачать MeshCmd",
8943 "zh-chs": "下載MeshCmd",
8944 "xloc": [
8927 - "default.handlebars->25->675"
8945 + "default.handlebars->25->679"
8946 ]
8947 },
8948 {
@@ -8975,7 +8993,7 @@
8993 "ru": "Скачайте \\\"meshcmd\\\" с файлом команд для маршрутизации трафика к этому устройству через сервер. Не забудьте указать пароль от своей учетной записи в meshaction.txt и сделать другие правки при необходимости.",
8994 "zh-chs": "下載帶有動作文件的“ meshcmd”,以將通過此服務器的流量路由到該設備。確保編輯meshaction.txt並添加您的帳戶密碼或進行任何必要的更改。",
8995 "xloc": [
8978 - "default.handlebars->25->668"
8996 + "default.handlebars->25->672"
8997 ]
8998 },
8999 {
@@ -9043,7 +9061,7 @@
9061 "ru": "Скачать события состояния питания",
9062 "zh-chs": "下載電源事件",
9063 "xloc": [
9046 - "default.handlebars->25->629"
9064 + "default.handlebars->25->633"
9065 ]
9066 },
9067 {
@@ -9111,7 +9129,7 @@
9129 "ru": "Скачать список событий в одном из форматов ниже.",
9130 "zh-chs": "使用以下一種文件格式下載事件列表。",
9131 "xloc": [
9114 - "default.handlebars->25->1401"
9132 + "default.handlebars->25->1405"
9133 ]
9134 },
9135 {
@@ -9128,7 +9146,7 @@
9146 "ru": "Скачать список пользователей в одном из форматов ниже.",
9147 "zh-chs": "使用以下一種文件格式下載用戶列表。",
9148 "xloc": [
9131 - "default.handlebars->25->1460"
9149 + "default.handlebars->25->1464"
9150 ]
9151 },
9152 {
@@ -9211,7 +9229,7 @@
9229 "nl": "Dubbele agent",
9230 "zh-chs": "代理重复",
9231 "xloc": [
9214 - "default.handlebars->25->1727"
9232 + "default.handlebars->25->1731"
9233 ]
9234 },
9235 {
@@ -9245,7 +9263,7 @@
9263 "ru": "Скопировать группу пользователей",
9264 "zh-chs": "重複的用戶組",
9265 "xloc": [
9248 - "default.handlebars->25->1518"
9266 + "default.handlebars->25->1522"
9267 ]
9268 },
9269 {
@@ -9276,8 +9294,8 @@
9294 "ru": "Длительность",
9295 "zh-chs": "持續時間",
9296 "xloc": [
9279 - "default.handlebars->25->1681",
9280 - "default.handlebars->25->1701",
9297 + "default.handlebars->25->1685",
9298 + "default.handlebars->25->1705",
9299 "player.handlebars->3->2"
9300 ]
9301 },
@@ -9295,7 +9313,7 @@
9313 "ru": "Во время активации агент будет иметь доступ к паролю администратора.",
9314 "zh-chs": "在激活期間,代理將有權訪問管理員密碼信息。",
9315 "xloc": [
9298 - "default.handlebars->25->1230"
9316 + "default.handlebars->25->1234"
9317 ]
9318 },
9319 {
@@ -9312,7 +9330,7 @@
9330 "ru": "Голландский (Бельгийский)",
9331 "zh-chs": "荷蘭語(比利時)",
9332 "xloc": [
9315 - "default.handlebars->25->932"
9333 + "default.handlebars->25->936"
9334 ]
9335 },
9336 {
@@ -9329,7 +9347,7 @@
9347 "ru": "Голландский (Стандартный)",
9348 "zh-chs": "荷蘭語(標準)",
9349 "xloc": [
9332 - "default.handlebars->25->931"
9350 + "default.handlebars->25->935"
9351 ]
9352 },
9353 {
@@ -9520,7 +9538,7 @@
9538 "zh-chs": "編輯裝置",
9539 "xloc": [
9540 "default-mobile.handlebars->9->250",
9523 - "default.handlebars->25->688"
9541 + "default.handlebars->25->692"
9542 ]
9543 },
9544 {
@@ -9540,10 +9558,10 @@
9558 "default-mobile.handlebars->9->310",
9559 "default-mobile.handlebars->9->312",
9560 "default-mobile.handlebars->9->330",
9543 - "default.handlebars->25->1236",
9544 - "default.handlebars->25->1266",
9545 - "default.handlebars->25->1288",
9546 - "default.handlebars->25->1300"
9561 + "default.handlebars->25->1240",
9562 + "default.handlebars->25->1270",
9563 + "default.handlebars->25->1292",
9564 + "default.handlebars->25->1304"
9565 ]
9566 },
9567 {
@@ -9560,7 +9578,7 @@
9578 "ru": "Редактировать функции группы устройств",
9579 "zh-chs": "編輯設備組功能",
9580 "xloc": [
9563 - "default.handlebars->25->1252"
9581 + "default.handlebars->25->1256"
9582 ]
9583 },
9584 {
@@ -9577,8 +9595,8 @@
9595 "ru": "Редактировать права группы устройств",
9596 "zh-chs": "編輯設備組權限",
9597 "xloc": [
9580 - "default.handlebars->25->1285",
9581 - "default.handlebars->25->1297"
9598 + "default.handlebars->25->1289",
9599 + "default.handlebars->25->1301"
9600 ]
9601 },
9602 {
@@ -9595,7 +9613,7 @@
9613 "ru": "Редактировать согласие пользователя группы устройств",
9614 "zh-chs": "編輯設備組用戶同意",
9615 "xloc": [
9598 - "default.handlebars->25->1237"
9616 + "default.handlebars->25->1241"
9617 ]
9618 },
9619 {
@@ -9613,7 +9631,7 @@
9631 "zh-chs": "編輯設備說明",
9632 "xloc": [
9633 "default-mobile.handlebars->9->324",
9616 - "default.handlebars->25->1279"
9634 + "default.handlebars->25->1283"
9635 ]
9636 },
9637 {
@@ -9629,8 +9647,8 @@
9647 "ru": "Изменить разрешения устройства",
9648 "zh-chs": "编辑设备权限",
9649 "xloc": [
9632 - "default.handlebars->25->1290",
9633 - "default.handlebars->25->1292"
9650 + "default.handlebars->25->1294",
9651 + "default.handlebars->25->1296"
9652 ]
9653 },
9654 {
@@ -9644,7 +9662,7 @@
9662 "nl": "Gebruikerstoestemming apparaat bewerken",
9663 "zh-chs": "编辑设备用户同意",
9664 "xloc": [
9647 - "default.handlebars->25->1239"
9665 + "default.handlebars->25->1243"
9666 ]
9667 },
9668 {
@@ -9660,7 +9678,7 @@
9678 "ru": "Редактировать группу",
9679 "zh-chs": "编辑组",
9680 "xloc": [
9663 - "default.handlebars->25->595"
9681 + "default.handlebars->25->597"
9682 ]
9683 },
9684 {
@@ -9680,7 +9698,7 @@
9698 "default-mobile.handlebars->9->240",
9699 "default.handlebars->25->493",
9700 "default.handlebars->25->496",
9683 - "default.handlebars->25->636"
9701 + "default.handlebars->25->640"
9702 ]
9703 },
9704 {
@@ -9698,7 +9716,7 @@
9716 "zh-chs": "編輯筆記",
9717 "xloc": [
9718 "default-mobile.handlebars->9->337",
9701 - "default.handlebars->25->1307"
9719 + "default.handlebars->25->1311"
9720 ]
9721 },
9722 {
@@ -9712,7 +9730,7 @@
9730 "nl": "Gebruikerstoestemming bewerken",
9731 "zh-chs": "编辑用户同意",
9732 "xloc": [
9715 - "default.handlebars->25->1238"
9733 + "default.handlebars->25->1242"
9734 ]
9735 },
9736 {
@@ -9729,7 +9747,7 @@
9747 "ru": "Редактировать права пользователя для группы устройств",
9748 "zh-chs": "編輯用戶設備組權限",
9749 "xloc": [
9732 - "default.handlebars->25->1298"
9750 + "default.handlebars->25->1302"
9751 ]
9752 },
9753 {
@@ -9745,7 +9763,7 @@
9763 "ru": "Изменить разрешения для пользовательских устройств",
9764 "zh-chs": "编辑用户设备权限",
9765 "xloc": [
9748 - "default.handlebars->25->1293"
9766 + "default.handlebars->25->1297"
9767 ]
9768 },
9769 {
@@ -9762,7 +9780,7 @@
9780 "ru": "Редактировать группу пользователей",
9781 "zh-chs": "編輯用戶組",
9782 "xloc": [
9765 - "default.handlebars->25->1554"
9783 + "default.handlebars->25->1558"
9784 ]
9785 },
9786 {
@@ -9776,7 +9794,7 @@
9794 "nl": "Gebruikersmachtigingen voor apparaatgroep bewerken",
9795 "zh-chs": "编辑用户组设备权限",
9796 "xloc": [
9779 - "default.handlebars->25->1295"
9797 + "default.handlebars->25->1299"
9798 ]
9799 },
9800 {
@@ -9811,11 +9829,11 @@
9829 "zh-chs": "電子郵件",
9830 "xloc": [
9831 "default-mobile.handlebars->9->47",
9814 - "default.handlebars->25->1472",
9815 - "default.handlebars->25->1576",
9816 - "default.handlebars->25->1577",
9817 - "default.handlebars->25->1616",
9818 - "default.handlebars->25->1630",
9832 + "default.handlebars->25->1476",
9833 + "default.handlebars->25->1580",
9834 + "default.handlebars->25->1581",
9835 + "default.handlebars->25->1620",
9836 + "default.handlebars->25->1634",
9837 "default.handlebars->25->292",
9838 "login-mobile.handlebars->5->42",
9839 "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->tokenpanel->1->7->1->4->1->3",
@@ -9838,7 +9856,7 @@
9856 "zh-chs": "電郵地址變更",
9857 "xloc": [
9858 "default-mobile.handlebars->9->48",
9841 - "default.handlebars->25->1100"
9859 + "default.handlebars->25->1104"
9860 ]
9861 },
9862 {
@@ -9856,7 +9874,7 @@
9874 "zh-chs": "郵件認證",
9875 "xloc": [
9876 "default-mobile.handlebars->9->37",
9859 - "default.handlebars->25->869"
9877 + "default.handlebars->25->873"
9878 ]
9879 },
9880 {
@@ -9901,7 +9919,7 @@
9919 "zh-chs": "電子郵件驗證",
9920 "xloc": [
9921 "default-mobile.handlebars->9->46",
9904 - "default.handlebars->25->1098"
9922 + "default.handlebars->25->1102"
9923 ]
9924 },
9925 {
@@ -9931,7 +9949,7 @@
9949 "ru": "Электронная почта не подтверждена",
9950 "zh-chs": "邮件未验证",
9951 "xloc": [
9934 - "default.handlebars->25->1430"
9952 + "default.handlebars->25->1434"
9953 ]
9954 },
9955 {
@@ -9948,8 +9966,8 @@
9966 "ru": "Email подтвержден",
9967 "zh-chs": "電子郵件已驗證",
9968 "xloc": [
9951 - "default.handlebars->25->1431",
9952 - "default.handlebars->25->1573"
9969 + "default.handlebars->25->1435",
9970 + "default.handlebars->25->1577"
9971 ]
9972 },
9973 {
@@ -9966,7 +9984,7 @@
9984 "ru": "Email подтвержден.",
9985 "zh-chs": "電子郵件已驗證。",
9986 "xloc": [
9969 - "default.handlebars->25->1478"
9987 + "default.handlebars->25->1482"
9988 ]
9989 },
9990 {
@@ -9983,7 +10001,7 @@
10001 "ru": "Email не подтвержден",
10002 "zh-chs": "電子郵件未驗證",
10003 "xloc": [
9986 - "default.handlebars->25->1574"
10004 + "default.handlebars->25->1578"
10005 ]
10006 },
10007 {
@@ -10022,7 +10040,7 @@
10040 "en": "Email verified and forced password reset required.",
10041 "nl": "E-mail geverifieerd en geforceerd opnieuw instellen van wachtwoord vereist.",
10042 "xloc": [
10025 - "default.handlebars->25->1479"
10043 + "default.handlebars->25->1483"
10044 ]
10045 },
10046 {
@@ -10035,7 +10053,7 @@
10053 "nl": "Email/SMS verkeer",
10054 "zh-chs": "电子邮件/短信流量",
10055 "xloc": [
10038 - "default.handlebars->25->1766"
10056 + "default.handlebars->25->1770"
10057 ]
10058 },
10059 {
@@ -10074,7 +10092,7 @@
10092 "ru": "Включить коды приглашения",
10093 "zh-chs": "啟用邀請代碼",
10094 "xloc": [
10077 - "default.handlebars->25->1328"
10095 + "default.handlebars->25->1332"
10096 ]
10097 },
10098 {
@@ -10109,7 +10127,7 @@
10127 "zh-chs": "啟用電子郵件兩因素驗證。",
10128 "xloc": [
10129 "default-mobile.handlebars->9->39",
10112 - "default.handlebars->25->871"
10130 + "default.handlebars->25->875"
10131 ]
10132 },
10133 {
@@ -10133,7 +10151,7 @@
10151 "en": "Enabled",
10152 "nl": "Ingeschakeld",
10153 "xloc": [
10136 - "default.handlebars->25->1703"
10154 + "default.handlebars->25->1707"
10155 ]
10156 },
10157 {
@@ -10157,7 +10175,7 @@
10175 "en": "End Time",
10176 "nl": "Eindtijd",
10177 "xloc": [
10160 - "default.handlebars->25->1700"
10178 + "default.handlebars->25->1704"
10179 ]
10180 },
10181 {
@@ -10174,7 +10192,7 @@
10192 "ru": "Английский",
10193 "zh-chs": "英語",
10194 "xloc": [
10177 - "default.handlebars->25->933"
10195 + "default.handlebars->25->937"
10196 ]
10197 },
10198 {
@@ -10191,7 +10209,7 @@
10209 "ru": "Английский (Австралия)",
10210 "zh-chs": "英文(澳洲)",
10211 "xloc": [
10194 - "default.handlebars->25->934"
10212 + "default.handlebars->25->938"
10213 ]
10214 },
10215 {
@@ -10208,7 +10226,7 @@
10226 "ru": "Английский (Белиз)",
10227 "zh-chs": "英語(伯利茲)",
10228 "xloc": [
10211 - "default.handlebars->25->935"
10229 + "default.handlebars->25->939"
10230 ]
10231 },
10232 {
@@ -10225,7 +10243,7 @@
10243 "ru": "Английский (Канада)",
10244 "zh-chs": "英文(加拿大)",
10245 "xloc": [
10228 - "default.handlebars->25->936"
10246 + "default.handlebars->25->940"
10247 ]
10248 },
10249 {
@@ -10242,7 +10260,7 @@
10260 "ru": "Английский (Ирландия)",
10261 "zh-chs": "英文(愛爾蘭)",
10262 "xloc": [
10245 - "default.handlebars->25->937"
10263 + "default.handlebars->25->941"
10264 ]
10265 },
10266 {
@@ -10259,7 +10277,7 @@
10277 "ru": "Английский (Ямайка)",
10278 "zh-chs": "英文(牙買加)",
10279 "xloc": [
10262 - "default.handlebars->25->938"
10280 + "default.handlebars->25->942"
10281 ]
10282 },
10283 {
@@ -10276,7 +10294,7 @@
10294 "ru": "Английский (Новая Зеландия)",
10295 "zh-chs": "英文(紐西蘭)",
10296 "xloc": [
10279 - "default.handlebars->25->939"
10297 + "default.handlebars->25->943"
10298 ]
10299 },
10300 {
@@ -10293,7 +10311,7 @@
10311 "ru": "Английский (Филиппины)",
10312 "zh-chs": "英文(菲律賓)",
10313 "xloc": [
10296 - "default.handlebars->25->940"
10314 + "default.handlebars->25->944"
10315 ]
10316 },
10317 {
@@ -10310,7 +10328,7 @@
10328 "ru": "Английский (Южная Африка)",
10329 "zh-chs": "英語(南非)",
10330 "xloc": [
10313 - "default.handlebars->25->941"
10331 + "default.handlebars->25->945"
10332 ]
10333 },
10334 {
@@ -10327,7 +10345,7 @@
10345 "ru": "Английский (Тринидад и Тобаго)",
10346 "zh-chs": "英文(特立尼達和多巴哥)",
10347 "xloc": [
10330 - "default.handlebars->25->942"
10348 + "default.handlebars->25->946"
10349 ]
10350 },
10351 {
@@ -10344,7 +10362,7 @@
10362 "ru": "Английский (Великобритания)",
10363 "zh-chs": "英文(英國)",
10364 "xloc": [
10347 - "default.handlebars->25->943"
10365 + "default.handlebars->25->947"
10366 ]
10367 },
10368 {
@@ -10361,7 +10379,7 @@
10379 "ru": "Английский (Соединенные Штаты)",
10380 "zh-chs": "美國英語)",
10381 "xloc": [
10364 - "default.handlebars->25->944"
10382 + "default.handlebars->25->948"
10383 ]
10384 },
10385 {
@@ -10378,7 +10396,7 @@
10396 "ru": "Английский (Зимбабве)",
10397 "zh-chs": "英文(津巴布韋)",
10398 "xloc": [
10381 - "default.handlebars->25->945"
10399 + "default.handlebars->25->949"
10400 ]
10401 },
10402 {
@@ -10395,8 +10413,8 @@
10413 "ru": "Ввод",
10414 "zh-chs": "輸入",
10415 "xloc": [
10398 - "default.handlebars->25->1126",
10399 - "default.handlebars->25->1127"
10416 + "default.handlebars->25->1130",
10417 + "default.handlebars->25->1131"
10418 ]
10419 },
10420 {
@@ -10413,7 +10431,7 @@
10431 "ru": "Введите разделенный запятыми список имен административных областей.",
10432 "zh-chs": "輸入管理領域名稱的逗號分隔列表。",
10433 "xloc": [
10416 - "default.handlebars->25->1483"
10434 + "default.handlebars->25->1487"
10435 ]
10436 },
10437 {
@@ -10447,7 +10465,7 @@
10465 "ru": "Для удаленного набора введите текст, используя английскую раскладку и нажмите OK. Перед продолжением убедитесь, что курсор на удаленном компьютере установлен в правильное положение.",
10466 "zh-chs": "輸入文本,然後單擊“確定”以使用美式英語鍵盤遠程輸入文本。在繼續操作之前,請確保將遠程光標放置在正確的位置。",
10467 "xloc": [
10450 - "default.handlebars->25->709"
10468 + "default.handlebars->25->713"
10469 ]
10470 },
10471 {
@@ -10495,7 +10513,7 @@
10513 "nl": "Voer uw telefoonnummer in dat geschikt is voor SMS. Na verificatie kan het nummer worden gebruikt voor inlogverificatie en andere meldingen.",
10514 "zh-chs": "输入支持SMS的电话号码。验证后,该号码可用于登录验证和其他通知。",
10515 "xloc": [
10498 - "default.handlebars->25->866"
10516 + "default.handlebars->25->870"
10517 ]
10518 },
10519 {
@@ -10546,7 +10564,7 @@
10564 "ru": "Эсперанто",
10565 "zh-chs": "世界語",
10566 "xloc": [
10549 - "default.handlebars->25->946"
10567 + "default.handlebars->25->950"
10568 ]
10569 },
10570 {
@@ -10563,7 +10581,7 @@
10581 "ru": "Эстонский",
10582 "zh-chs": "愛沙尼亞語",
10583 "xloc": [
10566 - "default.handlebars->25->947"
10584 + "default.handlebars->25->951"
10585 ]
10586 },
10587 {
@@ -10580,7 +10598,7 @@
10598 "ru": "Детали события",
10599 "zh-chs": "活動詳情",
10600 "xloc": [
10583 - "default.handlebars->25->786"
10601 + "default.handlebars->25->790"
10602 ]
10603 },
10604 {
@@ -10597,7 +10615,7 @@
10615 "ru": "Экспорт списка событий",
10616 "zh-chs": "活動列表導出",
10617 "xloc": [
10600 - "default.handlebars->25->1406"
10618 + "default.handlebars->25->1410"
10619 ]
10620 },
10621 {
@@ -10686,7 +10704,7 @@
10704 "ru": "Расширенный ASCII",
10705 "zh-chs": "擴展ASCII",
10706 "xloc": [
10689 - "default.handlebars->25->735"
10707 + "default.handlebars->25->739"
10708 ]
10709 },
10710 {
@@ -10720,7 +10738,7 @@
10738 "ru": "Внешний",
10739 "zh-chs": "外部",
10740 "xloc": [
10723 - "default.handlebars->25->1751"
10741 + "default.handlebars->25->1755"
10742 ]
10743 },
10744 {
@@ -10737,7 +10755,7 @@
10755 "ru": "Mакедонский (БЮР)",
10756 "zh-chs": "FYRO馬其頓語",
10757 "xloc": [
10740 - "default.handlebars->25->997"
10758 + "default.handlebars->25->1001"
10759 ]
10760 },
10761 {
@@ -10754,7 +10772,7 @@
10772 "ru": "Фарерский",
10773 "zh-chs": "法羅語",
10774 "xloc": [
10757 - "default.handlebars->25->948"
10775 + "default.handlebars->25->952"
10776 ]
10777 },
10778 {
@@ -10784,7 +10802,7 @@
10802 "ko": "원격 터미널 세션을 시작하지 못했습니다 : {0} ({1})",
10803 "zh-chs": "无法启动远程终端会话{0}({1})",
10804 "xloc": [
10787 - "default.handlebars->25->691"
10805 + "default.handlebars->25->695"
10806 ]
10807 },
10808 {
@@ -10801,7 +10819,7 @@
10819 "ru": "Фарси (Персидский)",
10820 "zh-chs": "波斯語(波斯語)",
10821 "xloc": [
10804 - "default.handlebars->25->949"
10822 + "default.handlebars->25->953"
10823 ]
10824 },
10825 {
@@ -10836,7 +10854,7 @@
10854 "ru": "Функции",
10855 "zh-chs": "特徵",
10856 "xloc": [
10839 - "default.handlebars->25->1158"
10857 + "default.handlebars->25->1162"
10858 ]
10859 },
10860 {
@@ -10853,7 +10871,7 @@
10871 "ru": "Фиджи",
10872 "zh-chs": "斐濟",
10873 "xloc": [
10856 - "default.handlebars->25->950"
10874 + "default.handlebars->25->954"
10875 ]
10876 },
10877 {
@@ -10872,7 +10890,7 @@
10890 "xloc": [
10891 "default-mobile.handlebars->9->273",
10892 "default.handlebars->25->437",
10875 - "default.handlebars->25->758"
10893 + "default.handlebars->25->762"
10894 ]
10895 },
10896 {
@@ -10906,7 +10924,7 @@
10924 "ru": "Драйвер файловой системы",
10925 "zh-chs": "FileSystemDriver",
10926 "xloc": [
10909 - "default.handlebars->25->718"
10927 + "default.handlebars->25->722"
10928 ]
10929 },
10930 {
@@ -10924,8 +10942,8 @@
10942 "zh-chs": "檔案",
10943 "xloc": [
10944 "default-mobile.handlebars->9->119",
10927 - "default.handlebars->25->1247",
10928 - "default.handlebars->25->1688",
10945 + "default.handlebars->25->1251",
10946 + "default.handlebars->25->1692",
10947 "default.handlebars->25->218",
10948 "default.handlebars->container->topbar->1->1->MainSubMenuSpan->MainSubMenu->1->0->MainDevFiles",
10949 "default.handlebars->contextMenu->cxfiles"
@@ -10962,8 +10980,8 @@
10980 "ru": "Уведомление файлов",
10981 "zh-chs": "文件通知",
10982 "xloc": [
10965 - "default.handlebars->25->1166",
10966 - "default.handlebars->25->1601",
10983 + "default.handlebars->25->1170",
10984 + "default.handlebars->25->1605",
10985 "default.handlebars->25->518"
10986 ]
10987 },
@@ -10981,8 +10999,8 @@
10999 "ru": "Запрос файлов",
11000 "zh-chs": "文件提示",
11001 "xloc": [
10984 - "default.handlebars->25->1165",
10985 - "default.handlebars->25->1600",
11002 + "default.handlebars->25->1169",
11003 + "default.handlebars->25->1604",
11004 "default.handlebars->25->517"
11005 ]
11006 },
@@ -11019,7 +11037,7 @@
11037 "ru": "Финский",
11038 "zh-chs": "芬蘭",
11039 "xloc": [
11022 - "default.handlebars->25->951"
11040 + "default.handlebars->25->955"
11041 ]
11042 },
11043 {
@@ -11142,8 +11160,8 @@
11160 "ru": "Принудительно сбросить пароль при следующем входе в систему.",
11161 "zh-chs": "下次登錄時強制重置密碼。",
11162 "xloc": [
11145 - "default.handlebars->25->1477",
11146 - "default.handlebars->25->1639"
11163 + "default.handlebars->25->1481",
11164 + "default.handlebars->25->1643"
11165 ]
11166 },
11167 {
@@ -11229,8 +11247,8 @@
11247 "ru": "Свободно",
11248 "zh-chs": "自由",
11249 "xloc": [
11232 - "default.handlebars->25->1712",
11233 - "default.handlebars->25->1714"
11250 + "default.handlebars->25->1716",
11251 + "default.handlebars->25->1718"
11252 ]
11253 },
11254 {
@@ -11265,7 +11283,7 @@
11283 "ru": "Французский (Бельгия)",
11284 "zh-chs": "法語(比利時)",
11285 "xloc": [
11268 - "default.handlebars->25->953"
11286 + "default.handlebars->25->957"
11287 ]
11288 },
11289 {
@@ -11282,7 +11300,7 @@
11300 "ru": "Французский (Канада)",
11301 "zh-chs": "法語(加拿大)",
11302 "xloc": [
11285 - "default.handlebars->25->954"
11303 + "default.handlebars->25->958"
11304 ]
11305 },
11306 {
@@ -11299,7 +11317,7 @@
11317 "ru": "Французский (Франция)",
11318 "zh-chs": "法語(法國)",
11319 "xloc": [
11302 - "default.handlebars->25->955"
11320 + "default.handlebars->25->959"
11321 ]
11322 },
11323 {
@@ -11316,7 +11334,7 @@
11334 "ru": "Французский (Люксембург)",
11335 "zh-chs": "法語(盧森堡)",
11336 "xloc": [
11319 - "default.handlebars->25->956"
11337 + "default.handlebars->25->960"
11338 ]
11339 },
11340 {
@@ -11333,7 +11351,7 @@
11351 "ru": "Французский (Монако)",
11352 "zh-chs": "法語(摩納哥)",
11353 "xloc": [
11336 - "default.handlebars->25->957"
11354 + "default.handlebars->25->961"
11355 ]
11356 },
11357 {
@@ -11350,7 +11368,7 @@
11368 "ru": "Французский (Стандартный)",
11369 "zh-chs": "法語(標準)",
11370 "xloc": [
11353 - "default.handlebars->25->952"
11371 + "default.handlebars->25->956"
11372 ]
11373 },
11374 {
@@ -11367,7 +11385,7 @@
11385 "ru": "Французский (Швейцария)",
11386 "zh-chs": "法語(瑞士)",
11387 "xloc": [
11370 - "default.handlebars->25->958"
11388 + "default.handlebars->25->962"
11389 ]
11390 },
11391 {
@@ -11384,7 +11402,7 @@
11402 "ru": "Фризский",
11403 "zh-chs": "弗里斯蘭語",
11404 "xloc": [
11387 - "default.handlebars->25->959"
11405 + "default.handlebars->25->963"
11406 ]
11407 },
11408 {
@@ -11401,7 +11419,7 @@
11419 "ru": "Фриульский",
11420 "zh-chs": "弗留利",
11421 "xloc": [
11404 - "default.handlebars->25->960"
11422 + "default.handlebars->25->964"
11423 ]
11424 },
11425 {
@@ -11422,9 +11440,9 @@
11440 "default-mobile.handlebars->9->311",
11441 "default-mobile.handlebars->9->329",
11442 "default-mobile.handlebars->9->74",
11425 - "default.handlebars->25->1133",
11426 - "default.handlebars->25->1265",
11427 - "default.handlebars->25->1489"
11443 + "default.handlebars->25->1137",
11444 + "default.handlebars->25->1269",
11445 + "default.handlebars->25->1493"
11446 ]
11447 },
11448 {
@@ -11441,7 +11459,7 @@
11459 "ru": "Администратор с полным доступом (все права)",
11460 "zh-chs": "正式管理員(保留所有權利)",
11461 "xloc": [
11444 - "default.handlebars->25->1299"
11462 + "default.handlebars->25->1303"
11463 ]
11464 },
11465 {
@@ -11472,7 +11490,7 @@
11490 "ru": "Полные права на устройство",
11491 "zh-chs": "完整的設備權限",
11492 "xloc": [
11475 - "default.handlebars->25->578"
11493 + "default.handlebars->25->580"
11494 ]
11495 },
11496 {
@@ -11488,7 +11506,7 @@
11506 "ru": "Полные права",
11507 "zh-chs": "完全权利",
11508 "xloc": [
11491 - "default.handlebars->25->594"
11509 + "default.handlebars->25->596"
11510 ]
11511 },
11512 {
@@ -11524,7 +11542,7 @@
11542 "ru": "Администратор с полным доступом",
11543 "zh-chs": "正式管理員",
11544 "xloc": [
11527 - "default.handlebars->25->1568"
11545 + "default.handlebars->25->1572"
11546 ]
11547 },
11548 {
@@ -11537,7 +11555,7 @@
11555 "nl": "GPU",
11556 "zh-chs": "显卡",
11557 "xloc": [
11540 - "default.handlebars->25->834"
11558 + "default.handlebars->25->838"
11559 ]
11560 },
11561 {
@@ -11554,7 +11572,7 @@
11572 "ru": "Гэльский (Ирландский)",
11573 "zh-chs": "蓋爾語(愛爾蘭)",
11574 "xloc": [
11557 - "default.handlebars->25->962"
11575 + "default.handlebars->25->966"
11576 ]
11577 },
11578 {
@@ -11571,7 +11589,7 @@
11589 "ru": "Гэльский (Шотландия)",
11590 "zh-chs": "蓋爾語(蘇格蘭語)",
11591 "xloc": [
11574 - "default.handlebars->25->961"
11592 + "default.handlebars->25->965"
11593 ]
11594 },
11595 {
@@ -11588,7 +11606,7 @@
11606 "ru": "Галицкий",
11607 "zh-chs": "加拉契人",
11608 "xloc": [
11591 - "default.handlebars->25->963"
11609 + "default.handlebars->25->967"
11610 ]
11611 },
11612 {
@@ -11695,7 +11713,7 @@
11713 "ru": "Грузинский",
11714 "zh-chs": "格魯吉亞人",
11715 "xloc": [
11698 - "default.handlebars->25->964"
11716 + "default.handlebars->25->968"
11717 ]
11718 },
11719 {
@@ -11712,7 +11730,7 @@
11730 "ru": "Немецкий (Австрия)",
11731 "zh-chs": "德語(奧地利)",
11732 "xloc": [
11715 - "default.handlebars->25->966"
11733 + "default.handlebars->25->970"
11734 ]
11735 },
11736 {
@@ -11729,7 +11747,7 @@
11747 "ru": "Немецкий (Германия)",
11748 "zh-chs": "德文(德國)",
11749 "xloc": [
11732 - "default.handlebars->25->967"
11750 + "default.handlebars->25->971"
11751 ]
11752 },
11753 {
@@ -11746,7 +11764,7 @@
11764 "ru": "Немецкий (Лихтенштейн)",
11765 "zh-chs": "德文(列支敦士登)",
11766 "xloc": [
11749 - "default.handlebars->25->968"
11767 + "default.handlebars->25->972"
11768 ]
11769 },
11770 {
@@ -11763,7 +11781,7 @@
11781 "ru": "Немецкий (Люксембург)",
11782 "zh-chs": "德語(盧森堡)",
11783 "xloc": [
11766 - "default.handlebars->25->969"
11784 + "default.handlebars->25->973"
11785 ]
11786 },
11787 {
@@ -11780,7 +11798,7 @@
11798 "ru": "Немецкий (Стандартный)",
11799 "zh-chs": "德語(標準)",
11800 "xloc": [
11783 - "default.handlebars->25->965"
11801 + "default.handlebars->25->969"
11802 ]
11803 },
11804 {
@@ -11797,7 +11815,7 @@
11815 "ru": "Немецкий (Швейцария)",
11816 "zh-chs": "德語(瑞士)",
11817 "xloc": [
11800 - "default.handlebars->25->970"
11818 + "default.handlebars->25->974"
11819 ]
11820 },
11821 {
@@ -11814,7 +11832,7 @@
11832 "ru": "Получить учетные данные MQTT для этого устройства.",
11833 "zh-chs": "獲取此設備的MQTT登錄憑據。",
11834 "xloc": [
11817 - "default.handlebars->25->559"
11835 + "default.handlebars->25->561"
11836 ]
11837 },
11838 {
@@ -11880,7 +11898,7 @@
11898 "ru": "Хорошо",
11899 "zh-chs": "好",
11900 "xloc": [
11883 - "default.handlebars->25->1129"
11901 + "default.handlebars->25->1133"
11902 ]
11903 },
11904 {
@@ -11917,7 +11935,7 @@
11935 "ru": "Греческий",
11936 "zh-chs": "希臘語",
11937 "xloc": [
11920 - "default.handlebars->25->971"
11938 + "default.handlebars->25->975"
11939 ]
11940 },
11941 {
@@ -11953,8 +11971,8 @@
11971 "ru": "Групповое действие",
11972 "zh-chs": "集體行動",
11973 "xloc": [
11956 - "default.handlebars->25->1443",
11957 - "default.handlebars->25->1510",
11974 + "default.handlebars->25->1447",
11975 + "default.handlebars->25->1514",
11976 "default.handlebars->25->406",
11977 "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->devListToolbar",
11978 "default.handlebars->container->column_l->p4->3->1->0->3->3",
@@ -11975,7 +11993,7 @@
11993 "ru": "Члены группы",
11994 "zh-chs": "小組成員",
11995 "xloc": [
11978 - "default.handlebars->25->1531"
11996 + "default.handlebars->25->1535"
11997 ]
11998 },
11999 {
@@ -11992,7 +12010,7 @@
12010 "ru": "Права на группу для пользователя {0}.",
12011 "zh-chs": "用戶{0}的組權限。",
12012 "xloc": [
11995 - "default.handlebars->25->1264"
12013 + "default.handlebars->25->1268"
12014 ]
12015 },
12016 {
@@ -12009,7 +12027,7 @@
12027 "ru": "Права на группу для {0}.",
12028 "zh-chs": "{0}的組權限。",
12029 "xloc": [
12012 - "default.handlebars->25->1263"
12030 + "default.handlebars->25->1267"
12031 ]
12032 },
12033 {
@@ -12060,7 +12078,7 @@
12078 "ru": "Гуджарати",
12079 "zh-chs": "古久拉提",
12080 "xloc": [
12063 - "default.handlebars->25->972"
12081 + "default.handlebars->25->976"
12082 ]
12083 },
12084 {
@@ -12096,7 +12114,7 @@
12114 "ru": "Гаитянский",
12115 "zh-chs": "海地",
12116 "xloc": [
12099 - "default.handlebars->25->973"
12117 + "default.handlebars->25->977"
12118 ]
12119 },
12120 {
@@ -12130,7 +12148,7 @@
12148 "ru": "Жесткое отключение агента",
12149 "zh-chs": "硬斷開劑",
12150 "xloc": [
12133 - "default.handlebars->25->861"
12151 + "default.handlebars->25->865"
12152 ]
12153 },
12154 {
@@ -12147,7 +12165,7 @@
12165 "ru": "Всего кучи",
12166 "zh-chs": "堆總數",
12167 "xloc": [
12150 - "default.handlebars->25->1753"
12168 + "default.handlebars->25->1757"
12169 ]
12170 },
12171 {
@@ -12164,7 +12182,7 @@
12182 "ru": "Куча используется",
12183 "zh-chs": "堆使用",
12184 "xloc": [
12167 - "default.handlebars->25->1752"
12185 + "default.handlebars->25->1756"
12186 ]
12187 },
12188 {
@@ -12181,7 +12199,7 @@
12199 "ru": "Иврит",
12200 "zh-chs": "希伯來語",
12201 "xloc": [
12184 - "default.handlebars->25->974"
12202 + "default.handlebars->25->978"
12203 ]
12204 },
12205 {
@@ -12215,7 +12233,7 @@
12233 "ru": "Помочь перевести MeshCentral",
12234 "zh-chs": "幫助翻譯MeshCentral",
12235 "xloc": [
12218 - "default.handlebars->25->1088"
12236 + "default.handlebars->25->1092"
12237 ]
12238 },
12239 {
@@ -12301,7 +12319,7 @@
12319 "ru": "Хинди",
12320 "zh-chs": "印地語",
12321 "xloc": [
12304 - "default.handlebars->25->975"
12322 + "default.handlebars->25->979"
12323 ]
12324 },
12325 {
@@ -12337,7 +12355,7 @@
12355 "zh-chs": "持有1份副本",
12356 "xloc": [
12357 "default-mobile.handlebars->9->282",
12340 - "default.handlebars->25->767"
12358 + "default.handlebars->25->771"
12359 ]
12360 },
12361 {
@@ -12355,7 +12373,7 @@
12373 "zh-chs": "持有1個搬家公司",
12374 "xloc": [
12375 "default-mobile.handlebars->9->286",
12358 - "default.handlebars->25->771"
12376 + "default.handlebars->25->775"
12377 ]
12378 },
12379 {
@@ -12373,7 +12391,7 @@
12391 "zh-chs": "保留{0}個條目進行複制",
12392 "xloc": [
12393 "default-mobile.handlebars->9->280",
12376 - "default.handlebars->25->765"
12394 + "default.handlebars->25->769"
12395 ]
12396 },
12397 {
@@ -12391,7 +12409,7 @@
12409 "zh-chs": "保留{0}個條目以進行移動",
12410 "xloc": [
12411 "default-mobile.handlebars->9->284",
12394 - "default.handlebars->25->769"
12412 + "default.handlebars->25->773"
12413 ]
12414 },
12415 {
@@ -12409,7 +12427,7 @@
12427 "zh-chs": "保持{2}的{0}入口{1}",
12428 "xloc": [
12429 "default-mobile.handlebars->9->98",
12412 - "default.handlebars->25->1393"
12430 + "default.handlebars->25->1397"
12431 ]
12432 },
12433 {
@@ -12432,7 +12450,7 @@
12450 "default-mobile.handlebars->9->246",
12451 "default.handlebars->25->245",
12452 "default.handlebars->25->475",
12435 - "default.handlebars->25->684"
12453 + "default.handlebars->25->688"
12454 ]
12455 },
12456 {
@@ -12449,7 +12467,7 @@
12467 "ru": "Синхронизация имени хоста",
12468 "zh-chs": "主機名同步",
12469 "xloc": [
12452 - "default.handlebars->25->1156"
12470 + "default.handlebars->25->1160"
12471 ]
12472 },
12473 {
@@ -12466,7 +12484,7 @@
12484 "ru": "Венгерский",
12485 "zh-chs": "匈牙利",
12486 "xloc": [
12469 - "default.handlebars->25->976"
12487 + "default.handlebars->25->980"
12488 ]
12489 },
12490 {
@@ -12518,7 +12536,7 @@
12536 "ru": "IP: {0}",
12537 "zh-chs": "IP:{0}",
12538 "xloc": [
12521 - "default.handlebars->25->807"
12539 + "default.handlebars->25->811"
12540 ]
12541 },
12542 {
@@ -12535,7 +12553,7 @@
12553 "ru": "IP: {0}, маска: {1}, шлюз: {2}",
12554 "zh-chs": "IP:{0},掩碼:{1},網關:{2}",
12555 "xloc": [
12538 - "default.handlebars->25->805"
12556 + "default.handlebars->25->809"
12557 ]
12558 },
12559 {
@@ -12552,8 +12570,8 @@
12570 "ru": "Уровень IPv4",
12571 "zh-chs": "IPv4層",
12572 "xloc": [
12555 - "default.handlebars->25->804",
12556 - "default.handlebars->25->806"
12573 + "default.handlebars->25->808",
12574 + "default.handlebars->25->810"
12575 ]
12576 },
12577 {
@@ -12621,7 +12639,7 @@
12639 "ru": "Исландский",
12640 "zh-chs": "冰島的",
12641 "xloc": [
12624 - "default.handlebars->25->977"
12642 + "default.handlebars->25->981"
12643 ]
12644 },
12645 {
@@ -12639,7 +12657,7 @@
12657 "zh-chs": "圖標選擇",
12658 "xloc": [
12659 "default-mobile.handlebars->9->244",
12642 - "default.handlebars->25->682"
12660 + "default.handlebars->25->686"
12661 ]
12662 },
12663 {
@@ -12656,7 +12674,7 @@
12674 "ru": "Идентификатор",
12675 "zh-chs": "識別碼",
12676 "xloc": [
12659 - "default.handlebars->25->832"
12677 + "default.handlebars->25->836"
12678 ]
12679 },
12680 {
@@ -12759,7 +12777,7 @@
12777 "ru": "Индонезийский",
12778 "zh-chs": "印度尼西亞",
12779 "xloc": [
12762 - "default.handlebars->25->978"
12780 + "default.handlebars->25->982"
12781 ]
12782 },
12783 {
@@ -12876,7 +12894,7 @@
12894 "ru": "Установка CIRA",
12895 "zh-chs": "安裝CIRA",
12896 "xloc": [
12879 - "default.handlebars->25->1189"
12897 + "default.handlebars->25->1193"
12898 ]
12899 },
12900 {
@@ -12893,7 +12911,7 @@
12911 "ru": "Локальная установка",
12912 "zh-chs": "安裝本地",
12913 "xloc": [
12896 - "default.handlebars->25->1191"
12914 + "default.handlebars->25->1195"
12915 ]
12916 },
12917 {
@@ -12910,8 +12928,8 @@
12928 "ru": "Тип установки",
12929 "zh-chs": "安裝類型",
12930 "xloc": [
12913 - "default.handlebars->25->1330",
12914 - "default.handlebars->25->1337",
12931 + "default.handlebars->25->1334",
12932 + "default.handlebars->25->1341",
12933 "default.handlebars->25->307",
12934 "default.handlebars->25->329"
12935 ]
@@ -12930,7 +12948,7 @@
12948 "ru": "Intel (F10 = ESC+[OM)",
12949 "zh-chs": "英特爾(F10 = ESC + [OM)",
12950 "xloc": [
12933 - "default.handlebars->25->737",
12951 + "default.handlebars->25->741",
12952 "default.handlebars->container->column_l->p12->termTable->1->1->6->1->1->terminalSettingsButtons"
12953 ]
12954 },
@@ -12948,10 +12966,10 @@
12966 "ru": "Intel AMT",
12967 "zh-chs": "英特爾AMT",
12968 "xloc": [
12951 - "default.handlebars->25->1349",
12952 - "default.handlebars->25->1357",
12953 - "default.handlebars->25->1749",
12954 - "default.handlebars->25->1771"
12969 + "default.handlebars->25->1353",
12970 + "default.handlebars->25->1361",
12971 + "default.handlebars->25->1753",
12972 + "default.handlebars->25->1775"
12973 ]
12974 },
12975 {
@@ -12992,14 +13010,14 @@
13010 "en": "Intel AMT Redirection",
13011 "nl": "Intel AMT omleiding",
13012 "xloc": [
12995 - "default.handlebars->25->1690"
13013 + "default.handlebars->25->1694"
13014 ]
13015 },
13016 {
13017 "en": "Intel AMT WSMAN",
13018 "nl": "Intel AMT WSMAN",
13019 "xloc": [
13002 - "default.handlebars->25->1689"
13020 + "default.handlebars->25->1693"
13021 ]
13022 },
13023 {
@@ -13118,7 +13136,7 @@
13136 "ru": "Intel ASCII",
13137 "zh-chs": "英特爾ASCII",
13138 "xloc": [
13121 - "default.handlebars->25->736"
13139 + "default.handlebars->25->740"
13140 ]
13141 },
13142 {
@@ -13138,8 +13156,8 @@
13156 "default-mobile.handlebars->9->146",
13157 "default-mobile.handlebars->9->210",
13158 "default-mobile.handlebars->9->215",
13141 - "default.handlebars->25->1173",
13142 - "default.handlebars->25->1183",
13159 + "default.handlebars->25->1177",
13160 + "default.handlebars->25->1187",
13161 "default.handlebars->25->447",
13162 "default.handlebars->25->500",
13163 "default.handlebars->25->528"
@@ -13215,7 +13233,7 @@
13233 "ru": "Политика Intel&reg; AMT",
13234 "zh-chs": "英特爾&reg;AMT政策",
13235 "xloc": [
13218 - "default.handlebars->25->1212"
13236 + "default.handlebars->25->1216"
13237 ]
13238 },
13239 {
@@ -13302,8 +13320,8 @@
13320 "zh-chs": "英特爾&reg;AMT已連接",
13321 "xloc": [
13322 "default-mobile.handlebars->9->224",
13305 - "default.handlebars->25->563",
13306 - "default.handlebars->25->564"
13323 + "default.handlebars->25->565",
13324 + "default.handlebars->25->566"
13325 ]
13326 },
13327 {
@@ -13320,8 +13338,8 @@
13338 "ru": "События Intel&reg; AMT desktop или serial.",
13339 "zh-chs": "英特爾&reg;AMT桌面和串行事件。",
13340 "xloc": [
13323 - "default.handlebars->25->1094",
13324 - "default.handlebars->25->1345"
13341 + "default.handlebars->25->1098",
13342 + "default.handlebars->25->1349"
13343 ]
13344 },
13345 {
@@ -13339,8 +13357,8 @@
13357 "zh-chs": "檢測到英特爾&reg;AMT",
13358 "xloc": [
13359 "default-mobile.handlebars->9->225",
13342 - "default.handlebars->25->565",
13343 - "default.handlebars->25->566"
13360 + "default.handlebars->25->567",
13361 + "default.handlebars->25->568"
13362 ]
13363 },
13364 {
@@ -13410,8 +13428,8 @@
13428 "zh-chs": "僅限英特爾&reg;AMT,無代理",
13429 "xloc": [
13430 "default-mobile.handlebars->9->293",
13413 - "default.handlebars->25->1123",
13414 - "default.handlebars->25->1149"
13431 + "default.handlebars->25->1127",
13432 + "default.handlebars->25->1153"
13433 ]
13434 },
13435 {
@@ -13445,7 +13463,7 @@
13463 "ru": "Intel&reg; Active Management Technology (Intel&reg; AMT)",
13464 "zh-chs": "英特爾&reg;主動管理技術(英特爾&reg;AMT)",
13465 "xloc": [
13448 - "default.handlebars->25->824"
13466 + "default.handlebars->25->828"
13467 ]
13468 },
13469 {
@@ -13612,7 +13630,7 @@
13630 "ru": "Интерактивный",
13631 "zh-chs": "互動",
13632 "xloc": [
13615 - "default.handlebars->25->719"
13633 + "default.handlebars->25->723"
13634 ]
13635 },
13636 {
@@ -13629,8 +13647,8 @@
13647 "ru": "Только интерактивный режим",
13648 "zh-chs": "僅限互動",
13649 "xloc": [
13632 - "default.handlebars->25->1333",
13633 - "default.handlebars->25->1340",
13650 + "default.handlebars->25->1337",
13651 + "default.handlebars->25->1344",
13652 "default.handlebars->25->310",
13653 "default.handlebars->25->332"
13654 ]
@@ -13649,7 +13667,7 @@
13667 "ru": "Интерфейсы",
13668 "zh-chs": "介面",
13669 "xloc": [
13652 - "default.handlebars->25->546"
13670 + "default.handlebars->25->548"
13671 ]
13672 },
13673 {
@@ -13666,7 +13684,7 @@
13684 "ru": "Инуктитут",
13685 "zh-chs": "因紐特人",
13686 "xloc": [
13669 - "default.handlebars->25->979"
13687 + "default.handlebars->25->983"
13688 ]
13689 },
13690 {
@@ -13683,7 +13701,7 @@
13701 "ru": "Некорректный тип группы устройств",
13702 "zh-chs": "無效的設備組類型",
13703 "xloc": [
13686 - "default.handlebars->25->1726"
13704 + "default.handlebars->25->1730"
13705 ]
13706 },
13707 {
@@ -13700,7 +13718,7 @@
13718 "ru": "Некорректный JSON",
13719 "zh-chs": "無效的JSON",
13720 "xloc": [
13703 - "default.handlebars->25->1720"
13721 + "default.handlebars->25->1724"
13722 ]
13723 },
13724 {
@@ -13717,8 +13735,8 @@
13735 "ru": "Некорректный формат файла JSON.",
13736 "zh-chs": "無效的JSON文件格式。",
13737 "xloc": [
13720 - "default.handlebars->25->1457",
13721 - "default.handlebars->25->1459"
13738 + "default.handlebars->25->1461",
13739 + "default.handlebars->25->1463"
13740 ]
13741 },
13742 {
@@ -13735,7 +13753,7 @@
13753 "ru": "Некорректный файл JSON: {0}.",
13754 "zh-chs": "無效的JSON文件:{0}。",
13755 "xloc": [
13738 - "default.handlebars->25->1455"
13756 + "default.handlebars->25->1459"
13757 ]
13758 },
13759 {
@@ -13752,7 +13770,7 @@
13770 "ru": "Некорректная сигнатура PKCS",
13771 "zh-chs": "無效的PKCS簽名",
13772 "xloc": [
13755 - "default.handlebars->25->1718"
13773 + "default.handlebars->25->1722"
13774 ]
13775 },
13776 {
@@ -13769,7 +13787,7 @@
13787 "ru": "Некорректная сигнатура RSA",
13788 "zh-chs": "無效的RSA密碼",
13789 "xloc": [
13772 - "default.handlebars->25->1719"
13790 + "default.handlebars->25->1723"
13791 ]
13792 },
13793 {
@@ -13905,7 +13923,7 @@
13923 "ru": "Коды приглашений могут использоваться любым пользователем для присоединения устройств к этой группе устройств по следующей общедоступной ссылке:",
13924 "zh-chs": "任何人都可以使用邀請代碼通過以下公共鏈接將設備加入該設備組:",
13925 "xloc": [
13908 - "default.handlebars->25->1335"
13926 + "default.handlebars->25->1339"
13927 ]
13928 },
13929 {
@@ -13938,7 +13956,7 @@
13956 "ru": "Пригласить",
13957 "zh-chs": "邀請",
13958 "xloc": [
13941 - "default.handlebars->25->1199",
13959 + "default.handlebars->25->1203",
13960 "default.handlebars->25->242",
13961 "default.handlebars->25->322"
13962 ]
@@ -13957,11 +13975,11 @@
13975 "ru": "Пригласительные коды",
13976 "zh-chs": "邀請碼",
13977 "xloc": [
13960 - "default.handlebars->25->1177",
13961 - "default.handlebars->25->1329",
13962 - "default.handlebars->25->1334",
13963 - "default.handlebars->25->1336",
13964 - "default.handlebars->25->1341"
13978 + "default.handlebars->25->1181",
13979 + "default.handlebars->25->1333",
13980 + "default.handlebars->25->1338",
13981 + "default.handlebars->25->1340",
13982 + "default.handlebars->25->1345"
13983 ]
13984 },
13985 {
@@ -13992,7 +14010,7 @@
14010 "nl": "Nodig iemand uit om de mesh-agent in deze apparaatgroep te installeren.",
14011 "zh-chs": "邀请某人在该设备组上安装网状代理。",
14012 "xloc": [
13995 - "default.handlebars->25->1198",
14013 + "default.handlebars->25->1202",
14014 "default.handlebars->25->241"
14015 ]
14016 },
@@ -14027,7 +14045,7 @@
14045 "ru": "Ирландский",
14046 "zh-chs": "愛爾蘭人",
14047 "xloc": [
14030 - "default.handlebars->25->980"
14048 + "default.handlebars->25->984"
14049 ]
14050 },
14051 {
@@ -14044,7 +14062,7 @@
14062 "ru": "Итальянский (Стандартный)",
14063 "zh-chs": "意大利語(標準)",
14064 "xloc": [
14047 - "default.handlebars->25->981"
14065 + "default.handlebars->25->985"
14066 ]
14067 },
14068 {
@@ -14061,7 +14079,7 @@
14079 "ru": "Итальянский (Швейцария)",
14080 "zh-chs": "義大利文(瑞士)",
14081 "xloc": [
14064 - "default.handlebars->25->982"
14082 + "default.handlebars->25->986"
14083 ]
14084 },
14085 {
@@ -14078,8 +14096,8 @@
14096 "ru": "Формат JSON",
14097 "zh-chs": "JSON格式",
14098 "xloc": [
14081 - "default.handlebars->25->1404",
14082 - "default.handlebars->25->1463",
14099 + "default.handlebars->25->1408",
14100 + "default.handlebars->25->1467",
14101 "default.handlebars->25->414"
14102 ]
14103 },
@@ -14097,7 +14115,7 @@
14115 "ru": "Японский",
14116 "zh-chs": "日本",
14117 "xloc": [
14100 - "default.handlebars->25->983"
14118 + "default.handlebars->25->987"
14119 ]
14120 },
14121 {
@@ -14114,7 +14132,7 @@
14132 "ru": "Каннада",
14133 "zh-chs": "卡納達語",
14134 "xloc": [
14117 - "default.handlebars->25->984"
14135 + "default.handlebars->25->988"
14136 ]
14137 },
14138 {
@@ -14131,7 +14149,7 @@
14149 "ru": "Кашмирский",
14150 "zh-chs": "克什米爾語",
14151 "xloc": [
14134 - "default.handlebars->25->985"
14152 + "default.handlebars->25->989"
14153 ]
14154 },
14155 {
@@ -14148,7 +14166,7 @@
14166 "ru": "Казахский",
14167 "zh-chs": "哈薩克語",
14168 "xloc": [
14151 - "default.handlebars->25->986"
14169 + "default.handlebars->25->990"
14170 ]
14171 },
14172 {
@@ -14165,7 +14183,7 @@
14183 "ru": "Драйвер ядра",
14184 "zh-chs": "內核驅動程序",
14185 "xloc": [
14168 - "default.handlebars->25->720"
14186 + "default.handlebars->25->724"
14187 ]
14188 },
14189 {
@@ -14182,8 +14200,8 @@
14200 "ru": "Имя ключа",
14201 "zh-chs": "鍵名",
14202 "xloc": [
14185 - "default.handlebars->25->877",
14186 - "default.handlebars->25->880"
14203 + "default.handlebars->25->881",
14204 + "default.handlebars->25->884"
14205 ]
14206 },
14207 {
@@ -14224,7 +14242,7 @@
14242 "ru": "Кхмерский",
14243 "zh-chs": "高棉語",
14244 "xloc": [
14227 - "default.handlebars->25->987"
14245 + "default.handlebars->25->991"
14246 ]
14247 },
14248 {
@@ -14241,7 +14259,7 @@
14259 "ru": "Киргизский",
14260 "zh-chs": "吉爾吉斯",
14261 "xloc": [
14244 - "default.handlebars->25->988"
14262 + "default.handlebars->25->992"
14263 ]
14264 },
14265 {
@@ -14258,7 +14276,7 @@
14276 "ru": "Клингонский",
14277 "zh-chs": "克林貢",
14278 "xloc": [
14261 - "default.handlebars->25->989"
14279 + "default.handlebars->25->993"
14280 ]
14281 },
14282 {
@@ -14275,7 +14293,7 @@
14293 "ru": "Известный",
14294 "zh-chs": "已知的",
14295 "xloc": [
14278 - "default.handlebars->25->823"
14296 + "default.handlebars->25->827"
14297 ]
14298 },
14299 {
@@ -14292,7 +14310,7 @@
14310 "ru": "Korean",
14311 "zh-chs": "韓語",
14312 "xloc": [
14295 - "default.handlebars->25->990"
14313 + "default.handlebars->25->994"
14314 ]
14315 },
14316 {
@@ -14309,7 +14327,7 @@
14327 "ru": "Корейский (Северная Корея)",
14328 "zh-chs": "韓語(朝鮮)",
14329 "xloc": [
14312 - "default.handlebars->25->991"
14330 + "default.handlebars->25->995"
14331 ]
14332 },
14333 {
@@ -14326,7 +14344,7 @@
14344 "ru": "Корейский (Южная Корея)",
14345 "zh-chs": "韓語(韓國)",
14346 "xloc": [
14329 - "default.handlebars->25->992"
14347 + "default.handlebars->25->996"
14348 ]
14349 },
14350 {
@@ -14343,8 +14361,8 @@
14361 "ru": "LF",
14362 "zh-chs": "如果",
14363 "xloc": [
14346 - "default.handlebars->25->732",
14347 - "default.handlebars->25->741"
14364 + "default.handlebars->25->736",
14365 + "default.handlebars->25->745"
14366 ]
14367 },
14368 {
@@ -14361,7 +14379,7 @@
14379 "ru": "Язык",
14380 "zh-chs": "語言",
14381 "xloc": [
14364 - "default.handlebars->25->1086"
14382 + "default.handlebars->25->1090"
14383 ]
14384 },
14385 {
@@ -14395,7 +14413,7 @@
14413 "ru": "Большой Фокус",
14414 "zh-chs": "大焦點",
14415 "xloc": [
14398 - "default.handlebars->25->708"
14416 + "default.handlebars->25->712"
14417 ]
14418 },
14419 {
@@ -14578,7 +14596,7 @@
14596 "ru": "Последний доступ",
14597 "zh-chs": "最後訪問",
14598 "xloc": [
14581 - "default.handlebars->25->1412"
14599 + "default.handlebars->25->1416"
14600 ]
14601 },
14602 {
@@ -14595,7 +14613,7 @@
14613 "ru": "Последний вход в систему",
14614 "zh-chs": "上次登錄",
14615 "xloc": [
14598 - "default.handlebars->25->1583"
14616 + "default.handlebars->25->1587"
14617 ]
14618 },
14619 {
@@ -14615,9 +14633,9 @@
14633 "default.handlebars->25->70",
14634 "default.handlebars->25->72",
14635 "default.handlebars->25->74",
14618 - "default.handlebars->25->795",
14619 - "default.handlebars->25->796",
14620 - "default.handlebars->25->797"
14636 + "default.handlebars->25->799",
14637 + "default.handlebars->25->800",
14638 + "default.handlebars->25->801"
14639 ]
14640 },
14641 {
@@ -14635,8 +14653,8 @@
14653 "zh-chs": "上次代理連接",
14654 "xloc": [
14655 "default.handlebars->25->69",
14638 - "default.handlebars->25->792",
14639 - "default.handlebars->25->794"
14656 + "default.handlebars->25->796",
14657 + "default.handlebars->25->798"
14658 ]
14659 },
14660 {
@@ -14653,7 +14671,7 @@
14671 "ru": "Последнее изменение: {0}",
14672 "zh-chs": "上次更改:{0}",
14673 "xloc": [
14656 - "default.handlebars->25->1587"
14674 + "default.handlebars->25->1591"
14675 ]
14676 },
14677 {
@@ -14704,7 +14722,7 @@
14722 "ru": "Последний вход в систему: {0}",
14723 "zh-chs": "上次登錄:{0}",
14724 "xloc": [
14707 - "default.handlebars->25->1422"
14725 + "default.handlebars->25->1426"
14726 ]
14727 },
14728 {
@@ -14721,7 +14739,7 @@
14739 "ru": "Последнее посещение:",
14740 "zh-chs": "最後一次露面:",
14741 "xloc": [
14724 - "default.handlebars->25->569",
14742 + "default.handlebars->25->571",
14743 "default.handlebars->25->65"
14744 ]
14745 },
@@ -14790,7 +14808,7 @@
14808 "ru": "Латинский",
14809 "zh-chs": "拉丁",
14810 "xloc": [
14793 - "default.handlebars->25->993"
14811 + "default.handlebars->25->997"
14812 ]
14813 },
14814 {
@@ -14807,7 +14825,7 @@
14825 "ru": "Латышский",
14826 "zh-chs": "拉脫維亞語",
14827 "xloc": [
14810 - "default.handlebars->25->994"
14828 + "default.handlebars->25->998"
14829 ]
14830 },
14831 {
@@ -14820,7 +14838,7 @@
14838 "nl": "Leeg laten voor geen.",
14839 "zh-chs": "一无所有。",
14840 "xloc": [
14823 - "default.handlebars->25->1627"
14841 + "default.handlebars->25->1631"
14842 ]
14843 },
14844 {
@@ -14859,7 +14877,7 @@
14877 "ru": "Меньше",
14878 "zh-chs": "減",
14879 "xloc": [
14862 - "default.handlebars->25->1788"
14880 + "default.handlebars->25->1792"
14881 ]
14882 },
14883 {
@@ -14875,8 +14893,8 @@
14893 "ru": "Предельные события",
14894 "zh-chs": "极限赛事",
14895 "xloc": [
14878 - "default.handlebars->25->590",
14879 - "default.handlebars->25->609"
14896 + "default.handlebars->25->592",
14897 + "default.handlebars->25->611"
14898 ]
14899 },
14900 {
@@ -14912,9 +14930,9 @@
14930 "zh-chs": "有限輸入",
14931 "xloc": [
14932 "default-mobile.handlebars->9->342",
14915 - "default.handlebars->25->1313",
14916 - "default.handlebars->25->583",
14917 - "default.handlebars->25->602"
14933 + "default.handlebars->25->1317",
14934 + "default.handlebars->25->585",
14935 + "default.handlebars->25->604"
14936 ]
14937 },
14938 {
@@ -14932,7 +14950,7 @@
14950 "zh-chs": "僅限於輸入",
14951 "xloc": [
14952 "default-mobile.handlebars->9->317",
14935 - "default.handlebars->25->1271"
14953 + "default.handlebars->25->1275"
14954 ]
14955 },
14956 {
@@ -15105,7 +15123,7 @@
15123 "ru": "Linux ARM, Raspberry Pi (32bit)",
15124 "zh-chs": "Linux ARM,Raspberry Pi(32位)",
15125 "xloc": [
15108 - "default.handlebars->25->666"
15126 + "default.handlebars->25->670"
15127 ]
15128 },
15129 {
@@ -15211,7 +15229,7 @@
15229 "ru": "Linux x86 (32bit)",
15230 "zh-chs": "Linux x86(32位)",
15231 "xloc": [
15214 - "default.handlebars->25->663"
15232 + "default.handlebars->25->667"
15233 ]
15234 },
15235 {
@@ -15228,7 +15246,7 @@
15246 "ru": "Linux x86 (64bit)",
15247 "zh-chs": "Linux x86(64位)",
15248 "xloc": [
15231 - "default.handlebars->25->664"
15249 + "default.handlebars->25->668"
15250 ]
15251 },
15252 {
@@ -15263,7 +15281,7 @@
15281 "ru": "Литовский",
15282 "zh-chs": "立陶宛語",
15283 "xloc": [
15266 - "default.handlebars->25->995"
15284 + "default.handlebars->25->999"
15285 ]
15286 },
15287 {
@@ -15281,10 +15299,10 @@
15299 "zh-chs": "載入中...",
15300 "xloc": [
15301 "default-mobile.handlebars->9->41",
15284 - "default.handlebars->25->1140",
15302 "default.handlebars->25->1144",
15286 - "default.handlebars->25->657",
15287 - "default.handlebars->25->873"
15303 + "default.handlebars->25->1148",
15304 + "default.handlebars->25->661",
15305 + "default.handlebars->25->877"
15306 ]
15307 },
15308 {
@@ -15352,7 +15370,7 @@
15370 "ru": "Настройки локализации",
15371 "zh-chs": "本地化設置",
15372 "xloc": [
15355 - "default.handlebars->25->1089",
15373 + "default.handlebars->25->1093",
15374 "default.handlebars->container->column_l->p2->p2info->p2AccountActions->3->7"
15375 ]
15376 },
@@ -15370,7 +15388,7 @@
15388 "ru": "Местонахождение",
15389 "zh-chs": "位置",
15390 "xloc": [
15373 - "default.handlebars->25->548"
15391 + "default.handlebars->25->550"
15392 ]
15393 },
15394 {
@@ -15404,7 +15422,7 @@
15422 "ru": "Заблокировать учетную запись",
15423 "zh-chs": "鎖定賬戶",
15424 "xloc": [
15407 - "default.handlebars->25->1496"
15425 + "default.handlebars->25->1500"
15426 ]
15427 },
15428 {
@@ -15421,7 +15439,7 @@
15439 "ru": "Заблокировать учетную запись",
15440 "zh-chs": "鎖定賬戶",
15441 "xloc": [
15424 - "default.handlebars->25->1440"
15442 + "default.handlebars->25->1444"
15443 ]
15444 },
15445 {
@@ -15438,7 +15456,7 @@
15456 "ru": "Заблокирован",
15457 "zh-chs": "已鎖定",
15458 "xloc": [
15441 - "default.handlebars->25->1423"
15459 + "default.handlebars->25->1427"
15460 ]
15461 },
15462 {
@@ -15455,7 +15473,7 @@
15473 "ru": "Заблокированная учетная запись",
15474 "zh-chs": "賬戶鎖定",
15475 "xloc": [
15458 - "default.handlebars->25->1565"
15476 + "default.handlebars->25->1569"
15477 ]
15478 },
15479 {
@@ -15642,7 +15660,7 @@
15660 "ru": "Люксембургский",
15661 "zh-chs": "盧森堡語",
15662 "xloc": [
15645 - "default.handlebars->25->996"
15663 + "default.handlebars->25->1000"
15664 ]
15665 },
15666 {
@@ -15659,8 +15677,8 @@
15677 "ru": "MAC-уровень",
15678 "zh-chs": "MAC層",
15679 "xloc": [
15662 - "default.handlebars->25->800",
15663 - "default.handlebars->25->802"
15680 + "default.handlebars->25->804",
15681 + "default.handlebars->25->806"
15682 ]
15683 },
15684 {
@@ -15694,7 +15712,7 @@
15712 "ru": "MAC: {0}",
15713 "zh-chs": "MAC:{0}",
15714 "xloc": [
15697 - "default.handlebars->25->803"
15715 + "default.handlebars->25->807"
15716 ]
15717 },
15718 {
@@ -15711,7 +15729,7 @@
15729 "ru": "MAC: {0}, шлюз: {1}",
15730 "zh-chs": "MAC:{0},網關:{1}",
15731 "xloc": [
15714 - "default.handlebars->25->801"
15732 + "default.handlebars->25->805"
15733 ]
15734 },
15735 {
@@ -15769,8 +15787,8 @@
15787 "default.handlebars->25->185",
15788 "default.handlebars->25->391",
15789 "default.handlebars->25->532",
15772 - "default.handlebars->25->851",
15773 - "default.handlebars->25->852",
15790 + "default.handlebars->25->855",
15791 + "default.handlebars->25->856",
15792 "default.handlebars->container->column_l->p15->consoleTable->1->6->1->1->1->0->p15outputselecttd->p15outputselect->3"
15793 ]
15794 },
@@ -15805,7 +15823,7 @@
15823 "ru": "MQTT Вход",
15824 "zh-chs": "MQTT登錄",
15825 "xloc": [
15808 - "default.handlebars->25->560"
15826 + "default.handlebars->25->562"
15827 ]
15828 },
15829 {
@@ -15823,7 +15841,7 @@
15841 "zh-chs": "MQTT通道已連接",
15842 "xloc": [
15843 "default-mobile.handlebars->9->226",
15826 - "default.handlebars->25->568"
15844 + "default.handlebars->25->570"
15845 ]
15846 },
15847 {
@@ -15841,7 +15859,7 @@
15859 "zh-chs": "MQTT已連接",
15860 "xloc": [
15861 "default.handlebars->25->147",
15844 - "default.handlebars->25->567"
15862 + "default.handlebars->25->569"
15863 ]
15864 },
15865 {
@@ -15911,7 +15929,7 @@
15929 "ru": "MacOS (64bit)",
15930 "zh-chs": "MacOS(64位)",
15931 "xloc": [
15914 - "default.handlebars->25->665"
15932 + "default.handlebars->25->669"
15933 ]
15934 },
15935 {
@@ -15964,7 +15982,7 @@
15982 "ru": "Сообщения главного сервера",
15983 "zh-chs": "主服務器消息",
15984 "xloc": [
15967 - "default.handlebars->25->1760"
15985 + "default.handlebars->25->1764"
15986 ]
15987 },
15988 {
@@ -15981,7 +15999,7 @@
15999 "ru": "Малайский",
16000 "zh-chs": "馬來語",
16001 "xloc": [
15984 - "default.handlebars->25->998"
16002 + "default.handlebars->25->1002"
16003 ]
16004 },
16005 {
@@ -15998,7 +16016,7 @@
16016 "ru": "Малаяламский",
16017 "zh-chs": "馬拉雅拉姆語",
16018 "xloc": [
16001 - "default.handlebars->25->999"
16019 + "default.handlebars->25->1003"
16020 ]
16021 },
16022 {
@@ -16015,7 +16033,7 @@
16033 "ru": "Мальтийский",
16034 "zh-chs": "馬耳他語",
16035 "xloc": [
16018 - "default.handlebars->25->1000"
16036 + "default.handlebars->25->1004"
16037 ]
16038 },
16039 {
@@ -16052,8 +16070,8 @@
16070 "xloc": [
16071 "default-mobile.handlebars->9->314",
16072 "default-mobile.handlebars->9->332",
16055 - "default.handlebars->25->1268",
16056 - "default.handlebars->25->1302"
16073 + "default.handlebars->25->1272",
16074 + "default.handlebars->25->1306"
16075 ]
16076 },
16077 {
@@ -16072,8 +16090,8 @@
16090 "xloc": [
16091 "default-mobile.handlebars->9->313",
16092 "default-mobile.handlebars->9->331",
16075 - "default.handlebars->25->1267",
16076 - "default.handlebars->25->1301"
16093 + "default.handlebars->25->1271",
16094 + "default.handlebars->25->1305"
16095 ]
16096 },
16097 {
@@ -16089,14 +16107,14 @@
16107 "ru": "Управление устройствами",
16108 "zh-chs": "管理设备",
16109 "xloc": [
16092 - "default.handlebars->25->597"
16110 + "default.handlebars->25->599"
16111 ]
16112 },
16113 {
16114 "en": "Manage Recordings",
16115 "nl": "Beheeer opnames",
16116 "xloc": [
16099 - "default.handlebars->25->1495"
16117 + "default.handlebars->25->1499"
16118 ]
16119 },
16120 {
@@ -16130,7 +16148,7 @@
16148 "ru": "Управление группами пользователя",
16149 "zh-chs": "管理用戶組",
16150 "xloc": [
16133 - "default.handlebars->25->1494"
16151 + "default.handlebars->25->1498"
16152 ]
16153 },
16154 {
@@ -16147,8 +16165,8 @@
16165 "ru": "Управление пользователями",
16166 "zh-chs": "管理用戶",
16167 "xloc": [
16150 - "default.handlebars->25->1493",
16151 - "default.handlebars->25->596"
16168 + "default.handlebars->25->1497",
16169 + "default.handlebars->25->598"
16170 ]
16171 },
16172 {
@@ -16252,7 +16270,7 @@
16270 "ru": "Управление с помощью программного агента",
16271 "zh-chs": "使用軟件代理進行管理",
16272 "xloc": [
16255 - "default.handlebars->25->1122"
16273 + "default.handlebars->25->1126"
16274 ]
16275 },
16276 {
@@ -16270,7 +16288,7 @@
16288 "zh-chs": "使用軟件代理進行管理",
16289 "xloc": [
16290 "default-mobile.handlebars->9->294",
16273 - "default.handlebars->25->1150"
16291 + "default.handlebars->25->1154"
16292 ]
16293 },
16294 {
@@ -16287,7 +16305,7 @@
16305 "ru": "Менеджер",
16306 "zh-chs": "經理",
16307 "xloc": [
16290 - "default.handlebars->25->1428"
16308 + "default.handlebars->25->1432"
16309 ]
16310 },
16311 {
@@ -16338,7 +16356,7 @@
16356 "ru": "Маори",
16357 "zh-chs": "毛利人",
16358 "xloc": [
16341 - "default.handlebars->25->1001"
16359 + "default.handlebars->25->1005"
16360 ]
16361 },
16362 {
@@ -16373,7 +16391,7 @@
16391 "ru": "Маратхи",
16392 "zh-chs": "馬拉地語",
16393 "xloc": [
16376 - "default.handlebars->25->1002"
16394 + "default.handlebars->25->1006"
16395 ]
16396 },
16397 {
@@ -16390,7 +16408,7 @@
16408 "ru": "Достигнуто максимальное число сессий",
16409 "zh-chs": "達到的會話數上限",
16410 "xloc": [
16393 - "default.handlebars->25->1724"
16411 + "default.handlebars->25->1728"
16412 ]
16413 },
16414 {
@@ -16444,7 +16462,7 @@
16462 "ru": "Мегабайт",
16463 "zh-chs": "兆字節",
16464 "xloc": [
16447 - "default.handlebars->25->1750"
16465 + "default.handlebars->25->1754"
16466 ]
16467 },
16468 {
@@ -16461,8 +16479,8 @@
16479 "ru": "ОЗУ",
16480 "zh-chs": "記憶",
16481 "xloc": [
16464 - "default.handlebars->25->1741",
16465 - "default.handlebars->25->839",
16482 + "default.handlebars->25->1745",
16483 + "default.handlebars->25->843",
16484 "default.handlebars->container->column_l->p40->3->1->p40type->3"
16485 ]
16486 },
@@ -16488,8 +16506,8 @@
16506 "default.handlebars->25->354",
16507 "default.handlebars->25->480",
16508 "default.handlebars->25->524",
16491 - "default.handlebars->25->791",
16492 - "default.handlebars->25->798"
16509 + "default.handlebars->25->795",
16510 + "default.handlebars->25->802"
16511 ]
16512 },
16513 {
@@ -16507,7 +16525,7 @@
16525 "zh-chs": "網格代理控制台",
16526 "xloc": [
16527 "default-mobile.handlebars->9->321",
16510 - "default.handlebars->25->1276"
16528 + "default.handlebars->25->1280"
16529 ]
16530 },
16531 {
@@ -16579,8 +16597,8 @@
16597 "ru": "MeshAction (.txt)",
16598 "zh-chs": "MeshAction(.txt)",
16599 "xloc": [
16582 - "default.handlebars->25->672",
16583 - "default.handlebars->25->674"
16600 + "default.handlebars->25->676",
16601 + "default.handlebars->25->678"
16602 ]
16603 },
16604 {
@@ -16597,7 +16615,7 @@
16615 "ru": "Трафик MeshAgent",
16616 "zh-chs": "MeshAgent流量",
16617 "xloc": [
16600 - "default.handlebars->25->1762"
16618 + "default.handlebars->25->1766"
16619 ]
16620 },
16621 {
@@ -16614,7 +16632,7 @@
16632 "ru": "Обновление MeshAgent",
16633 "zh-chs": "MeshAgent更新",
16634 "xloc": [
16617 - "default.handlebars->25->1763"
16635 + "default.handlebars->25->1767"
16636 ]
16637 },
16638 {
@@ -16648,7 +16666,7 @@
16666 "ru": "Ошибки MeshCentral",
16667 "zh-chs": "網格中心錯誤",
16668 "xloc": [
16651 - "default.handlebars->25->1143"
16669 + "default.handlebars->25->1147"
16670 ]
16671 },
16672 {
@@ -16665,7 +16683,7 @@
16683 "ru": "MeshCentral Router ",
16684 "zh-chs": "MeshCentral路由器",
16685 "xloc": [
16668 - "default.handlebars->25->660"
16686 + "default.handlebars->25->664"
16687 ]
16688 },
16689 {
@@ -16682,7 +16700,7 @@
16700 "ru": "MeshCentral Router это инструмент Windows для сопоставления портов TCP. Например, через этот сервер можно установить подключение по RDP к удаленному устройству.",
16701 "zh-chs": "MeshCentral Router是Windows工具,用於TCP端口映射。例如,您可以通過該服務器將RDP放入遠程設備。",
16702 "xloc": [
16685 - "default.handlebars->25->658"
16703 + "default.handlebars->25->662"
16704 ]
16705 },
16706 {
@@ -16717,7 +16735,7 @@
16735 "ru": "Соединения сервера MeshCentral",
16736 "zh-chs": "MeshCentral服務器對等",
16737 "xloc": [
16720 - "default.handlebars->25->1761"
16738 + "default.handlebars->25->1765"
16739 ]
16740 },
16741 {
@@ -16752,7 +16770,7 @@
16770 "zh-chs": "MeshCentral版本",
16771 "xloc": [
16772 "default.handlebars->25->101",
16755 - "default.handlebars->25->1139",
16773 + "default.handlebars->25->1143",
16774 "default.handlebars->25->99"
16775 ]
16776 },
@@ -16771,8 +16789,8 @@
16789 "zh-chs": "MeshCmd",
16790 "xloc": [
16791 "default.handlebars->25->200",
16774 - "default.handlebars->25->550",
16775 - "default.handlebars->25->670"
16792 + "default.handlebars->25->552",
16793 + "default.handlebars->25->674"
16794 ]
16795 },
16796 {
@@ -16789,7 +16807,7 @@
16807 "ru": "MeshCmd (Linux ARM, 32bit)",
16808 "zh-chs": "MeshCmd(Linux ARM,32位)",
16809 "xloc": [
16792 - "default.handlebars->25->681"
16810 + "default.handlebars->25->685"
16811 ]
16812 },
16813 {
@@ -16806,7 +16824,7 @@
16824 "ru": "MeshCmd (Linux x86, 32bit)",
16825 "zh-chs": "MeshCmd(Linux x86,32bit)",
16826 "xloc": [
16809 - "default.handlebars->25->678"
16827 + "default.handlebars->25->682"
16828 ]
16829 },
16830 {
@@ -16823,7 +16841,7 @@
16841 "ru": "MeshCmd (Linux x86, 64bit)",
16842 "zh-chs": "MeshCmd(Linux x86,64bit)",
16843 "xloc": [
16826 - "default.handlebars->25->679"
16844 + "default.handlebars->25->683"
16845 ]
16846 },
16847 {
@@ -16840,7 +16858,7 @@
16858 "ru": "MeshCmd (MacOS, 64bit)",
16859 "zh-chs": "MeshCmd(MacOS,64位)",
16860 "xloc": [
16843 - "default.handlebars->25->680"
16861 + "default.handlebars->25->684"
16862 ]
16863 },
16864 {
@@ -16857,7 +16875,7 @@
16875 "ru": "MeshCmd (приложение Win32)",
16876 "zh-chs": "MeshCmd(Win32可執行文件)",
16877 "xloc": [
16860 - "default.handlebars->25->676"
16878 + "default.handlebars->25->680"
16879 ]
16880 },
16881 {
@@ -16874,7 +16892,7 @@
16892 "ru": "MeshCmd (приложение Win64)",
16893 "zh-chs": "MeshCmd(Win64可執行文件)",
16894 "xloc": [
16877 - "default.handlebars->25->677"
16895 + "default.handlebars->25->681"
16896 ]
16897 },
16898 {
@@ -16891,7 +16909,7 @@
16909 "ru": "MeshCmd это утилита с командной строкой, которая позволяет выполнить множество операций. Файл с командами может быть опционально скачан и отредактирован для указания информации о сервере и учетных данных.",
16910 "zh-chs": "MeshCmd是執行許多不同操作的命令行工具。可以選擇下載和編輯操作文件以提供服務器信息和憑據。",
16911 "xloc": [
16894 - "default.handlebars->25->667"
16912 + "default.handlebars->25->671"
16913 ]
16914 },
16915 {
@@ -16963,7 +16981,8 @@
16981 "zh-chs": "信息",
16982 "xloc": [
16983 "default.handlebars->25->311",
16966 - "default.handlebars->25->638"
16984 + "default.handlebars->25->541",
16985 + "default.handlebars->25->642"
16986 ]
16987 },
16988 {
@@ -16980,7 +16999,7 @@
16999 "ru": "Диспетчер сообщения",
17000 "zh-chs": "郵件調度程序",
17001 "xloc": [
16983 - "default.handlebars->25->1759"
17002 + "default.handlebars->25->1763"
17003 ]
17004 },
17005 {
@@ -17077,7 +17096,7 @@
17096 "nl": "Model",
17097 "zh-chs": "模型",
17098 "xloc": [
17080 - "default.handlebars->25->840"
17099 + "default.handlebars->25->844"
17100 ]
17101 },
17102 {
@@ -17111,7 +17130,7 @@
17130 "ru": "Молдавский",
17131 "zh-chs": "摩爾達維亞人",
17132 "xloc": [
17114 - "default.handlebars->25->1003"
17133 + "default.handlebars->25->1007"
17134 ]
17135 },
17136 {
@@ -17128,7 +17147,7 @@
17147 "ru": "Еще",
17148 "zh-chs": "更多",
17149 "xloc": [
17131 - "default.handlebars->25->1787"
17150 + "default.handlebars->25->1791"
17151 ]
17152 },
17153 {
@@ -17145,7 +17164,7 @@
17164 "ru": "Материнская плата",
17165 "zh-chs": "母板",
17166 "xloc": [
17148 - "default.handlebars->25->835"
17167 + "default.handlebars->25->839"
17168 ]
17169 },
17170 {
@@ -17162,7 +17181,7 @@
17181 "ru": "Переместить это устройство в другую группу устройств",
17182 "zh-chs": "將此設備移到其他設備組",
17183 "xloc": [
17165 - "default.handlebars->25->541"
17184 + "default.handlebars->25->543"
17185 ]
17186 },
17187 {
@@ -17203,7 +17222,7 @@
17222 "en": "Multiplexor",
17223 "nl": "Multiplexor",
17224 "xloc": [
17206 - "default.handlebars->25->1702"
17225 + "default.handlebars->25->1706"
17226 ]
17227 },
17228 {
@@ -17318,7 +17337,7 @@
17337 "ru": "Консоль моего сервера",
17338 "zh-chs": "我的服務器控制台",
17339 "xloc": [
17321 - "default.handlebars->25->846"
17340 + "default.handlebars->25->850"
17341 ]
17342 },
17343 {
@@ -17446,8 +17465,8 @@
17465 "ru": "Мой ключ",
17466 "zh-chs": "我的鑰匙",
17467 "xloc": [
17449 - "default.handlebars->25->878",
17450 - "default.handlebars->25->881"
17468 + "default.handlebars->25->882",
17469 + "default.handlebars->25->885"
17470 ]
17471 },
17472 {
@@ -17469,20 +17488,20 @@
17488 "default-mobile.handlebars->9->308",
17489 "default-mobile.handlebars->9->66",
17490 "default-mobile.handlebars->container->page_content->column_l->p10->p10desktop->deskarea3->deskarea3x->DeskTools->5->1->1",
17472 - "default.handlebars->25->1120",
17473 - "default.handlebars->25->1151",
17474 - "default.handlebars->25->1234",
17475 - "default.handlebars->25->1410",
17476 - "default.handlebars->25->1501",
17477 - "default.handlebars->25->1515",
17478 - "default.handlebars->25->1522",
17479 - "default.handlebars->25->1552",
17480 - "default.handlebars->25->1571",
17491 + "default.handlebars->25->1124",
17492 + "default.handlebars->25->1155",
17493 + "default.handlebars->25->1238",
17494 + "default.handlebars->25->1414",
17495 + "default.handlebars->25->1505",
17496 + "default.handlebars->25->1519",
17497 + "default.handlebars->25->1526",
17498 + "default.handlebars->25->1556",
17499 + "default.handlebars->25->1575",
17500 "default.handlebars->25->468",
17482 - "default.handlebars->25->714",
17501 + "default.handlebars->25->718",
17502 "default.handlebars->25->77",
17484 - "default.handlebars->25->787",
17485 - "default.handlebars->25->829",
17503 + "default.handlebars->25->791",
17504 + "default.handlebars->25->833",
17505 "default.handlebars->container->column_l->p11->deskarea0->deskarea3x->DeskTools->deskToolsArea->DeskToolsProcessTab->deskToolsHeader->3",
17506 "default.handlebars->container->column_l->p11->deskarea0->deskarea3x->DeskTools->deskToolsArea->DeskToolsServiceTab->deskToolsServiceHeader->3",
17507 "default.handlebars->container->column_l->p42->p42tbl->1->0->2"
@@ -17519,7 +17538,7 @@
17538 "ru": "Имя1, Имя2, Имя3",
17539 "zh-chs": "名稱1,名稱2,名稱3",
17540 "xloc": [

This file is too large to show in full.

views/default.handlebars
+16 -2
@@ -1279,7 +1279,10 @@
1279 args = parseUriArgs();
1280 if (!args.locale) { var x = getstore('loctag', 0); if ((x != null) && (x != '*')) { args.locale = x; } }
1281 debugmode = args.debug;
1282 +
1283 + attemptWebRTC = 0; // For now, default WebRTC off unless we set it in the URL.
1284 if (args.webrtc != null) { attemptWebRTC = (args.webrtc == 1); }
1285 +
1286 QV('p13AutoConnect', debugmode); // Files
1287 QV('autoconnectbutton2', debugmode); // Terminal
1288 QV('autoconnectbutton1', debugmode); // Desktop
@@ -5159,6 +5162,7 @@
5162 if ((meshrights & 76) != 0) { x += '<input type=button value="' + "Actions" + '" title="' + "Perform power actions on the device" + '" onclick=deviceActionFunction() />'; }
5163 x += '<input type=button value="' + "Notes" + '" title="' + "View notes about this device" + '" onclick=showNotes(' + ((meshrights & 128) == 0) + ',"' + encodeURIComponentEx(node._id) + '") />';
5164 x += '<input type=button value="' + "Log Event" + '" title="' + "Write an event for this device" + '" onclick=writeDeviceEvent("' + encodeURIComponentEx(node._id) + '") />';
5165 + if ((connectivity & 1) && (meshrights & 8)) { x += '<input type=button value="' + "Message" + '" title="' + "Display a text message on the remote device" + '" onclick=deviceMessageFunction() />'; }
5166 //if ((connectivity & 1) && (meshrights & 8) && (node.agent.id < 5)) { x += '<input type=button value=Toast title="' + "Display a text message of the remote device" + '" onclick=deviceToastFunction() />'; }
5167 QH('p10html', x);
5168
@@ -5442,6 +5446,16 @@
5446 meshserver.send({ action: 'msg', type: 'openUrl', nodeid: currentNode._id, url: Q('d2devurl').value });
5447 }
5448
5449 + function deviceMessageFunction() {
5450 + if (xxdialogMode) return;
5451 + setDialogMode(2, "Device Message", 3, deviceMessageFunctionEx, '<div style=margin-bottom:4px>' + "Display a message box on the remote device." + '</div><textarea id=d2devMessage style=width:100%;height:80px;resize:none;overflow-y:scroll></textarea>');
5452 + Q('d2devMessage').focus();
5453 + }
5454 +
5455 + function deviceMessageFunctionEx() {
5456 + meshserver.send({ action: 'msg', type: 'messagebox', nodeid: currentNode._id, title: '{{{title}}}', msg: Q('d2devMessage').value });
5457 + }
5458 +
5459 function deviceToastFunction() {
5460 if (xxdialogMode) return;
5461 setDialogMode(2, "Device Notification", 3, deviceToastFunctionEx, '<textarea id=d2devToast style=width:100%;height:80px;resize:none;overflow-y:scroll></textarea>');
@@ -5449,7 +5463,7 @@
5463 }
5464
5465 function deviceToastFunctionEx() {
5452 - meshserver.send({ action: 'toast', nodeids: [ currentNode._id ], title: 'MeshCentral', msg: Q('d2devToast').value });
5466 + meshserver.send({ action: 'toast', nodeids: [ currentNode._id ], title: '{{{title}}}', msg: Q('d2devToast').value });
5467 }
5468
5469 function deviceActionFunction() {
@@ -7140,7 +7154,7 @@
7154 if (files.consoleMessage) {
7155 Q('p13FilesConsoleMsg').innerHTML += formatAgentConsoleMessage(files.consoleMessage, files.consoleMessageId, files.consoleMessageArgs);
7156 QV('p13FilesConsoleMsg', true);
7143 - if (p13DeskConsoleMsgTimer != null) { clearTimeout(p13DeskConsoleMsgTimer); }
7157 + if (p13FilesConsoleMsgTimer != null) { clearTimeout(p13FilesConsoleMsgTimer); }
7158 if (files.consoleMessageTimeout) { p13FilesConsoleMsgTimer = setTimeout(p13clearConsoleMsg, files.consoleMessageTimeout * 1000); }
7159 } else {
7160 p13clearConsoleMsg();