From 4a4e6c40a4968fe4852e4729667c1ebcbc9e17e6 Mon Sep 17 00:00:00 2001 From: Jared Goodwin Date: Sat, 9 Mar 2019 17:36:18 -0800 Subject: [PATCH] Working on quality reduction. --- Remotely_Agent/Services/Updater.cs | 53 ++---------------- .../Capture/{ImageDiff.cs => ImageUtils.cs} | 10 +--- Remotely_ScreenCast/Capture/ScreenCaster.cs | 28 ++++++--- Remotely_ScreenCast/Models/Viewer.cs | 3 + .../Remotely_ScreenCast.csproj | 2 +- .../Sockets/MessageHandlers.cs | 4 +- .../wwwroot/images/Remotely_Icon.pdn | Bin 0 -> 14395 bytes .../wwwroot/images/Remotely_Icon.png | Bin 4822 -> 4480 bytes .../wwwroot/images/Remotely_Icon_128.png | Bin 3399 -> 3172 bytes .../wwwroot/images/Remotely_Icon_512.png | Bin 22873 -> 19051 bytes .../images/Remotely_Icon_Transparent.png | Bin 0 -> 4480 bytes .../wwwroot/images/Remotely_Logo.png | Bin 7708 -> 5724 bytes .../scripts/RemoteControl/RCBrowserSockets.js | 7 +-- .../RemoteControl/RCBrowserSockets.js.map | 2 +- .../scripts/RemoteControl/RCBrowserSockets.ts | 8 +-- 15 files changed, 36 insertions(+), 81 deletions(-) rename Remotely_ScreenCast/Capture/{ImageDiff.cs => ImageUtils.cs} (93%) create mode 100644 Remotely_Server/wwwroot/images/Remotely_Icon.pdn create mode 100644 Remotely_Server/wwwroot/images/Remotely_Icon_Transparent.png diff --git a/Remotely_Agent/Services/Updater.cs b/Remotely_Agent/Services/Updater.cs index 7ee24ff6..73517432 100644 --- a/Remotely_Agent/Services/Updater.cs +++ b/Remotely_Agent/Services/Updater.cs @@ -103,6 +103,10 @@ namespace Remotely_Agent.Services ps.Invoke(); ps.Commands.Clear(); } + else if (OSUtils.IsLinux) + { + Process.Start("sudo", "systemctl stop remotely_service"); + } ps.AddScript(@" Get-Process | Where-Object { @@ -159,54 +163,5 @@ namespace Remotely_Agent.Services Environment.Exit(0); } } - internal static async Task DownloadLatestScreenCastVersion(HubConnection hubConnection, string requesterID) - { - if (!OSUtils.IsWindows) - { - return; - } - - var fileName = OSUtils.ScreenCastZipFileName; - var wc = new WebClient(); - var progress = 0; - wc.DownloadProgressChanged += async (sender, args) => - { - if (args.ProgressPercentage - progress > 5) - { - progress = args.ProgressPercentage; - await hubConnection.InvokeAsync("DisplayConsoleMessage", $"Download progress: {args.ProgressPercentage}%", requesterID); - } - }; - var done = false; - wc.DownloadFileCompleted += async (sender, args) => - { - await hubConnection.InvokeAsync("DisplayConsoleMessage", $"Download completed.", requesterID); - done = true; - }; - var rcDir = Directory.CreateDirectory(Path.Combine(Utilities.AppDataDir, "remote_control")).FullName; - var downloadFilePath = Path.Combine(rcDir, fileName); - if (File.Exists(downloadFilePath)) - { - File.Delete(downloadFilePath); - } - wc.DownloadFileAsync(new Uri(Utilities.GetConnectionInfo().Host + $"/Downloads/{fileName}"), downloadFilePath); - while (!done) - { - await Task.Delay(100); - } - await hubConnection.InvokeAsync("DisplayConsoleMessage", "Extracting files...", requesterID); - if (OSUtils.IsWindows) - { - ZipFile.ExtractToDirectory(downloadFilePath, Path.Combine(Utilities.AppDataDir, "remote_control"), true); - } - //if (OSUtils.IsLinux) - //{ - // // ZipFile doesn't extract nested directories properly on Linux, so... - // Directory.SetCurrentDirectory(rcDir); - // Process.Start("apt-get", "install unzip").WaitForExit(); - // Process.Start("unzip", $"-o {fileName}").WaitForExit(); - // Process.Start("chmod", "755 " + Path.Combine(Utilities.AppDataDir, "remote_control", "remotely_remote_control")).WaitForExit(); - //} - } } } diff --git a/Remotely_ScreenCast/Capture/ImageDiff.cs b/Remotely_ScreenCast/Capture/ImageUtils.cs similarity index 93% rename from Remotely_ScreenCast/Capture/ImageDiff.cs rename to Remotely_ScreenCast/Capture/ImageUtils.cs index 605e8418..adc6577a 100644 --- a/Remotely_ScreenCast/Capture/ImageDiff.cs +++ b/Remotely_ScreenCast/Capture/ImageUtils.cs @@ -12,7 +12,7 @@ using System.Threading.Tasks; namespace Remotely_ScreenCast.Capture { - public class ImageDiff + public class ImageUtils { private static EncoderParameters EncoderParams { get; } = new EncoderParameters() { @@ -92,14 +92,6 @@ namespace Remotely_ScreenCast.Capture return mergedFrame; } - public static byte[] EncodeBitmapAndResize(Bitmap bitmap) - { - using (var ms = new MemoryStream()) - { - bitmap.Save(ms, CodecInfo, EncoderParams); - return ms.ToArray(); - } - } public static byte[] EncodeBitmap(Bitmap bitmap) { using (var ms = new MemoryStream()) diff --git a/Remotely_ScreenCast/Capture/ScreenCaster.cs b/Remotely_ScreenCast/Capture/ScreenCaster.cs index cfdb3511..c3fab4d2 100644 --- a/Remotely_ScreenCast/Capture/ScreenCaster.cs +++ b/Remotely_ScreenCast/Capture/ScreenCaster.cs @@ -95,24 +95,38 @@ namespace Remotely_ScreenCast.Capture // continue; //} - //if (viewer.NextCaptureDelay > 0) - //{ - // await Task.Delay((int)viewer.NextCaptureDelay); - // viewer.NextCaptureDelay = 0; - //} + while (viewer.PendingFrames > 10) + { + await Task.Delay(1); + } capturer.Capture(); - var newImage = ImageDiff.GetImageDiff(capturer.CurrentFrame, capturer.PreviousFrame, capturer.CaptureFullscreen); + var newImage = ImageUtils.GetImageDiff(capturer.CurrentFrame, capturer.PreviousFrame, capturer.CaptureFullscreen); + + + if (viewer.PendingFrames > 5) + { + var reductionRatio = (double)5 / viewer.PendingFrames; + Logger.Write($"Reducing image quality to {reductionRatio}."); + + newImage = new Bitmap( + capturer.CurrentFrame, + (int)(capturer.CurrentScreenBounds.Width * reductionRatio), + (int)(capturer.CurrentScreenBounds.Height * reductionRatio)); + } + if (capturer.CaptureFullscreen) { capturer.CaptureFullscreen = false; } - var img = ImageDiff.EncodeBitmapAndResize(newImage); + + var img = ImageUtils.EncodeBitmap(newImage); if (img?.Length > 0) { await outgoingMessages.SendScreenCapture(img, viewerID, DateTime.UtcNow); + viewer.PendingFrames++; } } catch (Exception ex) diff --git a/Remotely_ScreenCast/Models/Viewer.cs b/Remotely_ScreenCast/Models/Viewer.cs index 70678f2c..0307298c 100644 --- a/Remotely_ScreenCast/Models/Viewer.cs +++ b/Remotely_ScreenCast/Models/Viewer.cs @@ -1,6 +1,7 @@ using Remotely_ScreenCast.Capture; using System; using System.Collections.Generic; +using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -14,5 +15,7 @@ namespace Remotely_ScreenCast.Models public ICapturer Capturer { get; set; } public bool DisconnectRequested { get; set; } public bool HasControl { get; set; } + public double Latency { get; set; } + public int PendingFrames { get; set; } } } diff --git a/Remotely_ScreenCast/Remotely_ScreenCast.csproj b/Remotely_ScreenCast/Remotely_ScreenCast.csproj index e61821b5..73d5a227 100644 --- a/Remotely_ScreenCast/Remotely_ScreenCast.csproj +++ b/Remotely_ScreenCast/Remotely_ScreenCast.csproj @@ -151,7 +151,7 @@ - + diff --git a/Remotely_ScreenCast/Sockets/MessageHandlers.cs b/Remotely_ScreenCast/Sockets/MessageHandlers.cs index c5b56066..144cceed 100644 --- a/Remotely_ScreenCast/Sockets/MessageHandlers.cs +++ b/Remotely_ScreenCast/Sockets/MessageHandlers.cs @@ -173,8 +173,8 @@ namespace Remotely_ScreenCast.Sockets { if (Program.Viewers.TryGetValue(viewerID, out var viewer)) { - // TODO. - //viewer.Capturer.NextCaptureDelay = delayTime; + viewer.PendingFrames--; + viewer.Latency = latency; } }); diff --git a/Remotely_Server/wwwroot/images/Remotely_Icon.pdn b/Remotely_Server/wwwroot/images/Remotely_Icon.pdn new file mode 100644 index 0000000000000000000000000000000000000000..9ca58e05f61d51a31d52ac3d283e5f8113134341 GIT binary patch literal 14395 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 literal 0 HcmV?d00001 diff --git a/Remotely_Server/wwwroot/images/Remotely_Icon.png b/Remotely_Server/wwwroot/images/Remotely_Icon.png index 4301017983d7cb3b63ffd53abc438a237c711ca1..0cc4695c9942601c9c997ac0ca7a27006aa64c2b 100644 GIT binary patch literal 4480 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 N3301qVV3alzX2{TwxR$4 diff --git a/Remotely_Server/wwwroot/images/Remotely_Icon_128.png b/Remotely_Server/wwwroot/images/Remotely_Icon_128.png index 682572498b845ed4749db550980d58a7aeb09afd..19f764ce862165a9cb627478f4216c818bb22dfa 100644 GIT binary patch delta 3102 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 diff --git a/Remotely_Server/wwwroot/images/Remotely_Icon_512.png b/Remotely_Server/wwwroot/images/Remotely_Icon_512.png index 268dd97b357aa8958afea08becaca65026667fa1..e05ef681ba5cdeec452fd1d64ad9c1f6ba432ab5 100644 GIT binary patch literal 19051 zcmeEuhd<~T=AvNW27!?OxcGwBezC`aAKrDB)pyr&wsQ9}bG3xH znAtkH^Ez3&GYjzY@d{eV>w_aJt}4n%YrjF@ro2-aGA}RMjY|UF;)vwN(THUDg^t9}zF}Ye^ci-e{JP|ALJ1Q#X zyElIS)~~j}IWbipZm0wl`gD{3tL9l7OT_s|GDRJ>otYI4_T)9d(ZkqUcE>`ZRoJUPb7`WArLKxLnp3~r9TZRORiY8Z>S0E z&G%1y6q5{*XRgNNfnOY8e(w`j)JS2ha+aQdZHtUp8#_mHO>?Lm;D+vYyC|w(zcOmI zY{fLMnPjX%9!KLo&5XS^NQ&HGle08Q3O#vc<4(l>Lmx*nK>QI?&|XP71+#2oscM>LllZrZ)hDw=3m*v?`F+KU{)#!Z8f59% zcZEhjdf=V7GJ*z(X9pW@5z^DltjMEZT?z2X+~NA)n?q|+;9NogZqHZ-va zI>tp03Gh^jzhoLsC3DjRh7G%cyrDb-G0Gr@Z_9h|B&Z_q3zvAwNDx1Mg!aU$6y1w% zIc2M-hM0HO!!y{W-KP1uHWm!+&`X!>{eBPTnhJ3Rr}NnD>Y?7>-@MM!9xk?xQqw=0 z6?W%@eDpGGYEZr0W%*>+fGWk!;qxoG)ZO76_3m{4PrM`#J#QKpZCqOLx6P@2&C!6` z%7S5^KuDcytB<6-N+m|oOPZesTMSUJ95wsJ>^K@p<9H(K?x+%dCNfv4yRl25XT325 zUT=PN#=8pY1B(#qk$-7*lzB--@Jrp|>=#c@BG;It|8H*K1O_?j&fZW?)k(y%9LCbF zGP0$b&(53{L)Lo7m|Tiar{R!3(a8JE2k%zG&+cQI+;py&=>4sPcrr7^sT{x1yFp$0 zE8%Mq)Q0<8HO;+&Sa2?voA3!+553*UE1Lf%ry=>m>A$Vga=W2$RmA1#>Um8@qJ+DY zzY0A)Hb`|!MI>SSYh2okUSXZgEOi6xqZJKwJ zuxM(LisvQ0xh&$MQZH0=Z>HDG-`a4Yqw(IRk-ine{3zWZ?J0PEJNZ1XCOm}5zDS?1j5{>yl3` zquX#QsU4yOW2#2UOS!-`SwTrqMXU!)EIHFtb z!{n96T*W2h%qt&@t_41zMC`qe6Bp*sY95Xqt)%zh{FjzeQ7O4DpjT=Ali~3(nWAp!*q#N^mYLvb`fj3`237L=g+E{HeolUC(^cEF_r~RQzh4}2SpC%qi=%#m zy^N~9b_da@tVdLa!XVtswM@hkc<{+uyEzGz$b?A5S3!TmH)ZHy5W^M3W`*?U*In#N z5%SKXmJkQKYNi=%b$$3bS=fY;lC1ynuIEQlRe6~=gV36)-*3(JCqrU~Q9MYCU+PG$ z_)BHB7{s1`4X3?W-iYGsY~m+&uf>gtYik@}=iyo=Dq{j|MU&fiTca>+HTSkp}pir#9}s1)J?7!#B>vz4J^+QTIQ zSz;X)R?p`*a3y2NGbdwmky{neqm)81PIBhmzxsxE5bhDYS4`bF)zf*;YM&FCnzA>b zZvP5kew?$&wE1+TTAM8 zN@mNq-qtg?2ynwE>*ilE65WkIX*}tr2w_HEd1>>CpSDD%<@Yx$cJ?pJ#UI^mmfxBg zlZqHtGo8nZV~(NDLC^PZIwoyzKl zc0}9AP-w77%NLilL#=d&p+e=8k93xq^17ib;&C*H0$twTVl&OLeBq}SLx)$4iA5Nz zaZfEm>|ArNMziJpF^9xt$!UuZ&(R_GbV21Zp_JY$%n~~E_TUmJ4N?T9UlrrJk2n$p zk2`JQt*5fkg9Y9|jn{c%DC5+Cnk0%WW#|h1&!~X>Y3;d23&Y{U0Q=paVNXkxp&h-L z)sP*C_=-TB=zvO(g;(#v90k@6auS4-pV92rb3;7g+RzrRdS9Daq6#*+1lj2{QdR_pAmNTYJz+`bifVUSw$Lm*beWu*z%39&a`Lr zS#xpt0jE`ke8lO3Xi%!cX|jY=scye*?R8V#iZ0O~lO1wr3zT31o3HJ3s~fd+*Zw(f z|2{m9635gH?pV#B3ZZy~qivehk#Wt9CQ64R{`Z$)(4E-o&RipXa+}>UKf7 zSr=VkScM0HAQw+`l8F1L8n+?d;+=H?3P9`o)#*gl zth!3UsSroa`#SYM&zQba^H&{fUv?XM5S&Mh@S4KAi$dgaJ#Kl9dCdtXUO5A=IY$2C z5J&pPq$^$kzz*0J`}f(pv?ft|6!Q9#eIHlz;DpHc(nT?`vx_yPV2zxnzPyv0S=Fc{ z$Uo}Rau+q_zq>sbU#^q)wyPQ&zNGwPZu3UelusyFYQZ7fE3(<~<@5O=l+wemlk83I zz1mLiZ7=x^bNeP%=?#Cx>9VId-m6P;gDD%l$OmoaQ(6u%(T+rmS*Dn1GKNtSs&1m# z4ZMe_>8^tMLjWH=lN?5EwVjx91>?{~Q}S!CAd$g1dGifzFPxf(9BHaJT_CgJJrw)< zdWN#Z@bG&lI$qD5sZ@GG9Uwt{gzfhL=*r6+nLYM_M%{`~Hdid>+-bWH^Z9H@^bFLl zn7>CqDu*W^7>Yko2i*dkwu&eGoq>X|}R^ zzB{`wZkKH8G*24`0E;bmWQ2AML4EX+%a{ZFtlsBJ_`b}IFhlj6X7{kIIYndAv7){) z!3Oj})@CSn@`)F;C)Dn!!uS&Y=n^=QS$W~^v&(}zeIF3`sJmYr_DVno^V^ z$UR5)%SrJLR21-%wI`4bgStjp#F?{Mw+Vk`bFzcq#}Z=dx1eo+MhjablM*QDhSXXY zK)14q3ZVbWGYwvIh@*7uH*dwRs2GzyyyVS1ljDTjlISlRUee5~+cBS&y=_d|Dyd1; zT1#Y#7!Lfg(4;S0Wo^*=@gj@Jf=Rexi!!sCZK`^mE;A1I6$fmJ(P z_o^e;)^MloaK%;Xi$3BADx8e&c9hKitFIdW$yB4$onWS?Ch81L&1=eJYGS*BC< z$%ccs)ILguCKt`xTZj2MOyJFx~UIlU0ahU_dlu#-7M}S? zDwtYjb?KrQmjyoHRcF-!UPU!-p$)jO`|E9-XBA@Y1)*J8S33)Pg5^g>B== z?maTPz_5If&67FLoo8G9cI6M3uFxj@{#)PxDM9B#v@S*j6(UnB zZ6Z_e%76@IXiyBzc~r481VCSH!>M8NX!ZDSe`7p2Td61dQ@KQo-TgPM$^9y`lA2L{ zQ6FfU)aI!^en2xvH(u)I6sWq}2b>Ld2t@d13HMenc%O#FF+5!g9FGL>Lw2UOGz+wXQVx#Jc)v#(sQ--V;11vCSmxeq?EMNt&N&6}Y20XoL@1lr0_3g;1d;0@TcH#U_M=N?$14*UF)6 zeKEl3`R#Azy3)}l!RUV8f37mVze>Mb(zLNQa6R@x)r1o5gwm}D>Cr;eCc2hTIIZSjW7O`+2t?ng=pzg>Fk@cRl{;jHQbqn9Fm+qpi z7S%NVUx`~Asm*SE#d1t%#zDsf+m`YLCG6f(( zmYTii&gqgb)M{2-1G_#jA)Wj`w1u?h=hr~7VUCo)OonsIP-BQA#k_Kf8cOF13xdB# z`Hkq3v*wa}cN_Mp@q9vg!l3yhh=lm<%Jg>Hma$5KtK4v87Q>X^K&pNh&s_jU!jcT} zz2sT%>#2pvytfH~SI4=q$NNEoB?eTVi{N%P9&pJw)2bAMOx9Yo2jfxHy;bUeHX~xC zB0`Hy4BG722BP7+4*+dscgbp|iY0mLyEKQ^U#2hF)(uG?Dz3dr_Ax=kKc5k+6obk5 zd*}IhlycbX=fl-gWnd~=pbR1l>EMb1-&M`?Z^6y>Zs9wl=BLV7Q8pfiZPPt00BRBu zx9i4C7_|VVJlewRjQEg&VQ>+0R+=d}q~1TB*vG}JIk~djI?>-$ zoTHoxBa8A-=R_~3FXs#1K%Q?7yswQ(9WJQyGFWb(*ppxPjZ1Gd7JM9b@{=A_VDJ6`qRJe zHvK(R9-@1mFWO(|t5DCUUGu_j3-$7C@ zh)Ye-JEAr_?U+>73qUs@fjMBDB&+5)}&L2JZ+?zGLjWLE)WoQc3W1RuV)#t-R zEZ6ktrQ=M-LG?d!$VQx@p7GK4rxd%2)(7{kWR33*_Z(;nBBQ{4nR(CVjOTM~x*du+ zxv^E@S58l|57@fx;Zr5O{_SSP6xq>&`55zptr-BJ4pk!WIO*DFEZ@G(=~OWa#c%c2 z-#Gc%Ikuj^HNm7=`gqZQDNUY{1JD~b5giotBI1%70qe~VV3&ol*TRkiNWdCLb0rs6 z?sx^Hg9pXrp9QKBB&~7h_{%DhwiQ98LZ#<*LN0yi z!@m%G(ZJ3@Czetz&hXbOl{5)ThqjAfBEt~N8kRM>^;!~4k z^>ya+o>qFN`W7%ptdRNQb}xC`O@=QLb0 z>`Wpem+knt`5WA>9}`>FUf8fCtNQh}zxJnxpNpWMSyGF}Y#`xb;%MVInmRqK>)4w` zF7*oh!AyQ{=+0A<{)%SBK@Q??f78^yp4nE@2-!koW1Dqd^GK;`ii*U zbEiC@(VYiNa=;*?wcL}IM%p}~*fSaj*qI|(O?d_o=Ucuv&>SIi;MfunNkc*DT zawG%{qX(!aIw&O7BI+yq(QRQy2mVG$-`JcFcuunSbpg|9!LsA^z^2}OE-g?aEaZ9K z>_$nN;7Tso`mIk{;|MLmS~Hr)2?E2uUsLRK*2ws1dj8>`nYvO5Uh6u3Yh7)eb!mt0 z&$Pb&w`Lz`)Se8DHCmL?UD+0_zu}{lc2=Sjwzc5jH-E=tJ6^Rz!Q4zcAiTK@Ny1DH zUY~NcLGlHlyyS9*L5N5bfhJ&Mj^~v+GXWpAduT%u#(ezFcXm5~Ar^m#eg~Jn75@&u z(JD1QbnjNc_`&v(SyuBA6{SpSW4{_H5Sk1N`r+!E%q(LJo)Ep>QhA;haAsz$i9c+k!NMz?E$rRCi)l3;I_tYT z7W#|H6QiHe!y(5lk3}BLGZE=iQgH>V;e7pG%1)v7 zF1x*wHG#s}lev?Y8ElT7o*-rCb%M6f$ELign$v=p$g}13VOuMU-V&h0btunwwOx>E z9R+d$3u>ND>n;13uGbNC#w3F&I;p-rQv3C%tF9|t71Aj2;ypv}=tf;cXQ^Jgx1`&# zEq4JG_U-yiDGXunJE(I4M~^BY_p-zp{co~F3l>&bE%Mchxg0EVfWjg)-8q(NGPRXB zmQz#b{~g8Nu4Bbiteoi_5#AdaYUe9^RIc)s-pkpm{a`MBmC(KPxrv;XfEthbr`AHr z>24wEWhq%xb1@7RLdV{;#jctF7{Xm64CzI?pKeSr7AR*%<#L2;$NXsMZQd|#neMIS zs%C2LNX7n|e9ONDXh$vS)$m+ye0P?n$jcJ2D6SmhJPHM>^gGW^OeZww(^N$8|S zYU*_uJii;V!c-wecv-9xtJj#5puxc=c&iFu3uv?s1KUTEn1d{ss9n>$l$j6IA~92J zvmEi@BqyI3V*SF1TLIPAIxSEIq*cqn`PKD3nF)#jX1cIK?-mkHr%9BPolZ>6VcV_A z*3{0hA5r`Kvy+$Duc#KMiuK06{~30G)ogvu8dds!=X6PgpSxfXU=XtU8-eE!&KByj zs<#BIp6ei>F|Xu|gN>@#P)tZbl0_0#A>JB0ny|jJNE3GI2^IT29HbXV)1(DthJbbE zGt=s~q}f#2StI>4h&@?A%agA&BUe_g*kxynj!Zu0u{$6vjCT}e;027yr3mF`E5=z> zp8lTEf4D3F#(MczdPj94Dj*fz6-m(`##1pLI@lsQ7?B2m4mmE-8_)w80bT6>bgZ-!X{YQ%q56#>;=q>_6GfHz|Ua(h|l<@^&&;=O~mybEq#uPe+%9TXtI z_m$`CUXcJ0tYe@|_>emfZQOUdq4=e8dYvqlNz#USv5!vZZ8TG}cSmjy(PO@!QF^kD z=e}*{bL2o~ArAW8mWK+7!|<3za=B$O9o~qeh+F|LWWtoqC)lQ>Q5k3Gk@t?hUDeY} zsiNx7|90iShZt%1YW})|O*O~!z8O(YhYILdFn>%9|2Kb-WDv-rR0;Lt581h_LJgg+3+;2+}^Vg$cY4u^r=SQukn^YF}lJvwLo4| zGwQ9}qcC8fgc60PeL`^^g^jmtG#4J~q&3RH z6tz6o4D~KWeg@nnMq2YVhr!`Y5i4p)-|!~lP3(nmMmxzb{NU_O1QsE_KJW*sI z13tjdKhZLhDJF{!GI22wL&iS*S@m~>BZGR7fDe7S0+v4wca>_{)|_!YoeKN6L{f3(t*_0sCzmv_ z0&%6^3vlqixey0LHO;83<7+qzZRMO=QO=GR;RUBcA9%FBKMvZ~j6FvL9u;5!XTgBi z`{{M@l;9ePP4Bu?tYlMrhS}MFhBaq(Lq5%~@BR8AIrx6@@PMkS(RJEOnKa2RTFkeh zrfd^VDvP-B^cx+-$(k-sSFe}oXuWlDH3Y0jii#TRVS7`wP)C?qm+s&mn4UEup+63O z_FH62tJwsxDa!i4#*ok1y905zadp7X ziLC=SXYN(a)_z(*1ACfpm!>W$ogXTY(uwXI&fnH>3>Yd=yAHPgwm$MKr3m_h=8Ds6 zy05IKd4h~^m8PX{z!uPc5M5(Y$l+>~5c~U;oiC-E#S6b&r6UQCXwWGHiq(wh($DW1 zlOJ(eI4S#`s-23)QEWqiSzMnSa6iT|J)sG|{%< z0xF|bkM^>R>u*5#Qz*G>9|XtCd@h?r+1h$6tOOj0_PjYa+4&j3b9$akgNBSD1-^Ad z9=DC`2KWVOnRI%Jo8QVX=wgRPGMz~plYS1uyL>Ws4ESqXyoj{U$jeoNNl@6t!S^VX|>(Q(Zs0pv=Q6FG; zn?8IDREe-DQ3EeMteznQSa38BA1p!d((LQ144i)fT->an6!o-%<$)aDD}Y5bd^*K{`l6yAP~q{#@;76^PRUEvcv*;x*fY-COl6#%p>g ziyZp0evEK9ACal@f6kfU0iaj=eb~vSe!y?hbYBSY?-ZXcf3FATkPzN0lM!FaF*Dls zz`+xrlhH*iqlm2@(Ohdxt^vI~^!b}@Ys~tu)_jA$s^c}8n@zg$mo|O}Gr`UGUP&s( znYRNfi+|9T+?PKJOw-iw8@B?24^w&p)mU+uV!4~w4LLL|18yyE%A@aR8~SWR`C$5H zgaIkUwk!Rj7?|#A^;dmh3W&rIf^r|p3l#T-Z)Jr6KZ#39CBb60d$VMGDH8ZbN)_VI zw(3CH>Fqz5W2)=bQL_qSd%4zls|D!JWw3<||7CvREsY^MnLmEL7_)o4iftp&)R9ewo zr}%}2OE9!fL{q@6JlTF+ByoI4p6dj^g#RP6NV-2#F9tMk#7ixZgX&2iLL1XsTL27UZ+jjZ)z z+5sJdT1jiQ3z(9Y)mF_z5@LS;4c*EjjDR*q&Ib4S0vJrj8gTa`D^-=t@qqNZ3NVRM z9Q>4gU&(UAOO2Fvzq13_SI~tS7Y+Hx&b%V!sS_V+>QXs$vMD~ zaYII(N<;IbGC0t2Hx;Z}s;Nty%XJZk(P9^l@5;?{!)cX&k+e-?Ri4R^NoDQ8b)-`@S& z)%SNmWX&!k3WGeO95f z%QXA}uqF`PbTu2Qw`jvC{{ZcL`?)+!rLu+x&`bJuyI9^8`$dyz_jQ&z(^(iSGP2H5zm;D&=py!3~GFg*9tJ!$bjMBp%g!{ z^J|ag04B`sDu7kWnFr)XF0fxaV56}E9e;T$m)AWKN^Z0HKvNMS(2MH_Rm_9QnI@< zOM{j6485EWiDzYngPEJ95euUn1E>ZaZQVgpDEH-}0C5aC-l2)G%h9 zT5^qB=burHu<|M$P6=9{G3gRA2O@}aHcd`Cwx)xjn#Qz9keC9->|{VVH}L^y z%p*EwXU!PGPG~H(V2A`|I~QOxP_w&j_v#sZzJ0eJsY>qN)QMuLXwX0(Xc!%BG6??h zr0>QEbvy{xQ$`*c;pGp%8YkY<>g_5&YluFNqI2mY{ukg*3u!XDGFUiT!?}3bLK}PC zPKIIa$qJ`nrOEJ}GcpX)5Pw*Rt?CfCS5o@aBg1D3zt^#H4VcxI)I7;Wbf$q@HG<9K z4DZqz#whTgE(8(!%q_vCfLK-IqwLDDpfSKeI={F)(SQ1;pd@IzRzgxE?J7KrUCvRT zs^FX9oekGv%j@Y~H+zr=7&%FRUJHlKqYidKAW6s#3 zGCI|7xN@Hvdr%K(z<&WAblu7wCvk)+IbjG!$xmwv^W{&E$y(G96;NsT$N~-OvH>@~ z_|~nYISNc5^PMr9AMK2H$i%m!&lTK6tKKh=u)&Ta-d4ik8u4vGnqm86(r2_9s=AfJ zls+%sWBavznMI1L=pA8xrRO%lW;73HYElt`FnszgJ7Ov?pw}Y7@I3(3r82%>M=JY~ zql93}E?yr@Nx+~7Af~cYoHU~DSIARJHg2KdzW%omN1XUBAtPG}@7jcw^;gbdJ*^>B zRqml!)qx7c5Ri2X-<%Kg`;j`ZsY}J5#arLI$kaLL)i2j*XT}KRDJAc1ZGU)V$##R@nA@get9{oy<3^2oTV#(o9Tl;5s)!gmnAEu8}3j-#=$f2=Y;ri_O0LK{%M=Q;GH zM!LTDdaS%`cb>9<56x>9tIx`o4#h$kI2P#_+TqO_kwUt=p*cA3Kcv#V` zmzD$H_+1ZHv12!P0ghh#ecCB4z>xRSX>x75lA9Fth+G`VaEbn3$IsYa9(|$=GSCqJ ztm^rc-RG!&P{Hzm6UZJ!UhCLVXH)^6GD~n!-#gnbZogyNh-Yu*S2b6zRgs*W_z?W-@x{&m3i@q;D|aobY1RQ& zuOOsEGJG#Y++R*}%z|FGxFvDlA0Pxi&GSBglEUlinuR5cx0yI?_GEigS8{ThMV0lQ ztLN8H48OeUbrSA>2hEK^o}y074?j4>VY&ZWA}YMa5NAvP0GK~ddx2O{@ub-ejieR< z9NW&%WFGv)a{K?w591K_K2GhCW~q;IA~=9bZ5QIT^+rIB4xiq4}= zxIz4L^#KUOQ;ln|iPzV5A>qn`ia>{dcQvb&tTA(R7EuhuD2Fbv`Q9M5e-VshgOG>Mmzj<%t6ol~KIP&>(si#69P_snDFa;! zINchDuNV51R#uLt!8-?^nn+4);uto7C`d{ApahA#%wI3xlASG1-N$}u%8{k z#rM6H z!L|Qri|~VUtpYMWmJOxapS%3{UhiB zVSwtM!}}cipGJ)b)zn3k16;A!fum5b+hNU2Iua9qLq}7^scnw~;2-`RY?e0;@X7v? zS4*-HWy-OuEojRDz2T6a)O9}$>Hs5lh&>1xaJmjZA4o*64()f~uD@S=pZ8}Im%gwZ zcDmuq(jka-O0!GAF=K$2x0Ymak5#-Dm-!%=yy7^@K!fGi;Pr|Lg7YYPz>65ar8n8N zabmskp0fC)Z&*g$`wRXp5U&-Hea=tr4>aZnO_OF7@Dlyo5Jj*2P%BQ2uuBlJKuk7G zsdYt77j$QC-tg&)0StsZV&G&M_w~2y=)s9EjgU8Yz)L|0$ZY_huAX4t{@b^Em%&mr zrY9x8Vf`}XLU0`cxsCAviAi}X%!b9IrvBh`iD!t;6Z2OSIX*bpv3pBtJ^Q;OAFpU( zpC09CF{(nh3Tb>k?-k~me{arM^U%k3$opS@%9&7uy7cY&w0r+S1>DHacFrO7^yHN~ z%%-M=?|$P}C6I%7C}mn6*}0|1)4ZQ-xeh4i?JrG#a34(ub0G^cEQQO3RED0?ra7iB z79L8U4>^@IH&FM~*E5{xRr$g}b=I;^JH%F3pYY2cc2U{89q$5{)Z23l|K6Q!3QMx< z9n}}H5YHB0rr3LU9st|I%hfg*-ik1N(r;*o9p-BtH-OwWw7PLi~ zcCsEv@FZ{zsCc@*Ad_-@TIHn*sGj7Ytt{g{i^B}MMTSH6e+PtSpVH=7Ll_1uA!pnZQ8O`9e2{kgG-7S|sy*ns7pBKJ;EZ(9h2w_+bvTTxmTI+b2IrN4F;`NGTa6*Ld zZo=>A#{71;C@`{*sQSKon0I&&Xu5i2MdQB|dTm9P$O0Mm*Zldu)ua*T`S;QrSI3Y$ zx>YjV9d+JcI=tnzCk8JVUS1L@xN_?HII)L+~bmu$<7qUUM z{$~%QoQz)3h=M^De{c7ESbqjCW8TU-@Z>JbA^o0 z6{0KJj{}@R?Ibga=FyYdp;9`{F^1w=H*`n#cLepJ9kB<;je&1i7-nslnSTGG8V7?j|5U}@CTTp(}6QZVRrk}&pGZEw@;sDIus)WiHfrU`!<1;BLQ7{c&c+w)2g|ZN@3~u|n2HFe+d28XDhJ&o%^lGW5Jq55jW2ll)7wKjln%4r7392E;o$ub z4!}_i>PrOG_m+k4`pmy_@&`*AMG7LGJ|vjONV>7?By8pr z2b#~6<$J@?N0xTdJjUdYV{x)@P5wO5YYDfj6oUbqY)9P0d*v>xJ)~e4LwA$m6ofW} zxEk|;fBBmzu5m+XmScumy29^Nv+P%RJ{7WBy_N~Zgb+p^MHW$W@?Xu=(jj=Z|{5T(<257E{a)l7Xwo44NNlqyH7 zCZ6~`VjpSFz7quK=Q4MH_~O^6GdVJAVH5d8@Zi3YMM&E<=L1*Z%YtF-Tcvki8xueN zXlzS}Gvwsqy6i+qj_>Mo^t=fN!pseh#+7;CC)LO>v-Qv>+7hjzOyRwfV0sbK;qi;U z4JBzZKvfTE@_5(sUI`>_T@Z+?2TquLWvDDi;{t37)z>?DBFv5HYD(ofuk@EdCIC(e zAKN-^^iK^d4dr`KF#9s#io`i!x~T6pyrre9nhCi1DcAJe`=az?T_I0AZ#H}R53yX# z9_VVH8)eL;Butfk4c^JTB-A<}YU1f{{x#(lpySN>fRjfT;F12D=mpNc1uTg^6;Qc| zevD6^?6hvCzIGSQ2nJD?c^UuJS6=UmrBszXKU=??m+Sf;)3C)K)bTT~AaT}PP==HN z|LDlpd6rx%(*Upm;E^P--ro1F+8_uM_o=A^F751wH}Z|zfmntZ+$9pQFuOn2v1e2Z zkW7~blLs+rrX<@W!*Vyhcp;j@`Bv&p+h)Fl@$UB_bwN!>6e+s#JnvM)oDQ^i^+>a3 zE*zm>Xx_oZdKa%)5t3s;d@xyc<0J@l1QSrG1xbxc@AXmrUdW>hly+X~s;7Iw3hbNy zg10~vz~J@ELX`2#qhLYCrx#**ywZ;%aUba<)f@ACfo2*l#}>;;nm3#Df!X$1B&20k zt!Rm`^`8Y3Fu50w;g@!aE|jc5UjxRzR#R{OfYNSA^3+As{#d^?8V_vkh6T9c)b%qN zp7R{gsjU}x?s%8fsyfp2iMAEh#@M5DlCKxN9=SYrw(xd+c$sImW7lqm(8!cREwJ+| zm1kpCKA@-&Dq_R|hyVmR!-%VW7`0HrtQ$;0Ya$F@U=K}3cWyk7@=D^W+>ysE;m2}X z>+lCH!l%{%V?}C#wK#EIFmO*Bx3=@77(s%^hbj4n;gFgY-JC$*tAwyRajJM6-^e+>>$qUX{sHUbP< zbvZ)mVrW*$SZ|r+Fym|XJ98~5hi%bwR!z_sr{^8YM9z)-)E9;!@n!7kSnQEHMy98z zNEqUVO;@(#p*1EOyYYbrr?cj54S&@a1yrjgCG1gG4f>3tiueOKTRvcH<_4Abg?@N@ z$dl4j%G}GV^T8cp8FoX2u4`N)V&6!hsi}(lv$Sb{F;ToaI&=9XS$=Tm4i!Il{j8Ro z)I!Fbu!m?ydY1+vOvZnEW{Q37O)|Ad4ada6XjpS0FlbrzO$zdiDgWxJ1%|4F?TK2V zGTP4Tt%s8iBfMc=cW>`EmX!O2<^STjn0ojnM$Xyta+jf74*|_5c|VD(lq%NtCCFe5 zUdZ=H+rszm5cnS1?WN=9bP_E`;S4kr9r29pcGqjH`aihYeWn)1o@G^Et8T)K0_|#s zb7t%M&RjrpesASQiy82a1Ha=d5Jcgtxc~?H9nX#3l; z#6}N9#FoDxAHuZg9)|1azxiXb3R~xb-~lsF!*!R;`s+8FL7egABi(Vx_*vbKyrFvm zZj$LUH9xj>^0jTX|1v!QXdST*mzufd-`DLcgeDI!`H77smXzo3ZiCe*6PCHURR z!t9Q|iRl4C$l$`|^M`znpgj@3d$+X+-~yC!G9mu&(YirB^?-ewc}<#T0qmTd%I!wj z)8qP>DR=RPb2FlAu=BDZBh_KIS#dNQr-OD|e6ir1{OGEtRB4yfS#ANn^@1~E;q915 z5?87;%o{{+O`nf}e9uyv3r%a8N>M@Y?-E*tAu4yyjCim;8H0h_ICor^V8|8s$ zR0Uj4rd%T?9@PQy7E~f-@ZKoLi;P$XBFdY}N)S-!8Hz;s`8Xp2?*;pf`-{hB%B#rPRmJ z3m^NmmrvIB=Ti*Xu0%K;P5Rr4eP3?P24Nf)4D!fwx?NBpVo?wSIjaF=qqWlfC&pzV zy^*zOw=V#S=Uz<0RnKyGNgSwWdl9HR~NcZ6&32OSp~6CigD@Q;9TFcOim40Yjs z0xMQyeYesM%D4u|rU3PB;rt<}{a*gS7?;6Il#w^A;!;?CB(N_R>LZk*SDBOXg)H6I ztYC=+|B;u3!3z__FzD1!?ZQt_NVx4$W4$+51U>p*LYzVI6%8`#YK~89oD^TjkSV-d zaWK9*c6I03-?OReY(ya6q9Z=u>8R zNocJ?v=iis&VuaS`sp6#ffNbkBovJDC@3k2h9v46-$tAn0O^IXXxC}lQ=aJaAqxn6 zG;Q-4T?74+M%NFs$bD#c%l6twr-;Omn)WGSk*)ZeqQ z+xshU57i@a;cSU7Vy^$%+tm}+yt{jmH64)y5%x^pOPDKfUpg#VW>tEfzBzkr3}U7g z?^m+3Y096WUTZi94lf~Xe7i)8ZoCOcc@TyKPwNUd-wM{7+x zfAOuT32ofTyOUn$3EfRYBI`U3tZVDwEop7tQzthm+B>2Fo^F(*=0YcNM)PNKTq9B+ zJkcOrN4mLg@mmzEfM`{$@WKcJGU56c?BjevQJkn(;(y8ddr=J#`7U788AsQZic@j@ zm&4YsTt;M!jH*2aX}&S-phq~9JH36&7Cc_Nb}7_?6_}Xi(!s;r)>%B0p^Xw2d1P zc#M|e!PAdRR{*KH?D(SAuzy79T@w97d&hgK0=ru}i3M969q6m93elqa;o4#f62#Zi zt7%&FE^a;*WM>>syDIXl>#m#XgNoQxx75B2o@tY%-p{oQL*oeKXxkSs@X1=DQx6{P zRy$lmE(nN3C4%30@S^mc?p!MHt<+vbeeS~`>DBK);H${OlJKPmqjwORV4%1N(EHCg zK8fo3UNqAcJ`H5}Pq-93hdA))XeBRW5^Zg{bHVR$sL=eJk_-HC!@%nDc!DR=Ez!W1 z`-xDW#k zFaAosv8EL+u#(i}&W>ms;r324g{N)N!uX58_Os74Zz&q=H1948R6Z$Z57<4>BR-U& z7|9K6;9rncx4yzd6_bPgKPz1sWbhieaD~e`?#FuIu9MY2xB7R@0&bRCv!qPmKCmTK zo^CM17PuVk2(aC8cq?$fyGX+!i5wZ5P?nE+<*Q}~|6Z~pGM{1EQ~SsBUj!Y91s-f5 zl)mY6Y}!BRX>Yb=Sj+A;2%Y=M8Q6SlP5OE9_RTA24xC_fn0GzzLTbbAMcXdkDdaqV zvd4Q{P}H1`SASlEwx9!NFg1WDT%122SNQZ#TG*;jf5cQe-yZ+EHZ_dxjA@YXJf&IM z|DX76NNDps>DML6UZdo1M&pol5qf0Fx zlueW0e}C?ypEEK8tN(H9?+TjE7?APGG(CNj^mAG6B?m5^z4v0D$<|}(^MQjU+kxvO zYJrPgdWfqmaBe+uilCS7hFucRr6}gwS5V|h3PMf3?hI%6U$%Kb2%nO&ydUpPLwW> z`?*DH^SpIz2RNeD7a6+<{QR`%I%pnKRvtKyd9HdoXv92qy2I-|6|=23D!Dg$_x$ti zmiY_Z-}3&X@WX6i6uM1(zUTIwWmT-xisyTRIyNhGeWo6p-2OVq;4)|v^jr7to4FI` z=yw6zX%o+PnEwTqAPt#*8=7B4FWR@`Op3$iMN)R<@vGGA>w~U0%{-^$Ki?0$oh{(g zqUkS!7|s+|RxPSxy_UJrz5&=oXvjGi4ctY^@_EWJe%o`I>&~o*ocQW=fqJK>vr}kLO8?s@Hu;N(wntJonhEyoavu kfxE~?0XzgAXz=j-vA2>*ThJ_4ZvYbZboFyt=akR{03RJSYXATM literal 22873 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
WZ}sK+FjJ zwaJV#Hc_m2_Z0(EjESSfb}TOJ*z360YoE)Xp8jQ-Xm48an+%y?k_`J)c=9uu;;nWs zG&_gDah3EX2Bdy?5}2YdW-sn;lv~M>F>0ILA7qntdBCnqhwWqLz*??HhC1$(TOcmN zHPHy|hxO#C{c~oQ@6duw+`z@4f@yd<@<{*#8c!LmNq@ap^7F{r*4x#3`z4!wJ#55% z$N#wIXD+Egb43b};=-)pjm6UwI9Perw`L^us%+z@`*U8=^3TE1A3(^){AyF#WI|M^ z$VKOaF2(Y(e#Flr*sN7BZBrUMByJ9AV^QKBbu^k3E?nc?!1p=yur)hHz(Ysj<+W7_ zU#rq-I~eT7vFmdMFG=`*;GNWa*-?6oDb{JpetM&_sRf{6l5oCN|2KH|RM^nHc!dw= zP&nor>?aV;v`l?+v=T`Fkps=751~@{^oX)ixo9D=gN{tB{9C7o97a?7YcQIG7N!V# zz+Q|NoUOk+vb@Lra~gc&Q}%HF)_G743-5U7{GzovxF8JtU^B*|lq!5I#Ee|x^^4vj zZ*C2U-{>$?xEXF_MKY>1VGevaz6AkHjCZ!LNDH4XixlbLZn&1}lEDGE2`f(Ny^nrPyL;H@VxC;jkVIGw_@Kuduu<~Jw!AOGw%7}l za_+Q`8ef+Am9=`fVX1zyo=6w~F&at^6qe%0MQJ$T)MFCGc=<$7C0>-;0Y1DOX82GS zaDwKS?`Nvy8VRyRQFkh@V;|HA6!YGG z!8*T^g%Hyo)Q{(#tGUvb>&N=~U92B$tn8^5Xu`iaqQ|pE5IMl!YLPY#U%lV_}Bd^_?rN z$wdx6U%dEg5fr4G$w5ZoeSFwcX(g^W=Ah&xtVn~ZY47}AidbrCSTI?J)R5>VvgVDs zwGTujW503FOA);~UMtJ#*axfpx@okke6u`gZK6QYd{$=0+Q~`(Uzn z!)g7@11t-0e%z!rrW~2T+GRqK;MN0#Pur3!zqV07xG>5 zRpLf=@{-sEg(Fedu%QOPAYKK`*_z0O@nNj;)&7mzot{#-wGHVK1|XucoYK^){VkPb zLVu1zBD9!&6GGc>%}$1Jk9n#K`K z3G_8U)^%`To<}0!)B#s+xnO_l5$R~Ka6gIORNt;h8Kmn|AWbOZ`QW78XmT={j7_S-{$j)At-aW3|~<yT#b0M}wZt5tzFyHoL5Zeg&C zp;*9kFTAIgLFf~S?t5*7mqMJtmUD>t7WepF@vY{+hSMQ_%)j(~YKc-|E!Hc_wPF0t za(4Q%mG-PF;{oXTGSNOfct?*s+rlrk3=BB$2^uT8AYQj-uXA}ZXUJv1ZdxAPoc=7; z;W$MH_ZaW30gujR&`2KwMNsg(CdxcuElgYfSgJ+i;3JE$7zQ!UIHGFQRQ>C9^Fwei z2V~i1GPZk*TKWDZ@8~^cEo(cO;qyNy_`a_v<`ZiM^|u8K1K@6;w6olNpo=vpMT>1C z-yO~y>G^}+y5yHWtH=W3pEr!>-DwanlKZf7bdAEMADJ}F^33p2uHC%H_Ct`XUYfsA z@J)Yk9azJ+x3wTSiS~B-h_0quzau;nfvG;@*3x>m9(uRstd5#ebxm#I*@A|T?i)-& zFgeoCKWPdYIRi4$kANX!LcU2|R+oGFNG zy3CPr>K@g3W3xp)1edz@13?p|j6ARAr#;jm$o=fRcWSmqtVz3lUAwi{Fn7doPe zv3*^<#ds`aWg`^CG_(~Vu(9d=kY=vWRqNsjb~dF*Cz z%W|HvAF!*b3_kRnA$AgwqMGbQ#+%SyOQ?{OkD~W@Sc$#7JQYK6K%K(nid9ug_AT?s za&A;)x9aIJJ!?gOkC6sx^ob*S$e=}=gvHBg3wy~&pn#Gr1e|T4*mga+zZ3X8FVx?|z&)${nMyT4Eat`(c%^FvN=;iyJh( zSk41zX5)XUmFeq4{ufBOw#Rek7Q`}~s9eC0DEC#BEl_v=p>aO(@*DY(2#OUiF-MNM zIiYuYcf%~U&aEpmqu92n34i-@!>xwVdsdxPJ7Tw^#+KGjOMqUd_}C&*BXO{@$zPHQ z3Y1G-h}X9}ReGs;35eP5AMpy3W`v!x*k!(2vp`wwz<$+~G616@p|`0DesZz7=R}e+ zP*wdIHHWP&(yAp^6amvz9X@|({llOIGo)jqR@ZqsQlw^`#KZ|Bhb9ZIU-7uF)XA$| zwY^6?C)j8esoKQ`KN6o5duzR*(<@Dqq?9m%XPTU9-d*%< zKQNkQM5i>F=&gZ{TZDXtR^1!7&*B$d4(_i~BdA8ywh_tQme|aKcR(dI!oKZb;8*UE zuH?+4q8zC9cGyRFE92qko+mO5$ zM?GVTDuM;#U=S~QBGqa~e@=a>uiT*)SwpSVg`4m`3np(+ispgZd$4g{Dw zmE~d}Z>sRdZG;21Y{$g2SXO;mx82RwfyfZU=z^lo79A(;6Pn*n=46`D>UJM=^yH_F zmYu$KIjupi_7z+`C$8*E{_5>V&oQa{`k6k5CTj=LEFc&nE>UNs}Os{rl{#ZpxyWO6XZvBE$^Gv z)aPf)(37#`f!HlZ6GVETKmRU!6VFF`wde>Lpz-e1-esDNX*FdT*euB8f?UNC2qpLk zAtGtdPCb4PQmJ~-kaqdQn(%RYu`PRrsB|LaVB+Lcgm6D92oiKNqk2Se5g*|9q9L~r z>>d{T$p#^sc_t@xAv17^h-`saq`ueRCj+66$P%K?RDc0;-W9aOr#-auM*p$-h6m4T zm4{Tr;#u*Il&C-D)s1wq%UeoIEoEiRMh*IR7%|Sp44ShX$&tX0-0^YivCo_IBB+LMsdb+9C*eBNP?x$-Vs*ZD*~SoVCwB`@Ht|eLH7% z@q)}vmz$DEB=eBqZIL9>0-53czzA68-DvgT$9UhCom)sGMXA}lBnpXSMB2rT-VW?5 z&rgEyKhHlW@HaexxA2+A04SvFNM6+Z-}@m&O`AA^6rg4XCuEUG7A=N%fwgn!abR4U zy*)lV>fk5Yhm(-Kq|BtxGP2njd$U)qXM3`}Q-k6G<188u*|sG*hd=h?*zFa*%eEyc z=TY0Xjm>ZfmDwvgu&_K@pr{U&Jy$EM$>_>f=!kl*$Su_4Sp+j~h~KwMh*iL{ zd;EaREmUT%Xml9^xHs@*->H?AWb|W8)zs0av!!WOP)siDN1?y1K!)@LLgT)1#Fwz^ zG{i?WkasTZL!q14W~txniTyOL#f6R-1;Zyw0PB45yNT{>rdAh>oP#|n^rHPk*Ksu0 zMb24YHrmz5z(oS2K3=w8t-MG^Q@m8aygdrLP??WJ2Tp{!$Y;LZE!(YDipi*DEuz-z ziBKAMvvYYvq&X_3_o@2a&7gnAZAWx@t#LU5&*T$Q{CYxqe%;x1qD>xIy zufg2Ck7LFg;M-^H!#QiUx^;z+*Nb!Fl{QB;NnjOY!>(_JIM1|Ip537ys&PLAmZK?w zHefl0fwGatM=ExSISiI#-m7vwwyDHCGxK;Mjhi8F)Boo^$6KRaVBsoPrUb-QxwlaUKl}v>78LWOR=|a;|yJzEhm%7)ZlAHageW*1ld3zPIItc&IQ3e8LY& zJzc#?8YzH#LS(LqB6~2fALJH*go%ZVT-ol3|9SvPK3%=i2Kf9CAzPCuUJ_`NJ_r)( zN*eN&o)DN6S;hAqy429d7E+mKbu!)cDaYCw-NxTAg@qx^m`7Y$W5*eG$t`$C zL3{cR)tg+nz7QPbxL;R{t`qsDFfd(OCO}@4>z4Bi?G2MnYGB!{n)9U9g+jN?+bJ90 zG?QgnXBF?Cbn!qP7m^%Dc14+DVIh+cdxjvAug{_YQ3KTEzbf z4RV#|bg=O*zJG)ei#m)PxzG3CRnQ*Q?x-acVJcScq(6mTs^&0CqXd)EB-x(CiaHm0 z&Uh@l*}bRLLE>Kyky-rAwdFtKBMGJ~{={?0KU9dVU}gP0vmi%AMt%A^hxA4htEkL_ z!Loo7%#A(VG)v7XA)|5k)-y^Y1d|p&Ky?A+aL_8bqRPuRwq2vut!&p9DRSDMLK^~% zdUgpWMRCK#VpG;H$yY{oMg3IJLVU^}S!#_OB=;OubI$Zem9&$n>jzoLf87G*K|(B- zKa+SWj}IDC%^!bZh2ni(n4_blPh(^ifA8T22I`js0DI@2XZhslA#X-pv;ej=Om!)4 zcxvpB7lUy@fGn{DtD^k?vBn7(8uypUZs>L+jzLhk5Ig1{B*gsqUv}QY)er=d(a1ko zh`F({6gdS>As$Cs_henZ&&Ltin?moIU{UA?bJE#8{5uHjNo872dQj-@9*;4?r2=rL zYI?XSPt6`8cAK&)29JPGF3f%u_M#oD0sA{{0`BNBn}PaFY@;&6)xPBew;FXsC^!VI z7r1BrNfk$hL?6cjeGqsxm3f!5a87}yn6hlwbz;eub@?rJ8#xZ(@(*@kmlG!*ZRmEE z=L~OU%c?cWEB58LR$k!%I=uX<9V=UCu^!$g#Oy~@1{z%}{genca{`H&d=bUyyzI<+ zp%IN+k&`Q1gI6Asq7BaSpIShwduIZAThiDw^mKGRgHa}E5*iuVr1c*sqb9|O0=O)& z*pT^ALHn^HmGYD!?$UmNA#UG@*bsLS{H-BwMi_u)az_H2y;_@U<^+)3LIp^Erb||w z0borZIAJWlTY|t8D)S0w-GlF$CC+kXry~PRmo6hdT@vIV>AL_0WbP1RJDpSp;{Bg} z#Xc}kstCnwdFGk&!ay2#+_w$8XDr?%UEVJ+z^reu48;KXWXg-8z$*SIfl3b##M_O4 zo~B9^rZV4ha7?ke8-N>I!$9q&FZ-X6Oh6_nzCu5vGJ_19wwMRVsdY62O_8P(Z65}K z-U)BjLI$BRvT&0tlYAJhK&l4*1Bi184;Zwo7-$b?-fV8>^dOBZ>wS#f06H}DAbh5E z(dH@*@!hN{UizR&6VN^21*rV(ZD<}Fc@y9aC|3;?hkCeZz9yrc9V5vR!tGRMT>4OQ zWC5rKfDpuNVxY^@0K+<~@*mcdQS@`f(^-4sTNpH_K38Ds!&{knheh zi1oYNO{)|AsU%GmD9F&0OJfCa$ZrtKRbfz>A&48|;evfjM%`S&q-Z*o$#B3Mm&OTT z?SA$t2Z>b*fE?vymZJXQcgEt^^ej(%?Nu89$L@wJ==M!-93|3AQ1c+!pnjbg5M4VB z#VTGJ3vgJeF?WziZ(TsCRAxYd8xZ1#{cL(bp&yW1mp`R87V%uA)fHuegmAL%!ic&| zGb(e0r6VS3-26rOE&`+$(?Fp@kz4R$3cc>}2r&S9KV(D*;Lvu^OY;G|`!Jhr z3&bf1wx-bcMFRxxgBet&lS7S~B9#Hu1y@i$If3GwiqlAu8$9toy#pcuOv$)+C|$N=@3!~aV+O%&VK zL7VCc@r0OgD;RRBH^k%F^m+7Aut$Og9wksT^4RpzfqWYGb4T2ZU9U;TISfkx;8lip z++~Or`@q~$@^TqqU$B=4*4FVauK_H5sjM~@uWa`&3n~D zOBbqUl*Zz{@Jykwn6qNW{B*&%viH$nUqurS+b3?N0@0a zA}P{XMk7mhz0>>s_g&Zf$Jw6iob%lGbMD`A?lgpzDHppaI|Bm)7u?MFIs?Ng0s6T; z8!LUUUdlE@KQMb6S{gDiG-PrdAzA3xz`JG+Aq))M@BVG4{HD@?^g$8S6?>FTkQXWp z8GM`JF48v;r4)D@C84f#QAxwo)Smuk!5O%*;f?z)>!lozJa3|t0pitWjI3O0q{+EY zq>mOnTN3J5dEsm({W5GK22%1ISp|uSrW5^)PW(U46Pzd2q*D0|PZKc?5^SuzrB%tBER{QalqrBFWhRKXuODAtnvcWaN)HQLbK< zO#^H)QY8HU-H!P%+8Mrea{J_Hzt!*H;6Sfudyz#$G&jXLY_1s~1`h)fQ1$HtQyie- z?sIV%-jleMK@LBv;!PTp)Vjf7F~oirRQ%^eq2~AFuAVP#A-ny7qjDSJ zLwRZliqC(aT5=8m--7v;BDn2JWksM<_utQe7{PMPaA49(w*4RXh*M}KFEobg7WK7~ z{Mrrp>^)~CP3_lgML~yTyfKB{bCB?Aok(RPY0s&$Ov(t z{P>`Rzjc#*(cFQ|!ix6wZVzn7PmRW?c5X&*$ZT}K+y5(wAManru*}FEHuM&Godiq=^_FJt&G@kgpZy_~xOf&vZqeo30R{fpY zm^vy`R9qQ{cbOFsK^l9`wI>l0^ScVQ8DoY8g$P76!+pjPo&@nzMZ0NM(Y>@wHiuh= zU9<0-xw;-Hm8(I*P)) zCgo+sx3~&xsTw(q@Ufo{c}zXrjGGTPR<7}k;L`B3mt#-Lm{hW-8XP_B=b(Ru>!ia< zj_$FGHQd8iQ!@fiLW{59>2H-6jxXKuHaKKH(e2p4m*w&2H-@r7X2qg^80*_A^G)2c zI>Kt>zBO}2x>}>)0e#Swony8Qk}7U!S7K@N7*9LgH2myP!<}>FUPVS!vX=gom`tNr zb2C%l=bM9ENg0AUia?gv50J=7c*Rfh>A}R9PikB~;rU2C-tuvl z;0$ik$xOLtlGTjF7B8&1iug9zR2L`la~@eV*%tgEM@9z<&Ra5YRfuL##^@Wmzdocb2#HV;{Ak&`27IxF7$;BWg zCUdH1P|t!xG{Yh*c+f7&*|Njjch$`!rf@l?0AFf)cBV7Xtu@4 z!I`>|rLkPc0Z-Bm1_O%KVvh}K`8U8~W3S(DA}s*Lp<-tsv$uSuzO9|A64oIN$_Om) zdPYpI3^iyzBpoD6r?H#0`RYN7uH{6%} zP=cs8Y`I*+KKB}}dsi!`FXgroAmy+EvwpqwN#ttqiaP4A4pREJI;mIBZspv!ziW8z z5sE5UY~j#g%e9@`XBDM!p|l)s1~FCDoqGQp;_pcISu1knIAmQ?y9&cmWF^P&cy{Z9x00wf?WtD{FUdmqmpkoq9Um9OtPg_AE_OSPd=sZD!b#^v`aQVjHwlQ3=5_}g=lj52vWL|T^5gN`|tPvc=t9Xn_j}3JG2>`Ds zx0pwGOcg&OwB@y+%7pXBCWknh_(8OX`tG5qsT1r}t7=pa+me1Hc!9Xjl}1@puMSgt zl_E_<*`B9bnhqwuO^k2!Z`PFafJ10D?QEEcgQsUs$|RRUn#*nJX)asLz8n+e1dqIL z;;uzkPz`J8)G(>^Nmk&LX4{}ouC0MX?=b=d-6|!NJ$jc$c+8Li82mnen2Vn;=CLI4 ziAf?8g8?Kt3?gs?ZGQqK?RRi+PCUR&RE9tZ!z;UvCF(Hkloh1DVEvAwdaeKGvzN<@ zKo4UZDS5Ut8@_)4Ogg1mfh-y=@#sba!W*l!x{N7kp{4-Twqq!VzEUeITLFu)$J$TQ zbrV#%W?V-pixwqW6SivqvX*sCxxc;4M}2+(6_<`zvISi3+ulGk5r?JabV~#xiYB}c zZUBTtHj3nM^&ec|8PEB2blT^b7HaX~=P?{`dR(A5rQNayN zs`Q84s&3X04J9|mw%oRY-0!ko`);cA_EGMJD77|}Z?R%Py?#t6HTjj52BceD+9l%G zKKrOjI$5cazS>J8O<%wNDPY;Fp!mN#xq7#TMv`n*kCk1GOoDy4Z2z*m`1{cm5ZG}U zH6|m8`%=}sAZ2oR3w5y7aP|quuX;thBbVN$ik_d=%#Wh1=rDi9`ImUJXD^aLkG3$G ztq@hR8vAO)bi>Yy!X&P$CF^}&Yg7TJ7y{!1;a`v2+0W5yUX;)#yI%UcXqiQ z%&_RparVe&$?B=7;0ZLH*cuDsoO+ZBregp{%$yyYO+c2Naw3#o0kAMN5XhYLn1i}) ztRX(}An!9cB6UC<7*RC2aEJ0BWJL5gN%7)_N@F+t(52X8`1Tx@vqKHgTjb1 zEnHvejuT*gtV_WJ>x(Q^Vuo4?A!1&&jX0IjP0Hgk*o6uz$x6$6?6KAK6Rf_%X%on} ze`%HqEF81K{}U1YZhM2D{M|9Wovc>Qtt|*{FF@&X9jQD0iCr33b7n6dJ8!-hod&!T zo9qIWc&B{KWX7RUm4t3Lh%D&8%Jf_C;k|C2z^{qt42)% zpgEo^xmk#1=|H++dPhdag1NCqIcvTj3t0ayh})q{45(FW)d*`P3rxpbm5d4?3)iboCp zyk882^{q0)A&`=1%^L3f51I6onY*RYQiv8-8u^K3+E$q8gpSCNGjZYQ6Nj4rhu?k@ z_k8C>^$i&hYD%_#$I-sfldQuZuD+QK>=;EJG$A~M>?s_5+=?!sK2sG`O|4*O%X^c{ z;zKuI2G@T09u*ZudrygmGuC7<%`8)$xk&653M#elnixr{o;Q-l+H~+GPOqg~uT0z2 zX?o2l4ncVEdZ}n>ySw5^JLu{!Y6ZR;1X^PIVXTK|pvh51)L{=kYsE;S`{L1?M3}Yw zM@9{=I5eJ)v067hMxuJB7Ul&z2+)OQx%6=5jRDp{qEwk~5flnD={1*p@n-g$@a#*| zcVOin2Q~jf2XMw^Dv<-N0Ifc2FuRie8>A;e$Bb>;s~>XoJVN%~P{V|zG`4qt9zcJK&biHT7m zWDgH}vM4g(X~KOamw6#;F#ZRgSDo9>f@$q8J%%$D98cs%pG_ox^HwZFTA0);yb;S8 zD9Ex8tovyK?qRt(r?We9PCug2>Bff?5dx|P2`(`A6Ocbf4ZBQ_ZjN38&X6Y#15Tsd6~dsG#IQ>3+Rerr7FuitDqEnRZMUL()IujW9ktzafPBzT%(#P{pipYpB|%(A}$`sE`^RqB@1ninOm9_FsE1 zhWPB=vCtCo5`IOaioP`AVOkTd*&d=?@=^qcW9yU!@^60q-Wo!=N|w_#O0mx`&v9j@1&u562(H(E>)5^+84x;!Q{eDmF zpJ{zR|7dvr(+sR3IEeghqoXkT9E20o3A_W1&Fhy0Ucslgh@J79a7(gU34!u@e;F?Y zCP@pR_JqF#QxLbgO&C(b^5uDq?}*fNj*}_xtsz{0-1i9(R`*p^th7K=^9g5J#{1Q{ z>O+a6j1{F-$!xSOgiGtPZ@pkXqR|jr>{IE-(-vftB?!_Hu&ck1BLJV_YV7e`OWRdr za|%=ARJQ8@c3&UtiRq)=0pN`2t9-A}@+*378^`3O}*te$-lm}oM|imD0i zS)f}IcKCJJiin7w#X=b8jWz2fWlmeYWN7!jJ4SPq4)Zk-f7mQ&n6M#vy_>RmVe9<# zGbq32=i9GpyN4a>YASDJ;H}A@OAuynbM|C6Yd*zXVd+e-u1XYk%~bt3-aWj2b`bHL8yp!vX_%PQ~?34=NyO> z9!sri;$ZC$O_jRL9RV{jSi^;MVa5PL1ARfL`Y6Ga%uGGuSAeSz>hF=oW#qxO0dxJ| z4?N5?*3BTQ-3jfPm6a}w0rq;%M{UdyxIumgs{)ZL+6l%dqzL{T8hY>e*Pc@Ai0aJS zDmxIUojOtLP3JN z>>*tsY_g}bdDkyo@b-O#KJKHEE#-svULDOVRCq+^VQuA&JF|kFHbB4aG+Q?@!o2~e zsSG-S;e7HCh(BVenGnBn+5p=#Gxb)q(8x&hT->Gvu-{eulTys~#g{Jv7+tsSm@$qE zC7XnaIl~MoM+RM;H?sLgQ!$;7Ydz|Z0;jb)Zb$xoKs*`w(&*jI^k{YD*=i+WvV8WI zNcB;_&n*S6U2>ckm`dzjI!*-T<;m+Oj2{?HTnl~asyBx-0oYEE8XITgGBjN3TN3I2 z2Uo7s%?r)yS|rB8^K^T#-HT664@eI31eFhk7qCv&;(`{!PeZ@zS)4tvMk z^PnuZzdYh=IEl?3d_@R?QI2$}#4R@`SW$!DkLJ2Ej7y)U|BBSC_N_rgcud0%H`aL9 zFewxHVr>{aZQ0J-eqc1pd#G3QD#AUlcXmO}&*nw@>F6WPT1;ehV*HW~;Y7bpb7AXv zGs=0NPC(#Fg^mjr)5i|*TQFii&@15G@7%^_EV%bq>qsLC1H1S3BsLJBPC@o|U!4U@ z@;|&4x+NE=Wjq#idgrFDQ7F$D;$!Ou&|GqT8N#H+qP;y))njFqtX)!$_<_5r(QRqH zVpO7JT(W8{lo+TnMMQK(IxK;&w|e;OB_?a;$(y!owxOx3Y>kSdpG$MbgSt_7T3z)@ zaVDn}{L*S_LMuG5a;eI#Sx?tR6`;0k_1`}wp4;L`ZQ}#~u<%a!6~4Sy8Gqr=_Y#8P zs!@!k4#?b7!S*%7q{CI$87r$)e%DWYQCMrbQyJMi;^=F8m#4$K<`ubn@QV}GdH}qV z!J1aygIGEqtBT94N@OhGvy|6zFD+wI1t))D^x_1y72E?YS=n^RTE?G=QK-)>) zd(=GT(GT8!MceM_iVOLff*qYBPrW?FULM(aidAnPIF^UXJgQ5V4~m;d*O72%K1A-V zWVoZ19nO{#&ftwhb3L_#V1|Ido)cD>C)X77^)p+(DC|I! zT{6l%6xW2|KlQ>=Bc^UEcWIa>DwvRkhf6>Yo9qHMc0|NZTY6VtOO3A3tXQ;Qu5qU8 z)4=dDEA7ZmbMg3IePgBl$*rmsldZdQG#QuivpmNZGnkb)5zuW@zwLfGsI9^p;jJ1WG5_ z>@zvPs zBNB{Cje5P`G_G*c8<2dNRC*Iq^~-+J&%{e~#PzBaXY*O01_B#47suWY!!6YQZ*T>Y zzoa-L1_hAM_6&1fg(M@H6aRPT@_#lu8`V@7|DKvf1y6EcaJfqF1T(;|SQ*#B+~WTO DXBgtO literal 7708 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 diff --git a/Remotely_Server/wwwroot/scripts/RemoteControl/RCBrowserSockets.js b/Remotely_Server/wwwroot/scripts/RemoteControl/RCBrowserSockets.js index 533d141b..fd416826 100644 --- a/Remotely_Server/wwwroot/scripts/RemoteControl/RCBrowserSockets.js +++ b/Remotely_Server/wwwroot/scripts/RemoteControl/RCBrowserSockets.js @@ -2,7 +2,6 @@ import * as UI from "./UI.js"; import { RemoteControl } from "./RemoteControl.js"; import { GetCursor } from "./CursorMap.js"; var signalR = window["signalR"]; -var lastLatency = Date.now(); export class RCBrowserSockets { Connect() { this.Connection = new signalR.HubConnectionBuilder() @@ -34,7 +33,6 @@ export class RCBrowserSockets { } SendLatencyUpdate(latency, payloadSize) { this.Connection.invoke("SendLatencyUpdate", latency, payloadSize); - console.log(`Sending latency update. Latency:${latency}. Size: ${payloadSize}`); } SendSelectScreen(index) { return this.Connection.invoke("SelectScreen", index); @@ -108,10 +106,7 @@ export class RCBrowserSockets { }); hubConnection.on("ScreenCapture", (buffer, captureTime) => { var latency = Date.now() - new Date(captureTime).getTime(); - if (latency > 3000 && Date.now() - lastLatency > 3000) { - this.SendLatencyUpdate(latency, buffer.length); - lastLatency = Date.now(); - } + this.SendLatencyUpdate(latency, buffer.length); var url = window.URL.createObjectURL(new Blob([buffer])); var img = document.createElement("img"); img.onload = () => { diff --git a/Remotely_Server/wwwroot/scripts/RemoteControl/RCBrowserSockets.js.map b/Remotely_Server/wwwroot/scripts/RemoteControl/RCBrowserSockets.js.map index b746573d..979a6c1b 100644 --- a/Remotely_Server/wwwroot/scripts/RemoteControl/RCBrowserSockets.js.map +++ b/Remotely_Server/wwwroot/scripts/RemoteControl/RCBrowserSockets.js.map @@ -1 +1 @@ -{"version":3,"file":"RCBrowserSockets.js","sourceRoot":"","sources":["RCBrowserSockets.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"RCBrowserSockets.js","sourceRoot":"","sources":["RCBrowserSockets.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,IAAI,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAEhC,MAAM,OAAO,gBAAgB;IAGzB,OAAO;QACH,IAAI,CAAC,UAAU,GAAG,IAAI,OAAO,CAAC,oBAAoB,EAAE;aAC/C,OAAO,CAAC,eAAe,CAAC;aACxB,eAAe,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC;aACvE,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;aAC9C,KAAK,EAAE,CAAC;QAEb,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE3C,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YAChC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YACT,IAAI,CAAC,6BAA6B,EAAE,CAAC;YACrC,EAAE,CAAC,aAAa,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YAC7C,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YACrC,EAAE,CAAC,YAAY,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YAC1C,EAAE,CAAC,aAAa,CAAC,SAAS,GAAG,EAAE,CAAC;QACpC,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE;YACxC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;YAClC,EAAE,CAAC,aAAa,CAAC,SAAS,GAAG,oBAAoB,CAAC;YAClD,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACjD,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACP,CAAC;IAAA,CAAC;IACF,6BAA6B;QACzB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,+BAA+B,EAAE,aAAa,CAAC,QAAQ,EAAE,aAAa,CAAC,aAAa,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IAC5I,CAAC;IACD,iBAAiB,CAAC,OAAe,EAAE,WAAmB;QAClD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,mBAAmB,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IACtE,CAAC;IACD,gBAAgB,CAAC,KAAa;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACzD,CAAC;IACD,aAAa,CAAC,QAAgB,EAAE,QAAgB;QAC5C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC5D,CAAC;IACD,aAAa,CAAC,MAAc,EAAE,QAAgB,EAAE,QAAgB;QAC5D,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACpE,CAAC;IACD,WAAW,CAAC,MAAc,EAAE,QAAgB,EAAE,QAAgB;QAC1D,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAClE,CAAC;IACD,aAAa;QACT,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACxC,CAAC;IACD,aAAa;QACT,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACxC,CAAC;IACD,aAAa,CAAC,KAAa,EAAE,KAAa;QACtC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACtD,CAAC;IACD,WAAW;QACP,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IACD,OAAO;QACH,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IACD,cAAc,CAAC,MAAc,EAAE,MAAc;QACzC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACzD,CAAC;IACD,WAAW,CAAC,OAAe;QACvB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IACD,SAAS,CAAC,OAAe;QACrB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IACD,YAAY,CAAC,OAAe;QACxB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IAED,cAAc;QACV,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IAClE,CAAC;IACD,iBAAiB,CAAC,OAAe;QAC7B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,mBAAmB,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACrE,CAAC;IACO,oBAAoB,CAAC,aAAa;QACtC,aAAa,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,kBAA0B,EAAE,WAAmB,EAAE,EAAE;YAChF,QAAQ,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC;YAC1D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;gBAClC,IAAI,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAC9C,MAAM,CAAC,SAAS,GAAG,WAAW,CAAC,EAAE,CAAC;gBAClC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBACnC,IAAI,CAAC,IAAI,kBAAkB,EAAE;oBACzB,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;iBACnC;gBACD,QAAQ,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAC/D,MAAM,CAAC,OAAO,GAAG,CAAC,EAAc,EAAE,EAAE;oBAChC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;oBACzB,QAAQ,CAAC,gBAAgB,CAAC,8BAA8B,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;wBACvE,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;oBACvC,CAAC,CAAC,CAAC;oBACF,EAAE,CAAC,aAAmC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACrE,CAAC,CAAC;aACL;QACL,CAAC,CAAC,CAAC;QACH,aAAa,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,KAAa,EAAE,MAAc,EAAE,EAAE;YAC7D,EAAE,CAAC,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC;YAC9B,EAAE,CAAC,YAAY,CAAC,MAAM,GAAG,MAAM,CAAC;YAChC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QACH,aAAa,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,MAAkB,EAAE,WAAiB,EAAE,EAAE;YACxE,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC;YAC3D,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YAE/C,IAAI,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACzD,IAAI,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACxC,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE;gBACd,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBACvF,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;YACpC,CAAC,CAAC;YACF,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC;QAClB,CAAC,CAAC,CAAC;QACH,aAAa,CAAC,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;YACtC,EAAE,CAAC,aAAa,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YAC7C,EAAE,CAAC,aAAa,CAAC,SAAS,GAAG,kCAAkC,CAAC;YAChE,EAAE,CAAC,WAAW,CAAC,uCAAuC,CAAC,CAAC;YACxD,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,aAAa,CAAC,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;YACvC,EAAE,CAAC,aAAa,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YAC7C,EAAE,CAAC,aAAa,CAAC,SAAS,GAAG,uBAAuB,CAAC;YACrD,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,aAAa,CAAC,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;YAC9C,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,aAAa,CAAC,EAAE,CAAC,6BAA6B,EAAE,CAAC,WAAmB,EAAE,EAAE;YACpE,aAAa,CAAC,QAAQ,GAAG,WAAW,CAAC;YACrC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,aAAa,CAAC,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;YACvC,EAAE,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,aAAa,CAAC,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE;YAClC,EAAE,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,aAAa,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,MAAc,EAAE,EAAE;YAChD,IAAI,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;YAClC,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;QAC7C,CAAC,CAAC,CAAC;IACP,CAAC;CACJ"} \ No newline at end of file diff --git a/Remotely_Server/wwwroot/scripts/RemoteControl/RCBrowserSockets.ts b/Remotely_Server/wwwroot/scripts/RemoteControl/RCBrowserSockets.ts index ec665a7c..055e5c62 100644 --- a/Remotely_Server/wwwroot/scripts/RemoteControl/RCBrowserSockets.ts +++ b/Remotely_Server/wwwroot/scripts/RemoteControl/RCBrowserSockets.ts @@ -5,7 +5,6 @@ import { RemoteControl } from "./RemoteControl.js"; import { GetCursor } from "./CursorMap.js"; var signalR = window["signalR"]; -var lastLatency = Date.now(); export class RCBrowserSockets { Connection: any; @@ -41,7 +40,6 @@ export class RCBrowserSockets { } SendLatencyUpdate(latency: number, payloadSize: number) { this.Connection.invoke("SendLatencyUpdate", latency, payloadSize); - console.log(`Sending latency update. Latency:${latency}. Size: ${payloadSize}`) } SendSelectScreen(index: number) { return this.Connection.invoke("SelectScreen", index); @@ -116,10 +114,8 @@ export class RCBrowserSockets { }); hubConnection.on("ScreenCapture", (buffer: Uint8Array, captureTime: Date) => { var latency = Date.now() - new Date(captureTime).getTime(); - if (latency > 3000 && Date.now() - lastLatency > 3000) { - this.SendLatencyUpdate(latency, buffer.length); - lastLatency = Date.now(); - } + this.SendLatencyUpdate(latency, buffer.length); + var url = window.URL.createObjectURL(new Blob([buffer])); var img = document.createElement("img"); img.onload = () => {