From 09b9016d3de7f74873e34cb87d1e5915b15cb2f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Laban?= Date: Wed, 15 May 2019 16:41:01 -0400 Subject: [PATCH 1/2] Add more native methods, fix the x64 UWP target. --- src/CalcManager/CCalcManager.cpp | 139 ++++++++++++++++-- src/CalcManager/CCalcManager.h | 22 +++ src/CalcManager/CalcManager.vcxproj | 6 +- src/CalcManager/CalcManager.wasm | Bin 958864 -> 963469 bytes .../CalcManager/CalculatorManager.Interop.cs | 129 ++++++++++++---- .../CalcManager/CalculatorManager.cs | 130 ++++++++-------- 6 files changed, 328 insertions(+), 98 deletions(-) diff --git a/src/CalcManager/CCalcManager.cpp b/src/CalcManager/CCalcManager.cpp index 6db0f533..7ffb32af 100644 --- a/src/CalcManager/CCalcManager.cpp +++ b/src/CalcManager/CCalcManager.cpp @@ -79,7 +79,7 @@ public: auto pData = new char[str.size() + 1]; #if !defined(__EMSCRIPTEN__) - strcpy_s(pData, str.size(), str.data()); + strcpy_s(pData, str.size()+1, str.data()); #else strcpy(pData, str.data()); #endif @@ -123,20 +123,141 @@ public: } }; -void* CalculatorManager_Create(CalculatorManager_CreateParams* pParams) { - - printf("-> NativeCalcManager:CalculatorManager_Create(%p)\n", pParams); +CalculatorManager* AsManager(void* manager) +{ + return static_cast(manager); +} +void* CalculatorManager_Create(CalculatorManager_CreateParams* pParams) +{ auto calcDisplay = new CalcDisplay(*pParams); auto resProvider = new ResourceProvider(*pParams); - printf("NativeCalcManager:CalculatorManager_Create: Got providers\n"); - auto cm = new CalculatorManager(calcDisplay, resProvider); - printf("<- NativeCalcManager:CalculatorManager_Create(%p)\n", pParams); return cm; } -void CalculatorManager_SendCommand(void* manager, int command) { - (static_cast(manager))->SendCommand((Command)command); +void CalculatorManager_SendCommand(void* manager, int command) +{ + AsManager(manager)->SendCommand((Command)command); +} + +void CalculatorManager_SetRadix(void* manager, RADIX_TYPE iRadixType) +{ + AsManager(manager)->SetRadix(iRadixType); +} + +void CalculatorManager_Reset(void* manager, bool clearMemory) +{ + AsManager(manager)->Reset(clearMemory); +} + +void CalculatorManager_SetStandardMode(void* manager) +{ + AsManager(manager)->SetStandardMode(); +} + +void CalculatorManager_SetScientificMode(void* manager) +{ + AsManager(manager)->SetScientificMode(); +} + +void CalculatorManager_SetProgrammerMode(void* manager) +{ + AsManager(manager)->SetProgrammerMode(); +} + +void CalculatorManager_MemorizeNumber(void* manager) +{ + AsManager(manager)->MemorizeNumber(); +} + +void CalculatorManager_MemorizedNumberLoad(void* manager, int value) +{ + AsManager(manager)->MemorizedNumberLoad(value); +} + +void CalculatorManager_MemorizedNumberAdd(void* manager, int value) +{ + AsManager(manager)->MemorizedNumberAdd(value); +} + +void CalculatorManager_MemorizedNumberSubtract(void* manager, int value) +{ + AsManager(manager)->MemorizedNumberSubtract(value); +} + +void CalculatorManager_MemorizedNumberClear(void* manager, int value) +{ + AsManager(manager)->MemorizedNumberClear(value); +} + +void CalculatorManager_MemorizedNumberClearAll(void* manager) +{ + AsManager(manager)->MemorizedNumberClearAll(); +} + +bool CalculatorManager_IsEngineRecording(void* manager) +{ + return AsManager(manager)->IsEngineRecording(); +} + +void CalculatorManager_SetMemorizedNumbersString(void* manager) +{ + AsManager(manager)->SetMemorizedNumbersString(); +} + +const char* CalculatorManager_GetResultForRadix(void* manager, int radix, int precision) +{ + auto res = AsManager(manager)->GetResultForRadix(radix, precision); + + std::wstring_convert> convert; + auto str = convert.to_bytes(res); + + return str.data(); +} + +void CalculatorManager_SetPrecision(void* manager, int precision) +{ + AsManager(manager)->SetPrecision(precision); +} + +void CalculatorManager_UpdateMaxIntDigits(void* manager) +{ + AsManager(manager)->UpdateMaxIntDigits(); +} + +const char* CalculatorManager_DecimalSeparator(void* manager) +{ + auto res = AsManager(manager)->DecimalSeparator(); + + std::wstring_convert> convert; + auto str = convert.to_bytes(res); + + return str.data(); +} + +bool CalculatorManager_RemoveHistoryItem(void* manager, int uIdx) +{ + return AsManager(manager)->RemoveHistoryItem(uIdx); +} + +void CalculatorManager_ClearHistory(void* manager) +{ + AsManager(manager)->ClearHistory(); +} + +size_t CalculatorManager_MaxHistorySize(void* manager) +{ + return AsManager(manager)->MaxHistorySize(); +} + +int CalculatorManager_GetCurrentDegreeMode(void* manager) +{ + return (int)AsManager(manager)->GetCurrentDegreeMode(); +} + +void CalculatorManager_SetInHistoryItemLoadMode(void* manager, bool isHistoryItemLoadMode) +{ + AsManager(manager)->SetInHistoryItemLoadMode(isHistoryItemLoadMode); } diff --git a/src/CalcManager/CCalcManager.h b/src/CalcManager/CCalcManager.h index 37e10406..5ce62c9d 100644 --- a/src/CalcManager/CCalcManager.h +++ b/src/CalcManager/CCalcManager.h @@ -60,5 +60,27 @@ struct CalculatorManager_CreateParams { extern "C" { DLL_EXPORT void* CalculatorManager_Create(CalculatorManager_CreateParams* params); DLL_EXPORT void CalculatorManager_SendCommand(void* manager, int command); + DLL_EXPORT void CalculatorManager_SetRadix(void* manager, RADIX_TYPE iRadixType); + DLL_EXPORT void CalculatorManager_Reset(void* manager, bool clearMemory); + DLL_EXPORT void CalculatorManager_SetStandardMode(void* manager); + DLL_EXPORT void CalculatorManager_SetScientificMode(void* manager); + DLL_EXPORT void CalculatorManager_SetProgrammerMode(void* manager); + DLL_EXPORT void CalculatorManager_MemorizeNumber(void* manager); + DLL_EXPORT void CalculatorManager_MemorizedNumberLoad(void* manager, int value); + DLL_EXPORT void CalculatorManager_MemorizedNumberAdd(void* manager, int value); + DLL_EXPORT void CalculatorManager_MemorizedNumberSubtract(void* manager, int value); + DLL_EXPORT void CalculatorManager_MemorizedNumberClear(void* manager, int value); + DLL_EXPORT void CalculatorManager_MemorizedNumberClearAll(void* manager); + DLL_EXPORT bool CalculatorManager_IsEngineRecording(void* manager); + DLL_EXPORT void CalculatorManager_SetMemorizedNumbersString(void* manager); + DLL_EXPORT const char* CalculatorManager_GetResultForRadix(void* manager, int radix, int precision); + DLL_EXPORT void CalculatorManager_SetPrecision(void* manager, int precision); + DLL_EXPORT void CalculatorManager_UpdateMaxIntDigits(void* manager); + DLL_EXPORT const char* CalculatorManager_DecimalSeparator(void* manager); + DLL_EXPORT bool CalculatorManager_RemoveHistoryItem(void* manager, int uIdx); + DLL_EXPORT void CalculatorManager_ClearHistory(void* manager); + DLL_EXPORT size_t CalculatorManager_MaxHistorySize(void* manager); + DLL_EXPORT int CalculatorManager_GetCurrentDegreeMode(void* manager); + DLL_EXPORT void CalculatorManager_SetInHistoryItemLoadMode(void* manager, bool isHistoryItemLoadMode); } diff --git a/src/CalcManager/CalcManager.vcxproj b/src/CalcManager/CalcManager.vcxproj index d5bf99b1..7bc39631 100644 --- a/src/CalcManager/CalcManager.vcxproj +++ b/src/CalcManager/CalcManager.vcxproj @@ -54,17 +54,17 @@ x64 - StaticLibrary + DynamicLibrary true v142 - StaticLibrary + DynamicLibrary true v142 - StaticLibrary + DynamicLibrary true v142 diff --git a/src/CalcManager/CalcManager.wasm b/src/CalcManager/CalcManager.wasm index ec28806f2467235f3c8086703c9d9a2b6432446d..924d9d07b7ab7bdc6c126f3fa900e78092927f08 100644 GIT binary patch delta 85719 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

eG&wxE1=Jk-;V z^fs_wZyL#=sJ-QwYla69Ti!(BA=5kj9$`^$qi}e#-bRtt@w@0FKk-7+Tf7$(D(Gy1GLu|T>q|)20t6rDhD}>a zn&)FG(#7wAvOL=vB>0J6us|x@TJ5+|<+`|fXI-5lCa~?SUeXS5k z?~o)N+F*r-(iD;d1)#SWo0fDai7r5S@_im)g*<-71KJuN2Kq1X4C#}|T% z@QRNu1YM0sp`suk?hK{$m}sb6fZ#EnARC9s!GZ(gp^VNk;yps+pu^>6JjM$u@>`x@ zqfd;rbm*=hIEy>@usFjD-pmV{(#OV7jif~sPx(PFXiImJ5Z<9Ml;L=9X@Oh3ePIZO z%RHwrw4<}-mV8uUXwH?wIKp$~Rsw45oEVLcJEm1coZ%H8=MA6Jrx2@A%!&HG`4X?` z16Ap98p>ZuT)A_)IK(nnNITqi4*YX);BC zt(}1-8_x2TfzX7UGxN}@pr4UxmOs{<%I(F$n~$@BOMZA+n2#$8C1?&A#zRXY4Uf!R z^J%d#n%5}?t;u7;ZIwPG9xMhCbRCKPr#vrR?UP9V0@`Q%7X_=hY?@S1MFU>b1~uq4 zQ|AJ%CiI;tt^kS_!3O-rql&{1ber5)5K?)i65vE^Q|Eu86)DN zqYXRxp%Tyu_VM77kVEIlxq`C?uU#5Pa0!nKf}V80{5_8kf;L*T%tK3oKRHZzNJ;oy zVBGoSlHkLCD}`q87t9pJ+X{SR`U2(@K#h#C;?na7x0Qjf=`UnR0mY3!E`xnlb#=Do zsb!%uJw$rEuTs~~AW~1D0>sgxKX(lSce+7p@*br{f}12J1Q*en&Xj{V`m>bwo{876 zK~31oSC)r^u%2gEKsU2Ys#CyFif;S>3gERXf-_ws)hb}{=U-O^XQ=ibp~ZN6q}DoS zMJ4bRu2AAL1JII+1cMXI<4PsyMHk8u1w4WDce$+?p~4)`KW)OCZFDiVG#}N0{w7r` zfE3LdS4v&DJp`I+G3pe_VSf4Nq-W#ehRG6I zqL7t#TZVBwv@+Dtbvjq#LWADo{Iw+4G`LR66ub(r69#^|26u@Pjp=OZ;0Me%$^(aA z1f?b)RR!GWQmN4g1z%JEXGgfaU8?^9p;kq3f%!b7D%7W|P}c=@X{wzh4G?vB^4M_v zoT~~Q;V`cm4h`sZb0=Oq97^$};ZTjvHirl(h`UChB_1+Y)S&lg2nWq&HH;p2jxqCo z5zvs%A)WZQ5h&wU1j?9C%4v{U^B1EnWd#%@0$*6pvmzm!j-sFQ0g=dmE)v3EB=@KW zL+LZ(XkvB^Y~t2x(2>3*p9#Jo9$g)Z)3>CV4qd1YfqZFoY~XHl(*jf(I@#DsheB#V zb(&38y~`+X0ewb;bz1Y9XpC=gsStwQBel1U;$1+p;V--(7f7+O(YF;Z_?DVbfgZ%U zzO5FN@(AgcP{7~Yu)$nYL-QuJz=!6UKi8p=wIGbHH~*+rKB*SkZ+30`ysCxq+e)+E z$9!}Ly3Jf)6bs@~6ex5Z4u%FTkAiBF;TPek1rfoT^k?%iU1lBFMOWZJX{5V#P!C&i zpak@Optj&Z35-7NN29lHUKa&r*-?>`<@yDXuX7)V@8@zS9s48%s`wzz5cYl5~#LfY+)I#reK^P>PN> zMLVEEpvYpAx0KhY58uEto>w0_zyWO~4YNsP+rS#$sR2~0K8)f^nz*h#@z)LF@L^`pxXgs~WPB8p znPAut_}(I}Yu~hW9Adb@4>y3qS@SKHZv9g5c~Q@}c7}x( zr+fe(Ti&oZzlRbHKRLO4045r4Ik|oaCmNPGyM2U6G~99a_!yIjVwbrT)Y#k5;+{)E zmAw-UD_jez?2W7sTnnm1Fwv0bR#2sY6Ah2t3aUgz5@MdJYa2q1s^m49P|uIM^oR0} z*NeU;vAcOn#A`%>0#O#EYyWlOn zgKXk6fQ%;-2qQm|X=FN?L1vPlvdChxge)a{$*<%$vX7i1r^y*|mRuv($qjOo{AiqL zd@S9P#v3OXnenzX&iGIoYaC@9Z5(5KAU%@qNOz@s(tYW=bVIr+jgiO7+%ixru<5NEeB-dRmwo)Amd=;5Zq`CH;ypo7)SEagP=mz6Vn;f zS<@ZUUDG|&ebY13D^s?4fO(*Kka@6qh$!NwR&Rd|@|O=K?~=*j{NbApXN}2nwDDw$4gtJ7n16m5xe0 zGPw|ErM0b#(!~zFY+aSE`9iuW-K_J}!^3gY=Ygfdm2goiLaCxeSm&zON8;JKDFN6Gs0Mp9jAk`KAQ0LBoAprB#va_J8z>m&_82}4;`8lu| z!CP~nJz)2u=fPD>%Fl zgS!wid;y$-!)n)sfDt1~84k*D_*f2>83D=&u+CCfFM=Pz^dokISSPB@7sGgfJ?e!e z;3fHCr+)(FC%`rs?dBxgVo(-?y`ps~cU=iSxVH#e2}y8_k6VeIUdGjxxF|2>UU?AW zyA=HOGCM(W7VX{z$}X_Z;~nzA?>%*|gNnC6zkziQADyQOe4eKXEVc@4a9p*o0!}be zIJpMSVxs;Gwcx1w^k+PWfulS@g(jHfskp6J#qX(*g?dg|2Nr^9-}P`FFe+%b5dy=; zQe~Y`rL2qvTSsLAC>^a+r~u-WIO{T_-C!FFiUA4Ml_0)(eBnl@PJRa-HJJKHzk}k$ zLv!VFu3kwts!;0zG(_tGUUd^pcHaz&t6fU6Sriw=V%@^eY=SD-SdY!n2$L^2M;N<#xnr==6AM#?pn9+*PEo0jb&vYu7_1=DK@8)# z?MqUQ90IlfA@eR!XPk!C07v+vGq9S*gDW3@)HQ$ywxdpb|5-GGEdKN?hWXiQnRD<1 z_@V43N@M%)h9p~4rD+*rur*VfD9x~Io6qCc=TEim1*k2<_v*x}uoK_}Z+{)`!U?tE z4e$Wd2(V29D_1+;ga(8hJ*uX(k;{lF!`sTiro*62Mf2d3u+>esQT~)?pD?N&*2wpyatN5^%`IP z8d|hLwfowKLz1n9(!zQb0V`5lYi>cuqc&_9PNO=S39ZB^G1l`q1%2(~uu!ZLYyE@- z-uewpfSc;|HyE)w-2&S+Olt z$X5Y(K>6BMN-1S4r<4=5msh&jDk$ZZ3f5`7D3G1zyI`xQBwH`?TR=+U;i)?zcFzZ( zBv>DUvOvs9XC>WwA9x5Miqm@nKU9MRdE&6G2kQi|Z2&6++eREhKCT!UE=Dkhl4^u3 zBz(nCmxr*3Z;8SR9;&mAcvXuIs=S3%f>FG^g|ri522mkqFco5kP_%?y7IGYfoSDuf z-UL(DdJ+$Ssl1REig}<$c##miedS*jCVgR;da*ER14h(jnDq*t?U94-!->sZakm>9 z+N?@t?4Q3c!R-w1=u2v0v1z_!9z0U(_>sY2#8FGMUR8hdC*#5WG1#gqRYkdQCCPe; zClw)e;EB4V2>FBjU;RA`{F#k(Ag@8|G$Wd z)bXWB3c&M8Wyu62va+PO1BGLdjd;o4z0oU?BHsOE&Z0YY;O(-j?bC+bd#hCEz#e5C%Ew z_jYoekdZ{KlPt;;Y;>k>cMmY7xfb3#BA z+JDSEh-dxcV(0tYp)#guJkmshK0mY#X~BDcK|CQ>7dK58H%o|{%xAPGHGK0#d}Gz) zn<&iUs)C-~`j9_pkJ_89OPeL6jgP0NV6OTg!?hQXd4ykFXW3w!Pn6HB3)D`XNECe3 z!w0*}qK7ID?M#c>CW%-8R_d+zNpHn6y;IAzD)8!DchY=x3icvTLt2($y<)z`@`v}O zAnu+@tj5&@SG4iLHUs zz9ir{G=!Lfbi#nkf$tJvSZxW)`%_QLjRJC7k@)t$-oc1jlg%Qo0Z^~~(0qAyq$RUBg zn~36!9!gTI_`7ov#GrU$zP$AwUzJ13Bkwt#_hk+#3-@`+ktAGL>Qo{;$21~5$8>_8 zBY7k_t9g#5qe+HDxJBJIo)pE{iC>t2zGI_$rULaLyvRgS%4svfh0uV}>K5K~BKa1! zs(U7qZItXh$#bTV?yyaLIECby;D|bRHW>l1U9C8m{6Jubx@0~XZi1a^m1ShRgbVDm zJak06dD?q9uz~;dB?{dSNvI!F*{w=?}0=jo(OW6WGObHL*+4IL1DXjvIwmtoOj?rFaR2+6pU1 zrLgrVQH<96oWIm94y_C=ZiZ%YGsQSxc^Xm|&t*rcAb;V&WKVdsRBv|L%Vbfa<~ z96H4)$EXdtzq4`+tWnBwu%Zs~6;qyDgQ)FaxtRmtvG~u$e;S%#Y+p;NQ^H`!*X)1QRVjxw2KQR5?o4PE8g zk!VAg)cKLL7re5v%=9Ae{Vg<57(hH zgHfKlkY`fd6nDi*NOKqLZW#SKD^^j+88?<%A*=PAI@3-A!2ASk)s$+u%xtSmAB!cZ zwbB})jrC}}`2i98e(P;D2p^CEOy|d==@p#W8$Y9CaAr4YK;MEtIv6zHPgG56fkQ{O;v&+LZZSS5xZ)k;F|BBEyn{?{McaBkBN&^4-GBt0 z3Q84zp@(aUqG%hvtsHE96a%&e@K7V%7O6y__9CsX@Z$6<*HmF8V_M@|NO+-kXh(Yj z`HS!wc4IlyOQO`ng@X60Z(O1-Xiv*fc%vTdNP7@?t44IDjluPu7&)Ugo8o5x9}|zA zf8_{M-Z{b)qCr7FFE-2T@P6X{rz^o97P=}Ry@)vgaMqF zbplna=n=3pRwQ{K7M&g*Ls&7GE+jr);^Qek9@ZZzc9UY1h>DW&ph9#&JI(R1PNX*M zH1<@GM4fKvfFzAW5?%BV61+?DP6KIq%Tz39Q1G;fcOFTD-6rLO=TMLa~UNjG{B>B&`Ga?Lo8!K8dO|nEGMz`Cts? zUh^q~X)z-Xi3_$hHiuUK*Uh~2KQ*(>5Lz8Kg5!ozukayMv`h5P8QX<31Vqsi2+M{ijMx9ZDO1`H6uLO(CLjX!RD1aWPoS zHvKQ7@?TW&=6}+ssNj=hlsxReRYtqvv|+pdTN&1y|5HO}jQAG~6*kY6A=L8U4c)($ zSM|#O>uoIh-!<=g4vn--&!796E8xXOQZw$Yg9vVptuyYEqbw+8} zm7{1_42~3fX!Id2wnFI55EM4+rmab?Xt!?YLnwywXuCs&OTaBzFX1e4$#T^~25qLe zBA@UR%XsK$+7J)wza33${Wr36{zKWmyyzGjf~VdwV`vS&e+>2HGjzm(F?2F;-eWAi z4?Fnh;?x=>s}VC#&0`6L?t zsZJgJ9~80g-;`;}X|+NhD;&pV|Gz1LQEkmK8z}Bs#NW+L5*;_<@@f*y^usN zuq!-fGOd<{s~H}tT5-idjfw&u7@!EVM*`Y|SUhlP#J~u(DHacBZ2`rlPMncpDYOky z%7g@A?MM)#fTf%iS1g6TU6eB5>gp=i8jNW$a1kFbG0H!2(-c}2ZM60@>Wim)Fjcn- zXI-WVN9piXF-nuB(OUUzQ~ooy>HitqalUN&e^BYk|BUU-zh>hwqpkg_s^n%pKigfTw15?|2?;@xBlm8 zt>(<8GJ)UKadWAakXSVg>I`1UWu56ioYf(J&Z3X*cZ%!_`i^ z=?yYJ!RT2U~F7Zsb@VbN@aT|+3G9xt$%R)Z`3pEh`??2)OI*x-ZW4$@wj)U z5s&t;2E;d38Y_*22Tij(i5R|@{fa@PsY;sCOL)9Y`(A8x6TI6?)k5G@;Uap8Pn!7X z(hF_?@z0px9pH4Ml4(7PWu2|rlH*pXAD_L~r7Sn?qcvUe&(X=^CR#X=(>!(`&fnqc zn0?etJjGwN)|}GAmrYR04 z@prE^CT!(YQ1S#*s{;;6Qyom=uXbxpYeAU?%38s+=l~5di|X)(GLK(4Kxb4xMU`1# zCqglJ6E_nO67CYeD14^&&DCz`e%2UrK~ohbd0ah+M+2+)v4iwHuCQwlX)A2tVcHoW zPwoE){9l{dafLyO`SZxo(y)xiI@P~lLOhGI18B5cR~ z?Ual7H`wyH{Sy6BPm1ylmuN-nNnF^(nU2^CVcy8c50=aE;+JUz8AG+(cNg4{ISGLW z03UFA9C!8OhxSp6ntPf05;&#)auv_7Q0BR7bdMSJ&5N9*)>!0?lazwgp3c%@6Sly|Qz|Z~H9V!}NX_xos4qOF4x&eGi|A#)D=>N)4p@GZ?5*8sePww-znOcYu}05mucVe+INih z9i@G9@T*SBkfxd8x*GPqG?Ks#b#s4dlMybf-w%;$09@hghDvMTnwmUJx&YXc<|Cvu z;fwKHkn>$5q%-1}Y;KMeMBtYC>nQ0rWKw?|BcUh1sanTLcmZ>h$4rpQh(g=Zf%E1-FP$rKj_e>Ui67ntB=yeV9=th{x$p5YA^N_JoL zTgVO8d(;^ZPq9_AU6k1_NX=b{y}YeHT`0NH>hr<@}Hf(_RsDEHmb1IU8^FBe29 zf4Nw1Q$f2!b(*umS()o%J;iG+kre#Jw@yo>j1mv2ZHTKf#MQRhS=71?7oef8%1~Fa zG!1iAhPmR^>J!2LkQZJmjV<~+5h5Suixg${Vwq{K$~0H&d3F0zDGM!y*IglnVUcfE zXeB4Dka`D9GYV#*gduJU{%q5gfJq)Ny;5p|?^rVMcL>1$F*c8)xt}LhE+nqk9M!IMQ`Wj!|KwFxN&Vn4U%pC8#pg~%S4%b=;5w_Nitvc1td@!( zZRBcv2)>^0Ta6ZlziP8as*WnCxdzSWF^^v(m4fr?@HKkl%_@3~3;c6cni27Y+Ge>c zv)ob5JDl;M9IiKxUgWwf__IUr1t!{1+6QE3XZN*E<>l8&r2?iDba|e;fTHzS)v*8tyvGz$MUt#zizsyvqk~mud#$ z+c?n#=>xOWW`VLoJeoPXT^fn^0Es)K0jU1lJ8-I;;>Mj)Nl(#dEU6il{_yR*T5Bhc zi}?oLA)v^o>dxKBj>XRJk$lm{p6}6Y%x~|VLO9`4rr@fL7JXL$|m8J{V;JHug zNYFL(+Ap;%jy?WE>+xc$9CpUMvW$v8BNF?3SoHboesotJy84BoW886yT95Hw2XQVw zR(BsnJMW|$g;4Aps^HHNUA36#Mj>X^TdKU(PLAJEmNo z1%Hm}A~4D0Z4aY8p5pTl|4lz5C1s?9lkUu6-EKP^l_EcwX8R=te~#&bFv;U9j!J(N z#~FW7QZ7oi^_rq_nq88VOOlvomnG%0gwt&9pC9Y;mZaR0P?tCU6rJX^j(t?mGfBap z<9a=qFTCaQZX7d8*Jl^%6Q`^oZbX6*OUoHv@SS@^Zyhtaqe&Wnrc+0 z8c|>E&!N7m>h`2Lq+>?qjI(mgXq{Ft&5j!t{5hjH1QUm&=580I2Iw2wUX(_7{n5^?DW`y7?n&69?;8j;O!6&b3 zg4OS@OD-TJ-`6Ey(F!1I9-n?gs_yiT%F1=k4Eco{QWgE zQD*yXsis(597~Swp}5-}d^aNgzihPd{TDNC3(lP2wGnH>6Agz-HkuXuxuNS76O=6c z1kbu7eT6o1N_YN+x5JQ%nR}2*{mG@H1i3K`2;en z5AI5*0WbfwbN;{hwfjIva z2oI&AuwGRjN_zm;xEqh8^4_?r>8yCng;$|slTr>fRQ56Yg~z{rseJT~hE5930rG=tJ3K8!yF20a@N+NKLc`JS4c?^FC86OlV zL&O7!%Ba%4$N7f0QUJW<$KOhI$ll|s-#aPT2%C5#8J{P-Qj=u4rG#7QO%{0psj&iN zrJdH7E=n7`E?ceBRw%Nl?052bq*swjN4br5$qiu)gIpUF6qz zS2)d89tBPVC8aHT{WjRSP}w z$5Kie)C4_ z0HKxT)r#PQoHNIHH%B_wk*+Tyml60Y4%j_Vt}oy=fpQm-{t_q$iu8mdedb8Li^}B$ zzAmPP^v+gGQZn+}%KI0^bNMBFYf*VG4(W(uvUpI0_h1je7wxK&X23f@!JqeY%&9m& zP=3oR7nkp0nc^ih8_6pnUj`?=SEGpaF`pSEcZ31_b&wnYQ&rzmat9)8w~|r;b^l!L zUq+tdiWlL&;WCk6I1i{USAvmh!G**4uP`*oW zW?XK9y~k_3GRy3qgC)FOJ;>|D$_c(WbFa8p# zS~Wv<1?bP~Wy+DFF=xe#@PV1~5h`|NpZAp;ikD)!-^%gwVNlKhAO8iOA%uJT$T0$6zXm`FRlMV7DCv3{d-EwP~!!PVc?JeND_Q+}Yt1#hvS0X|GI z;S+|-AdU-7j^96+r(XG0o(TAm{@Z=H0^o1Z*bd0coc`^zmU)tR*3y|bJt=D~!nZAT z)mbOyqksdNc^ZH14UfX!T#%#9izSSc!Ma3kd{M>+)l2#RL*09aSy43qqs$3&&h#vB zU||F7LZ2l{Ttp?qf`EY_7?31UNs@y|Tr!B{)Z`?2mjxsoR3w80$%Z8YM=1OW;6 zQ#EI17vA^#yWjgf_m6vhaOX^i>gww1>gw*Qni0Qy-v(p-{JS^KqosuIT=MR4tK2NC|!U7sef>>s{g2zxUvTEG1Owfp@kCjs5i4`?6O%q$1pU2OJ9baqBUfao7_fys|Q`TxNLm z;(3pF=(i`r6W*HC3gU>iw%p|otWjq?`lLv}tQ|=4M7YBRP&$t+1t$QuFOqQX5lFq(lkqQaRRdLtlKHm6>TsL(G;Pa`T6&7+6lofA42 zrw^h2w$7(Fq4aNpdMg*G6IW0_OVoK-NUzA$c|<@f7uM@j>CcPkU5GjlitC9!?7{zX z!zO2|qxopGg8S2NfdMZq9hrOhia>HI1Goig3?!mE@ z^fYXu_f^uTG`ycq2ll9@4N6E{=VMb z2mK3Tpb4Vg=mp_Z1zFHToo}f>j@gT z@W7(iquv^nb*dVatS^5?B9$DfXCsNk4i3pfbvQVz3{@JbxAf95vc3OHpX&>>tY;wx z;&5dV4?mYP>fAVe1`75auWuo~eQBbe$L;?Ca~5aYXH=sp`j<#Grs{`WxlW*B6wJY5 zU}uXGF=SJveyQV%QLY*KBe3by8Tued^Fc~aguQ5*()Yktx%W(6@HJ1Wjul|!Y#mbL z$562a`d~8HRI3(Zdi|t|FVf$o*P)B>`g6#&SpP)Req7$~3z$8ptNu&%M#v2vUkY^K zfHZQsjuU}&m9R?x6ldgfR_QOgw9}!(sX7eBPlt}K*FSJ0yHrT;g6z2=9p?t8Ll3{w zU-BZk^fpeOw@q(J$&YvFl_r$;hPUr`HwBGIYp|@Y3)_nwe=Q$AOR4C~;y)_kDd|pqcO2Ue%YmwbN?x4gCnwq}NToulBRLdQ-1QuN80UeT|b|zH9^g&_yNA-{J?bn8>npu6bwL76-v-;p{az_=*?rV#K=Ly+; z)!aF8lo3fcQ)G7Fm5Vi;+WeZ+H^@~484ctjO*U{c(C%aneq!^r;M*uE8_KuQ^!B{I zxuN_~Xc!v~Uk;7yPjE#Mn*UimgyQ!-ILP>|fv==?S=Ddgs{k`+-`CnrE9qLuNbtR{ z;b^LL0bhU5RS!6v^d#hqg1&dqn-&FqV_f^Puyr6R?ADX=v?QOp;QnB&WD758aywt4w2V+Pcw@82>mYExCWQobJ0 zntm(go8$o{dzST$aB2UlGOzmLROBnZ`quCGQ1UCjDzMA9GESEBwX!qbFYilmGG{#M_m9uhjs_Uym&x`eZ6yih^* zdm+QwTj@Uv=vD#s=4js&INrT6#y1hTo*d&F?APX~#*@J}bJf$yJ~&K=7EbX&~8L(LcZuwR%F`r!*-$b=$1ZjG;<8_(Nc z`bLmK{OKlNE&pP#Dc429oqNwF-%Kjq;%gs#k7k6XZz14|RD&JiQk$vNydA#9R4Qo? zNDE>_;(M(`lvnoq))P^#9Pr^5X@>gbkgqU`%{xQ`vn1p`>ieCZmyY{z1imCx>qp;O z0&_3j0<-^=1?Jir3(Ue_EHEX0V=(Xh<||FrhM)IMqi4(|-Yc-!C3G8Aaaq&7f9R-LqO5bl-Q4knZ%*Hk z{|lt6>;ahJZ-Ezwe>c{+{W-9KIToss)Bm{}g%0QTPt?&?i#Y#&LZxUv0;WP0q@S7U zTF?*w%Ne0334Z3ySq1&fn?nlwnK!kf{;AN>rWf_&V^X0zMg2+xqmL`*?}LY{xW5-3 zpIDD8)}uuUe>Wr^F5z#F$15f25t?7pACDOl+LGv(v}HV7#$Srm|I!=$J=CCb{>QFW zUQ4H3q_S1;CuC3YLV%}w!#ZU-wc`wQ%0pXSIn^f>{6A?+t(sdaqUJKLIZ4&4>@Q+0 zr+O<;?|0a963wmm>tfAQ4uLw{Km+Fsw^(hD6?zU%+@|85r< zy4A#=s70^w$`)kc+))k=c7j>i$Fh_BI4~nrzL~#2?P}IH_veNGB*~$*p~o%!^)(&4 zO&5;N8@BS7)YgZRTlrf*o3=^iYU3Xbj+)!XzXjvdq%Fn;R6p{e|3f@p`iLL1tj806 zgxa?AFQM&&zoS2uWaGw82%M`uR^2-LC!)^N&i-$pjepa{KL&+rcJ)u7LMOUeg~s>b z7ZEyG-JFc%W1-|J{wW?0_V%OI z;F3mRRZ02ZLGnc9KS8D1&hx*D*X8s4wOoLCeS!a56D*RF;vbPs8{3|jKrM)E%VN3jCL`F`A;$%5!syRpe zg^m8$aCqU+?^Z)9xQZ%y)c>I>demQ7I}#dn)W6T=`oe2%Jr11kdptD`da+9>Z`o0N zPrpl8zN3fex3nzi57Tc9Jo%FFZ$x$=OS$mq2GTLQCqh-z{eMGvs4{2#rSWKe#(x!u zJN3@`Bi+zDTc7h+&{1m6CI5T$ymie#8SeI>;eYw#J#gn=^tXQ+hV7Nx{z`cCyp7X~ zuhoXz{+f6^xD5uI5$b&h0s=?P74G>9djPW4L;o5A70`^X^i1{{QwU^E!?;Tz{n?CV zD843}VL)dMeU-!DvA!5*&{+45H+Zaz6)K%l|J9&x3trA2qnRKfh{P%XkatNULfY2cc4YQrm!p{Y_1O&6o{sBk^@( zg!V{neBF3c`)$S>#?MGgf5T`8MWfoAM5CLQvUKZNWl2FT4lcj?#LzSxTz=EnXapCdoS%Z^u8DAe?q$TQ zO8t!7+Gy3VAH3Sfs5Ls%*>!#^r28N)FxG%DG6 z2Zwi|Q$rCk1Y>q~7)W|f)f{ewFj$X<8((SnLz_kz!)TGKFv{rRLUPI&V-3)6_8D@& z3gsSaJR~_67-uwwmfLZhu^0r17;j*;z7$$C5hly<7vDJuEj$`G_Hwwh(ovZx~G7)?;B%N*l7lzMqC_yM^`=NY^>h87sS zIF?^z%(s~K-;j5)k&Om6*B9VN*Hf=rwFK?033Xa(^wRW+nFRR|m1DV44=Q%cY-!)dq|dLS0uIO*PkOJv88SM3fdfx5hwh3|ehm<8<{_ z17CUCZmZ?xg1!hN7@{L;(kA17@;wVJ{tBT1U<8=B#du$f*? zpKV4dt8gasNGiN(n=#KSJdg_yMB&!kje5zrG+L*zb!Q5Rm2zA#wA8uCGc3MX6yuneJFt_NUsO>aQ+x8ACGnFUxKg;`G|+~ z7GkSx=MspFMBTXV5(^O6fTXl}tB)yQqYZf`)Dvk%pgG5wQL8zJMph5)Wji+L*vd8Nbmc1QmMHU#5}wHEOIP(`CHT!~~YBtY+{)ZKUEaESnh;{lyh9 zr~$lTzk=Vu8}PD_h0{!TzC85gLi87H;jd+vj5_PogYS$IxXLcP&**~KSJUSx=JMoX#fI|0vpEDci|*!J zwmI5JIc&U2Rx%%8;xV8WRJSD}j-lWO2scKI*^<%_g%0aN%n{?Ye7r8S3XmUZE6$=n zAK;G(80*xaBSv+rLqfKdf+lVjOrLe?*byTE9lCSGC`N+*L-`R9f=6toC4*uukwh^g zjPP8k9gIPNm;gN2oGDy8m`AopU zb5%24d6FPlI^h3~*iL34K(&K$C>4im>d;Z3xn7+*YIM?0sanU3D&^4QZq};WS$2V~ zKQmWnZm%=7$9Df+=vP<#sh%9{U?N`9diB*YC~2pZJZ@Ad2^hUC7;qlIR051na1$V$ zEoT9$&b|XZL90>6p_D98OOG2B^I$0YAU*-F;eEJ5A1eC^iaj`P6iPloz3;~v{g6R% z0<)lba^34dk+!NQ*QU?~;DApp4(KaCwV?IoN_`31r}#s5J)H=GeN$H(_Z$7O;AF9c zUwLa zN29#H0RDBb4ch&qQJ^5aI7$Hsd2y7MrDZ9cJ0sI7;gPS9VM-r0@rSJOp`t$-1vT6_ z*ZUco{~|T~XDF15L)U*cR%@}a!-0PX}2|Bl{;R=Y17KhW;y52Gr!is^p<^HlZl4?sy%dHyuw+o$Mqy~fUW zspPY`9+4xe55a$*2G;BB-nd?KC%Ka3R*v)n_dB|w&q>bqftxz+Cn8~5gM9%3!8irN zK5GzX%En-ik5rwLI;JLU)$s1Vs zR;hY7zz(a_m>U?cwW|D0V@U+6!2~gwrMf?`O8s%u7#GK6NdQA2uqQ?OLYND}j+~Uz z)TCQRt_TcEbWpEOvvj>$d&}thB7FbBv%$hLfsu&io5l@9%)%gJUYUnFS_pDCIv6kG zz_1%sgTIZqY~i*F;ck)$*#B>%G8ifJH@04}7~#1g`6_`r3O^RlILh!Ym5)y>DcvK^^_TxNNT0 zJc2mitYRJ;#Uj7dp~t@@5y>x$tVY{;Aokv4qXY7{J~j#lzS1$cvB6qc zx~(z&`?2u?h#dFCDCu8DqTvnDso@i}nX1}9ft1G){1c-PIJLTFOAPhx6Grvy6DV6x zl;m0n&1&H(V4+6uSmgbH(jiv zONBg!h(lxL43SU!Ce+9fjVK1;YE%4;$HEBFLK_fz8X>Ne>13E=!^@ ztY?tsV|{dA%BZ{bMaHS|utO(Bt(0^d0c-ijNkY{`4@b&*MdljPwMTr_j^olmo z4@5E1FGVrYb4H8Oc|qTbL=3D{G)u8U(Hq70fl!I&ahMS;YWh-0Zh$_&MT=O9HNlli z!2YeIEDcSlge-}Zi|sm@#bU;AE{tLk&?Tew(lOk6ofvMtZ%n4vA;hS4__|Q*0^W; z8wlhF$Zdh#mdK^ONXvlThgQgGjT{nMts%D12S_ZOGc+KPWksZkXkhh-gx6|yAXYS_ zNYVeoCQ~Kk5f3mi_3>GW+m|o3Js_vs=}`5>q-JAz8lqhRYdW?Mr#c&jhZB$SF1@?L>_TV z$5>KG-c+@rif9zQTZhK#!4jAiD=iF~DewXX4+>TlvC&uo5DfvVfGGv70)g-<(6Fkg zi_x546(ql>zO5<>W{2tp$W)*1i&E9isv?*K#m$6J;uVDRvO-v8!|7=@TKy7f{k8PH zM6Bbi7j+^65fqB#kfs_|gN#nmy~xItquxWUplmEW$R1oxzhQ(}T z5@y+YwJk|RiR(IuL04d@>Q^hbQgu@4F!Y|{ zLy_Wmwc;gDQE$E~5)cKY%d27{i7-q3z;f%WDdK^Bp_*X%G}X8!*ds+vtjX)f%9mPkl; z7LiU8+xQF}k1KsFKc+$GjQQ=9>mspz&nVZAfOo^@9UbTwmce?kyX+^s6Sr}857~oC z^~AXwlr2u`C3|sU6|602Q&PRQcoFiKGu6;pBFf7})%GzWMy;-mX^tIIZPA4Ej*K4E zcuka``{UO{i>3~OCJszY2SL+n51J44B%9?Vg79wOTIi~bO8}(HA-l5bIMipQfprOG zY;?d>MP3&xX*YKKby4|U^q?)HE*nz`gm$K`hgC<0M*;sFYG8!Q$#PT@{s@#@gLEPb zKs`iq?+X9L%J+&1;!mTxl#sDCqEEqD`hJ56nWQzX>A zY3mftWpirc100ThKogyN)&gb(prXTat(@_MR!lkcVTG`Z2LP9uBH;UKiY2Ko~sOUjA8mpF#%_uMLXjP~_&-VNE#alsp5TM;Ac%Mj|L5x4-V)=A0LcPj;_DC^1>{FGjSEnJ!$UR@ zkvl>B23W1q)VcVE$10vsnL{C*Ozr*eIen-?GeXar_ghh{7Dbt#l zs*b(G6wCRps8bf@YEn7ulZj$Aoqom1nlg_1#o1VQsFby!PI{L|W7oUl6>5hIU@WMe z@T`OOhyLe!kK1|gJyGY`y-+GrqCjk}SzneS&<$YS+yEy(SsRI_QI4Q$E=$SgwxCjj z8i}~P5J_CG6*k_jK{Ar&LrKZQZgxW>!MoX8jl|D%wY|Ryo{&n5n~FNEFtbZ>_pG5p z_|=OV_1PLr3+N?HUgAWH5LgEO&EM)+>Ezwf^acSgliZ)^@UzUH@htxvwZ(%{7~Z zUlYl{A^U!bpWh&|k1x0d@fCyLYH|yG7zSr{naks{IwrVXlgP%;?ONao(cKxr9hAM3 zcmTh4YJudTu)f5;J|?(}>+I43-&2KscKf@j!XB!CUwa6gMUB0b{+)&q!>{i&@HBAR zhj*g>0m?iGr+oS_j64|5{hm?}X%f#vU_hTN5In4Aek9_ezy%h~t?EBh5MSD|d?f1q zPkANViE8-|=@Q}OfUXmt49Dlt1+8QAC+hQdmgvE^8o*Xqe12&s@_I0!FRSb!ll1ss z?wG~Z(XUJo3F?>COqN#g(Q9*}xnioksLS`WPYYh@A<@Gq8hr0m>#GdDV^%qT(x0dDlRta*+rP;2qlr>z$ayX*>ewk6B3_ zh8{dhmFWo8`nYP`5n}n6>faG;Jzjm$QQXcA0E=C6u?r9vyMwD;jGs#B1Wq5T_H+_u zTu*g%zmxbNCr0qFD+oh}$!?q0?LQW!^MTe#$3@gqKK8@q=rXGSqoX!_%ya1M$D&-E zgWZ>I`6ZWL53>iiTn~>UmDrip|MxqKf;dl8gF5p(Uej5;L9Y)xL+wsc@m)mo2*Sj{ zVPqFxkXLrGRO~LIk{9EA*sZqiG-;r#cZK?qrbcuX^*i$LI!GkQ&2F5u9(Lmpv;d9J zVMeJS@OG4m!c+#|EW^g22+d0z0)tXk!52`_Q6-8|!Q#XPaMK>EDs{s~(4rW-+*-W( zNjFhQTJ(ZqN!){I*tWc}@lwqXnKACF*k%3HO_a!x%(Y}Ks_`0@!PiLnIt=5_7?B5E zEZ<$^BN{dC&Z^sx?xG^SZs`uen4;3Vi;}cBd+bpQ^k9Kmq6hTwG}WYsNTiwJQE8`m zW-RF;DkA;Y9#GU$RGFS4>ILw+huZ#(cy{E_(=MZHA zm%wHnh7|Y>BZ#qTVNVf9=-{I)7E!+I$-2UyJ$XYddx^?u_Jdw5V+ZvTuLGC8y~O)S z%-37Qz>~dPZ;`*~Hl1YT77bhMLJUb3A`BrDzhwb$B|;ty?#pUIT}KAi={Li&QMHg%D95YbUo%n5YYTCr-nJ&BJ@9+{0FIO!6%|jva?&j zcXxoyEksbzB!1rlIekII5BdB5^@eS3sqP7MRwMoO(fclamg_*&H<^ge17mLOM+3KTC3^0Pem*-UZQIFw#ZB8rB^?- zmT=LJr+(#r)*{-kpGd%2gsenB`BPUkvnttbZs=#V$=PWxnU=ZDYyG&*-2JUKllt=t z-n2gtfB*hgd$am;dk6bl?fD0Y1UmTPP8@Z~qb_Rrm`ffbBx?*{KJ7Pv`E=6&I?Pg+ z1~7LO9?0C)c_8wRsFedn@j6HJAi}XfbUDkov+N?WGe+~VOD0PEeC)E8aVPr;XCqE~ zC5fL;k*)F%0`cL;JqQ!`i0VE_*5*w?s&(>ZsBTjCYJXSf3gp)v84S8k~YV$xuo!=SY=n=0*NQC%$> zEIO9u)3jB%lGZ6;dJti3R=MHc)R2gV4Jm1MNN6wHXJUma$v9t3Q*Dw(p^DCO2tDEe zt4BYwV)G-eMY!rYO`g+8m%pmXt6booChut&iyg^e9B|ez$vl98A)*|;zA;23Fu*BNJ zMZR^*Z>h+jVL0_qQ|pI`vK3Lp657^K&b`s=OWX$|Mf)-q3Pas;Xn2IcI%s*ATMl!E%<9^3x5SshR;$UQU>pDvIBUn2QPu$o z%W6cUv{?*&x`wjoY}U~tffmCuqeU)~Hrds-10pv~L@FGh>R`u3s>bD56Bf}JFv+J7uNz!wAHfNy6aP8XaZ;E0XX#5|0I%tMgq4jcGd zNgz#d3@^P^#)wkDt@9XcTT|46G0acjjuCGn(f^rfQiBks`qMN_NwRxF6R_ON1LHul z3B--zF|0#YL%ibf&V`zC*1a!2<8^P(XQDiyKKYE!sa2J+EciYc%T28qi(~Q><@#I{ zaUD%p#XlGEHHY}TSnI5v!%&||&12hu=CL;@B=K`MPH23#&|wjYtpj!qXxmu^#(mCh zr+vzx8~T84dGbIKkzqxfbS3p zI!mjnHHFpUj#K!q>WeARj#JcyDSQU!ohs^pNDZfoX2in)df0=i@~{Vi3${!}naAqv zR1xb7?`PEGsUjw?(;9rHmV1dh8LcHw)dYfq+$x2d)1qCpcJ z1iR_FEUWw+#}>debN{jvCIQN!^Ek|;&$)9sC^;wLM}{oGB9>+b9r6N&Si8Rur}NB; zn!z)x)(r6?odj`F7*o*H#a#ncER4-us+uwbOEesxW{B5F^RviUo`$6YHCIW-;#Ri; zj(IW9tW0=zJ=^EHil=QS1>Q_kvlT>piaMfLBfp|V6(km&Dc)!a@BrJIz_y`Y&|Tg^ z8){oh{t&IT#g!hGWW0TZw~t5xMJ=qFM6M1nXKN6~1A^#TJdVy}JpP)=>U`c=SdCIt zy;+P$hgrP&Ntq=Y7Xu!E4mBJ&zIG5$j z*tslc_RnQG^XFWaGcV0!IWu9NC>o2g%tkB#bsm~L03kxZHCv9%V?ej&F`#1e8BoXh z4Cu4@4CsgX45-us5fh7nDoB7PyX0gR2?cFHEf+ALp$kMV>VsOqI>q({P(Sf{b%CYw z7F79nir4~6undJE;hTU<`9p&Ert30Cfkl;?3t7APWFd4@yslr!+u)xTiu`#oL#z?} z+9khcG%_Y+U=dHqmlpAa?6Zg`41QU}6SB-=(Wb()JK_s2VuedCViEkl#s^?N%8mFlJ^ma_; zSSE7E+70b+%N-2Q!MNHohSz!-#%5o->bs1`X5li74PFl}V?MpOOys96IwSj|TmI-K z+3}NG{^aP2C|qzkk4mHE7!|xuT`m%Gg^&5T;w87dR!WQM>a*;RA5#)a{ z4Q{w4Vprn#4L3fsRAzeNRxx)ZuVU^vzDl&QY%9QZ zl~P1(tSx!Bc;ps_=Mc6_3KMo>3i^sGsT98Y{3nG6DmoQ=tcB_7^jedy3>&42N*ULe zr#v##zS0aar#-#`Gs=u^A`_^Oe^PCkNox7Uh2Vf zysDk^V2+1N{pOLsc~oGv5ZJWkUCnFbd#ibEoUxj_A6m_8qdN_k&?%~A8ai%s)M&V| z@Ve)8d~%w#_2e=C+$%r#GKDQ^xIc~g>+dvc?#HiT{wlYI$@2ahkOh?eWDPUYiZ#~s zzPN^`w|}k3|FSc^*LsN@>%8bRey;P8I_M%pByH{?f4q!7>%bIjMymAM3$(nQ)*YEVootgS+S@Z4k%3YjjO#@4i z?xskY8GbgOcq(yP3v)@_1K?G@0+{xzzxWt^7c~LyKf!V;=D2ivCe-3pao+5RAoC`Zyi6C() zs=-EPz#bc|!@S8GnKO26v{u71{mtAedXvaX8{2eOaEnWBA%TpsOvgvGRE15}#ui!I zU2=QoCFJ8xjKQ=`q7bp%H=9IkWeW)Fxg_84{m;XU&k=kll2;|b;iC`A<)e>GoE-=; zYBfUG@dDt05Hs!kkSI@tIph%L_YjL2eKYG?uWrV4OHqS1i#%RX>kxL2`$R6acC#o3 z!Ek!Bs9ykBrMjS~f#8Kv02_|Nbk2T=QG=ZZNz}Sui3W6oHvcQpnx5L%Vspmb(EC)k zG2%zU_zK67N594m6bcpkMs%d-q;Eu%BA6E7pP_Vs=WOqWX;g8zX8G2Uo5~Os*a9m? zRO+xrjH2hwEuwyy`IeKDkS$Fce9O!?joyeMv4?)Om26ro{(tR4LY}_hJ(7DF>t=2&pXoUL{ z;G2#M9v6KL5dqCcs(jl-@v=A(JWDl$zi9Go#^sUI(cie@@0vtDe*cb(8#Qp7khz}d zd`t8T>tdIPIB0S0HW8cqb029;0C|PhBa$xieUT_;$Gqv9OTUW4p)`CMF+&+QgiUw^KBhPEc5Uu`=WSNQYs!fxb>Usc!8Qk#C|4^qH9m+sh*&7(lL57skri ziojeMI}ylde2EXa<7`RcK`y?KMg|Ij$EyA=F`niF{Q1IK=H*>1`+d9lY^Ks~R+;+m z=4n4?H%qDOyG3hs_^mzA@2p$+`Q!oyy9g{|nT%*YLjhdFuiPU_P#de9Hh$Z~bI!Y$ zC1I_-qBg*d+skdN-pg$~-78wt=4c}i^$`tUh9w!k(Sb4GJBG2~J6<18ekaP)$;n2w z^^6$})-Ab@kCD3V6ZOcNX#s;FOD@c6d=G;<3#u$kS3}R5vB_ZN7szez1zLrzvc)(% zyx14#8u`Ez>NaTH#d^kX-VQL3)9l!>WO?|hFfMZH%X#i}ZDWmQ{YqN6Tuv6`$#f-Wgsx4KM%@%j>Vd%tK-%1groSQoCUb_Ybh z5>C5s6PEAL;Jhv0Ar-{}g)f?tV1Ey8aQD>O17bCaj+O^S)mJmf1D>EVpThSjgF(Xe z`@x|pV>D!Ucn0>T!npOuv^jTBM8g&Q{z1_!DqTmIIDDlKH-Ki)wr&1Vb^IQaWxSg7 zz1T^t@tZTOEe`Rp4m-qCYu6#x`pm=38YK?%)Ji@q+9W=wjM43G@C-`}gs{UGfT4c; z#`vElDX|dC<`EH_{FyJv2emjDv~qu^T<5arJcGGF5=Y|q1uZbz7i5bEr-EbZ5JnjU z`7g!}NaX!ncv9&km5`=Z9>L`oOi7MF3ZF|?e;r{d9DNj07_SYEvi8;KD9)Wz)x@J% zW0AV%C|{WUd{k7-ch1(m!}gBRmf2{G%ne7F6jl0|`0&jPa#EA9P@#c|LpRgy%JD?3 zeB{#sOHW)2<)?yD=BM*gRX;9rRYH|QF5DuaI4TzA zobW^`LI8@=MI>&YF$TyF`=aoCI;kcB0JN8-#|4`=BR|vCWWS#5Bjfe(->qlD3@w0Mwk%x4FeJ7ZrH&0|-LE4LhR)qMf3bDujsN7 zP{uJY;Z6~+_zjQj$7=15mY#IuM-iKqCnLN+K|buxa{q*7a~Km0uE!uE&Moj`E`|ZP ztLnx4(W?DVq5yHkxSvF9B&ws8W$e!z##SXB6Ys0+KZ~kSr~do2Yx}eKI?7pQOW-D? zB;EW&fQ?dR)3HfTSDn*E=_rTK;!(url%Z-}x`-oVvqUmNwik>u=`>?!oCIypq^r1- zf=;xnoD{{P&)5w2x_q66FIQ#i(D8VhYIh3FI601`4mp9QsO6_bJnfPbDKrYT|B3vB1ZZE` z*Ovd#9xj|>W{5Z~%I9++g^fC4pG)`pICSI5qZ zSo$1tC)q@HLUGxIDt`I^M#^AeK1$#*P!WI@8PV8wV_L4ne zW4S~%{3Wv~S~6NlwwE%s;}>Y*OVov5M7J2HC7kv(!C{|M=;L2SzM?j8uY46t$A{7j zYf7*@H)tDF!q)npTKB7ELfibDs9eP9rmRmLDh6{GXS}SsFr>!{we6gUibhU(GQDHE zpqWH8lL&*fYv)AcsI&il0yX_joOh+Ct7^YPRF6?jei!i>M<$r;3n|Q_HQ(v{a*Uet zyJ$x%T#B>8dCptMlPSDBJ--vf@g&&;bvU1SC&rpQbqFW!nDOxAPf=^mW1_*M;k>mI zyLq1FQ^EyH!nD4?+no^?pz%Tn1X?@UV;`ngzo-otL}OBGDLyvI8k?Q-U1YVk{zYqb z`uHN&=rlFuA{2W_o$VJzuA*RX)Nfv{{k&2FnY(5Vx@+MHcVFdyM@zvd^3~# z*GtwMy~MYgFJ9*TUFXYu@;v%7pFAJ9Eb7Cmih2f(h}vvKZN3kXv`K?3kafVa}aTRbmcB--gL>y0uaZ-*iQ2S$uGG}_IU>eO;eu1u zztjj( z{I?innMNoa&*(uo0tA(dV%^$)0C2KI3rN6iy1jlt{9XK;S9$$56cW4^zipk?pxjn6 z$)yhNC&OGq$h!Blps?~yxmU?bA``$Nw^@9Bc^jHA0A9V#;w#%7NHe_FyTj79{T;}s zu}a+$Ws9M2tL-x!GBQ~0vaAeN^D)dbW(Ife@YH|duBbp;L94{`a)<8Q2H$0Iu;Z?% z55@}I6M4#7t8`WDm#fmMnk77(Se~m{M~+D{NmhF%OMP%p)Fw5-I)sD@nRbt_{SMsY zE%lRoq8zCSZY6J7m;4R>;l1jVe?(ofEa&T=u)l(R`J*GmOE%e?mTJz<&}e{nj{6L_ z)_qZ(0B2JZ+OVVR^7}lm9^4nL@*#aQlZNlZXizs>;CotW41*7Ydvy5%zSgOi5uCJ zvE(m!h?%`a?RusZuIz!zo{UoU{^e3V{uMDXm>Nt781a73YzBi~So7Xfi~hBY*ZV&b z_2|Ge+|BT?!y@e_q>B3Wk;om7F|z1O=SFOzM*JGKi&HrsW7MXol8?cPt5t)?q5uiZ z#WvHaWTZf{eesxgsuv#fPPN1nmX`IN@J@B%6VZmQRsnv8OYUI$<17rM@&FJWi_zr( z$m=XFUdp6a!U_-aoW;e5<5(ODp@2aJtk@I7RO_eUQ;-9VWTi}et{d9wAp%0(!Rkyp zP#ABT$`3U8fM}5R6o;DQ)ybzKn6W2Ff~BxqRs&bN17oKL%okOq5~cy^Fuk4$m*eRj zO?Zw?pKG$FTV5U8NcOAKubW8_sHHTs&b#Ptv@Jdo0jvz}s1xDK`fNX6L{3@cyeP|J zP0!rRmt+E5pGxA3LgnFJ{xUqChWXTl4Q6a?Gr<(aX z`IjVwH5nb-#{^lPcsPMdVaG@hx*bndU0u`#wa8_@LbHMkz}4_SHJJo8w22w1{BE;Re+aYIaz_!1+HlMzL)lx#W8-(JmyRAU!UYLql({SXG3TL zuTlsVP>am19k;ItIO^Nx)??H$)Qg9ODr994XGw$*nPq{DNwz|m>@(T5i!ow&FMC;CP(qOi?PrCvX7uo7W^~ zE<-mHy$njN{YvDj_!2(00~poO`)crPOM<0C#Q;355-^+$tTNK85I2AauwZjqRaq7M zFi!v9QN}S^%}klG|6iv})PJXp>Y$qiAgTWJo9`lcXjQ{}FB(Qrd^Kf#LS8yoQL7A^ z%xbRzI;E+<4YM>Y9A2Kzq)d6I--NfpJHkvr_9w#RNCK~bZ_9yc@$D}-3yf6X3$swx zODIeui<8X2>d+HmPDZ%S(4?&9TjU^pE{ECEya+2AV#j)#P{A8!UbXP;2%+*DW{eL4 z5XaCL)uNnc!Q2RI(oJRw=9Y9ACFzr5bd_={r&&CcGc^1FfkyElLYq*tR@{jKk?cfK zH_{9{L&E`>_za%SREWH^Qq}lKlboSvqVt(|buBfNwU9ZC zqL%z;e4xKnR1tF(itZ?4UUs9%%Hn1p#QDiz!lcL&VQhRjX&gG+eKamoyV7>W=lnP2AkbS4ocqMf|1A_~y_ytauWy;)H~y zc^!Ohvkpyqeya;m^{@)m#b>#%S{Fajhe`y#5A?owt^F`77C3RiM#? zyro95jF5^{1tnw^8ie!AgH@?yHCYwktOn{ATtVoBz#z{nW?U?aqxV7BsUW?UJne${ zu@zF|tyj$9*fE`W1*E&J{N=zRsj6Bzvm-EBS=bG_)Zt34J92>PmD_NXyxEIeD#907#J4^7p6s zNAUTF&axbvqy$!2QbS|kGgs3Gz{8KHb035eZ4?43%MK(3@ zMLwE+83795w%F998;ssf&4M}5Vg804u%{qZn7}KWnw1OijLq-?r7k1tfW7i@`|8Gf zCZA;HZ)TRy=%?k!pQ73~GhcwLnB2@P;98<9dBK1W!aa4OnOVw&<62po^I6RD^mU?w zDzUlg2NfzbH{0RPb76CHEP@Lc|G@k$5L8m@;3^aPPb z7=q=A*DGRSt%%OgX~AM@oAo%~!c5E$Xn81b9Th|1I;!N%$_9Y^VoUQi53tLlv{NEl zO>1c?@~^ZFZ*?fYiIVMI*fQ6lwoY@DlfXSTmA0p=cCA>|7~RTDh;|fZ=g=uT49@XA zyjEr`qF`CoF$RPb-I0W~3_!WtinWaR)@Gs$uWz+B^HO*ma-J&4D>BBTV~ z=GvF9IMGKO(bc5#bDAZ~yM~YPVMMu(D$hNs&a^ROsEvDQBY6ZV$d13#G(=w|3l%$! zVbJbTfPs?{Dq%wZlzbQ^wI#W^2$}2+Er~o zG|Nys>%#5K{}8JoU~Hu)0RQqK*2)y6eS{lZtDjq7TjYgOh=!d@yscijHB28)bLg{; zz;Y6djV$^&m9~@B5p{M48yhjgPUcRsHL_XB>bIKpky)@YaNXwsrP_%4f`9v-hn~qq zC^Ov=TmO4*6oK_&JaotlA;c)E-0jT#zAzH1QadxA$k4Q%Stb!po_wasQ(k$Bsd>gL z@$ckwZL1xTdhReie{5$aSOc>JqtwnUn0+rXru`*MoQ#!eZ%T@KwUAsaSwP8!z<;+0nzp{rhbl@Qv% z2wkH(Tu5HC>%d3xt4>gt0P+T9^OjZKu(M(H_7_^DQT&^-*K&)0+u4p4+-0-*a(4mqx zB&u8rPW~mI187Iiu#u#4P{ru+BG&X5ZHWq&RIN6cxr)4Ot$hwg*kuxxNcjot3OwX0 zup1lT;$6)^L7-7JGa8N=P7r4-}$=oCYy-^8@1J&la zmfOj8lm!nF0@VSv9Jn3foz@WukPLGyQ{cHqH2PQ;{n#Q>XFFGR2I%TPW;%fH!da?r zcQe+&;?To-?b_YU)9R5;^WKQ$%$gFXI1JhcWjRImu@H7Dz(jyBrAri^Y)%Hupls4( zP5GlcVqb#vgKa=m3E{@&;OF4szHJB}PqQT_YF6%HD@TvgRr4OUa^$o#M#Bvd(d;vF zS%T1eN6L;&0!ETUrot7vYE?QvVMICDSl z_cV(JLAn(VM5>AlFZ^5KfL7IenYjz`YE9Xx6o8n1tma$n)#P<+Bc$M?lNV9ftOPZ` z7qlhNqy*P}?kdx|uFEgK)aaQ@R!%cV_wa*Qx#OpA}L6j0)j)%dj*1gSqt)C?z zt|LIey$;&AnLx}Di-22f0`8+=BNhQU%^~1^s>eyV7PAPr})&8T?B+=0Ls8kxpD zvX5D`1?Y9m0YG#(p-KEZ=0FO|7`|(x{2!g((c4dCkwiaWh5I81HQ|2RZK^dN`=Z3D z@X!IRuliUtOz&fsDT%f(Jk$0?3IRkc%C>N@lC!%*LiX4xGs?$t2QUWjd}8w?fDZh` z%xCeW6Yn&98$%<00I_xr_ys5HB3DxGs8^RCO35(*6a7U|0=exwUv2j zHK2yhH*;5TYCqECBQE#&nGQeE7V?%m0Mmoh9C{q3HaH34 z5v&%@q$~M_nHvEviF^)-6E1neAqbYh$pb8coOB=%K~A|O{+)C{g$Z)ng>ya1KSQNa z`_=%PAZRYfK${?VDK`)-f)b4eS}bzKg0ChIM6Z#*j-JRrHqfMyObD`e$0b*Kf_EJ} zBogkr0_lW4?{%2JxzIluh3>iJKQ8Oa?Sf6F2QK*_%r>0nkm(`S<0OQDu*gJjs^=gx z7tXNkOlk;$ARaq(vZ<%iz7Pq`Fs8$3hvl?4!Y%P{7;UvOCy#W?ksM556qUAN1V_8& zXigsEmZRJh4}oV0LsKT4^Tg+fJYXTC-WY6#EeF-sA&5FOYA_B;fxt8i0d-`VnL8W2 z!ZS6k)-4fHzS&lr>il3c0q!M0;G9jK`S_3tx#HPr4tW+(9WDkBa|_}*7{Vsov&w<6 zn1WbvHSU<|oop5*%kmWt03sni2ZDbq97tg%;)oQKpJJgHPEK{pR3^)6gyp9&7#3Na zHq$721IgmGZn>5VB2v-1Fr`pRRe@n<4AJx4Gfn^ImcKE*es@d!JNG;e z=iTx==U;Hk3*72O3mG+Xm`zV-N?ZY_c!F1{fHgaja20Nt&s>*Z<3iV|kj0}&xbDVH zv7JB^f&V5T-EdH~9XbipHGBAOx=YBL;ql`{XZ&taMNX2p!aceM-f1e{5gxR{(7Zq=zY%OhuTW3xSS zw#O22PUajq&*F@U5cQBQuR4viD7wgjNEBTRa}tkS^gQSh%4qAV^QQ( zxShAgfD(Ywjh+BJag3SJ0IN6Hm~#V|!U&7sI8s>Dh1QkWu} zasBX_J>MJ%e|qGf4r0)^U;4~iac(#Oh&yh2B>vrSAcg1KEswm#^!S@f@3XPG?UA=R z`Hn~a?U8rF+~Kr&*CX#TRqlD@JuZ0PBkzaD2Bp;L&#>YEnFpU)lW+)~qdC=wdgV|) zt{(1{_&3BlSD;gusee$0ux~s6OEJ9_#SgSO=sW>$RwQ$Ht#MoUKX7X-w7d z(c?I($Ek8$xM4@yPQa~%Cpa;q1QI5~S(%3Hz70Hil2=X&pB8eW1sz*H95YU)x|}K} zKM#EhL!X*a0tr(Ix_pce^JX`f)Yp_Zxqu%RH2|{EZZ8YI?ZiqCr&Q093`u}|iRsn15`78l-4vdGq!Sl*^vk-O*gfQmwK|JMB6DF9#>J6@B7EG{vK7>COW~#THieNt4Z}WX6`W z2=YV{h?!V>62WwGCwn3FARMh3{Ct?0zvk>zyKep-p|jN8G3#1mCuX zvxZXyHUd-t#wD5BC+*cKfvXcL0Yf+G%Y=g3epKWpXNVuTSsI;egamgtn^llssA1=W zPXViaCj&w4GPRr220(RSJ;{dWnbTl$LRm0FKX=T7p2F$H8VOZG)Ky_gDD=XV@)R}2G)ME^}uDaFO z%pE=uhBlUWx`kzJ2B50o)oYatb{Dx-_vxlDEIjE(hV=paMuuOgy$ov?3r8ozzLBY} z)1uta20(RSk|rBkI6B2M{5Vi@Hxq}dBokq%4sLH~ob3x6_#QDyoci=7G2}N1JM&qs zHp|>9f>}}tcn!*C&o%xZ-&jDs9~cLGOj!@M#_I(hq1IMKej%)2b4d?4URvll8Fcf* z%M$m#oeh8rOI~50C#*Fgo<^B`yuzZi9`IoZQJ8eazXmPI8i`Qs8+4Jx!Z2 z%U=Kfz!Bywd;P;pxmnhVGTTB;wSeb{3+eD6vDd#vly!}mO%PJMa}* zk{QdTPDRRP-)17tVI@+C*75 z8Lv%YsMyDzn{7t5Wa@DiwTvM5UuDMYYo{XRenau^5e47E%c-=5B0W?7w}@3o6)wCK zUg^-tdvk0O;$^@bGoG$hc0U6a*Gceo0e|eJdnJUh%miNrzY|gFG@`PEMb$y7x`DfL zFkFz|sQu?$Vz_HgCcD*TV!k5|AgX#)llXV!d5Fj8s)_QCYdPd`sxji_|Esp|0I#ap z+Gh4S$vG!`&&duYlu%~VTNK2CG&x8UP{FIHh*GZY<|^X7R|OTLf}%)OU?LC*9Zd+; zY>H?sDAJJ@Ahdw=-sCFfd)MrefZqH3|Ns1-4`!d))7H#hvu4ejnRmHu!?O3aNnYC! z$eiS~ZO0Ae?qp)8YTGU*@NY-S3S^Zl2^Gg@>XD|-OtGJGE>TU}@1|2Bs=tV!8R*9W z0%&k}9!uj`re2nGvR|C6vR5WH5B*GsZ}3Hd!e@BIBkQM`9`Oi#o$2a!ZaIfC!9#c- zKUuHU-J$LxMO{$TU395aAtLHm0>q{tmzlWiQs+miTQ?;-UhP0#!0{yPKxuepO!k;t zWs$ifJmyB^{>ctuLueUvgsb`c zks~!R(y{3~)5$2mAj&#g6Zkjk<`Tycs366EtjV=gJXvuWfQVB(!RJ?iy{z#HHZVgI z86|7_)Tv3<&%)NMN-nDnOh_Sh?SlG5G%Zb`L|0V1rnpq75LKR~;dmPTP#anfJNS{) zH8I_-EkKj=48I`CF_W+i#f+OvoP`Z9c{oc?ax|VR(0H=E2KgmtYa&}UC`SVnl=Ds1 zIy%>>LUx&o2C3xo`vp;hmJz<9SbB4b%QdlFMy7cU!bZ3?&Et3kI!tpI>szNR*>4&c3-3ox^QGob z6g5PhxcbR09Y@mEPxGX?iXsZu5+H4f-dN{nq}YvwQ4W+WN2;L&?8CXM8NUQ)8xA6H zizc?He%Pvst!_Uc%ipFu)D}1;%hA(8E#A+c?o+#$qCQa6?se<>V23<2-IMVuis&iQ za0IagwFmr+6nl^k?BjgDL#?0b5aCTy{9%HcL`?_PXH`|oXJ&XEiyE<`S59Wl(8DB` zPC8}N_Fg$%ob*ejeZI=_)C@i1iuDVWaJZuWf}2W(sLG49@kc){0glb>6F>4-+VCsU zn#+DcltXR(iOV;a_#0uqQ~VVz3GnWyddOX_SRcMa4xQ;W2Z6aW9kH&q`21QGBmO_;qCL`kYcx4j$9w%WR)*r zU$2&*3HY3&R3?SWiNa@i)FbO>vpnh%ztboXJ_o)2HsR1$7+4FEr4bz;0tlDwIkWZ3jxa%B&1{b<1kTQO zsLFA3RG0&*@V@CBU#Ksls0_sqi(INyh=^Gn5Q`O6Ul1a>BmDfxynx6nNtNvvL|K;v z0JJacn@e08zz!hAFAK=RIi66@*db5O@noQ1L4H8wD|5~_1Yuf&^S*UzlFdFtYmm3c zXMSr|QB;;{%__HU6{0Fvdz*S|0%DEZ8b5MvK&&lU$2z|t%DSF5`^37NOH|u{6u&Vb zuYKmVCToXG{M>7eU%{VXsKToRM(%c}CfW0Iv<7*x_ve|~c2kr(M<{l?b*m6nxhEj@ zsGi&xz$T#cZTv`Qld#yFSL7E&S=AOHHV+-i<7XQL7RDwaY{uIA(sN;QpryL)z3(=mjeR-el0Gc zQI03h{SwqhABhKlYwv16Ty?txl@82tsC|dbUI=I9fLc7Um**`dhEi0HVws_?AuMOd z__>}mS20A+u%H-L(vqfj{`^?A^XG5)`LESJAmvs&f2inSQ&;@q%*iWry?#Yt;#|E- zeXzqgpB&1j_WP)P8A0spiE%!GvS_Z)CX*Y zZJ}NZ_isio)Z5~o+17=6z2X~dVH{@<<7QrTkuIvP^zT}#8=2(h78k&r6V|vp+hviu zef<0)bpvhUA`eWUR|0_v$P)*RE}7zm*;PXoco@1 zD|4<~uvpy)T(?+nOV}GtREMFi%3tWp(^?bH)7sNtIG3H9cuv-GztCMLYfYT{{VWf+ zqO)acp57!CxC+YYGOipG0dye@m;JC!6k{(F$^ikxPz1SdoGVA<>5ozEeoN2fsg@eH zx@VpKl}>)z=Y0kEnH+g~sZM^{zqHYtxYV>nZ-iTWQF9F( zG4J>36?)76FBRl`{l8qnO)Y3H^H$*Qu-l~nt!9+0t3Sp}KAN2;6)usS7STZ41>J0J^BQglcti>v@Vvc-r z6@(1(4O*p>Ys`78^xNFc1Z?4yO^?85Hoib#+`)Yj8#OSd63WSq#~@8aB~cWxZ=J)B zt31h38c}5^sx(}304&0x`EI;zE(Rzc8tB))KnQsedkX^;qy+laN!1E3BlqAf-SECD z-~CB%Rvn$|L;~87WSiS7juBZo!j*e|(krzqjv`w|IiwTihzp#|xS>kDf}1*+``vdX zU^YC%w`>KTAh^TFR_irWytfvvTT|{D!gA0y1~WN20kD{Lz*D)a^-6InrCbm+0APJl zfh(R{t=|^*3Xr4g=w;iWS8;70Hst@?F8P1xku~~XY5}bbqb~^fP%G*{__$tDY7zX1 z$6MXkI#;>ZLSp91&)4b-GO3pQ8cw3H_8q@YC)Xvd*6HN7>7#XetQIh()zuo5+eLJt zj=`o4eVSV8lCsOQXVmAYi3-hz#h7dPt7@o2nBuj(ekmL2k5 zP>FhP(wiB;1`P>vLLD-<$XT28XEiwbjsC0?EVf)CrjSj$KMXb>F3vQ}8*vbOlU(TGjQTCO)J?)$n%cv2M*mRYu1`HNC%E zs1r)v@d)-a%XU5va0Vxrd*{EaOR$5%fm}}PL-4-^#A$pX7jfEoeFNh3gL`#_IDKue zt`Mi)#=5NGB2K$}@UHGs}z{$K5`L0&7rd8e!WH#K7W5p z?WuV@@bZ2=6%u92ejo+lw8irMYA!suU%!KbDMflk>|-I50`?@&%!ID;L=jLP5dC(M z-k3N9(Bl1NtF%zETwkO&pqSr_)CKse2lO^325S(~Bpy;I0a#sQW&Z<^Tc5}k2lRUB zzI7@h>LSrie&(xNh8owdR?U$nD&T_`-m%{XtW$N13Ku2L-t&Rf+b*)e>Q4>(>W9176^~&kK&8R%0a2ZvU$H6R21Gt5XX`s4Q z3FVFU)?g_}QyD(wQbc8!m@0_&i>Qj|Y67^`qMAdDC`pWk*cw8p3Gt7_M1O(CGgj9B zMISE66ltxNDcq=Z{xoK=5bl~ zxUPWZ9l!3kVGk6bPiQ$oxIrCqUIQ1JhSnY84#1TBSu;K-sX`uO=s(g~Fd=e^bo?uBtwV@m>C;UbVbGzW+{wnDp|P5H3bSIital19F*&m9DZPXz4Ootn<$cE! zbeVZdPY7eIk0sPZDN+(D$RAJX^{IgKr_^9iKCQP&#$b;FY7Pzd5Y!A^z<&c!c>0~z zAH|UW;j~_l4990r>t!Csz`_)Qf%UA@XU|e6kUu%}rSpn3(K_N;b;L)gXlM_V3P|lV z|EgC2iBb8{dr$x#I|Kg8l>^TJ?QOU>Q~~)#xo!ss+)ldrvxM6QFq<5?_6+n@WIKFD zVXh>e#q})&V`nh{;WqiKUOow{_hu!J)y$Reoz-jK?n|AA;T7l+@fYzhTogd+G_$&w z9O#cC)^nh8b^HarY8XVjGsW?xV% zLwKfFSdVuQ)Bu@hZoQ}$hy5?=o$o;l%LC0X6|6((%wt0k=k*b6Anp+4V;o;aIf^H{ z37ojYZi4<+Z(ut?OMbhkH|6-e>J?-MUfpv^zwgiaeS(~PN$(Q;BqZv{`~!OJlCxaB z|1`__48@_K|JPZr-hZ9t>iuz+g3wmAF6W9cqc3JO8-?qBqTk!LW%ML%Ql_N0p zJbuo>CeLNX&%nj3MpLeDB?nj+u`P$1!HK1-%dZO+BlP(#D9$uV=#>1sqKVzr@)P8NQ}y=yA-rreLa*zU(ANX5V`9yf_I14zEg&YTGL-L73V7c(t6*Feqav*z>eHqF`ZSX|NgLn` z`D+9hb8Os`MkRK2+yJA5CeWPnHTN`uamNi(77|#=B%LTpCohQ{#0;e@IL&$h8a2#Q z=-LNhpMtXBymtL>&l z4H$$Ldm>=mN$!YLQrGzkEHy+L)L4AZmO+CcaNi0Voylu90lQX*fjAYG;akM5unw=0 zdxJ(3wniDRJ7D?)oGrTFw@|e}S`W<>14LD%&`dp=L^}oHRvu7;sTM$|0WvsQz8q(e z44)8Zw8KEy7iXw}@Se{-&EgF*Z9Eo_s&j#hYBVKAc~A8zc{|6nRD3EE&Da-jkoWEC zA%k36^$!`99GLf!A%kGvXNC-dd0!ba>f>=HWLS8V4jW2Go#ofsDQplBU%#+HI_hU( zl$kA$hYhmx84-hY)W;)6ck=K3k_D(Y7%3LX4MD)&Z=p2e<^l5t8AFmA36iY4eQ zMY@k|Gg<{JVS=j!u)3EMjGn!HhOSL{YyTmyk3s9?b!ILsU!9Wci`OxGO~f$4^aW0J z-eUfuPn`-!DVJob?r>_MZnW$HP95#E+wE1l5CT4OKY^PcoK7#@9uiN};b1C|uqyHX zX+m~)Sod{kJ*fQ=aPB`1V_Y%k)({; z{{oWZih$nmWPnyU1jHdn9~9ab3I9s!I8F^`VO81K!f9b@^D`(ezd%}vMwy0?_&5zr z5b6Av?Y9bPZY$%M%+|1C$XtU zC19kfOj!R&TW%_IFDPRoc6S=c$VFXupiy0IX-<;r@S{ma=Q>I*)P-EAhY{=nLQf%` zsR3RzL?r~QJ5@eW+Nccy`z{_8!I-L2z%o*YI5de?HN*13Z7emiB*;qBwXxE&&lDp$ zy>u*xrCET&k6kX6X2IGWYmo-cs5Fgp1K7HOSW`0%YES?s^aPPuPb+m7T9ptBr-?-T z@xvyC&Ejwc3Rfr&W08~?6UE`W6t0_=?ibLAUNoXjJL)zj65JR@RZ)F@7*!<{SH(~Z z!hTf@wIJ+Q#ZU{vb&K<(rUb91bfDu4X3iwo=(WU~&Bh)gLUb-$2y}yDdfinlRj|G^&c~^TVi$>hr^>it6*jsEX?I!>Eet z^TVi$>T^5Q6q-3JBuq<>&0zSdaI#hdj9%c4ra~O-0^Y`%- z*=S)TWcM#;oMLQ@-K)G2j%TZ7wW>y{gs$+R^SfIJz93Ni-3dxyY7gNn=Gps)}2YQz@bnTC0>q0@AHr95IK%Vr{vd~e!}EDB^Nhr>Xez_1oGIJ_bJ zKTGW@k!wL~A;W3`mdYm9f*=zMm}EAqDu?diiLz@)Bb*M`n4dFp4dGyr(bY0wlVNkp zg7!`GJT^(J_N3L!V`3h&T8q|JE)%)TiisHEkuvKv`atxUpw zqYGl>VsH{Urh3ZirHfw9=DgLL2!$It3;Xlq$)?)Z8pq()DxD0fWTzav4C1iG%TeqcmaI$WzywhZ{vvzU9nOfNR@-4*Vh6lpanab^#n{)xXT6g zvnzoAZ!(ctZ^R+#P$q^ly3S?2nIPUIg^%t~%TC7)tCRJHE_#bM6r;Tk_$-ksI$*_@ z9U>?#z|7P2EJAL#;2cXG)d4=Ah3k;k+YFd|v~089p}nD)E|c$!G)jNVx!7Z23+Mx8 z&1YmjS0H@WOft?|!x$WEQ9on*=OgCq_gE8{n7}MtoZ8LIM!4Ey&JBS>&3hmrA$C7u zz!QH9`c{5a&bYW00oc38{&r5Eumt_@0IV zbxVxudoiAGBkQpm>)4M}qaQ0T z`p$CllyGu72?ngXASE6kLlP~xl<2{Vi$oDExU2@Ct)UXa4b{y{NHYv2SDH1zcxnhE zGMv0A7W1z4<0TlEBpD5+hDwm#PtBka1%ao=Q>}CyJAf@&@f(&$jyUV>OWt0Plr_}Y zs*ce|0+$9C$zd8=kkvG>ECKo~MW023hNLY9noFO+!rj8^2`HM1J{oLF*|uoBDN##< z%yJ2Yr0oY8_>$MiA^WYT|(@Momb>;G}YvhGhlo5DoKiTufItw`JZ^Ou?_x-ViwefXuJ2 zCQO=S+>;oWu zB>%aP5RH{Yy^S0bjMk}mlU{Ws3?(sw%0fzA^0lj@H)vPoykS&8_9LZTCF-rQ`4X%p z6F2ijzJv7D5Q>R&6*9bkNrQ@wS3yrl^GiAI>u5LVtrh-UZ#@^5Nd@7C?1J6$6=NA= zd+f`v8s#+hiya+kRMpr)nfiuNjqk;Il$T<2^Go3l?Y`NMzhP)l%X=~4 zT6)8GjMovI{f@DbmDwM%rqV?Q;vH*RK)h%c$zg+yMrA%^&Of=?5O4d;6 zy+nk-0$=THj0($^dyG-q=&)SB#~4S?XZ9LX@wCJHj7l1tWY;J%0*o!N>l`qiXQ9&p z=znIW9DmSQ!=~7Me=&M6mL*plGQNzT8W#7O)9m!a#$b(Ik%40{AYHTTA2T8W_O5;V zNn?=4Cd-AVjhA46u71YY!@jlISz|n7-`N@GV33XfK2AJsuC$MxH)1-QU^l#OWm1r0$OXpNph5IUr3&I;qLIa`hn^C6MJA%Xq!M7=qAHmN1=>&J~i z(9E*CML7IRId!o^@?nD)maOG>?$=WO&uS6oEc=ZpzsgX=K$Aa(A_`1iKt(J};`#La zS84uG1?2reQP@Frpy2?$J+`Tod0Or%&6C+I`(kNck)_NG`zPfR%sF9y>p8*vOx7#Q z1w7MqD$6HoEZaVm%!jk2Nn!XHF9o(tFmqskz~05+3OpClw^igD8TX?@SWe2MKB025 zW(t2R1=Ntm%vq8WIasUWaMU3pXhjOI<0sfud`%mR1vJ(VBHFBUm(rW zhWs(s8forDI}snJCObipcM>66xoWPPGH3{1*$x3)1|2PZnyBs zLAKC7a~m&W*!$RgJ8vWwE2oU#GaQmKu-Z4j2)hP=;jjjpd13iZQ~sp=_8t6D#^%d{ zJ9!?OI_fUIC;o;x>deZpH%INV`?ls0&W6}8+|PS3z9g(etp?%mF>|oJ`2l{#dxy2K z&CK`g!mfOq_ii5(`zYPl5Aj%lEs?A{ebKY4$qEehiVVq|&z z(y(Z6=GkeF^Y{>3Zok}{{~Q4&!IM+Ui~M0WSoVLBXOvwT7T6II5pzTUf57Y^%te*^@wRNY?9-2z1B<=ZkN-8u zevrHV!EX&+#szj}Zjed;*^%3gQy{B zer-SbDqqPGLEiHwI7+SX%)zqp0RCtg%mW=3y*PRR@5IjQG{I^#S<%*cLqeeSXh3vf>%s{<1ce<7=PB;od@w& ztoYjpn0aXJr%gJO6(ZOgbGWCd98BlS18lyXHJJB`V+-;=eY?6FoIJd|brpvi zxhrf1L>NjXm@Go=2fI?su;M~MU6prk;XIWJet z;xdeZc!&ACXdz$h7U*R!pUpc4!0o|o{s`MIdt~#Wk@JB{It)_zOum)JyUFG`_++c? z%{hD(V{7b5xjd{vt(ZBVzYTS@_5%K@#@5-Hi+D@MGVEQ8c^?`+E%W$o(F0*xTucjK zf&ZYnP7ccBC$WV2yUnpeSYR(&!Zl6X81>=)3Q)pz-m6J?1MuktA(uK3@w8e#?jGz$m)sTmCdg zlRSG?D{C)V$p_NQ+kWJq#j)*n;aZ-qA#u+QyerW%cO!pU!*+DF&AcZbZ*J!G@R+rk z|Ak$Xzioy{xFXwa;jP(4`TiEA4jtXXt6+i*ZRJ%Oo(}ksDTYp`5>M;~${Q&u!!BNw_Fm1s^>QB9@NF=I@a2Zs#$!O@6`vApBlm1+LI6RR7MHc{en4tlYI6NAArZ+Lwq~$CT z(2zDJBD-IKeEK*dXIz0AIyNGkUgdYNqjtZmm{6#kGUi#i>KYfSKRU~!DuR#_hvBKnVq*+1*7jXwopD8A6!7Uyt5}bVukhL<&Pa9;3%7do(@RD7lKGtoQ9JJo+L- z+O$Nx9xSKPV~E`8JW89{aR*e$E?+MCOb~O?po-Ck5te0tUOn2Ahz!+?cERIe zdW@7)Ya;6?xz%}Dy%xpUFV#ZF;qCI;DrvY*bSgrhJC81PRp?Y*m9%+1Bu$ta(Jz~f zrJJMV==v(pZs$?Ifl9nqJ?wrBopP6@sx+Zn)Z^h>RGLf9BjZ*TYSt(^A9WsYq*_+3 zF?wsHyt}a?_Ql4k>Sc|i?HQXUS(9jIZBl{#K$Gab@yPS>-C(Ol8|7DbM>ilivRSl# z&EGbZN>d;5J?9f&Hs}-MZ}BG{DGQNO`(dLDHwPb0mxr52Ya@TO1>T<7D4Vqa2ac3a zQ1IGDIkZLe3Sx(}MDXAyIlpCe2!eOCLS-X1xs}0QPW-flQ)T#Dva-QQsg3+u&TFO0 z$+-u?(?83CdsI13wvN_M*uB{+M~-Q&Iv^XbwNE$8?X9EtqqbTx1V7m(yTw4-DESWx zPTM9YQ*fmGnu1HV$>Xu;-x2$0n`r$S>$W*Xf}X4>QH8&t3P0vVoeml$XCR@rdz;+Y zMwNP&f+x4hD)&ZTK{21)i{RVa<=6K{MZ%1TekSC6_oMWF%ywC>Ejn+MywDcGY1^e} zrwWO+LvX=%`^9$A7qqJR+e@kKO`He9y@#3+Gc#iD4e09`41#7I`CEr5wB=G}`AYax l9sgVKd>UQXkS~Ir<%dTZ$ko4o)Nb@jbV(ii!^~(X_&;PQwv+$> delta 81794 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�F8zZhx#W>u@`Ru}d4givPwPJJbRUIl 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 Uq*2PBs0IE(); + for (int i = 0; i < count; i++) + { + numbers.Add(Marshal.PtrToStringUTF8(Marshal.ReadIntPtr(newMemorizedNumbers, i))); + } + + manager.SetMemorizedNumbers(numbers); + + Debug.WriteLine($"CalculatorManager.SetMemorizedNumbersCallback({string.Join(";", numbers)})"); } - public static void SetParenthesisNumberCallback(int state, int parenthesisCount) + public static void SetParenthesisNumberCallback(IntPtr state, int parenthesisCount) { var manager = GCHandle.FromIntPtr((IntPtr)state).Target as CalculatorDisplay; manager.SetParenthesisNumber(parenthesisCount); @@ -100,7 +173,7 @@ namespace CalculationManager Debug.WriteLine($"CalculatorManager.SetParenthesisNumberCallback({parenthesisCount})"); } - public static void BinaryOperatorReceivedCallback(int state) + public static void BinaryOperatorReceivedCallback(IntPtr state) { var manager = GCHandle.FromIntPtr((IntPtr)state).Target as CalculatorDisplay; manager.BinaryOperatorReceived(); @@ -108,7 +181,7 @@ namespace CalculationManager Debug.WriteLine($"CalculatorManager.BinaryOperatorReceivedCallback"); } - public static void SetPrimaryDisplayCallback(int state, string displayStringValue, bool isError) + public static void SetPrimaryDisplayCallback(IntPtr state, string displayStringValue, bool isError) { var manager = GCHandle.FromIntPtr((IntPtr)state).Target as CalculatorDisplay; manager.SetPrimaryDisplay(displayStringValue, isError); @@ -116,7 +189,7 @@ namespace CalculationManager Debug.WriteLine($"CalculatorManager.SetPrimaryDisplayCallback({displayStringValue}, {isError})"); } - public static void SetIsInErrorCallback(int state, bool isError) + public static void SetIsInErrorCallback(IntPtr state, bool isError) { var manager = GCHandle.FromIntPtr((IntPtr)state).Target as CalculatorDisplay; manager.SetIsInError(isError); @@ -124,7 +197,7 @@ namespace CalculationManager Debug.WriteLine($"CalculatorManager.SetIsInErrorCallback({isError})"); } - public static int GetCEngineStringCallback(int state, string resourceId) + public static IntPtr GetCEngineStringCallback(IntPtr state, string resourceId) { var provider = GCHandle.FromIntPtr((IntPtr)state).Target as EngineResourceProvider; var ret = provider.GetCEngineString(resourceId) ?? ""; @@ -136,7 +209,7 @@ namespace CalculationManager Debug.WriteLine($"CalculatorManager.GetCEngineStringCallback({resourceId},{ret})"); - return (int)retPtr; + return retPtr; } } @@ -145,7 +218,7 @@ namespace CalculationManager private GCHandle _displayCallbackHandle; private GCHandle _resourceProviderHandle; - private readonly int _nativeManager; + private readonly IntPtr _nativeManager; } } diff --git a/src/Calculator.Shared/CalcManager/CalculatorManager.cs b/src/Calculator.Shared/CalcManager/CalculatorManager.cs index 00049a96..c440731f 100644 --- a/src/Calculator.Shared/CalcManager/CalculatorManager.cs +++ b/src/Calculator.Shared/CalcManager/CalculatorManager.cs @@ -100,7 +100,6 @@ namespace CalculationManager public CalculatorManager(ref CalculatorDisplay displayCallback, ref EngineResourceProvider resourceProvider) { - Debug.WriteLine($"new CalculatorManager"); displayCallback = new CalculatorDisplay(); resourceProvider = new EngineResourceProvider(); @@ -149,23 +148,26 @@ namespace CalculationManager }; #endif - Debug.WriteLine($"-> CalculatorManager_Create"); + _nativeManager = NativeDispatch.CalculatorManager_Create(ref p); - Debug.WriteLine($"<- CalculatorManager_Create"); } - public void Reset(bool clearMemory = true) => throw new NotImplementedException(); - public void SetStandardMode() => throw new NotImplementedException(); - public void SetScientificMode() => throw new NotImplementedException(); - public void SetProgrammerMode() => throw new NotImplementedException(); - public void SendCommand(Command command) - { - Debug.WriteLine($"CalculatorManager.SendCommand({command})"); + public void Reset(bool clearMemory = true) + => NativeDispatch.CalculatorManager_Reset(_nativeManager, clearMemory); - NativeDispatch.CalculatorManager_SendCommand(_nativeManager, command); - } + public void SetStandardMode() + => NativeDispatch.CalculatorManager_SetStandardMode(_nativeManager); - public List SerializeCommands() => throw new NotImplementedException(); + public void SetScientificMode() + => NativeDispatch.CalculatorManager_SetScientificMode(_nativeManager); + + public void SetProgrammerMode() + => NativeDispatch.CalculatorManager_SetProgrammerMode(_nativeManager); + + public void SendCommand(Command command) + => NativeDispatch.CalculatorManager_SendCommand(_nativeManager, command); + + public List SerializeCommands() => throw new NotImplementedException(); public void DeSerializeCommands(List serializedData) => throw new NotImplementedException(); public void SerializeMemory() => throw new NotImplementedException(); public List GetSerializedMemory() => throw new NotImplementedException(); @@ -175,47 +177,49 @@ namespace CalculationManager public void DeSerializePrimaryDisplay(List serializedPrimaryDisplay) => throw new NotImplementedException(); public Command SerializeSavedDegreeMode() => throw new NotImplementedException(); - public void MemorizeNumber() => throw new NotImplementedException(); - public void MemorizedNumberLoad(int value) - { - Debug.WriteLine($"CalculatorManager.MemorizedNumberLoad({value})"); - } - public void MemorizedNumberAdd(int value) - { - Debug.WriteLine($"CalculatorManager.MemorizedNumberAdd({value})"); - } - public void MemorizedNumberSubtract(int value) - { - Debug.WriteLine($"CalculatorManager.MemorizedNumberSubtract({value})"); - } - public void MemorizedNumberClear(int value) - { - Debug.WriteLine($"CalculatorManager.MemorizedNumberClear({value})"); - } - public void MemorizedNumberClearAll() - { - Debug.WriteLine($"CalculatorManager.MemorizedNumberClearAll()"); - } + public void MemorizeNumber() + => NativeDispatch.CalculatorManager_MemorizeNumber(_nativeManager); + + public void MemorizedNumberLoad(int value) + => NativeDispatch.CalculatorManager_MemorizedNumberLoad(_nativeManager, value); + + public void MemorizedNumberAdd(int value) + => NativeDispatch.CalculatorManager_MemorizedNumberAdd(_nativeManager, value); + + public void MemorizedNumberSubtract(int value) + => NativeDispatch.CalculatorManager_MemorizedNumberSubtract(_nativeManager, value); + + public void MemorizedNumberClear(int value) + => NativeDispatch.CalculatorManager_MemorizedNumberClear(_nativeManager, value); + + public void MemorizedNumberClearAll() + => NativeDispatch.CalculatorManager_MemorizedNumberClearAll(_nativeManager); + + public bool IsEngineRecording() + => NativeDispatch.CalculatorManager_IsEngineRecording(_nativeManager); + + public List GetSavedCommands() + => throw new NotImplementedException(); - public bool IsEngineRecording() => throw new NotImplementedException(); - public List GetSavedCommands() => throw new NotImplementedException(); public void SetRadix(RADIX_TYPE iRadixType) - { - Debug.WriteLine($"CalculatorManager.SetRadix({iRadixType})"); - } - public void SetMemorizedNumbersString() => throw new NotImplementedException(); - public string GetResultForRadix(int radix, int precision) => throw new NotImplementedException(); - public void SetPrecision(int precision) - { - Debug.WriteLine($"CalculatorManager.SetPrecision({precision})"); - } - public void UpdateMaxIntDigits() - { - Debug.WriteLine($"CalculatorManager.UpdateMaxIntDigits()"); - } - public char DecimalSeparator() => throw new NotImplementedException(); + => NativeDispatch.CalculatorManager_SetRadix(_nativeManager, iRadixType); - public List GetHistoryItems() => throw new NotImplementedException(); + public void SetMemorizedNumbersString() + => NativeDispatch.CalculatorManager_SetMemorizedNumbersString(_nativeManager); + + public string GetResultForRadix(int radix, int precision) + => NativeDispatch.CalculatorManager_GetResultForRadix(_nativeManager, radix, precision); + + public void SetPrecision(int precision) + => NativeDispatch.CalculatorManager_SetPrecision(_nativeManager, precision); + + public void UpdateMaxIntDigits() + => NativeDispatch.CalculatorManager_UpdateMaxIntDigits(_nativeManager); + + public char DecimalSeparator() + => NativeDispatch.CalculatorManager_DecimalSeparator(_nativeManager); + + public List GetHistoryItems() => throw new NotImplementedException(); public List GetHistoryItems(CalculationManager.CALCULATOR_MODE mode) { @@ -225,11 +229,21 @@ namespace CalculationManager } public HISTORYITEM GetHistoryItem(int uIdx) => throw new NotImplementedException(); - public bool RemoveHistoryItem(int uIdx) => throw new NotImplementedException(); - public void ClearHistory() => throw new NotImplementedException(); - public int MaxHistorySize() => throw new NotImplementedException(); - public CalculationManager.Command GetCurrentDegreeMode() => throw new NotImplementedException(); - public void SetHistory(CALCULATOR_MODE eMode, List history) => throw new NotImplementedException(); - public void SetInHistoryItemLoadMode(bool isHistoryItemLoadMode) => throw new NotImplementedException(); - } + public bool RemoveHistoryItem(int uIdx) + => NativeDispatch.CalculatorManager_RemoveHistoryItem(_nativeManager, uIdx); + + public void ClearHistory() + => NativeDispatch.CalculatorManager_ClearHistory(_nativeManager); + + public int MaxHistorySize() + => NativeDispatch.CalculatorManager_MaxHistorySize(_nativeManager); + + public CalculationManager.Command GetCurrentDegreeMode() + => NativeDispatch.CalculatorManager_GetCurrentDegreeMode(_nativeManager); + + public void SetHistory(CALCULATOR_MODE eMode, List history) => throw new NotImplementedException(); + + public void SetInHistoryItemLoadMode(bool isHistoryItemLoadMode) + => NativeDispatch.CalculatorManager_SetInHistoryItemLoadMode(_nativeManager, isHistoryItemLoadMode); + } } From 0e02698fcecd373f943fc75a6baa5269a7d4ad5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Laban?= Date: Wed, 15 May 2019 17:17:47 -0400 Subject: [PATCH 2/2] Adjust memorized numbers encoding --- .../CalcManager/CalculatorManager.Interop.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Calculator.Shared/CalcManager/CalculatorManager.Interop.cs b/src/Calculator.Shared/CalcManager/CalculatorManager.Interop.cs index e07c30c1..8cb0f3dc 100644 --- a/src/Calculator.Shared/CalcManager/CalculatorManager.Interop.cs +++ b/src/Calculator.Shared/CalcManager/CalculatorManager.Interop.cs @@ -157,7 +157,9 @@ namespace CalculationManager var numbers = new List(); for (int i = 0; i < count; i++) { - numbers.Add(Marshal.PtrToStringUTF8(Marshal.ReadIntPtr(newMemorizedNumbers, i))); + // TODO Use native encoding instead. + var value = Marshal.PtrToStringAnsi(Marshal.ReadIntPtr(newMemorizedNumbers, i)); + numbers.Add(Encoding.UTF8.GetString(Encoding.ASCII.GetBytes(value))); } manager.SetMemorizedNumbers(numbers);