From 8a5e38402a57cd18cdade6fe062ed12a374e2ec7 Mon Sep 17 00:00:00 2001 From: Neil Dorin Date: Wed, 3 May 2017 00:04:24 -0600 Subject: [PATCH] Continuted work on Fusion XML API. Running into issues with deserialization into Event objects. --- .../PepperDash_Essentials_Core.projectinfo | Bin 1274 -> 1277 bytes .../Essentials_DM/Essentials_DM.projectinfo | Bin 1132 -> 1137 bytes .../Essentials Devices Common.projectinfo | Bin 1151 -> 1155 bytes .../Fusion/FusionSystemController.cs | 98 +++++++++++++----- .../PepperDashEssentials.projectinfo | Bin 1861 -> 1860 bytes 5 files changed, 73 insertions(+), 25 deletions(-) diff --git a/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.projectinfo b/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.projectinfo index 8aea20f3f08991baede59de0dbc17315396d0510..840b16a5c1534e3933e71129c9f3a0d4ad07aeaf 100644 GIT binary patch delta 1103 zcmV-V1hD)13H=F>y??zoJ3Ehd_8;x+j&~m(JbbXXyS?-2qn#aUH>Y+dkAC0Z_q$d7 zwpd=IPm4OAwpCr^&F}mBy8eFO-}m*8|GvL(Zae*be_w|{3IzPd?yDzRL*Gn_rT=vo z_wjU9{(w*^ELC3C)lU-^XUp^ISyAT8Y?1#E(A(HY?hqT4p84BA=a9ixtsl_T}=Hvu$4ZAyW00 zlYhFHkib=9U{ys@3(I>RDCJ^1AuxkrAZ5kABJMqc4hOu~;vj74_mO ztMi|v7DOY6*?)Lv=OO)n?;!#Ia^0@h?aQqF+2?lZ?Tc(#oaasJP`yW=-pC(@5?^G+ z@|eC_Ov-BqVxPY8W^DtQSy@usfD-iI-od8_fYBjXmr~y*i1b-LojurjcyNFBAm5v2 z5AL7e+nYRmc>Z9zcd#?v*_~2LnX6lkNC|&)!{^mBD}R3|({wXm3K^f~t9&`jms9Hc zqetH}vvEJ1jgy+DyRMew*TrI0zMg0Gio|#PG`}pS`Rny+Rn@HmR02=4EZ?8(@7;fx zW#^ynKHRzg@O&rB@9pnDxHmbU?fC?L59spF?fbah%shGz41UN{*q@^Bk3M>pH%tfq z^OuawqZoT8r2j_dcvwU*!aCdj_V6r>A%}g1P!Svh$ z@CQzh>GuD{bMoL;b8_0w^Lm-LWWE;bWiicQ2%B)8?tPkn`suy>hYxli-rwEd$@5Ro zcPIP#WP1PJ`Tab5aEp1`*iA5Zx9IG{=58Y@|9>x@&x2dd=c{~CwRvX(v-7=A^PS1w zy`BBNhxw-u_olOZ_jmH?r}w50cOFdgTTEaGH<+x5A3;X_m@f1D0)f9bo7S7Jj z!NYsId)dx(vNPGgfA7K0gS{Cs{NBC&{K0O%bDP<*AcKjy1>g^x7~Adti|1r_C!7>- zsDGX_VkovV+nqd|9Xxn&?>_lx=lkcAe1AH-e}B3+xxdeTe#|-Z0EH89Gq_t$K)kd6 zHu{?7f` zjN-|I?7_jk+5Y6g{k`1>_bG;)Odbr(&mh!bdTs&xy{Bie=l}Q3PUizVSNlVA^++^p zv+*oz-RvCf?My!1o$en@4>Ah#r}@F&!}|~Nd`9ek@4Ti@f=Le_z+#@B90{{_)@U_swmezwhts`cKin-`IWiBx~rKNwM_5?xH@P zuF4+}DupG=%ewk$!s2XsUOg+ye3>os9|D>iFkA^j1tCO;o_{seeS2+Y?)7!k=8G4C zlWMUd`pmvu-fpr@`yV1vZ#nm; zi%C9vU9IbBeq2xI#bs`p;iOt!zp0*8F&dw`w!1|vi#ou{)2my^VyzH;P-$o@7%tR+s(|Q_rTzXJca!!`u^ynS9!y9;6H!K z$V}R&w||?oFT$Cc%+Bv;)ANiNe|m2+Ie2isw>!%x2M>35_YNkzv)jy+0U1osEdYPu z^q6k{UpyxdZZ#*T?L4oSc}wPNv0fI_40f;y=jq<3`KO=W+kg0A_u>8B{hd7j^n7=+ zpHHUu@15Vzvj?}Br;XhNb9al*K5XtbqVoUZ`F}jP)qK9n7gd{gCNMkS`!wH~?A_bh z-+P#U`fzVLyLW#lpMH98`f%sLB)`Q3hH!%!y9M+Qo3XI({})fu!&^>ND2 zx4W0^OeZ^&{rmSG>^#_;5yS7@+s_~D<~z5U9Sbs;m|Fn;u!*tV{=axmc6Y)_@rLR- zBY%csJG0%%!`Z=u2lwuik9NL)KFRl|v-|g_dz1V7?B~avGY?QW0XKuY{nH$V#} z;1)1%IRP7b{D1Q->4cK5_ZUOwg=ViF-|2I$2y`c$u{S(i>otM^;2yAkSyS?)M%%_+do(5%hk^_kYPR;rvB$u6{3# Sb6vJF?EeSX=i*RB6#xL3-+$5o diff --git a/Essentials DM/Essentials_DM/Essentials_DM.projectinfo b/Essentials DM/Essentials_DM/Essentials_DM.projectinfo index 4f156330eb0d78cd4673be38cf89c339baef3ff5..585e6e4c08d62f2a6c7a4244f818cf12c42bbcb1 100644 GIT binary patch delta 974 zcmV;<12O#U2=NGzv46SuW@qQo&iXy(sYp9d<+7SEo zb<^gH7lKNc!i4Zeoh{C0Z?cQwuNQeOQ*b<+6>U*1vl2s;&rYhvipDzoa(T=7F)#e= zQfPR(P8XAW_PScv)BL!e&Wp?3&fiJ3x_(nVtIAnkHy=GRY`pi;FByIGMX@Xv>&3I8 zUR-5${*%;#D1QMaAMflur2p?dB;a4J+ts>#nYBMFTu2>!ku8h!ylEYF_vlldUI+L0 zj}HBdtXLk?7mG=G?Evi4H{N6n0-2R1wG0MM|LyPI-`o4BN1rZXzD@AxvxoO5JCpMV zpFVhyW%sj#eD~h&9{oStIe&O?e!la7TFTViVl+zSn}3=;ucle~vo#~iXgAR8X}-#r zvwS(FzCL>NJwy2WA>mJIn%BBoj$apxRrz|J)hiOf@zeaWnC7q7t5sFE3Q(yz&9Z!d zvcGr#VV0eLy8CeF{=@T~EWfwE|KQ%_e75IP^F5%;JGbxSHWTsaJ^KIIpRxX&e1G)O ztGwZX^M9YeWMpRP)7#CGnQJB6WOjZ(o1SL}JJadC$>iX{`QGjZ9zM_jtIJH1(}4-x+skl&a1@m~MmH4hKNd2k~7BEM>@WmBDZEWyL+&co^b*}a`v zmd|Fh^Mi-?r}sY1rjzq*n(xf+`!lcsT0r|-z`PahH}v=aE~@YD43Yg+eqO@Eu9j!Z zHh-@{fQ|&*J3l|jXOl^Gusj)T3O$)~&1{e$U2Mv8ozAM8E6{~*t2 w#L)L1Jh+90_#nSOg4!?n{xA6@9L*Hx#WaH`&=}WcD?|Q&0I@v0Xu=Qx0P%_~?EnA( delta 969 zcmV;)12+8e2fy)NW4gP9FWfzwdXe z`fahiNS_vUK5eVI$eZ8y_kEeKR(bt2Yv#Z2@B8}4f8XCXw_X0ezpv{)efov}=kJd{ zC&jY!*?77te?T1;c7!kM>Zhr%v*mg9tSIwkw#a{WkO}cvNq@HmbxY`+HPlIaZHWE) zx@q&p3qhqzVM6$#&K760H`>*NeQCDL9_ZingehS&1RaXD8KSMPr?PxxD54m=}I_ zDKtD?r;ABGdtI&TX?|Q!=f!1i=kKIiUB9WGRpl(Nn~xqDHs1T_myAC8qF5G-_2OAk zFRrpW|4C{=lz#w|k9T$+(*O4!67VnA?P}e=%-Ww7E~E~=$d<)<-n0(8d-SPJuY>#h zM~D7JRxFR{i^Zh8b^!M28*efOfy~O1S_T8B|L)PqAAHoKPnR&?CV1#;x--B0?)vW?lYEH8(-=FO7 z-G7*6=Okx4_aC0`Wcj`Q{Rj6Z=d(SZn(qN!-no4rx0#4X@6rFy{*3kKwkCbRSV+4MX+*qKi6O(q8q&i8g_`Q+f??(W{fWOsI(sWBjf z`M3q(51J3t>HoVX;XybF-q22}IuA*|voqVBJe(aocyRCj!-M%H=f4Voh zzt1)(rei!n0l{wp?p6ekclG}+G9TQ=6!a;cPk(0*c8E5+2l?JKdvO2!-rnTl!}ABz zJ>t@x-CJn&A>!Wx^7|4$-s}In=HX#D4^Bj1=A^xmi0baI|e^PSm!e+D){3uu1}n75++hW`HFMfKgCA+o>9&r5jN)$(lF<~0b= zk$-@D=jR9cY%<9X_NTIG6;M_%>ieA-Ea%drrh~$Nw*zk=>yg zdHoa5znzza#lVD|?@aIS+@H-zfgEHH4(`qNClBuL?LN3qN@Fs4Ffbv5P=oon1?=~n zkHLQbUojn>5A5XZ4NcC|tj)%=taa0IutK*p`E+->e=t4BNRdzTgT06MALRLr82a9W r2e+^gALRE(Q2Qm{|0TbKqnYBom}U?K8soZbWyt>zCTcH|!Vmxe((xn{ diff --git a/Essentials Devices Common/Essentials Devices Common/Essentials Devices Common.projectinfo b/Essentials Devices Common/Essentials Devices Common/Essentials Devices Common.projectinfo index 59f0fac1ac53aeb3547ab6354b6f98d0f8b7cff1..9c413ff623a870f4743f3e47b8d62a9287e8c664 100644 GIT binary patch delta 764 zcmV0oyASss?C%_G?|k}bXNTI&solw=-}m?ZZdJc6 zmKW*MqRyvnRTp{l`~JQ!^VKS^pJvVc_x*ie|M>6w`{uUi-}m<&#B$?TlVa2NJs(5Og<9 zC=KwU&K760H`ztdG?-g$wa9Ck-Q(G;Xp3r@m7t7#Mj%&2qS=?rTTZ=s;pc|1x8sD< z#U!7-uGaN5Kdz_q;xf0aaZ;_W-&D`4a+cT4M~{qP?S1r1Mjw4qEQ`f@@vNv9S6Q9^ zB()%FLF~pmJAV)9|9cM!_?PQ;wQgT#?GIH5sN*lPWpSQ2t;6~reR>nO7@B;M70Y94 zw3w9F4#GZt#MHjx47PVYbb^wWEL_jdPY)7jqM z?7@R9-`U^W-MOD1>`Z6WQYP&--7Eqjrn>I&X>dI_dluXJe;4Mo!Rc>;q2hSgM0TM9^60QKcD3L)7ky|)4j?4eKwGG ze&T?F`M3qR+s#M3um5k*|6q{*u8+u6e=t4B$XHBsa-{A*$nzPAz`X|# u0xPtcnzyBTho}+ce#!TL$uHqptvD~H8Kj3sxh`87^#23c|99g|5&!^h@xQJB delta 760 zcmVxG{KYnTGc~dy`!RO@q1BR*Srr**%`kingehSqaL>X9RLZB$|D>yyeuJ7k+LCdpk}z zT}<-X>uOz3^W%CtFD`S-8Yk82`c3t$Drb4!eDuf&*4{_IWc1M&#j;qe7te}%ah28i zPf`n_7Q}A6vw!oD{=fH-fPcAeSL^m=*8Wh1fI9vnTNdYe(>kp0(Wf_Yi=oLES+P8( zMvF;#?I7&aH{MJRLz$H&H4R8Y|J@^+eELz3a$S;ro5+C99_&AOa4$Q^?%zMicV^jx zdy~E0hxz&L-lti1FP~9MnY7!CMrX~T6>>h!SNU?5FQ z|F52>&IfkZ_J(HdY1U@rS=PFFI@sHpe7ZZ`KbRh5WGtpRIa2o@{0}{1}2017-05-01T12:45:3924", requestID, GUID); + string.Format("{0}{1}2017-05-02T00:00:0024", requestID, GUID); Debug.Console(1, this, "Sending Fusion ScheduleQuery: \n{0}", requestTest); @@ -143,7 +149,7 @@ namespace PepperDash.Essentials.Fusion void FusionRoomSchedule_DeviceExtenderSigChange(DeviceExtender currentDeviceExtender, SigEventArgs args) { - Debug.Console(1, this, "Sig: {0} FusionResponse: {1}", args.Sig, args.Sig.StringValue); + Debug.Console(1, this, "Event: {0}\n Sig: {1}\nFusionResponse:\n{2}", args.Event, args.Sig.Name, args.Sig.StringValue); try { @@ -155,11 +161,11 @@ namespace PepperDash.Essentials.Fusion Debug.Console(1, this, "ScheduleResponse DeSerialization Successfull for Room: '{0}'", scheduleResponse.RoomName); - if (scheduleResponse.Events.Count > 0) + if (scheduleResponse.Event.Count > 0) { - Debug.Console(1, this, "Meetings Count: {0}\n", scheduleResponse.Events.Count); + Debug.Console(1, this, "Meetings Count: {0}\n", scheduleResponse.Event.Count); - foreach (Event e in scheduleResponse.Events) + foreach (Event e in scheduleResponse.Event) { Debug.Console(1, this, "Subject: {0}", e.Subject); Debug.Console(1, this, "MeetingID: {0}", e.MeetingID); @@ -616,13 +622,10 @@ namespace PepperDash.Essentials.Fusion //[XmlElement(ElementName = "RoomName")] public string RoomName { get; set; } //[XmlElement(ElementName = "Event")] - public List Events { get; set; } + public List Event { get; set; } } //[XmlRoot(ElementName = "Event")] - /// - /// Data structure for a Fusion Event - /// public class Event { //[XmlElement(ElementName = "MeetingID")] @@ -641,6 +644,8 @@ namespace PepperDash.Essentials.Fusion public string Organizer { get; set; } //[XmlElement(ElementName = "Attendees")] public Attendees Attendees { get; set; } + //[XmlElement(ElementName = "Resources")] + public Resources Resources { get; set; } //[XmlElement(ElementName = "IsEvent")] public string IsEvent { get; set; } //[XmlElement(ElementName = "IsRoomViewMeeting")] @@ -650,7 +655,7 @@ namespace PepperDash.Essentials.Fusion //[XmlElement(ElementName = "IsExchangePrivate")] public string IsExchangePrivate { get; set; } //[XmlElement(ElementName = "MeetingTypes")] - public string MeetingTypes { get; set; } + public MeetingTypes MeetingTypes { get; set; } //[XmlElement(ElementName = "ParticipantCode")] public string ParticipantCode { get; set; } //[XmlElement(ElementName = "PhoneNo")] @@ -659,37 +664,78 @@ namespace PepperDash.Essentials.Fusion public string WelcomeMsg { get; set; } //[XmlElement(ElementName = "Subject")] public string Subject { get; set; } - //[XmlElement(ElementName = "LiveMeetingURL")] - public LiveMeetingURL LiveMeetingURL { get; set; } + //[XmlElement(ElementName = "LiveMeeting")] + public LiveMeeting LiveMeeting { get; set; } //[XmlElement(ElementName = "ShareDocPath")] public string ShareDocPath { get; set; } - //[XmlElement(ElementName = "Location")] - public string Location { get; set; } - //[XmlElement(ElementName = "OrganizerSMTP")] - public string OrganizerSMTP { get; set; } - - public List Resources { get; set; } + //[XmlElement(ElementName = "HaveAttendees")] + public string HaveAttendees { get; set; } + //[XmlElement(ElementName = "HaveResources")] + public string HaveResources { get; set; } } + //[XmlRoot(ElementName = "Resources")] + public class Resources + { + //[XmlElement(ElementName = "Rooms")] + public Rooms Rooms { get; set; } + } + + //[XmlRoot(ElementName = "Rooms")] + public class Rooms + { + //[XmlElement(ElementName = "Room")] + public List Room { get; set; } + } + + //[XmlRoot(ElementName = "Room")] public class Room { + //[XmlElement(ElementName = "Name")] public string Name { get; set; } + //[XmlElement(ElementName = "ID")] public string ID { get; set; } + //[XmlElement(ElementName = "MPType")] public string MPType { get; set; } } - //[XmlRoot(ElementName="Attendees")] + //[XmlRoot(ElementName = "Attendees")] public class Attendees { - //[XmlElement(ElementName="Required")] - public List Required { get; set; } - //[XmlElement(ElementName="Optional")] - public List Optional { get; set; } + //[XmlElement(ElementName = "Required")] + public Required Required { get; set; } + //[XmlElement(ElementName = "Optional")] + public Optional Optional { get; set; } } - public class Attendee + //[XmlRoot(ElementName = "Required")] + public class Required { - public string Attendee { get; set; } + //[XmlElement(ElementName = "Attendee")] + public List Attendee { get; set; } + } + + //[XmlRoot(ElementName = "Optional")] + public class Optional + { + //[XmlElement(ElementName = "Attendee")] + public List Attendee { get; set; } + } + + //[XmlRoot(ElementName = "MeetingType")] + public class MeetingType + { + //[XmlAttribute(AttributeName = "ID")] + public string ID { get; set; } + //[XmlAttribute(AttributeName = "Value")] + public string Value { get; set; } + } + + //[XmlRoot(ElementName = "MeetingTypes")] + public class MeetingTypes + { + //[XmlElement(ElementName = "MeetingType")] + public List MeetingType { get; set; } } //[XmlRoot(ElementName = "LiveMeeting")] @@ -701,6 +747,8 @@ namespace PepperDash.Essentials.Fusion public string ID { get; set; } //[XmlElement(ElementName = "Key")] public string Key { get; set; } + //[XmlElement(ElementName = "Subject")] + public string Subject { get; set; } } //[XmlRoot(ElementName = "LiveMeetingURL")] diff --git a/Essentials/PepperDashEssentials/PepperDashEssentials.projectinfo b/Essentials/PepperDashEssentials/PepperDashEssentials.projectinfo index 6bb3ef8275bcb7cb0aea8abc94146067d911467b..f4a74796f20f81c0159de50ab1de689c72ac2375 100644 GIT binary patch delta 1698 zcmV;T23`5Z4#W_6Jw8$W!wbN|x=`uNjFJ3G{FPVG(}{l35NcdPns zvAjs17Ii*ttGdXW-}m=*J^jAF@9Q7`eShEF_V@e#zOHY-o&V{iSjN8^Pgg&nt_wTz zmv!~i)a%*uyn0rY`7&GNKYM6JF zIGer6E^chK$ZMIUQ;b)(8H_hnjVv^5ZSL=G3 zAJ@})ahcmGKB-pMZ>nciIm_$jqen&p_CES0qmRBQmc?SdcvjSltE|p{l3EZ=ARptM zorm=Qy@v$+%YSvdTDLE=_GgV{sgp0VWpSQ2t;6sheY#=lb>v@U#qyXwTujPq_wGJ@ z>k{o+{+FQ?%zA#Kgb{Kf4Vol zzqfP${J}Z3lv&w42&L_Y7SF3`R{m^G!6qIPNW zSXayO>teAgU(d68MY1=3nqL;v{PlXZs_Iq&Dh;PumhVsY_wGN;vhz=ONyZ+Y?_~MC z{rv~`Cg-y~pN8)NUEaBUA2-awqxb0ghcj9IDf#~BqgQ#uzi7Sjw?%7~zn@7|~Rr=Q;2fB0bc;r-qHojm{ae0Q>+Po|`R?&sNq zTg=PGZi2bGMQ2}gt~TQE|GxP}$^MAEB%_pDk-_K_Evux+#!TE!O>Hg%? z>BCR&W#@ad^V?{+0BkTnw*dY%=O^g%|9$iE@K*EjdDiAv*>y*P9_;P!<$Jq(S$6MW z|K8r-L3V%kaF+=A>A~K^^MmXbGtvPZ%*idlf6Y1R^!oq4S=rsW)wI0I7gd{gW`!8` z(|>$tvUhK1fA3-b>BGJ0?B4yIeER9V>BF4|ll&I562c88Jp7s8oE&CWRsF+KzkE`wz+f?h(Oe(|_6C-t57HEGG`$-MOEW`xN+KH-QZ8`ptlE znuMGB`+wmi+zThc0X?be{3W^YS^4^UISuFFVE2Ch>CVA)azH`e&cQ63?0)*-;NFAj z`N6}2%x3!!9`0rbpUyr#|MbCZHodp=aJo-=I^Wx$lJ)c_;&y<8`M3r6o95$o zz5c&&S~}shH;#4FR*U1dt&7Q;-0Fd;Awo^|XZzFpyALOy-oKxnKcqzLr+@iun(fU# z{dDqhU}|mv9*WD&UA)Ki+|cv?3#X_PVY{(>J1+_Rz{F(v?7?0>*~uwkMEO?A5`Fq$ z=U|dQ_;i2&{w(xZZvq(xa5n?K{dC0p`+wgg>~-R4H-Z=WRZID@>b#Rre>f#2a({Mj zXGR2@&B&L$KfU*9Hl1LcJAbqLar*b5btK_Nn71c=udDwTQoR!~hf!w!E_dWUKmYU~ zr=a!Wrxd-;4)%5^^FvY814?XXd7cGJKrt`@oo@l`_H=fA{J)UEooLu${VG2%u^?P6 z2lPvR@BI8ApG_v&!Tyw-%H8|-$&ozR&p&;ze{e7fvZ-CLF|eVRdVe$U+fTsoQ2t*y zA)UzBjpFrBJm0AA&v&Nxcka(-(ClBru&)z4eelmG5Fdu_ZLwUFv_U)%* zu*?6~%tq$}J2#z}*$wGw)@I{b*1FjsoiX`zce;NtJ;*4|n&y;ozW*T4$&H!bd+=Z& sfD37MGgUi8iy-t%z8n8behIIx7w5XNLnB+4tqk=40j0iRt%xH40A&Tu`2YX_ delta 1699 zcmV;U23+~X4#f_Twtw9>yAK}i?>^ey9pC%(VCUY$Pq%kIeYCSf?dH_(~*!S zr}=R`ofnt6o#K;fb^WG#R+Y27Za#WsBw+8OUo!gWi(*+U){AFFy|~Ki{3ode(FF1_ z-r0Fb|KEE^z<MOG}2>BGgOyms&I z(>LC%MBks4CAA91O#j`}L3c>grOCGm7JYW`FuV8g-fZ`LlArHQvgtvV-<#df?jKC= z&8ArfH6ydKc@Rq54K1Em)2#g2oPtd}CX{-bukz(AUw=-iua6#m&yf0lNa~ZCCb6!T zC(`#x@%gGcYt^$%yV`cv}#(MPZHhR4l+{*sZIq)%@*NneCBGnt*= z&!*?u!GF$ldT%m0cyPYAJIf~r4|jL>4ko*^+sups8BE750Ds--F#Y|%Zw?;ZY7S1@ zd0sE`mTb#ny)32~tdtQ!CEvYI^G`p$xBu|L?!)`L`#X95>G|$tKc7tR-#fpbXAf>M zFB`iF=IR!mea*Srh{ON;=I`KE^Y?5Ga}v(i-hVWoe7b)>Bg>HOJUlpma4_AUd^&yj z>AmcHZ+3ng4Htk7=I0i`zvlb|eg401J|5m`K0eRd{3^TdNYI15{k?o|cQ4EC9qixR z+dIha&mQg)AwNCXdw713-C{;MfP*=?1^BNyC!JpZ-#06}JGYvaSNWo9^Ukag!+x6Y zOn>(7?d_-oFD?eG7Eldu;~ zf&-O`580$Jgk9UQ|6u>YgL@fikoyPu&VMW;e|2y7VSc{5_bF+YJn+G80vSxgEdbv% z2{-lk|H4VQ7fyl$dQ#Q-OLF0}^7Zv{8qUGN?*07JorCG*AUinNIhbXW-A^AJ+J9#)eAV$6a@ZkRWK7Ym8 z`_tL|`_sM2{e8~CLdw4sj5sK&2*#q(-@9!Sud(-T} z{quW!lZOw_A58ZsR@>Q~4p2M}Ga&vgAioFk;~oCLa2`65cYFxlzeDIPBi-#NEzeIH|8!Ez-iP`Ssbd z&Fk}Q+7XA@Z2!T--R$7g*{A29KA6p>_jVpm_eoFZd;3!gi~WhX9pGR-ZUO$L`M6!L z|1X@DPB`t2W8JjX;<#<=VzMT;dSGgZP?P=H{`CIt!^x-j?`P)^cXoC^&3`HFx;Oju z)5*husks4oFg>^E;ytG4hMxalI7OWZ+l}Shc}d_0CML^g5BBoOPEH9U%C}OM=+g%~ z2b284r~CW&XVbuAy$NI(z}*b^_R|sX@Be+1u-A#F-3VUfS1skss`E}h{o$09$o<*9 zof#2qHX~p1{`B6b*>r+&?tjeg$LZgL){%r8Vcwqfy{`UWNcB#{97dV>yWElc{QT2{ zoPySepHlQXJJ{Qy%+LPb?gL6}XL+8T$I0!$1a!Uyu-ntw_3{5g0(YWehxM!cyu^ZV zwH(kd`MvY=gM2obWC#0Gaw>Q4-zP`%U_bx#!T!O)B*>P|V>gP|Kk5A57@VrDm_r&*hgXIblJgLKB^)7|O*0j)(-oHflU<9z=?o|79hz4ze3 tK}INVh!#QUmmGZmm;4f5T`$gcWrs$#E?XJs{{x*$;g5(T000&7%}4+M