From 43cfacdf8509af136d01c1dd5c70e62ee2a39aa6 Mon Sep 17 00:00:00 2001 From: Thomas Weissgerber Date: Wed, 27 Oct 2021 14:58:42 +0200 Subject: [PATCH] Add Augmenta Websocket output --- Assets/Librairies/Websocket-sharp.meta | 8 + .../Websocket-sharp/websocket-sharp.dll | Bin 0 -> 247296 bytes .../Websocket-sharp/websocket-sharp.dll.meta | 33 ++ Assets/Scenes/Main.unity | 368 +++++++++--------- .../AugmentaSimulation/PointManager.cs | 48 +++ .../AugmentaSimulation/VideoOutputManager.cs | 6 + .../WebsocketManagerControllable.cs | 12 + .../WebsocketManagerControllable.cs.meta | 11 + Assets/Scripts/Network/WebsocketManager.cs | 100 +++++ .../Scripts/Network/WebsocketManager.cs.meta | 11 + ProjectSettings/ProjectSettings.asset | 2 +- 11 files changed, 418 insertions(+), 181 deletions(-) create mode 100644 Assets/Librairies/Websocket-sharp.meta create mode 100644 Assets/Librairies/Websocket-sharp/websocket-sharp.dll create mode 100644 Assets/Librairies/Websocket-sharp/websocket-sharp.dll.meta create mode 100644 Assets/Scripts/Controllables/WebsocketManagerControllable.cs create mode 100644 Assets/Scripts/Controllables/WebsocketManagerControllable.cs.meta create mode 100644 Assets/Scripts/Network/WebsocketManager.cs create mode 100644 Assets/Scripts/Network/WebsocketManager.cs.meta diff --git a/Assets/Librairies/Websocket-sharp.meta b/Assets/Librairies/Websocket-sharp.meta new file mode 100644 index 0000000..d911278 --- /dev/null +++ b/Assets/Librairies/Websocket-sharp.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b2dad0152fc760f49b94fa73d696679e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Librairies/Websocket-sharp/websocket-sharp.dll b/Assets/Librairies/Websocket-sharp/websocket-sharp.dll new file mode 100644 index 0000000000000000000000000000000000000000..ad5411d621be592b498a3ddcbd41c3ecc0ae463c GIT binary patch literal 247296 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�?pbMn%RNj&El zY57Iovr&_I^;Jp7Y|lqM!ZWTR!RZf-#_9Z+qAP(_Ko@^ST^XD&!Ly+JhN5p{)@L5E1w?;kA z(-dt?eFvyW(I0(wM9t*Yiu_ad0UcKKE38$sxVVXN!pQ=Bg=`j&Qq(csm(At{iZarx zfEFs+4A)h2cs0>7lY66+`W(JP>F`{C4nM4DaoUlnIb7V5DXg|7X>+(u(MFpYVkuCB zwJEisEkd49({i8xgFVxpCG?en3%rt8PH&6Go^$~wQk^(6=l0`2VJ=$ zuYe?N1K+F&uS_@a^NMQneZkVxBxAvA<_)}^BD`va6cqgo^YsS4Qc+q%47WoOt_U0W zDMeR1Bh@OxtKALU<}OpH4|fqa@Ek?BT5RA&itrkJ1FulDJrwhDT2Yf2%*$;>xUOvA zejYN;E=i9=*`pNUy+L>nQPIIINO)K#=9$;lU)UrrpUczlJ+_;CX#*Wb-r9tUdUqW>-@YT>{)N{ zT18{scL0sWp9zCLi2ZB}FILntz|6MrVEj}7=&;vq)e>@RQe+lrdOz3aDlGTckVIP2RMMQ!726k+e##t<%}@(lb5J66IL z`7Mpy&QB@A73e*F+d<2$@AIzyXj#buhc6EOkUvRO!k+Y7W&ICdsdV81%gj5usim|$ z-EEn97tbS-YtF}fj-qLBXXIo4jH3OCR%16`qX_pXdw7k5Hd^=axdBun_JeJU^%LH% zm84fP;TZ{jQ4!v4`IN^&XsBJby1Ui*jHeLE_2>W}PgDYT4K#LuPbI=x>RsyrzFd+i zzvl_|1>d4*e9vm29g6U(?n{2yZV5jj^Cds62%pI~$Zsoppqno{$bDL4UP?_*WZeX^ zC|Ur!yn{SmQL*<;c8F&vTI6j2EyL94^R;@RMbEu97TmcDk-vp|RW1EiC)_Yqz!iM2}okM#&YsAzTK zr$GMgFqTTTI`IqZQ9jv0N3F;CK1KbS9BO`w&+Q;B=QsJ*`YjI(mK2scGVFVPtgEC( zS?8?Zb5l1-=RMC^Pjk3+NGZ&3bk2H)=O`NPan5>{uT&HbbdK*+)FADm^*mpaAj7R{ za?Sc9Pl4SC=Ftgp{?&_%1K9-kt0OW=gO zfnMyOL(R?l8V4;7ZK(VAwOe+HZmgeD6qvR#xQXtQDs_QrrRJu(%|S`ge)>WOU9>jW z6Z)Ygj-#~bmilC(y{31)eOViQt|9|g*f#odMfKVt$^G?S(7=*2xYEa6c7Sd( zg)3pxdcLo<)u*OmdVATI-uty6do1t_?0zjw|GdA{;T#gBA5*m6JFQWa!}4m|AP=iv z3D@5k%QIo{4ywLH5uRg4J1jk|L!x6HbPDd0#yJSjIOFw~(=iq~a=PfJiLfT}qr2#Z z8I%ImM1o$V2x}riU#JLcBEcRf)r6C`aq%@=GnRmNVPP>b{MJ`C`)XIVfso% z*baFPOKb-xVLRkIbl46f_0uXGw!gt^p!-VrfqGeM~~CD5$!cy8Mwe0ryo#+v;H{!ybNbbw9Nv`M#Cu6qDpvXS~oqWcg;s#CF6;2M$gcD6~Ax|R99$6P&QB*s$8Ze`91 zFVhz)YTM!Ci1~WPDAdhmv)WjV1^N;qJoPiPg?ixws6#4^UZihv(6iBt^;)96ptBm4 zdhbHC+{^HMuu9KSbRaW= zpGU9OClKugotdrCtCh|>t2BD8e#1e}Mz7PmkCEl`&axUC^o2z7?%XT-7Nx`IAYRei zjzvp(9{Gwc&(>sb-Ka;BPR=$P^}a+n+q@dRQ7@Ea`gEu-+oYE(5`jpYiONi?;TmC+ zUZZGh%jwaZ^izsj!FA3iy;e~Hh4UXLOWU!-IItY6sJ!90=*{{%B23+Cyr%CU+UwrM zCrNulKkU%e_`IRtmf=j};Ur^=?mwR5G&O>IXIu2{iVk}s6)G~3u3XXW4yfC#s9Pe^ zK}C3qvqit5D7_Vu-$OEm@o;Byi{6!}l>OQ0a5Th1Bx`V+{=T%NGHlcLIp|dMJGy0p zj0NxKys!5sDmCH#ocHw{rNh#GpwCdc6nOIC1AVU2^@OY49r^~POH2JBdWXJ6>4IA% zX&>tQlrFY~nSH2#C3TROpQ1m4&y>s5Z)e?%{#f@@WXi4uYNrTys=M{Big2g8TTfAh zb5@OBV7G*wYK=ZY(Gt+@(dR1K0J=STg(BRk?$xUm;ZAk0{-z|zSvC7auTi?Uz;d5{ zQ4-z%+o$(>7;`OacfX!Vggr!$*{_!q!D+U4kjFv2W)fP;HT;l1c8VliJC5oVig2|! zs&{`x>TpH)rq1krLLW^!932Kbp-(2NWOx_jq+U(54DMo>W4_h*IjCvOcY5|z87Gdo z(|QdN-dS!Pb6P)0gt;DJJ*%fpL(4J~_JZ^JWJS09kd_ctv2UA(#GKc+DC*=F67z$8 zKvC1yAu$*9l<64DZtex?{ish>^gNMk>ObmlKZcf=dQ{9M{Sybp#r#)4?Vz49SM=;6 zvNVm$84z<#FCr?VQFTpUsR&2aHGQWd?5)@I^NMh+T+>Z6WchHcT+=Oz_Q5=HP0t{z zWPcf%kiujK<;L95S1J-F-E>Fa;h@ZzKlIaz=7+)VSI>AHQz&7t=E6I?Xx5`Z9O)IiL}|0y7iwFqlxoGvd*~ZJ_mKXIo25$lb=8;V?#y_Zp_7JM7X}U zj^X0G)X{7sgsGS;O*o?nVNrxLiVzu!a7Gbgsv?|GgjlYqpa0e7mpA;hmWCZ^0u7_=FI0*A;h+49gCm@E1eG62k_4_ZuCgm)wA ziE>4Fs##C0QMAK~mfIEKz1@1^pd!4RTTfghDq$_*cd_aT(_Bn%8T)+1iykIX{uGkD z+vzU0E5f^-9^#lH91kAiDiMwL6|? zx(O#k9Ryo|c`2p4$HBsnNS-VNizr2SvJfmP6yeE2u&7pqCkw&iB2fw3-BtrCe465f zbB5L7!D5<&&c}p^3ZfF$gZJ?a6E#u?xxO4@5$7eD@V-ohFfEih!#ima!a}r{-b0BH z8H(^kH$qHRgkvQ_ELVhQxDjH9B0R&55T_O48E%9Si!g<~COpH95W$M@jgAPBtq9L) zBSev+tMJrEgjlI)Yyn#CQ}j#!8!-{$qN1}Di_bGMg{C?4pbYVf@UB9H$We3~PJ1K7 zEJZD|Y9W>-M0k~@LC!Wh=(Z(79F&&yTx_JcA$3rLnk`anTP*7gYtSYRD8d@FiStCV z25mxA$edvf+C)1=Sc5i^rU+}$CdMkl8nlUpim(Q4V!a})L7S*igf(armla_R+CDcmH3;DpVGY`Z&$G@Nv*!CdFpz-ANs zh)UVGHomr4kyJ&sM70|)3LJFX5-+NW$B&Y4hpg*iW*7u#6(YVO3`(A z$Ec^cp~!1!6;SpviiPeTCy5D)@a}PvIG_mc^d^hTig2Y&7UDS>PKT$%l0|Dp4P&c- zY>IHK^b%=`@Cl7xqEHd8_PxX`MR*sumpG*e?{fDRHx%Jr?%pDMxl9l55cd(~itsLQ zAF)Oe-UaR>*z?j7-|k8gEfwM0T`3|;kx$=9TVIhvRKgz1g^kuu&gIb>Vu<2vLbv+VYDbzg#B!^*r#Ydym#`TIIU#4bhH2giuRim(rk6_*uZ9~>*hD>6>(gJVTI zMc4<&igHER2giwOMc4<&3D0U74*TGEk*o;&;CNA}2>al8u}=~9!H2{Tim(qpByKCh zJ~%;`H_AApGxLE`6mND}m^R69jew?!?ut_K@@>;ak)kZ1$HW#zV}OdpMMYD9W{AMe zGM4c^`L@SJj-u&6GerfF9AmRY*VoWej;dLrTv2lCV9RXb`8w(<*@)!vwmBk)2%k{w zYAX@P6on6KV0}uQe?!I+KI~CjnV7mo5{{~QqIj#Mj?l~JiR3pW;i#G?wkg6o)Nbd;i#$*es4=l995NKxgs1@l_KyR)ZrTU zxUEto6XA(xiLFW$N*(RUs>Cd!G86XXD)GD`?8#MPvm(6iSR!f^tr;-Sw#2b+UTQhV zV~IGWblB^bh&zg~*DVq5?_yry*?P$5QsJj4EpCx*sfbY27wTo1inGQr$1Slf7l~2_ zWw;!(T;veRCp%V%B1QOQ#|p7r5w3qL#CD<*_D+~ZTOmx_G4)DjYCbFU1(8hzPh2-Q zYcGm}ifWs!u&r{G$Q|C|UE`oW!(XyFsi1z6<|KR<*hxqHuXwEy$?s8VA=hUhmYtHQ z=GTf-L}jLelp8T?MXe${w^=K?zmMU{OgW_6spw&%(~1&p)wZ=F>H}$sE%uT~Q-m${ zk~pAf&44#->qOcPX^E|}P82G_R#_*+ho~!IOLO0|trs^OwA=QIu>42r8hXEHdsR$! z&~DpnVwoGh6!w*(nw( z!hW_(oL7WBYZrW;6fMix)46bBCYC$M%xXl`Ub`+ie2<9#L=yMDZTm!2JBY=8D!T8p z>*~es7b%}g`ZB~E`-NEOpyoiypGln_XJ%iDxejU{dr;Ik$P)Xt5c{R&{Dcwk>)pu? zvc-NQ$`utQbdEhP_BqIEoD`-5GF(wYkJxWTilUdi`o^9X<_^K(I@)Y5UUMuD*!X13A*sKU=#adBAbip0xkXmtB5zZmCLL8^` zO!Ip$j;$5`idOYr2^6g8I6OP@r^r!+zkBefSV(li9p|3AV!hJgZ!p{yI~3t>Fx(aU z6lL^&HTExYT2W!|w}37aU2w-aiy7@s$h_e17cirO=z=@WV46`)RKlJc`eCeQM4d#- z683#yO)NLYD2nL4KUNrzDDrFiRjiv)tmy4nc<;nGOoVN8Jl4bT|CVZ(uFgD-YzL)V zJdK48+Gg=KY82sH!)Bw_LFpE=Vf#+TGSO?BrI9f~Q8K)X?_kH2vT8&~w_-3%xC?}HXS&eF?!}q77jf;vfy=Y_eB}}h`ovMer zPl;se(REUH>M-?a(~QrE`NG5?d!+N8@v)TWj?3>{v$^XPj5M zGkTCmTpeA!QE&xITgqA+8jCk}Dq8F|IxOB8`Looen^uQ+suQlWQK58`jS;+a9bFgW zYo+S}x-NBeU5)cf_Y#z$YaLxT!~Ba(Z!ze)8J&q_izU?Q$%#f9>CR}_Vu{8jN$w?s zyGJC}X_Z9dn$lsbB-TkU(SVofsO%k$8?pE5Y)ZG@ZG2>1U6N6ubWKGyOR5uRvT;i3 z27oTPj;@z+Rp~wjU9UR2-bUAJGB0qqkM*vj>tifYx@-FAus+6NMd{E+DTdFlGF)fV z=&-&X zO4$~}xJTFDC{?<1qK{{P<9Q;PmjT8O87KYDLb_3_2wOAVF#U#kk@G~l(Vj?-xb!+X zbLuc>=|+^aq!E{H%vFRVF1=2!(~X6sD`ngW@<=x}63Nk+QO7dFcw1R+)<*CQ;{cH? z!@xTAnQ2@movhDHqwy_SpE$Q>*2%R~hq=x){G}z$Zka}*BFuHBF@Z>?msuyhEMuXv z#5&6|Ucc>3FRM;^P93I~Wo(z0lpfqpzC+DwCU<$5lT$XWA={|

l%61=YJV7MahrxA9wll1en#IH(9~aIkTVNTxp6xUFkl#F|CD9N)Q1@D?mAN+Vk8pD)Q8kb-KoRW zhZrf+l2RXHR4BsKht#RFA;xmjm9lLx9_s3HjO{MEoI2rhjblpphFdF^YuqK0y*2k9 zOOL;>45jS0hL-qMv2~s(<84lPzt5=-sFm`QCitbr!~}a-4!;L$5Bqm+48_^9V6-{f z8QlY0)OG6=vtT8Z3cR`lHk-PjO?eth>5~}o_wMWQ_*KUb!<|~EkAPo}#V=N-_C_t1 z>+f=iWw-l(pM>r`JuuEED9`u%$P#t+MjH<(5qys$66H7P7Vx$xR6V=;W4qLCg=zWr6gf-JKsVak^MEDd%!~YG-mvvG_7V8l>r?iJ zFshS#-S&87*hk^xQk-RFV+_g4&7svwnxfCdG}OvgxCI{v=HP?=YZB0%9D{BdkF1$5 zqU}DMtqZx=ElZ6t)U6+9ExHJUDGMhIPo<+!2_TY@Pdk zro#w@@48a|{D0wgt$EBFS9x~zm${OCUgjT12WKTiuw1?TQDQ&j>}eRA8rxeR-SM&L z#+s4yjIMlStD)rV)oy4r3~GQg*)Fc`P-r_S`vA0Yt+)R-Zu|hC%p2U~fpn#NbD-1h zF~I5WlVJ+L$j8w=MN|znHH8E>f8@) zTvL}mG9IV2ubZwVb!uJvd|kKfQL>)bI96Ucb3&Z7GRoCWmKtq1t$p@YPx`yg%+hBy z*T(guArCjDcYqdyytKCZ1P-7=qhEU1;K%dn`0UgYq% zk761B{Zh6s_6nVKvSMt1-w)yb`+ZsrC3~q|>pD7m!+yiwn$lmk6uNb4N7uF0Ziy|Z z*I9G_&tbV5oBtHQ951rx%Th=w>rlE~wKASKDzDRBH_z|`E>Jotad*LKr(`dM>+Zrv zeNV>Iuosq2j#;@Yz+INkFb1JwaQfT#U~(rWV~}Bc40P75^pSIvv&YtrQ}$A)*1l^> zr;+kcvEdE@`W~#>u-DDPeD2A)*GHDr)#jgkWZ(NYmaaDUrzm}Jzs=RSaJnIf)bsE4 z5v(56@ZXK2`$yLQKOaA6N6!4IHM>I35zGSXwZX2@KJcIOgKL)D%gI?wO4;J}P`JC3 zHrcR}+Dow*_6hLh1k?k5sR5-M?Vzeg-RpKOk+j79Vcq?nTqC4b_NDvXa_1w{m0IU~ z!quF1lxFENnzjDP-359P?0W;SM+HH93HBwd@&;Q;JHr>#Q2Qs9PPXQpT=ba&mO9(r z8cWxQcE4HBCpp^!^QXq{4aLa^zWV0~3*V>ff|gApvCd^EnTnLVAw|1?f2vhiAI!6+ zLb>|OcwBv4b0t?*ncL^uVhpb9i)%kmjNniYS_8C!m$5(!m^U~pBOlim{5S3&qA;vX zQN|`)O1g39AorPdrE4geXIW$al%fypRXA$|EpA`GWBA^d(hwY%(TIOo`Xa3`#>#?=31oVJ$ebJ(S%GSAZTpYr^_^_Trz)>{J@S)8uQ zVRnUdVzier$gtO2p%3m!?Bmzf(zPvI<8*b)>jk-oky2h~;d)nh z#+KvVbq=>*A)@7STIpoif0Fmd`GqHjmHU(XwT$M&QLwAj*>lj}1dVsOQ|0ij7WBs+ zBIu;Wpx@z#>)8OTjpP95tmv9gnbyDek-3srwXz1J``+9Nb>)lx@YN?;Tko~8@48)6 z|NGefHOdl|2IBzto@%Y>z3N=;%y)H`op5%TX=jhhicQkiNDgEcdZeOnETxqdZ;XK6QuQ7S`f%bMw zxoXQ8T-_Mfo{F@WdAr|6`bha9q{Z1Z2n*kKq}}_yC9;=JrYPIpbsr+#u0F1{gz>|7 zfhiT4BA!XQre)vH{F`*|joDsrt|f9_1HxCUGB7Q?9+Yd7PBV{S55ugkF;`2cTc>@a zU{@RuKoSUt=rrG-UiMaM`DVu zGvR#lL1|ybDE=-$^5vUuil?S>EpUjlRFJ5o5O0Qv2L(hK@aJKQriE|5_>PF zP&%8}57)AnT4SF5sHaJ7N*k<=6S1i6EPLR;i2t9$-oGnwJu_@dttnRl*ONne^>+;R z%<^1Or?uF=>rM}|w;g;L*|Bre)ru^`;x5|0SCKnv+`ZdRu%%X>W}{oi|L^Kh)-ayk z*-t9ue1$u3PAB9#?cweF2RRDxdZF%VlDrDO|2$k?L7?PpJ6wIki59r!b;1A368+CT z=l@PC>&jVUvaVcf{(r7LS%DQ$Yf{SkXl3#QXHdGdp&%J6g-{4^|Q zE91~DrE9wXbRz0{f+}`+M#uPC_2SeTOmi^E*5C6t3`|9fh?#+p7YyOiP+sJ+g$Mrsf>)nJk)LvMh_ErA=o`5$0 zu2(qgM`yBzWnC4I!1!IS3YWv`WA}NMP9c;eOX-%^)H0M@L8QAEtO)RRPO=^TSpZ@!Vej1AAzz~3deDnFFE z%0FqPjjN^9+WqUX`OK5Gf&cF@ANcD7e_OCn_#XiO-(&u)lNJazZCM2T_kjQJvG%}0 z>}{~>q$R@N{;Zug2y}x$H;B2x|M~F$DK;4V27}*V@EZ(%gTXHc;>`iS9M&BE&xij{ zu~87)C~%Jg_jquR2lsezPXybEU^@|PCxYKZ@S6;AP6ofp5a(p@n+$$az;6opO##0t z;5P;Qrh(ry@S6sH)4*>U_)Q1D>EJgV{HBB7bntU$_*P*A`%E(! z{{B!2`0N5VzO_1oe&u}%eaq#H{>jL5?2LX1zQr*CY?x-%Uh?n&nVx3WCa~(J4CKiC zCfXUj&&VL{d6sCifcvwot{_*y`%h=|lKy?Psg%Q6l*75~s^1iCA;eY&65X0MWaM&^ z8?+hpixVTEbYBBdX zutpePSo#T4V^2lpP2c^#A2c%ek*kLJ%8k+qNBD}Zz>;ac2c zIVbz}`zlI0eQ)^q&i+RTQ-nG`9@^o1Pc0eCy6_z{)T@p3wvbNw%kX8$3C3fEmmr0& zppFko*{%^Zta$AYeUmJPDL0mfp7TZJ>*(di-=;t3+hd-Y`&*Rl1n|p^x4|j4Mvi&K zS0&*eLhTIPP-ZVYBWPHE3A9>!sGE{@XF~*@h$W?Wa9P(FuEiBWB#{XYH!| zJFNxde(K+C{dClepz-w||8t7J^0VLfON{*2B>lH+e6#E)S%&ZJv9DyYH($?U2}cB0 z8k`*~jSr^y)lRjzrpo^TT4}TKJN26*E7b4Qz9aX6W@-0W{L(vq;}9)*J90nYxX)Ty z^Uc71byoXLf#=nmWj6;Nvie#_;LVmo;C^4uDqr?)gR|1`5kHZVe1ecm!GEdg65y@X zS7yJbeu)wCA~^q%{i5-QwtKRFCtqCJ3C`D%4!;3=JLc?7>PhSWP5M_hTlkXf=cFZH zw9cA5EXOi#JL-5~VA!IZe4+D&E=9=mjZ)*yvh6wht@Bsn`_PJCfO}r;FFP{Vu+GP? z^FD`CHRKkXou@6y%`vk}x8=TJU5>l%Z&>^dgRzprd)B98uZ8bRP2bNQYrI>wC}$Gr z`*W+z7l-c!emb^D9WEgchi?VSdHyj|^Y;6`-&&nF1)Tc4&EVj@a?tyXc@nZlaHUl` zLFH3A!4@j*)2EI+^6#kiQ>|tB4G07Kr@>!}ZZP=k+zkfrks5y1YYxh=G=C}5+zk4$ zQNjEZK{nINh28KsmUKmyUc1TRhOoW7& zlBYqR4?4DfZ(&So5tFjTq%Qk?XV1U9aJ%sL`=+e#^lg_|#pbwG(P1&;qm_Q7d2`dw zVdr5*t5E03N*9xQ#qd?)`-erP1&H{CFW{MqXsG8D*RrU8-jwHu?KUa>E|#)gA-LP* zSNr!M>$c}yEcsp|`CcRWUMwZQLP~grky?6E(TylW zPtg@po`)pgo&NXm4aSGe+w*TyyZsBs`LcKVuUYwxqTAtHq;5C!He6kFv7`_+_&v`( z=5N;BhkQ9tuaLQOv9!j;Qg^N?O~w_*sYm~<=soqu=!wOwg)%NSzIOC-&}Ga2hScbL zv($_0)Xw7F$ZJ>e%`zWvmNajcFxw@}cB#d7soh;tySt=z&mq<)#gqot@E47X8ViT- zF<)3a8u%UHgA#X-nV3Hf^x~RDIeqf|zRl`Ne0S zW%T6b8XuYdl8;KZOWFF=&KdRj@2NOucb)&oUbb8T$MDX>IA0UPEjSmnjchn@b!=zDFCcn5?Wkkwff~@AZ7(YRnC8IvkxtNP< zPc!?>j{}z%_L-L)GsU1Z3yqrOqjcJ-o>?`;nB?O(4XG_u`9G1_VVO5KJvb`gJZ$YR zfV}7YiHyme@`b#eieKs5srYq1rZC@}4@)O>B_H-MBamh|#iwBa;$INGp6Su#HJg`Y1iJVjc#Mq0Q=S~y?A z%#)PonOv7Yg4~{B+=sGtkIl(qIq&mj7bnNw=ertT1ZqGEJBKZm^p{Esr6$+(Qi)q? zQns{7YHd=^HYwXFl5dCP+aa;qq~vW9H-_-{kK1GXGIXoIP10#Ixe}!%ukDi8b~_f+ zFE)RM73ww7f6g=CEt@y~1N7P+D|oTVx8N=|Us@Cye~pyw8uQ-9%f{bm zzGFmy@8|9Y@)r8d@IBwS#^l}gn~`#bnuk8!hn{+;@a6Hlee?0PWdpMGz432}X7UNJ ztl}<&+z0Jtf7$$sDKb-v(QZZ9%WzeF(4;=_ph?|e9%^($#iOXvJr&QGe?IaTqnx<8#93Oj9TCVV>YnCmd1;5!g41Dc2Yz6k z1N_iBANYxN5fJa70xkcQz-<4wfcgIGfJOcrfu;UEz%u`>z_Egr{yRY*E_k&6UeHqn zr~7{dx<+ue|6$Pc{Eq_{_@4nb_@4tV7F_E8HRu)o-vZnG`+)2Ge*~W5{|j(~{~ch5 z{{vu`|07_`|NnqJe&1o)D(%k(Zu1uaxBG_!clbvE&-0H3e%U_(c(MOT;HCb_z$^UI zf#3Ak03Vb($AC)%PXkv3 z*aB^VXMyVizXF~TcnP>6@CvXa@EWiy@CGmzcpKOgcpsP!d( z4zTqu4zTqu4Y2jD2(Ycb8DLvo6JTrX3a~Y946rqB3a~Y94zM+T5MXQE6<}-JE3NUM zw8ma(jYp+5o{-jfMq1-pX^rQlHGU(l@jGdaebO4QNo)LBTH`Hgjd!IrK9JV? zX$_Ul*08eK8rj)wjr?r3#@HOzr80+gIXs7TIXY+6gi4hM`7_PN67`Q+(_n{FvuS;+ z08Um%1FO~Xz`5#+zdT;8)o$R);4F|7>IF9l?hxE1xL0tWpfZ?arQia=4T3ua zcM0wl+$X3^2`{)nu)z!?g$+XQ5ZooWS8$)8@<}Yg1%ev{!@l3DS7z@JdY9l{!F__t zl30QZ1UCro5ZooWS8$)8@=JKZ1%mZ{reE)WU%fGVgK%~T?h?Gg|1nCwSLl6$Doauj zTp+kXaEIV7!M%d}1XV!73oa1cAh<(tm*8H(eS#`m!V6BwP9gUR*$=2+&t4#$I^om_ zXM=D;!U+jyhj7jj&N;%_C7iv2`vg^vq%XKYus(+^utDe@g69fnm(Y6!_X)n5!}6$H zrr^sZT`BZLp%(~UFZ2eX!$R*6`dp!R34Mdmdxd^P=zT)JDzwUz^z$Trp(hHxKG3cX9{8-(5~^dmy=6Z%!5RlcO3FX;O3 zT;c2z&Mx8HAe_Czc|_=aLcc1sDv-PiBrl;W3z*JC;nWL;1v?5jN6r=c2Ej)JUln{! ze0_yXXQE)eU|8^6!5ai05qwq9H%!6{)(h?}A!nbUDwR?RE)d)xxI=K4pfy@%?gWP1 zA(%5`lX_>iv4|XF5l7|(p(hAkCv=_AA)!M;pCj}+LhlxOx6ls>{gBZ6h2AgphLf58 zu2YG71rOiKl2o26oGXa?1l5(KD+Lz_ZV=odxJz)a;66e14GAx}KyZWL4#8c5dv~#q z_6hE~UUIyNoXVT;L|zL7cL?qh+$*?GP~E~Xm4XWdcM0wl+$X4Rl`w+41osLqxQ+Y` zf;$9v3GUULJLtPhaG#*MQ_>OKa5w24f_nw`3927TEWy2kmG_XdKyZWL4#8cTbFZW$ zxL0tWpt_IzO2Gw!8w7UOxIu8Q;66e1 zBMBq8Krl-g+4&Q*lt253!?V=g1*HF2aKzzwt5PX-rrM=$RliiPs5hXOPr%-Cxv>rQ zmphDy4Z|!oN1I2Pv&?#PyZIIK3j8|KJ?3NP&&`+3H%-59q;IBgsc)^X-Pi3)`L6VR z+joO+kMB0$eZE(H@Ay9Q!5I46D()$a>uRx%F4;Q!B@hH=g}R`)B#*`J4Rf z{ipdi`jh@`{NoWR!t*9GnkJQ8>^@OtJAc?$hkbw8!^55) z_S<1&iw-L~x@ck1wxSD*t}nW+=;5L#ik>Tav*^R3V~X2~&nUjB_y@&L6#udKo#La1 z*A8zTe(Lb<;oF9Parh;}?-~B1;ZF^JZupDC|1|s`!?R1uOQw`GmYh8q~ytxpO^fq7{c^PcDs@UR?U^ z((jZ$SNcNftEGP_eYf<((yS51Bc_a)F=FnBrV%SftQ)a;#91RQ7;*oIM@PIg;`I^l zj>sB0Z{(Vhr;O|vnHafcWoq6 zkGg!+wWD4b_424UM!h@gqftd=6=hS(jw@SIwyNx;vQSxPS-R|NW!IM7SoR-fkC#1P z_EOnvW&c(7QCV?$S@|*LHRTJ+mzA$8KefEO{H*e?mVdYWmhwBx?=Rn5{&@LM%YRw^ zQu&|D-!K2LJa6>K(G{bQ96fdPywMG#myTXF`lQjFqq|3^N1r!(*XWx@-#PlB(Z3%3 z;b?2jurcGu95beNO#PT8V^)qibbUvimW@k|+dl5nal6JnKJJ}ypN`8J zKWzNi@kfkr93LOQb^IOU?;Zcp_@~CdF#fgipN{ueh68=0aHU?|TH6h5T7~N=>h_7m zr-be+BwgM@Jn0nTHo>z>XW+~oZw#ma&V6%%`S@R{hN+`ekvdup$G*Q57qUmF#cHHl zqDH9|I0@$Y^hwaXV``jAs|vLZG0s*K)WtX>zXH1WmFjTyO?8C26X(^BAeEo0N$M9k z5q|;af!*PN>%2=qz z8}+dBHNaBPs8$<`RM=?38S!H7{?(briE4+jR9$E+QqgUNxY*DuvO8sc0!hPjy^Zmd`Cvz-^<*sXlHD@QV6M;OV32+q|3@D<+;hYcjC##Oc7UWpjXU9ZmlE zbBPx&X9_cgbKZDzPMmxKaOzC*ADuxwb7BLqaZWSvi0T&L!(-ckx>RGPo&>se1mo%w z9wucj5}Y;dGzr-b{J6docGx+4XXX>{sv;JxCSE>FXlc(`lS%7V)ulS3>SA!_Z(#bm7w*fu z4D@wVzX5zM@GaoI*~I1?;?qHv^JgvB0q>r9BXDBn9$?{#Z2v!$(D%HPnac;$NNfJ{ zQrgRk$p88(;$ManuM)m)vFwpL<=epDAieNU>E+*!WDE4Iyc_uYi3~G&HSxu1?1f`W zna-!Rf`+??gj*$Oc zN6y2N!V6N)(`p_C=d_xqfInaNEb#6X&ja;nIdwh5H_mwp_$MjDLTP{P``fkqz~3V{ zb_qjHuX!E#wG}MkEhoMStX%vqut>_;)c!r@cPQbf&Rv0fEP%Z!8QHqiPPcxb|X_r zO{xVQ%Q*@3tntiO_vRBp=Bvkm?(x4>vqmdqH0rv4a2&(vkuXkXmTm_8du%T8;Jz16!~uqSZzb!fb3d(S8R*k$+JGOdJQ?`YlbB|< z%$nP!O@1+su_nrl>k$6ZQr6;987Cu0kp7Lx)qJ5pkuhI)0{MC@U0+GM_*kNzM>>V| zG7{#<3_7kYgj~EWvq$ELZj*bYWpvz+%a~60x=w`m=C0H9=Jkw}UzhVhWjkvuXGi@h zOjFM$J)ZYgk>j1$J7%+G(n~fW-@fUafsZZQ3fz9|S->huL5Jy(8TyRyb(l*hoQp84 zPP-8JPZBUVdJEd#am(`#{AGw=KA zG<9m%i$wkJr+M+j>odKeOQpx&jmvKW|F7e21?n;kmb3+;IjlPEE`;gMV~=Z%;>EFC zgLKLri#Z1LtUp8Oq~K{a_k*uzwH3E8v(>HE zaByw|n$WpR!1;ky3eN376Z`%V;M`%21m{kmskTF3hgIJy1Ltm_iTjV`z%N2~H}KV~ zF`&mbnM4cr5r2>L6~;i@DiH5stI41* z0h;PkH5GUnw0l!s4&C0wZzNU2_X?ni9YHPVZvgRbF%$~?+Bnd}$@v`Mx1jf%>S}d7 z@EUaje6IzXs@SLl4u|%S_jiG&D#Z@KR3o7On`$Jqe-rzICBQOh|E4<9XaOE=tOQOn zT7k!4H(;vC##-QXV?ENT0-9=uaWd#?pow$IQ$g1P@s%SZ2y8S$z(qzF*knY2i;YfT zvk?WJXlw#5!JfiYON|6@8TJ*XT5hC(E!ba}ILF)yT#0)Urdnm332Zga0=5}v16Ld8 z0M{7j0@oT}0Sg#CQ_)qdDb29KOb1Lu)=CQyp<36#e zE;OrwUomTe7n!qw7n^f{Up40fzh)i}yu>^Kc&S+jyv(czUT!u5ziu`GufT0%j6-t? z@Ehhb;8kV|@SEmJ;7+p@_$_la@M?1{@EUVH@LKa^;J3|Ff!CQq;4U)++--(|*P9XG zt!5``aT^fdV=$w@+s#ej+yTV95oR~=E;9kn-9Qt+Esk5+_!aTZpzk$Ppzi~k>VC5q z^aDUsJ!ozP{UadWDl_{){}^bhz2=#~hs?8p51VI${|L~;O^S0s{{(2N$INpxzN>+web)lV_^tzv_3Z|Z^WA{B|-ycEm24aNx z{sj64ps8;3y#e|=KvR9!_a^A?0Zp~X_gCQkzIT8R_}&Bl#P>e%G2edyANTzO_=N8x z;FG?OflvAV1$^4~Dey&~VVd|AM<4LFK0okxz5wv|z8v7ozC7R`eFebReZzo%^5H(K z`m?VD_=ax;@Grhmz`yy*O+&p8G}Q;bF`)koXsW;a#)19^&{QA#DnNe(G}S+S6F`3q zG}R}*iJ<=lgwA3e0on(IWV4O}?FT}#S(88qfTqf}CWFoa;`?ycRM2@qQx#gr0*6^u z;1mI|7F*T8;Z`lM#F_;xwdMdvSaX46tmA=WtrLLbtUBO$s~%WkH3BQGCg23C8F-kr z1US)J20Ywq0Ulwk1RiO%0*|s*1CO@W0w-DPfyY=U11DRj0;gC(;8ZIFoMDB5)m8*p zV|4;+ttfD&wFx-O>ITlX62LjuX5evF3OLv51mfUVX}V4HO{ zaJ6+UaE)~xaILi)xX!u(xZe5>@FeSdz>}>#z_9gwV25=JT0R0a@!LJOf$jvF_+6db zfl=#D;OW-g;BNv#l3VuxyRG|xaq9u_6F}&n){j7M213uYehf@m4}p^g;(crD5zt$J z&@io^057v12VQPH3I5lCkk!`Hpsxf%R$D&>US<6p_)Y6M@OJ_stF2!GueN>#yvBL~ z{A+=jiPnptuLEKxTE7MEwtf%J^+3EeZoLBfMxd#_W9~V!*>i2v%o(FIL$W|5#wPzY3fhAjY}B8uUyc#<{;1^lTu;xqlY0%|8d&;hziK=szCV z?LPsS@Yey)@Ye&k`x}8*`I~?{{msBz{Y!v9@Gk@2=WhW%;9m)R%-;%p!oM2$GyhuP zv;OtK-}_GnzT!U>__{v`{Ifsg3*csG1oV3C+_lB;6&hWS#$6<+@rY_z{heY0H4U62z)B{2;eihM*)A9I|=w~?qsz_J&%xU z)UOe8jd}?o*Qnni(qw`xla8v zw;K2fLbj`8@+yE+@+JVM<<$bG=N$o@k#`i{v|9(?)744vJzbpw-_zA;@I75^fN!^o z!M9t*;oGf}c~!tPe7n^a@!ghJ4f>3{$=C;e86kVrR}ivCU7R-&_%(#=QI{fQkGec> z67ULy+^oKdkek)F5OTA+1|c`AZzJSpwF@CPtLqVRv$_!>d(~YC*{gntkiF`DgzQxh zB4n@nPlW7Mdl9l%J&cfB@Fmd-;1dYBMLmO%Thz}Ga*KKvA-AYsAmkSHJVKV^wB~r# zfRmo}YJ=)T=~LM8eN+7t`;m4dYMgCcX}oCs)%e)>jd_A^j&*`H+P~6&QP%xgivxAp z)j6wkdUMXp9iKNR@4~!G^XBHS$^TmZ5A!D!Tvd2);pkyE4Ey7-zYd#Iw6Q2r{Bm*S z@N0&DXZWqd=a$?t;^>j@j;tGX$EYVpb&h#!%m-s8jGa98w6R|qd->RjRgGUZK0W@z@jJ)=$N0*M(<*MOc%ju{cgeCWVm1b-Xx*NML_{6+D1I{r3c?;gWn zH)cj0e+it1^{9pD>3Y})>d_00IB8pi{yY&qbt3EmC&B`7BJRB}S7+ewOoh+s;NJvw z0lusVi?;nd%6`_W?=B@jWxLN-$KdN2Mc8dW+DQK0Hvb-ZmZ>N0=hHU-=l1hA@+?w+ zlXyky13Ui5Ci5*)1vyNwNDZ@}7ue4W?PpW&qm6e#5C56U^Cj_YHeUBP8&+1caTxw; zvMRx^QMYB);PzvUx-jrVg!!j=RsKKCALoAoe$7Th@fXxlBNpY}I=b0-dvpP$b%FKF zm@g>)%^r7=_3`*U)@v0OT8=l4b78B=!(RbK{=@rRDIuTC9Qu8~4!D<9( z?TJOxizA_qNODam)*B&zrX8_9k=PWCNYGhe&7TttR?V0m1R3s%gg3cqwP!r$hl9a} zXsRa`>Z^~1QmI)Id?0tm^eUz@kX<_@ch->H>KQ|&Fl$Ke>>;^T)kCE)V@PhbaKo`g zDl#9HojGKnSwnJXYcASuMh!EJ#-r)FR712gl1eiz%^lbjRkI}UK=y3SMPfpPlaWw5 z(i%yzyX)ylB$?)raff79&8TIe!inylSR^f#)0}z_r&_`cEK60*knCB)?H7F}vq#7TH*B;J|s@&>9;^z^kQyc|Z;62Z%5mJ9pRk(8IY zHW^Jv265{X@pvSRQSMftE*y^Z^y9QAQO|HF)sM-nmxWTBqVdipkv?w%%-(JcB%cmN zvboom3)59Pu_}`4L4uLi zbP~n3#kwost5oaax+uk??9B+q(bgLMSr( z_cWM8^gp<%L9Gp@)7l^pB(~r+KP5#PG;bihHdLuaz40&}OQZ2kk&dO&RC;-$BLYTq zW4ssgBGewEYh`bwm(RLz8r?zf`a~>-0jXUSO`&8oC0>nNC_F;(j#wlq32pAhP)PUb zKsHY&4%x~O%ob0#3~*$YS9U!H<>G{d*~l4Mr9#QhssnXqm8x$&eBS)o!C)*A4#iSc ziYxZ2)Rrn0OcLkK?+ykRMdP7ZtglM7B~~}b)73LT=x0+TtqFS&%s}h1Gx5ZsM;w|wG>D@DQGY}w9K4Yqp&yy2l8}}z*Bkz&v}tl zIMfr7wx>(CeT|c84RZq@9cK?(uGvt!X4I;A8>8_Kt#pYRR;z-+)^rGxtS*@h^)*9t zXzS~Vv_{W}9AB%JH6X_3-b7mG1qW71QSR6twaPB(vW{AN*i_Bbg~T(OS{=t&prGn# zj<4DnuAVb{<`9Jfb5PJ3)wmNjFUm}2N~^WBw)Xb)B$DY=^NKAqReLf-O;cz+7-vba z)oqJr>z-|nhx+yHoX^rz5uhy@?QRT(yQE>@o*8*1m&)Xk_~ zR9977J7@Nc+J=R-3mfZa*EKZGXjoV^qh@+t-Rwp6a~h`C&zxN|r)Ey$?0O`!EYZ;$ zi_BN^RwScaApV=F1$Cp#(dLPGLj=nVG-WA$bAv5sLCENAt#58tElX5uUn(8xp4Qv~ z1syWAHxdl0HPMh-kqmWqha@alb0IvdyGlZydfmYucj;HF<0;*w5m5zHb6i#^Nhlak zEK4LKLT}~zE7a0NXC|A>Qk3D;^+3(XddONig=tO+X_tRhFILR%$TUc>C?wz+5_Vd1 z#tG3n4P&;Y{d5RYiHO;dNo!STtI)xuO*A64bl<{6N1x_*FxT!>IFXD++ZEaw!=*me zvoMxuSF0i&(Iiq`0=*AwTst~9EX}n%tn7s|jA6K(B0d^+8r+rXDHJR&UJFAh1PF$; z{(;J-TA_jnBOTcW1)vkcJJ~190qrlkhH7>6EX;LV<3jPgtDzE2Lx*-1F6qq!t6Gw- ztz=5O6pfs#?F)WUws6sDk8w~|~2XjLjm}d1`YY%aC(jM~6Zg z6-OMhi*#@r^+dv0ct9^tq%qw!y%cI^#)0)SlEmr@l|qu{7^r6<;ikm*x`P}Rj%QG2 zU&bXBv(so!vAyjC8sk(I52l;08?qHzxS=wTl>ysvv}K1waey|)LOq@c(Dks+Nie7*oy<2y-Ogr)U2=82*Nx{XIdYJlwOa^1 z3E>ti$SUaT5KCBvRddSYhq2D)dgD{tYnpub7w70%`w!_V& zS|L3_GLcX+vM7suh4MIRh;3GkO6kBMU&{KE9lm#i^URK5lGvnPzZ-%FFRf--paYkwFlwtnn0*@ zB@=NEYjr$??Oh@%tYDPcLjlEed1Px-FP_0pViyELB)KRWiFGJZ9pd`g3ZqolqGX~Q z^GG~|(UM#Uoh9Y<(`}3Cs)8HQzL;GKizpuy0cs&MH7Vp05|B6%S}eq|IvJHGD!VAr zD-k#&m_uh$7;OoT1P(z=3*9o3mTSaAtvn8|c~1qqGN!)F%4w(36iM4uuv=__k}4)j zIF!`$-Jv;WgvoYZ0XyB+gdHN|fIecg+akya7QJwU;uS)_4H{m=T?4ce(%0VoAT(D8 z#|4jp`y)HVAU0Lj%+B7PcFl2YM<69t^F~Kxw??&lb-de_=$gaIEKksnRDE2?uzsKu z!Eb9#^zu1xeswUI()8+{&Ljqlj)VQA?urnnuZ-$?^3b%4F>-`v;*H5e5u0sLh2wHSx;Q2Ezvvy*y|o=CMyq*X-HNcUQlxMGE#0X-oeH~K==TA(;H_u zV2J^_INcqy$u5^%ophMJ8Hyq6(vWxUz3E6}JQLd{8QUfi+ollPrdXSn9*GppNMnbQ z&>jr4EVQkzQ#Y1P3Rl}u>@m2^c4agXhXJ+4Avw9k?jl_(ZRRjCjp#6#1A4e$Al<41 zLO9MQPBxu7W}7BBezC$V4aGZqp-AfDadjX+y|8Ipv>PLw$;Ms?8bz6JOC*+J?;25I zY{O7Dk%oG=s@#n$eB-T=w9S`!ruXYgv}KxFQeB}<6dxP0;JWUPgiD7+wRPQ%aqLpJ zBoIq;n)JrN?0Cyk!pragd!n)u1}J+ z4uzO{FT`Zf-%!ay-K5(R4T)Y7_O40R85Y-NaieZ?5R)#hIyQ$Tmo3EF5Ds5-Jh4Q1 z+`+A`Ut0nKt`mtf;v%SrB1nXQ;!LGkXl!jVw6+JWYOQ0o;w#!}TSDmIMka!#GZ8~e zfy78mCGcDtO{eh)c3|t2?gPafm&1%DISN4zB)8C_0SSdM8|oHHA2hY}P;t#f(3>2` z>2U@1O6~Xrq3tEb5lqNdQ|P8hTArf#(YV$xc!m+gfJ$auh?Jp&aaMsPXZqrx1jslf zrm%xuNM0yg@#1b`5e<15W%fqU(aAi!bREK02(@~oS#~Op@}!x1-ibEbFO-L)gRDTe z_Y2`N>;O>A`Ul7`Fg3!Pv|nbS?H3ddQHV8jqtua2)QW1Lx>VvL_Wr?UrLb3lUEj5@ zql;~?U`oewR3XffrL<^LEu#G?js-HAvfa#uLtQ-C5gCV!dSOdRXh;@U5bK#uGHgp+ zcL%Jn5xq+m%8rB8R-D1G-X)3yLdg~r;!J9hAv8p8I}>V30H8oby!Mx6uugMciy&uRE&sWo#O}T-r>ybV-zqZl2VYUK_%$i8d!`0vy8if@Hcj$!2fn z;T-wcBFnQamZD@6VZR81mwtN8ik=T+aD8tqO|C?TfeXSmo_3hQR4Rr7Zj5#|$1zP| zm5qdA-I~@)E|x^BLjA^~u$E)4YBQC)xeyOFvk*gN*xVUM1?!n6y`lWc$qP;U8Cn^q5EJNnlviI z5LR6$EWP@-Q^t$R0h=Ympo1qIG^k~mI_-?Ji8IMAhc0PGzGV11%3waa(T=IN5>iKZ zE1{i?3|$P}ABVW1HpA0BJx;U@Kr0iDDbTZoPt&V8L{74A1zSu>yFqqS{OB|&q6VHy z=-sNvykQS@p5%GCdejf(LQ00v^0E;{;?NrgMH|RL9lhz=DGb4K5*=iKQFfeG5z2$T zp){eV2J=OQ8qz21p3^H~Lbf%(&G~$;J*7WtN&|6_|RT?S(n*(DUY3VSg!U z>2c1MKwUGt728c^Up&GNA?*SQ)(TsYma&c_m~tretXPI|ETD~K+Qq0aC~AlFvL>~i z633!AD#FSpM@FjGezF8?4l$vlJ32DkJ9HX*f~xR9o~L(QFQl|4nu_)dUI)_~H0Hjx zD6~p9XiGbl&9sM;3COK@cPP2Z4eShv#nFzANZjRTPB~nbEI~MTSP@BfN5#70`Z+o1 zMWr_>2ONXF8*qG=jEeH=dSdu;elJ5^B1xCMC>H8WxlY}blJ2TVEVNB1kH1p_Or?%q zs8P;7S~(s(8AwJuyF6ZyVWDn0{TnJcc8c*n*Tde8upG#{J<5Y@k1rhTz&;WKSA)=I9Te&FFNs z8sfMbbP-ge&P`;7EN(I}GzIyi3F_>1aoeHgkJy5=FLqF{TEsiu1rqwL#}V~9M2*++ zmPO;57MQjd@H;3tAXnVL=j^OEM)8iEOG*F5Reju+oe}hixqz6^16TW#dN0 zGkU~H#x|=3uw6q-|ODw2DPH zRx@f_B-e(L@|4589&+RyPpDvux8lg-ex6$F%o;tS(QJdA(XitwV~t1e+Q8T0@CV#2 zQs@xdizRG<7~-9iOz4cTwK>$LxcQSw1?2$8HO>^Hr6dzi+m#qqVm^rP_1cF46O~H`@CzlwU9j76cepH+7Fs_kZD9 zYy=r<18*#@jds}H`nXZ|mRx3ZBXLAFz+B@Ak{P!iK2N$lPUdM}#IPeCuoMup2e?sb z7XtTM`X|M_25@@xJr6stAcbQj>A1Q>+w|T)Wpi31_WdJFd~L3=J!}c&L=5ZwyW>PU zqP05iE)*P77Hf;mK>)`urkl}SiWC%D+~(n`grmP?gc|`BBCusJi?BxZwMR(6RS;vi4#vat7UHOy?wcFa4=7427A)9m&`Of)zFN? z?$eAr7#k$ja5SZ9Tw%k}9z*6U}x@QW4yf5^?4R@6V9xYb%74xR@lwLC==n zw95#>GUK|igH4ErC8bK~(n*3aC`#uvlYmmz8{y%|S`296XkA*`t}fPzVVdshreuXo zhLRR`dDMek7ZoUpw2IbS$v{)cQxlHHVY`wN4##*M3A~$#MT>SH&NAqFJ$*v(+AKD2 zP_1bd#KE9yiAx^b$kcO3EBUxC+4pDvttBflwtoCU&@3z^(1otPzm9QW5(c1y3 z1f+ttO?KfT1mzKsrEW-clcdzONpc&vLF2I9(8MGN&h~T^EmkCoO;R}8q%CUHi3x

{h8kWmG1t@^P$;7%(o2nXb{gza;F?uJWKQfxWU9w*zL@dnYtgaVEUO%glR+ zK{@NtjNp|P4nMfX&O$82_KQ%?F@vrSwT&iBIokz=#p7zu$REdFRG*B)x!XI<(>~H2 zUbn1-Zu{xWU3O!lk)%-_d7BaF9^)$7T++mGVrV0!oNe`9o{n`72*#`qAsCy>xmC-B zjoOWL*B~ZzCw=)g6O3{d>p{lNwCZ_^;ZYi3P4}jH5N}ut?5LhNY24}Bn(6;yNmton~PP-(lV0G6ADBf3K?D5N2JKY1af#)F} zAD*W{k?i$`#scAN)IA|Fne^tx!@~auCNDMJYWs?qtqD9|Wa{crLAJ@H=Zz9+VjBU<@{+8GZ zYs`Q^2lREaqt@ug!7|&jQR_l3bCB?Gz3f*du*PZ=zv}~$;7%%+?bYX9u4rtolOqtS zjmyAl4^ia0GYg5!a_Zx9U=48ER)iMhS}!hZXHFbMMq>pUz;%!82m3Wqn;aNHj-L9b zjBwtJm_1Z3yaXpF>wKb((OF#Bv?*Kck*c+;Hw~%R*^tJVon-qDtDZmfZ# z*;N>P!$Gub%52;Yi;3`7_Tj!TMfaBVRh<1gM>zciqj2>3i;(OzEo;Py>UdlyMUn}9 zZI?zr9<64`szKJ3?whbi|@)rkJ^mCRu~b*lIVG(kDHl+n;S=}Lpj|Hdv$1Q zJwA5;6*38B68GqmN-MB*Z3nemU1%PnI+Wb1vmLDDD*L?LW?}bs zNH41LRir@yZLJASjivD*31-wi-0AQH?HT+M_Q6BiSwM=})DS5+Gg&Xf2M*`v)Gy>v z)zqeUJ1O0UvY~Q{BjX%{9|kei7U63_LU!p#D_*IsPxkes6RbR5=0pj%L>U&B=?>tr zylH5UW-TQ$Dd;J-uoos^q-Prrv|SZbALk}Xyd;8gPa6U>0lGO+xf65E3Mt!%YsSz% zVMNy^2q!FdS-f_eRQk?yOOiAX12xr_;5{ZyJwF&{)hQkX(2%FUV@PT~xNPREP8{{^p+;6f| z5Iq<%*)sDqOoN;PpDdTJlXYLDer`0M4CEg_!r?G(2S)kfB#kuy5d?THMs(b!1S}!W!ivm;Uv2TWv~50JgYi%wbnBAOKtc zpaJZ?4bobM7p<6`zI|^ej`#0%CM*-*#uu084Q{8=8loXwp~S8{oT5GhLkG4xI&@nC zW@(2ZCUe^p$5B`zx8m)jl#p^niX6=1&xUdP z-Qmi~iTEdRAq%JISexW6pcJfg!azdZd{=P*TThZfY&{oUw*4+qN}nIYl;26addhi? zSvLnImGe$WN((91sg)Ou3w$j^Pj@|0WCH3@n{w`-J5CH@hir98XNoZu2smssks?J- z#)18*&1P$@f)O+&*=P#yncD=6?(o5psl4PS?**h_+oy7CJ3K>EmwKonrxPFAhbxvH zQ(nN}JsPx)9*Ww*GV1qLbwUn}O%-2aP0@Ty)dhnOF4*0q`Bp`+2q2}TemYavHlIw> zdK+E<>*?y7HsDJYcKZ)JJW#+GBq-#kNB7B8J=viRf>spt<8V zB}u~VJ&+#Z6Z0NfkFk}k@t7U%%Lg-9AA^J1q z@_$`Q$45JAVmXv!O-cTmY?nOP8IavLc4f2M)E3R4pSJC=;bB&Wl?POtC^gs=| z3F8J0?xTCSoJSs~K349>!OG+)+4e0i)w(r`n<3~WXD!B?ugA#ilrjzpQGL2^ntN+A|BpSD?Hjx zMqzG$pTJ@0wOTImIV?7#uCPqKjFm>u@1cF{_81s}NpatgGId3^X^K3(VA}EL+4`du$#uoJPJy}%SWBPq)_YM7lZ636H}b z`_)Wsd*H%@ils1RaX6r~UD!UAL~u?fceXeTT$9))+opQFua1jf&a~q)ip|tOE*e+T z!HUe}SX6!rK_4u^#KNz=;FC}p4zk&Zqn@-~jHZaE2z0nzJwzAFdj}!NXU_%(4S+?D zJpJ}5K15I#>*)%$gTvBfMuq)GuIrW!qaII?Ok&=|C1~d=gHsZZ7|Lucpeav-;%Dc8 zYpx{m7qrP>LbJ3&Co%y6R^UWCvQd|ctGGCVGd;s_G_x_jC5kUhNC11>d3)QwV&m=ggKa14^$UmU5L2>)QL&mo?eoQTHlYWJ z?QB0eVhj=1EYsOctr4k5ISBiRjVA7g64H`z2U z3CNBSHeL5Nnav7mAAOMw3u!WqZ*ISxkN@_+v8FG|+oME|E7Zb}a}`W~_JHe!Z7!B@ z*a0TC+V+#otuZO{&_2ATH$;Tylx?+e(&nC&wr8(t+rF(nm@S5IF?kBVKO)DsBrZBGund_TxT$dolzs4aG3A9^o+nISius^hgig=Pg(rTXou?7 z1RK6KUWrd84=?falB4?w}tTG4zZ5N`0zM`m<5g(G;vsoaSy?xkBLik zR$E(J(d+evBN6A$1lPWB-!&GCrnGI(;n{U}oK0x#ts%S*sAD+aLDMfy$c=T!xTPH| zJgy($2BQ?*ChfNrY?pn-5z10pK1oHhg|hr#NvkX3#|&^^kHJVvAkdjR zB5C?~)ek2GRw0}vV6*QqQUe*@G3o@;pCH6>9#;&c>>e{X90L?Mo`0-llK` zN?w(8Cy-dg9G-orDx%%c1bd+6;;N>0ySq+@<8D43jy~Pj;Y0i+tE$6brl7XRwHW;R zu!G=j7=HayZ}ElV@M@&NRX&S}O&4Azah>$#1rwK}g^hl<3%flPY=^yiW(`RO=2HiO zz9HW#Acw0g?t}AVrcS_Rxa*E#N+aa=b=WDJ#YTn|cxEOH7xZ`@>L2OB_y73|uFKr0pS10-2u)#qJk}d;?7=hG9?2 zxAa==&&6RcjdZEv55-@`uh!Al6ym*i1mp_^b#XlPi;E=Xl>**4R%@_vl{(-HZn$u0 zJ67`ko3Q!bQ(e46Ga%i;)|+IpSK;Madn!5K9u=z#1v&NK1ycU^hda;Vwb~N;|9uImfsb+nqZAZ;GY;`~5W*%Y&&2V7# z5euhX0Ii{9Sk3q#Yb=IW3up*YP(x+Ggcio%nAp}Qze^El!Y_cd;YXeq<5`DaXi+&U z@S7j4okSWP)i(n7tPwe+ zar+mc5_ldBY7$CsG}pl&t2h2vq85023(szZg;fxx>jdStRXbcvr4sGq&9j5;P{)*d zkPb^4#;?0nqCCtEuhJj~ov)kLz;;IpCp07NEz%~eAA5o^*#k~*9kc|sPA_kh_UJjZ zT$@%)yY!;$EPWEOoN@4P<-U^jAFA(qkS6<|HD+sg``fMA5bY5tP`UUGUgfVO9(6Q& zY@V907N{xs&DrDdn>~l&7i&+(@AjO4-#t20orRPUZUjeu9RKwQ(Cx1BID!)BQ_c~N zQhX8xvxMVMj~gTJFr+aZsT_u%8N#2R>8o)ZNyz~tVyYd|DAqCNBIh$z72+yCX_a@f z9pY4^b*xfTb)=v^o+wes9;NSggGNek82$o{{F3qp#nram$YGY zaFoJMEfhyDM`8$Ra4zB{LLhEOi|Z)-{!j`thclmYK)cDoY?$h#<&1>E>6{_$k>H4L zYPQqI8yYBUFUBk94d;_C(MIIJIm8m_nadH-E#r*+LmtwZpj+`c^yaa4J06GU47BH& z_yuCL>af*_(HiB`YB_`;R=d)(Fj`ykP6;kjmeJ zU(KS_Wvg@4a|Wp5I;6&soJqo&yBy_@W8BmsSJskk$XxXd*ZtIt5F5p(+vYQlF@kX` zMJ}`6y7p?!Do`Ai>?x;KwqL~x#AhEy@#MT2;9tHBrHG0DRLEalie98J#QfC6Whf2HOF6RwPmXcQXPtKp@=N6{LYQ9g&=w_JSC~!<@?q~Ll`3bASZ=08 znY`>*DQlWmW z&XI_cO<*haA!S{1H>OUNWoJE-BHcR>gW*((Q+7`sk5~pj-K#8t6QT|+NZGMf=Qqyf zyQ3q7)Y;Bzt{z{kab;$d=#sJR^*G^p7^0jN{p-wiH!AgFFQ5(VQNIy6F)eU%noutG znW|U{qX&4~ys%@Fh_g=XP-+-wH9ndRe_6G1y6pT^o0N z-%-hdrR8c%N!)*3=iKpX$yirsIb(`(sL8jZjMTs=O_;&~^p8BPqsY2?d^5sooqgyv zo_dCsIjq0C)~C3#2M<>M4wQwX!PQN;cClQn3n{%XAxF0=dy;Zb>vTwe%t_#I207Xc zdyeA^ej(<~xPx~sTDx*r7gr1AEM=c^v{Hh*`gRC8v)vtC06ENca&UD^>Puc(;-<{{ zI4y~|oAr2LuWAXAl-cFf&5buuFRsKm=a^tk*;1UfdR=8)j#|B+p`Tk~~A(XBlysF7oWSV^>v5XZ`3fUQBwb=?tUD04EEgYJy04PF~yUH1LqfF;8%h;`f+Jf+Q-oqIs3JAV%pxlQUBGSS_St? z*rTjGkVJ}$95`6p>h@=e^$h1oK#HLQr8soSK1U9d4;H8YdTXpdP-#B9e*IG#R8M~u zc2g>Pp!EO!+I~iUQx8^a>Z4w(fU)U+u3Q7t9@G+v|GB(|ny-WMt8K>UriQC`0D9F+ z%Q)0?#k&W}tZs9hIiPnkoGVToXD6h!EhpVf%qH*r94v`gKKAzDIm`L!=rWkKlMdE{ z-rcdW<3d)kzl!kL1J;{F|3;gF%4!2eR0M}(02_Lcx(W-X^Nz26o}wIl%=|ZsgZVbF zVTP{6!P@$eMp^iOBB#%o)3)?=v|MWA)O;z$Y479;M7>duRB9(f>8aFlxsQrdPs7|` zs6$DS79Q$gh}Fo|UE7zqPtvs31e`gN0^i+h>6MK8hm_73@FyBC#k6-75EQG0iMi3MSB z?lhPb^HP(uhi6vxu;{w?jDux?@m|r&)IFZbX$d;;2PNS zIGs02-2VOMwkqvvj&+d@GIZY5TlIMY?FHUu@aAs}$iMpkI{zl8{{3|)XEqGf)Yz@g z-a)smy^Cpa(>a*dJ}^DESDpNAeQ)kUX+NEx%SRq z?OK_2IvzEzI4t(ZAswx==YrDvJ?@1xpSE<(_f7`ZLHpA-tWtH-YApT#)*h;VOP~!- z)p^n;;n>J~kw3>OXNEHibgBFIn4ZXkg@Hbo5KDNsPMuZ=XRoQ(ba%df{+-I8y3~3l zWDvE$=K}1$XM1uV62zZA>C@I?Sbb~R`;JsR*p0u&&lwWvb`die` z@XT!$a$4n3_H6@CFFCJTkPmH)oKw!3UPP>L964^U9@@^Ze-6%^VID0Q6I|7J!nH*x zNqrI}GVM`%1kiFv$vbdlqa3oTX$_1*pX;PvNwt)8(-=I8*q3%~?EE$d+q?9cbs{jE;V7alCE|ZB2DTur<9qCugitqB=V*sddZHwf;P*as5%% z9HUNOYTJraCPyB4Wh<>xdR#M(caPnx<>wwlVe3 zC^T4i+#5~oxkE2S{}JGvUqT-3IM-1Fy@@%Z5g(aH#uNY)m?8Z2U+Nv<<1Qx@5>5x| z;j80P)u*A5sc2QtQF8R+L;*KYbhvT2TxADCN||J3$;V?_B9|7Bg;7XvW@z ze2oY^zhiPmJUfkep?O%Id1zdztF&lpr*-opmJ&Xd*SgMXx?DXXu_92f6xNUZN z^T7R4g>5)D!tJOhdrRyEV#;rYn?1|w)QOFK*`g8)8my?7!|`P zEnKDi^VW$i->*&~ckFYCXSt{vv(&ntY%Oh$;Ao|5V7b}GPK!Ey6+1`P z&4|J6pQ>_lcYJ6U8hF&n?G@*=sJxkjL^sBP#|XEctdBiQa6HY+V;mXXxMZUh`k`i) z4kI(GeCTNmYrRu<_8t3KOG~|$4PLjjiouHjJW{6QK#Ij${^$!E9G$9|2izQ^Tagn! zEd@o+>EA=UaOYfaKMHJ< z>P=Vg8yIKcaS-Ak&-nD?O2Dl-cUV*a;!B-7i@!Jadwcu+}=X6WOqL+WkOn7!@#xm)H`XG{)k zhyUN+`3Ko`RCoTq`{vDkKjz(;cSo|Mct(CkV=RLt%SM1r5LmI~NQGs~NHS7IEFMV{ zX5x`$>jyBz+PtSYwPC?od$D)zY#>m<#L6aBIE5-Wi#HIU3Ic551aFa4vgKr*T9bs0 zlh{Gob+Y^Uo^$)%_eLXQi2q2cGSc+Dw{Q39)90K%=k)2mJq7pw5qPe;-Z&(0ND{HW zw;8vz=6X1`c&_Fnp*LT%EyzBv)aZ9f4hwqyT5I zjZta*{Bru@%>zo&`W-;)k2nk8{vDVKUT9Jy1?;ZZDZcXI{_@~2xjWmA0!8($NZ&Ui zxzp?lTn5_TM$P`M+x_^4siRMk2e7@oA0xRH z@{xpru6-C@ay@(4!lY8F&G*7-xY@Lf0VJQ#MSh9*Yx>{IL@ZIJZ$IBGj_(~7I$Inf z2nyN1cSG*B1ht|`(fPHOnocen{Jlx93`qz_Djej!2`vT_K%2d9jfyrEN{|#uHZ&50 z+NU%-ygj%W{jg8-oFDo+#%pN`sxKd=`PFn=D78UEx>@_*591dL=3&B_ z>-pVj|NMRdGoyc!@a?>N6Te6J=Xb7HFOPnd8hgkqHH5MDMegR?BDK4V{)z^@7FQ{E zE3}YuRBw83CiO<&O-Rq|=AC-fd)xB23g#$$!X((>hc5(f29kXrbcOd!_0)US8r(gk zHj;UtyFoHzO&1Fpego=0+Xg-?xF|EbtqEeqKa#$042IqB?sSW$LNg( ztZ|jtN?$c?mt-)Nf9=!~7>ipf>%HprVTJOh&Zn}$?a$|XKa+#0rD@-Tv#7750e;@w zhBzj-hc6NuQ|O93zcpo3<>Ctsf9t%DMyIG#a6GE@>Wylptgr6`j`}#<3SkPlXvW=9 z52uD*$kC{4n;_RwLz0}!cA0$v1oND~zQSIjt{<2K}N7tih(N9EVx zUcHtnjZ?{WcYy3Y7CoeiWi_R@)ql?k`(<2?Xzi9j>+o&LVvJo&7vGw?mnEG0t#w$G zdgUO7ar8<;^zi}2ioSe}_P#QG?+;4?`_k>uTGK31T()wtEsj>~#%9Sk(J2M`YEgGv z`U2VK^Ue7yUP@}^$C#X58G3M`8vPa)-1uVsrB;E%c=7!Wy)Q7QFWgG-l~uF&zG+Z~ zG}6O{OZgsya%qbqxhxO9af$73AuL--p53p|n3sGTHC8A%vB0}SP*j@Czt;6>_j@TR zOcb`*0kxMZ={|^iI)Y+5U+r5Er~k{ZCk>&I5-3`P@_n2ezI)#cH8{VBarzd%v_A-b z`U*<-vsn1I3_T4zPT0t+WxEAS?P)$z#G(h#Yp$Sy+Z2vIhVh5 z$)0b`SDE>I?YtUcCa2JO(MmKayQRLlKenFsbmsxU62AH%hSx7D-9H5%gj~8}=@yH5 zbl4vet=R*$B;EP~Sd`OJyT*%ul`d>#)5FY0qchsF7_;vUV-bE$_w(gL>HBo&^?GZy zpVuY(3b>z3{q+W6M%OOJN|LbDELo$({TmF;Xw})GO>W|c1$a9ibor50I>GIno2UxkC!Ctu(`1cX6gMvQp zmyh5RX(qe4WuRSg6MXXpEm@tVzv{hF?f#f%yBBU#*q*TYwlFQUl}3{0zrK0HZIJA? zEQNot0PL2=lO#d?)Ql~h;-Oj0;&=J%cvW$Ni%xIxlUsCdOEkH-pBlg7q;^$DmrA=R zeC_9<%;eTo9+}2GvXJj%UCPF3r>X}>bE|x*;ynH9Zi`plqUNikHMy<(VImK&Hf`p2 z`tqE+#;fVOFyfxl8lmEe%G_bGGJR*R%@Nwi&DY;-e{pGu8p7KBaxGsM+Y_Q>!OBF< zgHZK7KoNDLn)+uNhA+uwnSCpbW(rYFGs45@yr?0{I2KXjG8H9?(NQW9ZQo64je$dg znaCF;rzwhxt4E-tS`w|U?%naNAm7RhN6|lO9DyIIuP^Ui_e=vrxr%3~|2kzyRMuv+ z0FRhjjwjm_8q(7_o=p#kAA%d3fKxnyLGMYcqfv9NPY23o$~tQ<239=v<0y+MyKuJ z0C{f#xwbdJYVIE>BW!PG^xXs}kF)70P)`0x!I9~KI^s^?h~_)Je%7?V)Hxza4;-0> zTLG?nZn-=)C9_2<@<9sO)ELQIsm%nq$W4C@eJ@nhkSvE9bD>7!b}?$Y_Q_?Zsf`dt z%UbFz;3z5|`lm5a^iSj5`bYdjdQ;;>5-Sg@;EAFD1#J0t1?-ar?Apm5w1t5(ZpXD@ zC8{liGMu9!Eg;Px+oILI%K+-&rd(KG_?1S`{r;1J@iYhl*x(~=Y%dXHQU|rdz+~n=xh-PW* z=1EJ9)J^t~Qrk{{>cfgN^K=42lw6-*cNxx6Ly#pU!bo$*&~LYN%GJBjZ*fEVoP1(i zgZc=48#UBUPK8#1wdR-7zyS*SfEtp^sCE$eijYN3 z^-*^^J4Loi<5JL~hUPlqUhy=ISLM6jmPAKQ#qMSGv@Rt3CoXEH64hjb#1YX^(rzPR zR5_aQq&?iJwC72l{LVcO%3*Jc_w&r6L+x;}B&`G>56FOc0UycraW9_gOE5u_m1LHI4VDgY+bLNfn#k!g zieyM9%VIh;Bp0Ec(@vWS4Sphj4EtnPU{-{)xGu@lRUC~Hl?7hYIWBr*IcZ;9aG$}T zFfN?h)B#&@Fnp1MBvizYsA4=b+z%QIYXQ$jy&=au1&yg-;{`==AonJu;reV4)W{`* zdcjYar@xXFNra!QWB1TTr(0>e0DWY`Yu}SehxGwz3N%sK_fyiNu#ze$Y-jxmQ&HPz ztBT6#jWn@FDfhMDwTZIgv3d^$>Am=JbKx1#x56gv2J>m-FZ`z6zNgxLc^UA;aX(L9?pZ<6 z;{G^v2>HSz+{<$e_tMq*J+?|?RuUi%Y#n%VPD+c>M|hb18%^P{UPS#J&=_H5!W7Lsuy(2?s)Saq-5F ztS#P^ST64mEiJ}Ax^(dU5<#Cu5YFr2c@P$tD1l!;4*lV(=sf7*qci{B=6w8a1eVl= z#8gmA`B9}Ic(#*a_hi znQxRZXQolmK3e{EU}?;AQaluP{TZz&a<$hYOuwN^9hEA3$d5?3G4eb-EyHVO?^1tO-#p}fo^~8BO3WiEqDYh<%POZ> zI@%n@+O515XQJd*a7U&_-(fj&WzF5XC+^~aBPS=3XoyyZ86wwuW;#K2=k3O(p1GaR1R0pbzza+{gY#8 z-*>Q7pd8ha)2F)-i1jHD?m}x&72FZrqGq7yZHN9>(nbFggi4cu*&<+o+W z-eDg_eMy~Y@dJI$(p$#tr$Xp)5nk5F)R-0h75MEhO|N>}AC~fNT;udRTmk-ty`?u; zNdEPF`rzNpxkn=p!6n3K(c1{nAHe=cQDdiXAkh?LP;LgH`W7Ac&v$MZdaMgQOl;Hc@7S=CbV+T8TrXwlx4cX)W9d=no{^8rb4*VKfW9k5oVLT z<)L>1>sJ!;lf1g~UwALR^dOvEZld0D$xGD{B{gO>eN;<}p+MR4Tlr-{!M>?EWgED( zz3kOs?4D3$p+jM;K#9hNBvaFef_}2_J^HOFDC&k?wfT+BZEtk{RkFFC#UR?p>P z5MGdF?^!sCU12P&l^uYqxr@H9h+3M0>f2^%a&1v8wG^xpZ`Q*BNm41_z$-ZFPk^VZ zzGu?5>0MMT*Hn zQLI$GKr|Wi{yJVxE7(*5$Nl)6>`91Pqx0-wP00 z6HPqM9$aSzYhE_&j(T}zr9`yv#!c^%aF=UXhjr%dIVRD?uBz3(CaO}&VKNmR36v`E z4iP=^M^1&}ABDRh736QUf-Tt!22k#vhK|(J4t9CyUTa(~8D^et53McrKA3m)Qf(9% z1!u$gCKD_pBUgR?!fo|VJQdfZ>K1=wp}i)~^_MofZgSyTzK8k;!scC}=RO{ta!a{m zcS0|n8s+OAl3+=XxK_}8a0+3R?Kx3{@PpwHrF^XW3C*tf0`KTs&wU%LA7o9tKr~j| zX>+_4bE9U@fcg5YBtmX#C@JSwt!V`5T_L}VcEQ;WE%ou`!U=ur|2*FJ=>^5E{(<2S zKpUA2ja%E{)%#TTmBLKW!RvO{Euxg~6!1u_w2eC~PA`{H?G)3<@K5RdPGe1D)7=&S z+YlPFipxq5yHnCX@?44v33mDV-aBPI=Kpe}k$&~QrdUdrg7!U60*Ofm$7b-nb&Uu0 z9mwSa>}d9KqMAFo{#SpbwVWz~+&8_rYw3}v>4W6MLmFY)FP$YlA?>26S2-s;v!JjDbo2?gB#(_xTj7(8C44Ubfw;={q0$f}*lPlp~O% zx^4;jCq}Ye8{C3bM9JcO_P{;4)*6>DLl{_#d2(FFgu^e1pO9Q1AQG8~s`$XbxY8EIv|oDlDNt2=a*o-ox;DVz8gV zx`JE2r|6|9;Uk5zTLPaYY5kmd+0xScTRQRyWKXoa-mKEQ0=|oBB$?3JhSCszl)~WD zJ@iQwQhx`vjB8bJ?|BzX!`CNmW_!=x& z^HclJAH4nF-uW9_f9?0;-~Oea|MB0{$FrrOcBxdYkhGTTHYG2vEYIFqN{8CfxQa~h zxVMy6+mW)z^;g@n&d&@l&rX)IF~6+z%gC_cbpD8^cb2kQE_=CH^@_o)B+Ikz739_0 zaVhI=ZgsaE|)TZ zd?!x0o2*o;!wDrOE1*7EDJP}462)yCMzl3 zn;egZ67ET|&E!@m%e0rK^(0B-crvY~F=$VwlVyOV!)@AV-9jVk_UdRgZCck?M@ER% z5gpnelTD>@S`(7p>r`fcT#YM`Vq#@Ai6>V_{HNSVR4HYhZdJe4{GrZ6o%ZQSHCA`4 z>TWeDXWgyYT-BvPFF0W^TO(#YY?<$0^#N~Ra zk|s6rxC$MVXEfLj4eaJdZme_lkz}|EJt;;ymJEX!V%xeVZe5dgK41uu@kk{p(;48V z!%>;$Cej2_-W%(8lB6mL8sjFRi(Ke4LbFYz^o!_px(UVTew=_0w+(I^+(J6KA*z+t zP8mt8Wed>UevB3i*#d>rbaKMR)q_>g24|Rp@LgLW=^mhNwVI0Vsy7_3NSdi|aWIai z9*5}Uy`uX>If`O_(?(M3Co+7~PYdEp)cDCSnnZDpesdY|OWiMGA(_K|Y5E1xQKop<5YY`vE=x5Nq7h5$mR2ntwzO$!+0vLn zVY1OoYDoVXXq19@wO!@`elqBEqd^C)>rt7(dV2F%woprk>)B=z0aCZt(Nj@JWS{c^ zG=e<0I!`rWiPKF(HDx@MviZ8CU_aw{OygrB9zygd80Vd@l(G@QyGDa6=1oJR{kB{c zQnm9%0oaZt@H$(dNou2W1h;i#EvbNhnsuI6sRj5C21COnH7Lb}|I3oHE8qUK5yjc* zo&JAhtW-wk#SjKS9ZaRFL$#Imn5W_G%J6o?-sWj|JEF05ME{2BrR>O9(geu~AE?+lL(Da`!<;0J>1uAbyWgB)=+CTBR##wLI^ zr>4hjK+M)5^xq9-8!6CgBY$VdBNS^q4$B{#fbgm*Z7YH$(U6AqM8jccyLdI4jL=%% z0r004lN`E}v>E!yjpXG3|B^!{Lf59MqShC*vDUX`?<-2sWn0d*S^ za=QR&mL((pChI%{RHv?uF3eDrb?4H=2}SwNce1&W_7Iksar8vieXPMlnsv{%x{o6z zWS)pGl3nH}^epSXPmiKt_ik>mA*8t+ft<{IBwL0ILX)iXSL7fslNFh_vP7CHS;vSB zHDT$*gmheu9>0JEL1ne$csv>#FCj2k+3^zfM7vNT+l*18zxvmJDcz1gAn9Fv92_9% zC0e0f@;694rCSMjd5-ACKcqF!@n-{fkKe;@;iU(SIt?-Kevlhwq2jD&4nt-|+5D5m zrP@S{eXTq3co54|(@DJ34_S}}rF9lzcK3tYNPXQz05?!75m$qtLAPd7QIXE-)+F;= zmnS1|s)=e(C(&tVsEcMc7B|h@J;K=Ow&LtMh9GLnZ)G)2p(2=w+jX!*vO!I8n^LPx zRASli?kfJHD;gjRidfuIYf8ylp5(x_HX$S8>y`37Kh&sWN%`Sk&L3LDpYj`{WnGfK zxQIqd#hs+Gc0Nvnb-M569KqZ;?7HX%^22))jYJw zb}Bi=Af|^%Iu<1zs~fyuHHVN|xVOkAzAaYr)XIb*-u)ELPS(XekfztbHjmb_QB9kN z5Ri$QM(FA81ip*3;bgj+c>)7R9yy$UmO&S1^I(JX%+TLg2QT!h9*jTPfxI3%6>WF` z?@bc(DC#QP#}JdVE#_wXLb-h^x32{;Wb=K-klkW!$|gME#kSNk+H3msaST|ELgSP+E?$)H;2CcKX3lY;6AzepVH+QS%g+-KjEi zDIwmH){`Md9riA+;x2S+<}Q%IsFZ{H5vAQ4UV?lG%V+M=1T`L-^nH@agsceQq#$$8 zPl}@k*Y@pqWx}5z{oGbqjudnlO(!V+gB; zgkaWQFj0%L(`OJR{9L2@Y|RwHdM1mb@^@gwER4~F61JTFHLi68&u*E|NW5n8@@b?e z3fU}Vsv`J^;re7vHlNK_Tek=lLWmZ~u?}3wA0?-_wiMc)yh(MIs6tVzMP~wGdd%#B z2{+mNSj5;xoKG_YdTfjuC@i#@FmoM%*~d*>-s)aOw=_GB?0%e?qvtUxfoi=1P`|_^ z6_!B&O|>;^FtWlPWbARdky%$RRW8HNxn0Wc&h9qFd+!J{X67xe(@(Tcf4*)HUuvEH zimUtXjEVfcmYy49)OypM=d#Xo=D@ySt%S0a;RwG@QS5 ztV`88`l>sPEO)2PgU8ll0?{np{rtz1hA1*Rr=PMpwT9qx5K|7)iLAR9+T+r9_hOV_ zyPC&8x7pw-iB|`W(dh&XsjAT^=N^7DXu;_<$tt9rM_!m$jb-OkSoR{I9-*X zZViw8BHmIPJ1Xzm-T)g-@Iwi%^Wu^&3G$X+pp&;`CsxB1(ehp?0-ga>{8R6xDQ*$H zR7PIs>$ ztowOJ`s2_Eg+C)CU!a?2i*6B1TBm>iqGSvf$0&MQXGYcO7#6%mHJ-)cu(#%7=d(?f zo0DswR?RU7CC!-hGm<2@Re;JmALC(o!oX#nPspd%RH}22Wa~(NV>vHstha6(AvM3d zb6@K=Ob8%8Btofw&G4>!7t^g#8p%2@LSevhgO*_Od=HjR;Q1v3F(xNuWLDxuJ-lBnDir=F!H4J$!K?%Sp+#$ofjKzX{kS!pMah!({+0Z!y(w1 zMD|50rkag_gqbfgBo91l8Uz@-xDCJC24%<6`z(FH7d@H5dFdb*rXX1{i8`RGwfYbzv4P!<=i%X8#|X7-EKBZm56_ zseKnuG_RMR6hQ_8M;rC2<$F zjPQjFBXMGWOn~GW;A%o^2nwymYTOc<=7%Cokc0)~(i_da{FR=VT7WPmk#RIhwbrgc z3}wkHF$gFg$^%Et(%3l5??dv9Em!yGk-q>iY}UPBQE3Q1 zr@_?uw45wa2YT61CEkpd?TIU$a%y=Omn9YG+v_h1@l3sZ|X*@>!5Bb56O97BDigZnEa-o{uuy^ni?$9fnc_{*s z1F#J9@>LDOSZ&2Ob^=!8@u3k-LB7EaG?^nNK+T8v{RVBQ8UBfv?i)VjnP6tUI19l6 z@$^Kpj2cg)tVm&tVJ#m{_ZSg6WBsTaWjoK{Dxgg${EYjjl2I$mfJ#cWmV_9E zQdKknR-BQSfH1U}1P}i7;62O0r`eQALblVU+GiXx$eCMB*pE^#&1r~hEiU`r}l(;`-Vmg7`du?(E z1Tq=!POXwBh}lqp%8X=p$}7!bIhZD<+b>FNx=NWqQY)X+l*yUXc|u0d z#+@JnOm4VS%(yvbgO+$MbKZGug^gf~U8;~}dc4=)w`1b%h^VRjrvhr@(I{WPDYiC_ zI19fjB4Uqfr1J=MTHmKRdVV(4)r~R)(h%JwFU+Q2gk{l}3`^D( zxZ%GZOmFQnf3*7~F%o6#r>a4Q&DWv`>wT=q!OT6D?z5C>1Rhg1mk`=P#hit#Gg`w0 z%^AXTmd+tDydyBIQiS8r@;>X{hn#ps&}mh(lqXWf&+ z5q4x<0{-T7lgg!YGykVfX&CvZu)_1c-OKwnc?QekRNZgUe;5;0&?u`Tv?eGxS*ySC z{sXtJ+Vu1XIv?Y_(`cv@MGvqoU^ph>`R%*6Tony5HQ@1z7611G|L}$Tzx&#+e(+DG zfA_7G42JFma> z3(w#A$Or!6yMOzuZ+Y);f9o6f-2eQ@lYjGbfB1zjeCC?XBfqucf3)BC`BxVw3a#Vx z9i1xlD)yxL$wJ!bt}~cx!j^uNNVdOHf0b+Ks_1o5{A@Y?b~*mDa{TAz_%F)wcgpeq zF2{daj-M;Xe^rkEx*Y#aIsR_B6qN|&m#U>&sXins4zcDM4GF6uJc@{{xP%ebTI>)A zM??C0WT>k5QHSKP?q-yHS;<$F{Em{ZD*2j{uPga)O4iZOq4i2OD7jL}MkQA%xmwBV zl-#G}ekK22$%mCZpyWX%|3S%rRPvCLhn4)ilK-US7nFQN$w!s^qLPm(`M8qjmAs(j zZwv`MkNtD!-)Ri=pj3{X;NtKK$k+=BlW6F2C2N&jq2x76INlV(l5|&WD0S}H zy>R@*%#jVdXAYe_Hg{rS!>*ZQN9K+npF4WT@m^+;x8=l%V{->jo|swJK63of(PQ&- z2iLW4ojIoRo3GxmQUBJpuRl3|;^eWJ&3DY4JaKG#eqDRl$%FHAhu$``u;=LQGk0u0 z_{KL*zy8qc-*DBnuiG@U@tSKp_m=kT{i*K{lN;uz-~EarQ4z%B9TDcLe=>ym<@lcx zVfMrq?VdR{H$6Z1{^=8N{Dz~)j!d68F>|a`)}q^RwLIKf$NI=duFJU2X?Mmm+)R^k z4G-Nh9_E$%#dvsv`)g|`YI)6LX=V75&X?k0rP+2ji!3bj+V&U3!!=d=It``NTd;Di z8(r*rVU)YJ*IIW< z&wnHc>x#??BWLc=i3?f}P?^8*hia@VzRH|mSrN47x`5pn50~}G>_iv*V$hmZL9I8a z#9;%UZ^Pi_NZy?72XIKCfnBPH2WOo65M_7iJ^S$l=d(&ilq^%Sl0LelV>j|{h%DL4 zJOQR_v(5IT3v(+b(&0ciPczmJU3iiHrN4| zcpLL@eCC~WgQ>xS8cSPk+j#+QgoDbOsneI%GP^cf%M5dr1ZZh%UCizz^(8x{oT`$< zvfDPr-^r4$0DvRN>RPX6xJ5h*3rz*ZWL!eB>H~Rr#3k=?UEVm%)>btZJ+9H#y_9*R zE%>qRZIqH?nP?`;>9ryNTnTg->g;%HEgO;l4;)K)sm*hzYT9+hma8#A1yjGKW9(NE zb2|4E<9$#N0r{{KoC%#1oSQ&!IG<`fae=ge7OJtx#fF*Ay$#rq^RHUm*Xz)Z#ffQM z>VB#DrIAf5I%pKB>W&G{4BJY%WAZjr(jscf7TOz{Iv^T!Pyy# zKx|QA;vBKvjBuZ6t+ABl1Ssrgf_JTJ)B;kk5=>8LE0kxC8R>Rwd%FtVXt~cTcY#~h zfHf88;(K6aCVF=(dv_xS;0S3vriFBwCRnGN134?x{CO8P3w#-mZ3Isnvj~1dC#GF( z#+_%dz%KTI#6Bellz1DYbT+XrGd5_DeSoBFY7qVAS@CnRQi)dEaFCv1mmhyVyxB zrRkIBdbz-$PN<$K`u_yTHx$OQjPy>^3_(9MS3bDs{r*N_)XhSI* zRw~fkwjWY$`OXxU7uacmI%S=UN}Xqg(LNNl3Cm_SrSdqb>f~;&8Vfp~;@JgQ=p9Ju zbap@`4|vG~lysqZ)PO$9qB>p>%8oS*Ymcp?tO7|C(Gn(v-C8wbIYK`)hKjVe>|~$} zrUFffN*wbI0a;gjA$Wl&WvTG1YP*2&nOB^iC-};}(PWZ>rWItcM_?(gmUQ+x1dvXj zYr=H%%(SNboO;roPBC8iBU+Z;PY!~7*0fo7Z+3$65PutaD$kQ*rg?_6F~N8B>~4gf z6(%%#$I0;=c+wjlrKY>LINT1yjuwF{Y;XceHxE-4;ekEufvZ->M0$KbHk%3KPf(_H zn;L1|rXYxvpxnI?a(WL|@_8x66&^qy1 zgLIGZ@+}j2cRH4TpQR5d?VhxnTrlRu_IZ*Tr!RoF3u_bkptj+vFAcN+Yugz1=Pf~R zQLpo`7LDjU8qGAG7%WhlQdofpB#zoR$lTf#Q(7L1*qon4{!IW_Xz9%S3q{1^vN;8! zC&E#Zm%w~`LF*yQBE_Cku!N7nCx+j$)gVG?)Tja^5yv199Og%6h>I;>v9^VI5K*=CWQ=>rY59;13qxB1Am~r07=2yT zOQC!l%gcK4jF9B|MQxVhk-M7qOsIhF(S|iifEtf%BcQ%ufP!BASv}x?T332w<9QRH zvj(|q64!mqA09Iqd0Y=n6|C43{^p5MvF-B{@a8Pn$+U@QOUU>0S(hooSFBLyoR{6N z=IEL$N$oDsz`#9|SWocP2rr-1LfJX<7P5UQHjn)c{qkVly;n-ZHb0Dw~{PbC)_u?L&~OYmxV1jz-OyYL25#!skDva%HLtv@4&C=8rB zzYV=@>utB97wifq-D+_2Si;(R^2Bo-LJHBPvYcFg@g5@yU~iS zvqEdF&?9y~Mk_WVyoN?ZxSOz76RGv8CqCXqCjWq*t(KxHfxReNP5e3{jP;IV(|6u< z^p0)sJ2Z2rB3XN8j~#vQal+bBLR>eBmX)H>_s$$Ve)Q1oGbh#`pPfF&fkRtM{FU1F z^=sO5NA8@TIWlv{35$ZYkN$Z3#OzG_9Ww`aTlw~#$Bv#jdg$nU`_TLxrP|YX9Bv<< zIrg5JW1N9z@K=_i@kQ`A9G>S$wyeZKtS6>79GnN#?9BAxD7v&1P3)PSJKjDrb7J=B z;r4sy=I7f7XWGYRjvRf@%waxs1a1GRm7<{?gmbMKGS{#kVpYND&Y5E;7M7?S-SFf) z|LE3>{>`t?{J|H#G4}o&o@)I0!RorZmi@{6pY3{Z>%;%^!$11Tx4!3|k;9uFIsC64 z{N3NH{^nPImUEv?a{B4Km6X`diUY&7mwaO_dC1Bzw(QZ{nzryFFteM z&voy*decLXA35~oEh|6!$+aK-vEx_9|NWCsmv6lMJrKVs z|K;bOI|WLS7Ft*m=?wNngE@*ggXp|`mD|qmzNgC(|9d}Amp5^LYqUFh7wNW0e+qpE z-<{vY^A6G*xYy4ULx1@XL^8N5MZdW_?p-;~%YKGPmD~Tbm4^~gb*8}$eCe$3?|1OU zwjCPCyQxUE79VApAF*hFJ~ecm;wRu#oRx7tBz@^vqSxWyCcfr|2GK*&b>v@fUq|b# z3Z2ftagiK$sK45@hE(Tg>tt&k`{(bAGlv$R-EjW#k>Rw2;s8l~tF4n{!buSNZd>1; zhchblrFz6FrugJ|>AZwH_`>WnCz2B2ev3mWNchYSDx-iU*| z2*&l`EIP)Lw*2q=ZiuettM;qyuXWg8<)Hm#)DyRKj)kAhHQ$HjOSij$Ufa3ra3BTF zjlj?u&hyr5{e2TZ*FYy*aZm*5H0|s3b$z#gJLkvfAiKl7dkwYw>$|k*1R9;Cag4I! zsQ>ITocqsAP>X?v;cT&pBP3snW(Dp}13x5Grw8Z=!+t)!TsUtw9t^@+%!v!};X13k vg$ literal 0 HcmV?d00001 diff --git a/Assets/Librairies/Websocket-sharp/websocket-sharp.dll.meta b/Assets/Librairies/Websocket-sharp/websocket-sharp.dll.meta new file mode 100644 index 0000000..c03047f --- /dev/null +++ b/Assets/Librairies/Websocket-sharp/websocket-sharp.dll.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: 3178bdd1e1cebc1428c62682d1166a1d +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/Main.unity b/Assets/Scenes/Main.unity index ce1eace..72bd44b 100644 --- a/Assets/Scenes/Main.unity +++ b/Assets/Scenes/Main.unity @@ -43,7 +43,7 @@ RenderSettings: --- !u!157 &3 LightmapSettings: m_ObjectHideFlags: 0 - serializedVersion: 11 + serializedVersion: 12 m_GIWorkflowMode: 0 m_GISettings: serializedVersion: 2 @@ -98,7 +98,7 @@ LightmapSettings: m_TrainingDataDestination: TrainingData m_LightProbeSampleCountMultiplier: 4 m_LightingDataAsset: {fileID: 0} - m_UseShadowmask: 1 + m_LightingSettings: {fileID: 46740476} --- !u!196 &4 NavMeshSettings: serializedVersion: 2 @@ -118,6 +118,8 @@ NavMeshSettings: manualTileSize: 0 tileSize: 256 accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 debug: m_Flags: 0 m_NavMeshData: {fileID: 0} @@ -173,6 +175,7 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: @@ -338,6 +341,7 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: @@ -360,6 +364,67 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 33820299} m_CullTransparentMesh: 0 +--- !u!850595691 &46740476 +LightingSettings: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Settings.lighting + serializedVersion: 2 + m_GIWorkflowMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_RealtimeEnvironmentLighting: 1 + m_BounceScale: 1 + m_AlbedoBoost: 1 + m_IndirectOutputScale: 1 + m_UsingShadowmask: 1 + m_BakeBackend: 1 + m_LightmapMaxSize: 1024 + m_BakeResolution: 10 + m_Padding: 2 + m_TextureCompression: 1 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAO: 0 + m_MixedBakeMode: 2 + m_LightmapsBakeMode: 1 + m_FilterMode: 1 + m_LightmapParameters: {fileID: 0} + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_RealtimeResolution: 2 + m_ForceWhiteAlbedo: 0 + m_ForceUpdates: 0 + m_FinalGather: 0 + m_FinalGatherRayCount: 256 + m_FinalGatherFiltering: 1 + m_PVRCulling: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 256 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_LightProbeSampleCountMultiplier: 4 + m_PVRBounces: 2 + m_PVRRussianRouletteStartBounce: 2 + m_PVREnvironmentMIS: 0 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 --- !u!1 &135095402 GameObject: m_ObjectHideFlags: 0 @@ -401,7 +466,6 @@ GameObject: m_Component: - component: {fileID: 183710614} - component: {fileID: 183710616} - - component: {fileID: 183710615} m_Layer: 0 m_Name: TMP SubMeshUI [ARIAL SDF Material + LiberationSans SDF Atlas] m_TagString: Untagged @@ -428,34 +492,6 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &183710615 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 183710613} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 058cba836c1846c3aa1c5fd2e28aea77, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_spriteAsset: {fileID: 0} - m_material: {fileID: 0} - m_sharedMaterial: {fileID: 0} - m_isDefaultMaterial: 0 - m_padding: 0 - m_canvasRenderer: {fileID: 183710616} - m_TextComponent: {fileID: 505076114} - m_materialReferenceIndex: 1 --- !u!222 &183710616 CanvasRenderer: m_ObjectHideFlags: 0 @@ -608,6 +644,76 @@ Transform: m_Father: {fileID: 683008037} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!1 &295429781 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 295429782} + - component: {fileID: 295429783} + - component: {fileID: 295429784} + m_Layer: 0 + m_Name: WebsocketManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &295429782 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 295429781} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1144076143} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &295429783 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 295429781} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 528760bd39755ab46bcb069618f0d75a, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &295429784 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 295429781} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: de034ba731ed6964794debd4fe9c0adb, type: 3} + m_Name: + m_EditorClassIdentifier: + TargetScript: {fileID: 295429783} + BarColor: {r: 0.7095246, g: 0.25943398, b: 1, a: 1} + id: + folder: + debug: 0 + targetDirectory: + sourceScene: + usePanel: 1 + usePresets: 1 + hasPresets: 0 + closePanelAtStart: 1 + currentPreset: + presetList: [] + wsServerPort: 0 --- !u!1 &386760238 GameObject: m_ObjectHideFlags: 0 @@ -855,6 +961,7 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: @@ -932,6 +1039,7 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: @@ -963,13 +1071,12 @@ MonoBehaviour: m_fontColorGradientPreset: {fileID: 0} m_spriteAsset: {fileID: 0} m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 m_overrideHtmlColors: 0 m_faceColor: serializedVersion: 2 rgba: 4294967295 - m_outlineColor: - serializedVersion: 2 - rgba: 4278190080 m_fontSize: 14 m_fontSizeBase: 14 m_fontWeight: 400 @@ -977,7 +1084,9 @@ MonoBehaviour: m_fontSizeMin: 18 m_fontSizeMax: 72 m_fontStyle: 0 - m_textAlignment: 514 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 m_characterSpacing: 1 m_wordSpacing: 0 m_lineSpacing: 2 @@ -987,10 +1096,8 @@ MonoBehaviour: m_enableWordWrapping: 1 m_wordWrappingRatios: 0.4 m_overflowMode: 0 - m_firstOverflowCharacterIndex: -1 m_linkedTextComponent: {fileID: 0} - m_isLinkedTextComponent: 0 - m_isTextTruncated: 0 + parentLinkedComponent: {fileID: 0} m_enableKerning: 1 m_enableExtraPadding: 1 checkPaddingRequired: 0 @@ -998,40 +1105,18 @@ MonoBehaviour: m_parseCtrlCharacters: 1 m_isOrthographic: 1 m_isCullingEnabled: 0 - m_ignoreRectMaskCulling: 0 - m_ignoreCulling: 1 m_horizontalMapping: 0 m_verticalMapping: 0 m_uvLineOffset: 0 m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 m_VertexBufferAutoSizeReduction: 1 - m_firstVisibleCharacter: 0 m_useMaxVisibleDescender: 1 m_pageToDisplay: 1 m_margin: {x: 0, y: 0, z: 0, w: 0} - m_textInfo: - textComponent: {fileID: 505076114} - characterCount: 52 - spriteCount: 0 - spaceCount: 5 - wordCount: 8 - linkCount: 1 - lineCount: 4 - pageCount: 1 - materialCount: 1 m_isUsingLegacyAnimationComponent: 0 m_isVolumetricText: 0 - m_spriteAnimator: {fileID: 0} m_hasFontAssetChanged: 0 - m_subTextObjects: - - {fileID: 0} - - {fileID: 183710615} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} m_baseMaterial: {fileID: 0} m_maskOffset: {x: 0, y: 0, z: 0, w: 0} --- !u!114 &505076115 @@ -1241,6 +1326,7 @@ MeshRenderer: m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -1265,6 +1351,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!64 &575826802 MeshCollider: m_ObjectHideFlags: 0 @@ -1376,6 +1463,7 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: @@ -1445,6 +1533,7 @@ MeshRenderer: m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -1469,6 +1558,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!33 &673221740 MeshFilter: m_ObjectHideFlags: 0 @@ -1587,6 +1677,7 @@ MonoBehaviour: m_PersistentCalls: m_Calls: - m_Target: {fileID: 936487853} + m_TargetAssemblyTypeName: m_MethodName: ToggleHelp m_Mode: 1 m_Arguments: @@ -1612,6 +1703,7 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 0, g: 0, b: 0, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: @@ -1691,6 +1783,7 @@ MonoBehaviour: m_PersistentCalls: m_Calls: - m_Target: {fileID: 683008038} + m_TargetAssemblyTypeName: m_MethodName: SwitchToPerspective m_Mode: 1 m_Arguments: @@ -1716,6 +1809,7 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 0, g: 0, b: 0, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: @@ -1796,6 +1890,7 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: @@ -1875,6 +1970,7 @@ MonoBehaviour: m_PersistentCalls: m_Calls: - m_Target: {fileID: 683008038} + m_TargetAssemblyTypeName: m_MethodName: SwitchToOrthographic m_Mode: 1 m_Arguments: @@ -1900,6 +1996,7 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 0, g: 0, b: 0, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: @@ -2110,6 +2207,7 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 0, g: 0, b: 0, a: 0.98039216} m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: @@ -2183,6 +2281,7 @@ Transform: m_Children: - {fileID: 18100216} - {fileID: 393421888} + - {fileID: 295429782} m_Father: {fileID: 0} m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -2310,6 +2409,7 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: @@ -2338,13 +2438,12 @@ MonoBehaviour: m_fontColorGradientPreset: {fileID: 0} m_spriteAsset: {fileID: 0} m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 m_overrideHtmlColors: 0 m_faceColor: serializedVersion: 2 rgba: 4294967295 - m_outlineColor: - serializedVersion: 2 - rgba: 4278190080 m_fontSize: 18 m_fontSizeBase: 18 m_fontWeight: 400 @@ -2352,7 +2451,9 @@ MonoBehaviour: m_fontSizeMin: 18 m_fontSizeMax: 72 m_fontStyle: 0 - m_textAlignment: 514 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 m_characterSpacing: 0 m_wordSpacing: 0 m_lineSpacing: 0 @@ -2362,10 +2463,8 @@ MonoBehaviour: m_enableWordWrapping: 1 m_wordWrappingRatios: 0.4 m_overflowMode: 0 - m_firstOverflowCharacterIndex: -1 m_linkedTextComponent: {fileID: 0} - m_isLinkedTextComponent: 0 - m_isTextTruncated: 0 + parentLinkedComponent: {fileID: 0} m_enableKerning: 1 m_enableExtraPadding: 0 checkPaddingRequired: 0 @@ -2373,40 +2472,18 @@ MonoBehaviour: m_parseCtrlCharacters: 1 m_isOrthographic: 1 m_isCullingEnabled: 0 - m_ignoreRectMaskCulling: 0 - m_ignoreCulling: 1 m_horizontalMapping: 0 m_verticalMapping: 0 m_uvLineOffset: 0 m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 m_VertexBufferAutoSizeReduction: 1 - m_firstVisibleCharacter: 0 m_useMaxVisibleDescender: 1 m_pageToDisplay: 1 m_margin: {x: 0, y: 0, z: 0, w: 0} - m_textInfo: - textComponent: {fileID: 1311473800} - characterCount: 8 - spriteCount: 0 - spaceCount: 1 - wordCount: 2 - linkCount: 0 - lineCount: 2 - pageCount: 1 - materialCount: 1 m_isUsingLegacyAnimationComponent: 0 m_isVolumetricText: 0 - m_spriteAnimator: {fileID: 0} m_hasFontAssetChanged: 0 - m_subTextObjects: - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} m_baseMaterial: {fileID: 0} m_maskOffset: {x: 0, y: 0, z: 0, w: 0} --- !u!222 &1311473801 @@ -2435,6 +2512,7 @@ MonoBehaviour: m_PersistentCalls: m_Calls: - m_Target: {fileID: 1198292585} + m_TargetAssemblyTypeName: m_MethodName: ToggleVSync m_Mode: 1 m_Arguments: @@ -2530,6 +2608,7 @@ MeshRenderer: m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -2554,6 +2633,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!33 &1321598871 MeshFilter: m_ObjectHideFlags: 0 @@ -2900,6 +2980,7 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: @@ -2928,13 +3009,12 @@ MonoBehaviour: m_fontColorGradientPreset: {fileID: 0} m_spriteAsset: {fileID: 0} m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 m_overrideHtmlColors: 0 m_faceColor: serializedVersion: 2 rgba: 4294967295 - m_outlineColor: - serializedVersion: 2 - rgba: 4278190080 m_fontSize: 18 m_fontSizeBase: 18 m_fontWeight: 400 @@ -2942,7 +3022,9 @@ MonoBehaviour: m_fontSizeMin: 18 m_fontSizeMax: 72 m_fontStyle: 0 - m_textAlignment: 514 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 m_characterSpacing: 0 m_wordSpacing: 0 m_lineSpacing: 0 @@ -2952,10 +3034,8 @@ MonoBehaviour: m_enableWordWrapping: 1 m_wordWrappingRatios: 0.4 m_overflowMode: 0 - m_firstOverflowCharacterIndex: -1 m_linkedTextComponent: {fileID: 0} - m_isLinkedTextComponent: 0 - m_isTextTruncated: 0 + parentLinkedComponent: {fileID: 0} m_enableKerning: 1 m_enableExtraPadding: 0 checkPaddingRequired: 0 @@ -2963,40 +3043,18 @@ MonoBehaviour: m_parseCtrlCharacters: 1 m_isOrthographic: 1 m_isCullingEnabled: 0 - m_ignoreRectMaskCulling: 0 - m_ignoreCulling: 1 m_horizontalMapping: 0 m_verticalMapping: 0 m_uvLineOffset: 0 m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 m_VertexBufferAutoSizeReduction: 1 - m_firstVisibleCharacter: 0 m_useMaxVisibleDescender: 1 m_pageToDisplay: 1 m_margin: {x: 0, y: 0, z: 0, w: 0} - m_textInfo: - textComponent: {fileID: 1823557313} - characterCount: 6 - spriteCount: 0 - spaceCount: 1 - wordCount: 2 - linkCount: 0 - lineCount: 2 - pageCount: 1 - materialCount: 1 m_isUsingLegacyAnimationComponent: 0 m_isVolumetricText: 0 - m_spriteAnimator: {fileID: 0} m_hasFontAssetChanged: 0 - m_subTextObjects: - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} m_baseMaterial: {fileID: 0} m_maskOffset: {x: 0, y: 0, z: 0, w: 0} --- !u!222 &1823557314 @@ -3112,6 +3170,7 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: @@ -3145,13 +3204,12 @@ MonoBehaviour: m_fontColorGradientPreset: {fileID: 0} m_spriteAsset: {fileID: 0} m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 m_overrideHtmlColors: 0 m_faceColor: serializedVersion: 2 rgba: 4294967295 - m_outlineColor: - serializedVersion: 2 - rgba: 4278190080 m_fontSize: 14 m_fontSizeBase: 14 m_fontWeight: 400 @@ -3159,7 +3217,9 @@ MonoBehaviour: m_fontSizeMin: 18 m_fontSizeMax: 72 m_fontStyle: 0 - m_textAlignment: 257 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 + m_textAlignment: 65535 m_characterSpacing: 1 m_wordSpacing: 0 m_lineSpacing: 2 @@ -3169,10 +3229,8 @@ MonoBehaviour: m_enableWordWrapping: 1 m_wordWrappingRatios: 0.4 m_overflowMode: 0 - m_firstOverflowCharacterIndex: -1 m_linkedTextComponent: {fileID: 0} - m_isLinkedTextComponent: 0 - m_isTextTruncated: 0 + parentLinkedComponent: {fileID: 0} m_enableKerning: 1 m_enableExtraPadding: 1 checkPaddingRequired: 0 @@ -3180,40 +3238,18 @@ MonoBehaviour: m_parseCtrlCharacters: 1 m_isOrthographic: 1 m_isCullingEnabled: 0 - m_ignoreRectMaskCulling: 0 - m_ignoreCulling: 1 m_horizontalMapping: 0 m_verticalMapping: 0 m_uvLineOffset: 0 m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 m_VertexBufferAutoSizeReduction: 1 - m_firstVisibleCharacter: 0 m_useMaxVisibleDescender: 1 m_pageToDisplay: 1 m_margin: {x: 0, y: 0, z: 0, w: 0} - m_textInfo: - textComponent: {fileID: 1846576922} - characterCount: 328 - spriteCount: 0 - spaceCount: 73 - wordCount: 46 - linkCount: 0 - lineCount: 21 - pageCount: 1 - materialCount: 1 m_isUsingLegacyAnimationComponent: 0 m_isVolumetricText: 0 - m_spriteAnimator: {fileID: 0} m_hasFontAssetChanged: 0 - m_subTextObjects: - - {fileID: 0} - - {fileID: 2071885446} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} m_baseMaterial: {fileID: 0} m_maskOffset: {x: 0, y: 0, z: 0, w: 0} --- !u!222 &1846576923 @@ -3296,7 +3332,6 @@ GameObject: m_Component: - component: {fileID: 2071885445} - component: {fileID: 2071885447} - - component: {fileID: 2071885446} m_Layer: 0 m_Name: TMP SubMeshUI [ARIAL SDF Material + LiberationSans SDF Atlas] m_TagString: Untagged @@ -3323,34 +3358,6 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &2071885446 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2071885444} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 058cba836c1846c3aa1c5fd2e28aea77, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_spriteAsset: {fileID: 0} - m_material: {fileID: 0} - m_sharedMaterial: {fileID: 0} - m_isDefaultMaterial: 0 - m_padding: 0 - m_canvasRenderer: {fileID: 2071885447} - m_TextComponent: {fileID: 1846576922} - m_materialReferenceIndex: 1 --- !u!222 &2071885447 CanvasRenderer: m_ObjectHideFlags: 0 @@ -3447,6 +3454,7 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: diff --git a/Assets/Scripts/AugmentaSimulation/PointManager.cs b/Assets/Scripts/AugmentaSimulation/PointManager.cs index 58cdbdf..fae7f19 100644 --- a/Assets/Scripts/AugmentaSimulation/PointManager.cs +++ b/Assets/Scripts/AugmentaSimulation/PointManager.cs @@ -715,6 +715,9 @@ public void SendAugmentaMessage(AugmentaMessageType messageType, GameObject obj if (mute) return; + // Craft and send a message that contains the event + extra info + WebsocketManager.activeManager.SendAugmentaMessage(CreateAugmentaMessageJSON(messageType,obj)); + switch (ProtocolVersionManager.protocolVersion) { case ProtocolVersionManager.AugmentaProtocolVersion.V1: OSCManager.activeManager.SendAugmentaMessage(CreateAugmentaMessageV1(messageType, obj)); @@ -1018,4 +1021,49 @@ private float ClampAngle(float angle) { return angle % 360.0f; } + + #region Websocket + + public String CreateAugmentaMessageJSON(AugmentaMessageType messageType, GameObject obj = null) { + + switch (messageType) { + case AugmentaMessageType.AugmentaObjectEnter: + return "{\n\"object\": {\n\"enter\": " + CreateAugmentaMessageJSONData(obj) + "\n}\n}"; + case AugmentaMessageType.AugmentaObjectUpdate: + return "{\n\"object\": {\n\"update\": " + CreateAugmentaMessageJSONData(obj) + "\n}\n}"; + case AugmentaMessageType.AugmentaObjectLeave: + return "{\n\"object\": {\n\"leave\": " + CreateAugmentaMessageJSONData(obj) + "\n}\n}"; + case AugmentaMessageType.SceneUpdated: + return CreateAugmentaMessageJSONScene(); + default: + Debug.Log("Unsupported message type " + messageType.ToString()); + return String.Empty; + } + } + + private String CreateAugmentaMessageJSONData(GameObject obj = null) { + var behaviour = obj.GetComponent(); + float pointX = 0.5f + behaviour.transform.position.x / width; + float pointY = 0.5f - behaviour.transform.position.z / height; + float rotation = behaviour.point.transform.localRotation.eulerAngles.z >= 0 ? behaviour.point.transform.localRotation.eulerAngles.z : behaviour.point.transform.localRotation.eulerAngles.z + 360.0f; + + return "{\n\"frame\":" + _frameCounter + ",\n\"id\":" + behaviour.id + + ",\n\"oid\":" + behaviour.oid + ",\n\"age\":" + behaviour.ageInSeconds + + ",\n\"centroid\": {\n\"x\":" + pointX + ",\n\"y\":" + pointY + "\n}" + + ",\n\"velocity\": {\n\"x\":" + (-behaviour.normalizedVelocity.x) + ",\n\"y\":" + (-behaviour.normalizedVelocity.z) + "\n}" + + ",\n\"orientation\":" + behaviour.orientation + + ",\n\"boundingRect\": {\n\"x\":" + pointX + ",\n\"y\":" + pointY + + ",\n\"width\":" + (behaviour.size.x / width) + ",\n\"height\":" + (behaviour.size.y / height) + ",\n\"rotation\": " + rotation + + "\n},\n\"height\" :" + behaviour.size.z + + ",\n\"extra\": {\n\"frame\": " + _frameCounter + ",\"id\": " + behaviour.id + ",\"oid\": " + behaviour.oid + + ",\n\"highest\": {\n\"x\": " + pointX + ",\n\"y\": " + pointY + "\n}" + + ",\n\"distance\": " + Vector3.Distance(camera.transform.position, behaviour.transform.position) + ",\"reflectivity\": " + behaviour.pointColor.grayscale + "\n}\n}"; + } + + private String CreateAugmentaMessageJSONScene() { + return "{\n\"scene\" : {\n\"frame\": " + _frameCounter + ",\n\"objectCount\" : " + _pointsCount + + ",\n\"scene\" : {\n\"width\" : " + width + ",\n\"height\" : " + height + "\n}\n}\n}"; + } + + #endregion } diff --git a/Assets/Scripts/AugmentaSimulation/VideoOutputManager.cs b/Assets/Scripts/AugmentaSimulation/VideoOutputManager.cs index d2a99c8..e2525a4 100644 --- a/Assets/Scripts/AugmentaSimulation/VideoOutputManager.cs +++ b/Assets/Scripts/AugmentaSimulation/VideoOutputManager.cs @@ -85,6 +85,12 @@ void SendFusionMessage() { fusionMessage.Append(resolution.y); OSCManager.activeManager.SendAugmentaMessage(fusionMessage); + + WebsocketManager.activeManager.SendAugmentaMessage( + "{\n\"fusion\": {\n\"textureOffset\": {\n\"x\": " + offset.x + ",\n\"y\": " + offset.y + + "\n},\n\"textureBounds\": {\n\"x\": " + size.x + ",\n\"y\": " + size.y + + "\n},\n\"targetOutSize\": {\n\"x\": " + resolution.x + ",\n\"y\": " + resolution.y + "\n}\n}\n}" + ); } public void UpdateVideoOutput() { diff --git a/Assets/Scripts/Controllables/WebsocketManagerControllable.cs b/Assets/Scripts/Controllables/WebsocketManagerControllable.cs new file mode 100644 index 0000000..4ff8af8 --- /dev/null +++ b/Assets/Scripts/Controllables/WebsocketManagerControllable.cs @@ -0,0 +1,12 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class WebsocketManagerControllable : Controllable +{ + + [Header("WEBSOCKET SETTINGS")] + [OSCProperty] + public int wsServerPort; + +} diff --git a/Assets/Scripts/Controllables/WebsocketManagerControllable.cs.meta b/Assets/Scripts/Controllables/WebsocketManagerControllable.cs.meta new file mode 100644 index 0000000..53083fd --- /dev/null +++ b/Assets/Scripts/Controllables/WebsocketManagerControllable.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: de034ba731ed6964794debd4fe9c0adb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Network/WebsocketManager.cs b/Assets/Scripts/Network/WebsocketManager.cs new file mode 100644 index 0000000..98d5c33 --- /dev/null +++ b/Assets/Scripts/Network/WebsocketManager.cs @@ -0,0 +1,100 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using System; +using System.Threading; +using WebSocketSharp; +using WebSocketSharp.Server; + +public class WebsocketManager : MonoBehaviour +{ + #region Augmenta Service + + // Declare Augmenta service for the websocket-sharp library + public class AugmentaService : WebSocketBehavior + { + protected override void OnMessage (MessageEventArgs e) { + //if we receive a message with the server prefix it will be broadcasted to all connected clients + if (e.IsText && e.Data.StartsWith(serverPrefix)) { + Sessions.Broadcast(e.Data.Substring(serverPrefix.Length)); + } + } + } + #endregion + + #region Websocket Manager + + public static WebsocketManager activeManager; + + [Header("Output settings")] + private int _wsServerPort = 8080; + public int wsServerPort { + get { return _wsServerPort; } + set { + _wsServerPort = value; + CreateWebsocketServer(); + } + } + + private bool _isInitialized = false; + + private WebSocketServer websocketServer; + + private WebSocket _websocketClient; // client used in this class to publish the augmenta data + + private static String _serverPrefix = "{\"_server_data_\":{}},"; // used to distinguish messages comming from the server, should not break json data + public static String serverPrefix { + get { return _serverPrefix; } + } + + + private void Awake() { + if (!_isInitialized) { + Initialize(); + } + } + + private void OnDestroy() { + websocketServer.Stop(); + } + + void Initialize() { + activeManager = this; + + CreateWebsocketServer(); + _isInitialized = true; + } + + // Start is called before the first frame update + void Start() + { + + + } + + // Update is called once per frame + void Update() + { + + } + + private void CreateWebsocketServer() { + + if(_isInitialized) websocketServer.Stop(); + + websocketServer = new WebSocketServer(_wsServerPort); + + websocketServer.AddWebSocketService("/"); + + websocketServer.Start(); + + _websocketClient = new WebSocket("ws://127.0.0.1:"+_wsServerPort); + _websocketClient.Connect(); + } + + public void SendAugmentaMessage(String msg) { + _websocketClient.Send(_serverPrefix + msg); + } + + #endregion +} diff --git a/Assets/Scripts/Network/WebsocketManager.cs.meta b/Assets/Scripts/Network/WebsocketManager.cs.meta new file mode 100644 index 0000000..ed019a2 --- /dev/null +++ b/Assets/Scripts/Network/WebsocketManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 528760bd39755ab46bcb069618f0d75a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index 01931ef..4bc9367 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -125,7 +125,7 @@ PlayerSettings: 16:10: 1 16:9: 1 Others: 1 - bundleVersion: 3.4 + bundleVersion: 3.5 preloadedAssets: [] metroInputSource: 0 wsaTransparentSwapchain: 0