From eea6314424f39f5a8a81b225f6bea3bd5e35c8e4 Mon Sep 17 00:00:00 2001 From: Mark-Dinkel <39543257+Mark-Dinkel@users.noreply.github.com> Date: Sun, 3 Jun 2018 22:51:41 -0400 Subject: [PATCH] Add files via upload --- ConsoleApp1/ConsoleApp1.sln | 25 +++ ConsoleApp1/ConsoleApp1/App.config | 6 + ConsoleApp1/ConsoleApp1/ConsoleApp1.csproj | 52 +++++ ConsoleApp1/ConsoleApp1/OnScreenKeyboardMD.cs | 209 ++++++++++++++++++ ConsoleApp1/ConsoleApp1/Program.cs | 15 ++ .../ConsoleApp1/Properties/AssemblyInfo.cs | 36 +++ .../ConsoleApp1/bin/Debug/ConsoleApp1.exe | Bin 0 -> 8704 bytes .../bin/Debug/ConsoleApp1.exe.config | 6 + .../ConsoleApp1/bin/Debug/ConsoleApp1.pdb | Bin 0 -> 15872 bytes ...ConsoleApp1.csproj.CoreCompileInputs.cache | 1 + .../ConsoleApp1.csproj.FileListAbsolute.txt | 7 + .../ConsoleApp1.csprojAssemblyReference.cache | Bin 0 -> 8077 bytes .../ConsoleApp1/obj/Debug/ConsoleApp1.exe | Bin 0 -> 8704 bytes .../ConsoleApp1/obj/Debug/ConsoleApp1.pdb | Bin 0 -> 15872 bytes ...gnTimeResolveAssemblyReferencesInput.cache | Bin 0 -> 6779 bytes 15 files changed, 357 insertions(+) create mode 100644 ConsoleApp1/ConsoleApp1.sln create mode 100644 ConsoleApp1/ConsoleApp1/App.config create mode 100644 ConsoleApp1/ConsoleApp1/ConsoleApp1.csproj create mode 100644 ConsoleApp1/ConsoleApp1/OnScreenKeyboardMD.cs create mode 100644 ConsoleApp1/ConsoleApp1/Program.cs create mode 100644 ConsoleApp1/ConsoleApp1/Properties/AssemblyInfo.cs create mode 100644 ConsoleApp1/ConsoleApp1/bin/Debug/ConsoleApp1.exe create mode 100644 ConsoleApp1/ConsoleApp1/bin/Debug/ConsoleApp1.exe.config create mode 100644 ConsoleApp1/ConsoleApp1/bin/Debug/ConsoleApp1.pdb create mode 100644 ConsoleApp1/ConsoleApp1/obj/Debug/ConsoleApp1.csproj.CoreCompileInputs.cache create mode 100644 ConsoleApp1/ConsoleApp1/obj/Debug/ConsoleApp1.csproj.FileListAbsolute.txt create mode 100644 ConsoleApp1/ConsoleApp1/obj/Debug/ConsoleApp1.csprojAssemblyReference.cache create mode 100644 ConsoleApp1/ConsoleApp1/obj/Debug/ConsoleApp1.exe create mode 100644 ConsoleApp1/ConsoleApp1/obj/Debug/ConsoleApp1.pdb create mode 100644 ConsoleApp1/ConsoleApp1/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache diff --git a/ConsoleApp1/ConsoleApp1.sln b/ConsoleApp1/ConsoleApp1.sln new file mode 100644 index 0000000..35b9fe8 --- /dev/null +++ b/ConsoleApp1/ConsoleApp1.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.27703.2018 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleApp1", "ConsoleApp1\ConsoleApp1.csproj", "{35454DFA-FDC6-47EB-8FE5-208B819BC4C5}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {35454DFA-FDC6-47EB-8FE5-208B819BC4C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {35454DFA-FDC6-47EB-8FE5-208B819BC4C5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {35454DFA-FDC6-47EB-8FE5-208B819BC4C5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {35454DFA-FDC6-47EB-8FE5-208B819BC4C5}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {9B7246D5-3845-46C9-AEE5-422C06105617} + EndGlobalSection +EndGlobal diff --git a/ConsoleApp1/ConsoleApp1/App.config b/ConsoleApp1/ConsoleApp1/App.config new file mode 100644 index 0000000..00bfd11 --- /dev/null +++ b/ConsoleApp1/ConsoleApp1/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/ConsoleApp1/ConsoleApp1/ConsoleApp1.csproj b/ConsoleApp1/ConsoleApp1/ConsoleApp1.csproj new file mode 100644 index 0000000..0f75e63 --- /dev/null +++ b/ConsoleApp1/ConsoleApp1/ConsoleApp1.csproj @@ -0,0 +1,52 @@ + + + + + Debug + AnyCPU + {35454DFA-FDC6-47EB-8FE5-208B819BC4C5} + Exe + ConsoleApp1 + ConsoleApp1 + v4.6.1 + 512 + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ConsoleApp1/ConsoleApp1/OnScreenKeyboardMD.cs b/ConsoleApp1/ConsoleApp1/OnScreenKeyboardMD.cs new file mode 100644 index 0000000..a16c866 --- /dev/null +++ b/ConsoleApp1/ConsoleApp1/OnScreenKeyboardMD.cs @@ -0,0 +1,209 @@ +using System; +using System.Collections; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ConsoleApp1 +{ + class OnSreenKeyboard + { + /* Author Comment Date + * Mark Dinkel Created Visual C# 2017 5/28/2018 + * + * Purpose: Translate input text string into arrow key-presses on a matrix keyboard + * + */ + + //Create Key Map X-Y coordinate hashtables + static private Hashtable keyMapX = new Hashtable(); + static private Hashtable keyMapY = new Hashtable(); + + static private void OnScreenKeyboard() + { + // class initializer + // Add elements to the key map hash tables - X and Y coordinates + // The Start is the letter A at (1,1) is the number 0 at (6,6) + keyMapX.Add("A", "1"); keyMapY.Add("A", "1"); + keyMapX.Add("B", "2"); keyMapY.Add("B", "1"); + keyMapX.Add("C", "3"); keyMapY.Add("C", "1"); + keyMapX.Add("D", "4"); keyMapY.Add("D", "1"); + keyMapX.Add("E", "5"); keyMapY.Add("E", "1"); + keyMapX.Add("F", "6"); keyMapY.Add("F", "1"); + keyMapX.Add("G", "1"); keyMapY.Add("G", "2"); + keyMapX.Add("H", "2"); keyMapY.Add("H", "2"); + keyMapX.Add("I", "3"); keyMapY.Add("I", "2"); + keyMapX.Add("J", "4"); keyMapY.Add("J", "2"); + keyMapX.Add("K", "5"); keyMapY.Add("K", "2"); + keyMapX.Add("L", "6"); keyMapY.Add("L", "2"); + keyMapX.Add("M", "1"); keyMapY.Add("M", "3"); + keyMapX.Add("N", "2"); keyMapY.Add("N", "3"); + keyMapX.Add("O", "3"); keyMapY.Add("O", "3"); + keyMapX.Add("P", "4"); keyMapY.Add("P", "3"); + keyMapX.Add("Q", "5"); keyMapY.Add("Q", "3"); + keyMapX.Add("R", "6"); keyMapY.Add("R", "3"); + keyMapX.Add("S", "1"); keyMapY.Add("S", "4"); + keyMapX.Add("T", "2"); keyMapY.Add("T", "4"); + keyMapX.Add("U", "3"); keyMapY.Add("U", "4"); + keyMapX.Add("V", "4"); keyMapY.Add("V", "4"); + keyMapX.Add("W", "5"); keyMapY.Add("W", "4"); + keyMapX.Add("X", "6"); keyMapY.Add("X", "4"); + keyMapX.Add("Y", "1"); keyMapY.Add("Y", "5"); + keyMapX.Add("Z", "2"); keyMapY.Add("Z", "5"); + keyMapX.Add("1", "3"); keyMapY.Add("1", "5"); + keyMapX.Add("2", "4"); keyMapY.Add("2", "5"); + keyMapX.Add("3", "5"); keyMapY.Add("3", "5"); + keyMapX.Add("4", "6"); keyMapY.Add("4", "5"); + keyMapX.Add("5", "1"); keyMapY.Add("5", "6"); + keyMapX.Add("6", "2"); keyMapY.Add("6", "6"); + keyMapX.Add("7", "3"); keyMapY.Add("7", "6"); + keyMapX.Add("8", "4"); keyMapY.Add("8", "6"); + keyMapX.Add("9", "5"); keyMapY.Add("9", "6"); + keyMapX.Add("0", "6"); keyMapY.Add("0", "6"); + + } + + private static string XYToKeys(int currX, int currY, int nextX, int nextY) + { + // Private method to translate the arrow key presses from the current key to + // the next key using (U)p, (D)own, (L)eft and (R)ight + int moveX, moveY, strPos = 0; + char[] keys = new char[512]; + + moveX = nextX - currX; + moveY = nextY - currY; + + if (moveY > 0) + { + for (int i = 0; i < moveY; i++) + { + keys[strPos++] = 'D'; + keys[strPos++] = ','; + } + } + else + { + for (int i = 0; i > moveY; i--) + { + keys[strPos++] = 'U'; + keys[strPos++] = ','; + } + } + if (moveX > 0) + { + for (int i=0;i moveX; i--) + { + keys[strPos++] = 'L'; + keys[strPos++] = ','; + } + } + + keys[strPos++] = '#'; + keys[strPos++] = ','; + + String retStr = new String(keys); + + return retStr; + + } + + static void Main(string[] args) + { + string currKey = "A", currStr = "", upStr; + int currX = 1, currY = 1, nextX, nextY; + + object objNextX, objNextY; + string nextKey; + + string keyDirections; + string allKeyDirections = ""; + + // class initializer + OnScreenKeyboard(); + + // This can be updated to any filestream + string inFile = @"C:\Users\mark\Documents\Data\inData.txt"; + try + { + using (FileStream fsRead = new FileStream(inFile, FileMode.Open, FileAccess.Read)) + { + using (StreamReader srRead = new StreamReader(fsRead)) + { + // This can be updated to any file stream + string outFile = @"C:\Users\mark\Documents\Data\outData.txt"; + using (FileStream fsWrite = new FileStream(outFile, FileMode.OpenOrCreate, FileAccess.Write)) + { + using (StreamWriter srWrite = new StreamWriter(fsWrite)) + { + + while (!srRead.EndOfStream) + { + currStr = srRead.ReadLine(); + upStr = currStr.ToUpper(); + + // Reset to the starting key position + currKey = "A"; currX = 1; currY = 1; + + foreach (char c in upStr) + { + if (!char.IsWhiteSpace(c)) + { + nextKey = c.ToString(); // The char for the key-press + objNextX = keyMapX[nextKey]; // X coordinate of the char + objNextY = keyMapY[nextKey]; // Y coordinate of the char + + // X-Y location of the key-press + nextX = int.Parse(string.Format("{0}", objNextX)); + nextY = int.Parse(string.Format("{0}", objNextY)); + + // Get the key-presses from the current char to the next char + keyDirections = XYToKeys(currX, currY, nextX, nextY); + allKeyDirections += keyDirections; // add to final string + + // Update the current char to the next char + currKey = c.ToString(); + currX = nextX; + currY = nextY; + } + else + { + allKeyDirections += "S,"; // (S)pace + + } + + } + // Replace nul characters in the final string and write + allKeyDirections = allKeyDirections.Replace(Convert.ToChar(0x0).ToString(), ""); + // Remove the last comma added to the final string + allKeyDirections = allKeyDirections.Remove(allKeyDirections.Length - 1); + // Add a newline after each line that is written to the output file + allKeyDirections += Environment.NewLine; + } + srWrite.Write(allKeyDirections); + } + } + } + } + } + catch (Exception ex) + { + // Execute the application using Ctrl+F5 to see the exception messages + Console.WriteLine(ex.Message); + } + + } + + + } + + +} diff --git a/ConsoleApp1/ConsoleApp1/Program.cs b/ConsoleApp1/ConsoleApp1/Program.cs new file mode 100644 index 0000000..f186347 --- /dev/null +++ b/ConsoleApp1/ConsoleApp1/Program.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ConsoleApp1 +{ + class Program + { + static void Main(string[] args) + { + } + } +} diff --git a/ConsoleApp1/ConsoleApp1/Properties/AssemblyInfo.cs b/ConsoleApp1/ConsoleApp1/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..83a6998 --- /dev/null +++ b/ConsoleApp1/ConsoleApp1/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("ConsoleApp1")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("HP Inc.")] +[assembly: AssemblyProduct("ConsoleApp1")] +[assembly: AssemblyCopyright("Copyright © HP Inc. 2018")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("35454dfa-fdc6-47eb-8fe5-208b819bc4c5")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/ConsoleApp1/ConsoleApp1/bin/Debug/ConsoleApp1.exe b/ConsoleApp1/ConsoleApp1/bin/Debug/ConsoleApp1.exe new file mode 100644 index 0000000000000000000000000000000000000000..d6991aec063603870340ab108ac8be18020a89a7 GIT binary patch literal 8704 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 + + + + + \ No newline at end of file diff --git a/ConsoleApp1/ConsoleApp1/bin/Debug/ConsoleApp1.pdb b/ConsoleApp1/ConsoleApp1/bin/Debug/ConsoleApp1.pdb new file mode 100644 index 0000000000000000000000000000000000000000..67934541c66f5a9e505e3e34cc2aa03c40dcd00c GIT binary patch literal 15872 zcmeI23vg7`8Gz4SF%TYsAVdfV8%U7nCSX*E2%!m<6e3`vfTlpQY#=7t4Z9l^aqvQ7 zN~@!R@kK{!t=OrLs)N)DDq^K7RYwLo9T};u9j8`nMLTq)GZy;&=bjrb3xwb>j)XmM z^4!w%5n592L-K&d_^f;4sHNEdkI$a(xthR)mrCmR3W z$?@;ZLw-!#?hTB$b`MRv!6J40)*;)st{YLjdh^2tDJu`$4TS@OP(-`!M>>#|0DKS#b_@U#Dr}7u}quxa>3yOE#q49yom9@Bul<-78u}1r^uE zLeW@7ePy(^A{J?k216CmP(vhEQ4|TsB6Xo@4GrUuxt<*^3r0hs@XXMPsz_yYNojE) z7*i@(P|2l24^hKb(obgZ`Fh*%Y*X z-NBY!U+uL{_fRkTydu_PB$OcIG?FM~?+mW5s^Ho?h9Tr+_-^!o%&!79I$dhh%?$ph z=O3*bNhu=fti;JqdWJeLUCP)^bnQg9yUI?#wroW#9;!#D?K)5tsjCYG<2B57-ZLFd zFPW`WUynSiCcKBP zL+6>bvh9A+P`oT2b?R7%Q9lai7^iyBU_|QfPnWiP%d0__zL0Shn;FJtlE+4l3hmk4 zW^5uJn;xgIdDhr$^w{(|iH+2+`cz{~c{0vDoib9oq$vHK)3Tql>}{6)s%3v@-4XDu zo@1?E>sx)hwI<|SQ{ijsXEn|8H5FOS!+p(}8J6ygfSDf$rLzcMP_7#okCcC!I;+yk znlKsCciCjbNf%u=-}MQq);31L#%L5*YV(Q2JQ+Z-BVBy8&91RQ4{e)Ic=M!8*U!W! z67yU?lWFeF3p2l5J85cSp4bhcE?pDyB2_nDZA^8(_=nflS$J!-QPn~~UTLT9AW^UEvJxne02M=fpRWD?+pf@Do`hX`hbLTLbph{P8qkJ{`~dLqCD$DYlM|=&9dfM zRaT8(!C*WRRe@90mqvTn8)@giDXkShlVI`B-5=#F+icS5 zBU}1wFw8I<1Nn{JE;PIr4ne-r@OH@W@wS}Vg^xo&+-|rRW+DH>@PBX^a$jyFyciCL zlMUy>Y~*Ugl`sdn)$lPm0(qO^yYOPB91e%0kS7|JLiQcI%J61L8|}Lc zAAw_$pErC9jzj*d;eTKNxjTI(913$`zF`T>LtbbYgX59c8g7K_`}StTH{d16`whQ@ z`N%2EZ{Z+#DaA6|`|1v$>z*(RO2qvjwp zXVhGXuc~VxKBCH?+*kAq4Y{W-k9(+c(kWA22hmaUAhtT6JT)I#)(19Mdm+3YE`>M1 zWl;3PhK*3_xdQS`X5R{b2yK(z3@O9D11^GVP5MvZV&pqvCA=3_!HqBoe+ET=li`z4 z?(+;>Li%P{4WEP5&3@kGzW}MDy%loqw0{R# zVFZ2wm%~Fa1`k8ptmnm0R-|4!4%c&|ml{N_;yR7JidB@5&eKMJRw{{dJ(g7_OP`n> zz0=e6mVeO+%O62~hR8}wkg`v&{9))z3=jt?*RLPKS)KEy)pkyuN%`(RbPN3< zT@B^TgD=><4f{fy{{vwYl-_B9;>Y-e_TwMJ3CQ?{&04DNgsfreE_fxp8y3TR;B43m znFDGaTmaWYd{vJpzN79#UJUPt;@^YtD*P>b=2wHL*bh? z_fYtz_D{+G1@gnlkHVkBr{E)S8zj$u6FvsthrfiML-tntYxo50O2_>g_J&VG*-xK= zJSM1T;Xt?pNxD_(D?3axErr|F58tHEv`8~sZa3|^e;qT!G@OAhX zNFUjs!Cg>Z95PqUzLUkylZ!8Aa+b+~qltdv3}TuZz=|PrYA`Eke`ef3Ry04eb0GTJ zta2C035Sq{Pv@|k<*>u$uuJE&^G#JHT#sds70;40Kt8g}o+2%e;$GuevB#n3#6?hI z6>&CE@~+TPbRGSxG^HE~m$IYhP@f!CPb}5-$dX-|kVSpm`iU%cc7wFV4bnb0IP*D6 zw>@3=OIq6;%|ppKUs`SFP9JI6#<(AS+MVnEx^E|AH(4D-?nb1`b@207Vj+<|Ks6B8 z67egwg(z!hM}qvOo0*#XWg*JhRD$(W--G$1$voGbW|(Ctb6D!~jv;=oWl3uz z{p}QRBKtn==yx!yu!DNKjUClJrCyg)YMiwSJ*oKsqWHA_aJ{YaY<4pR4br8~sbAb>BG1lA8?4 z9_X|^;AhW2**4^!4P+8@Lr?bJ6Yam9wsV{#S0`?s^G)B)spBmf*B&bE?w)GIQh6R+ zMr8Sy_j3At33QOtt~?j=M6yGJKhD>I-tPn59AS4=ArG2_3J$f2{^R+sAi(b8{gglz zPrp2W+9i{|C${6Z1-^7`-S?=H?gq)z?{i!wHv>wNJQI6=w{f#2PtM|;wT}xv-d6Y0 zNrUgk{BnOhBR?vo_A;CSMQbg z-nwx(+H#lszA0BFiUbvhL@NOjMFJ#1;t)jwB#1;g#UTo!MU=q*|7K@1&pSpWkw^0P zzM1{L-^`mgZ|1-2L^6>`{0D_smL(~e6Z^fg-wc}7u(-YL)hfk9ZZH!RN1MJ}J8)R~ zf!Azo9a>);Dh?J0*A9%fYhl}$TN|<+`fhFQz<7JA=9Tx#xkJqv+1NTYI9y#{-B=wO zs;nP$husW2yWZYMX)Xw5y%f5kWR$3SH5t|Vu2COh6t$WxhZsUo-0cR_p*vNR9JT0! zNz?q#&>RAseNDHr%PogZKi9dR{Ajb@a((G9BXqP`k>h@I)~iTA&xVqBMy7E`LH4j) zYs(;!=<7>lGW~g5UwbrbrDe=}diZ}luxVRAN97b?MVcl9vn=x9WV0~t=;jFw>7?)0 z2X{BTzKscIvUNTsvMgvb}?llf3& zrP$e3=Eks(bSLcCaqhTDn#A~Tk8c0XkMi8E9q|lUu>vN0HS5@A28+Xk!$UVGlDtjc zLOkJ_Xb{)HWS<2SOW>6BCS1#e>zFVA6HDOq^(I`8R`G0@><#l1IMuxgE1B>dCOmh3 z0v}6n!tI#>(J8AmPWN4HLO41P>C8g=$uA% zMuluNTB4X7mqau`_Hy9^6q}GHZl>8x^Fo>}Fa<6%mK@j6rSz~B>EcB++h}f~8G$Kq zU9#l3=%OAXQF6hPEVd(EjMD6YDRB9+=4B+-kdid73e!ds1aD2WNVuc2XcD(y3v-47EGu1~NAz=UT4kXWXC^ z`Z+HsanpC0*=mmfBD{LN9SQEdFY9irB`Y`ta$Muk!>JVahg33kdFQOv(mJ2aukR|r zM%6pn_FW2ieYQZcYIkn88eP-(!s+^!|2M1Cle!;o%By+dTrwG*Ps!{AMwQn>*Ad52 z6(?YHN!|r7{Rw;vy0}qtFU`&JYr*7Xf(s>){y1QlHuxBmJva^(rjz8x##NHcy0BR_ zLynk2MU-K5iS8=-5e$TP#@6JA;c#Roj$5R{RpB|E35V8n#7Q)WX&7A;^8F_AeHJ7) zT!oy0x3q&CYuBakl>(V7n1|by+N7X5E^1CVHzJaW_K5JutecPF`hp@=8l5w;*11@>+P^rS&>g z#Oq;nQMfr1ciMs*LA=7<3$MTXF8k6EZ$gWBvj*a-n4!rGEKHt@iupEp#6@If?)55ef7 zkkUj}EJz;U3i(lZ#su7ls`!|u;i`ZyGl7#9AjNQh(X&SByxX%RcwE(Gu6!6RNy7T%FD&k=nT@>zC6SvEPqoPu{ zufU7HOkYKd_?iads+ikN=7@z!U8R^`hiBaLBdCgR!04iYTTS2=3vfT;74Vzzy7&Ao zRK&M63s;5PWa2hja8!E=_Z@igd;Tt3#P?uyQOseJd6R`n@u-;Jho_awjyZ@Yuk45) zpi%r#GjUbeqKUoHf*nVw!u}YZF_n*^Dt-c^ivq4TfvYUQ1Bh3^pTg7k&iBX>KSPW7 zxd!5@m@7@@4HhN^u44WIUib0*5*2Y4Mi+&<&ct17!BHwJ+^^v2A@WyZM?8iW@oNpl zRWYwNnJX+z3TDOp9Xw+me~+s81B@;Tc$EoUZUIt!E8w5tb?^DlsEEI47Oo1n%)~9V z;3(r2?s0gr9sO@;5Pyf!MIrl5q+>zyOMyZ@0q@Grj(Ny;8v%Zy=C4zZcoLt8e`+wU zik&st84LReLKXWdcv>=@mty}$t2hUvi{d6tF8@C;Up3y2c*RXZOfIk$r|^;JgV9C7 zpE_qq(tn{cAAYn8#}8BU)>V$o=(na0R5710ng6gbk9C>-Agt(2^3Fym{g&?q5(;Y8 zD@#oE683Nzj4rB&$ITx8+S|j@>&9ZyUil(Qaxi$p{skHS#1ETzJab&#aoXD24icm#^a&&g+i&X zqtMT9o4l*=sIxgqv27gym2;d*8Ep-vB94br9$Q22?g_nTp-^hpIF$m{N~IKyhfDJQPbd|iHIxD_PQ8Dj&g8EK33`@J)x8|)=(;xIF)k68cN|252XsRhEhyK zq1`n=Wnm4aOo&sd8LXi^{o|pO0@hHT?D5dE3xz(`6Ux)uO65@;r}A93hVqz=hw{v| zhVuA~hw?17hCbO7%A?U5$^$M=J-1LOkE#Sp zi#{OrJ7;&v;ZSIe{wtD^?wNbO``vTTx%bX}EN4Fcc`}G7hIIEX(HnU4Ga~YT7B^6w ze(=xI^qr=+54@pGzkOhC)d{S!@2&WD$;#WV>s72JW%+Ba<+#@P`B|&v6;v*jNCV zYL)-n@0wbr&|4>n&U1c*=tm7TF#LL&s0I3G2Z_4F`2Uu-wp1iakWg&&05u!68RkFW8 z{QR(QIyKPG4-x%tlKW0a+U`~%eF%~1H|V{3Kfa)0fP9Fu52)5CjfKlcFWw6U^*`2*)m9lxZ_F8oPiYm!x&Y z%xLTaMwt#XLk&sn0!Eo7W`;mvMnP%)S!PCK7cf*^m}|_8#x7u#xyj6E>;i@w5}VI6 zGa9>qQ6`()6}x~@CY#$8yMR$9cjd0wqoDZ75$=jzz^F~ucf~GXsO!Wg>$_qXFv@(9 zne111)(IG8zQj!SE6fxy%6yrb>{pm6V3hd^Gee-vr3iSKDAOM!4T0gmNgXW~??10# zZ_`pSeIeOkEHpQE+|e@)Wg;m)fq501Z9%k;iRX1w!iCT_+X@5C~V zW@F#q(~(}V6Wi?hFgww?kV%+{Mi_1~o4}598%Z-MZ8UG!x)iR}j5eCh<~Z7DFq@$0qOIy=yji^gO@@ zI@&tKN$EWAL9q$*%|h*5@T?lra{!sTN%Tz?Do5IBcAmO@2L?^lIS7#Grzz9yO_-*K z<7kq8!g?$8){vfto(}0L=&3C|li5e+J`Z0~vgadJlXQ6Wx$5x?dkBqTfPNn-g*-p# z6*+Hy0@$}A_-T~g0Cp>a9|Qg>u z0eMbvn9?s>Gd{}4X1IZ^P zKQ8$$Z5nm|jaY67@{|^U`BUR>AYZ311OJNN4V%9Z*=}(DU7btc7x_7nH*pt;(=93e zV_|BNPZ2Xe5NrP^@_^u96Z{q=N5o^r(Q#a@^d#P+qL~=cH?Ulsg1lfc=O$gFTPU04 zp@#Oi##_*?VuV@yzWzP*+wDWFeP&-Te2>$QMZ3B0m~jglw~~X@<=}4+E-|?2O$z?1 z(L}w5hW5B-7i5wSLAKI>$de*RMNWylC~`rh4Y`*b$v-P{Q{>BZ1=o`|kspMIy~dOD zdyobCipU?+U(+)vZ82EBZn*SE^l1tpU(uhTm+6+i0sM!?^Yjn&&-5weZyTS5{B8ZW z=%46c^e-U)9Q_XDqW&6vKtH5EfcZdv=|!{~hh>&I zYNo$~%%EP5?x%l+JV=q%A_p+M)|Szjsl3AMT8*}mxc9l#}3F4}oT zQ^A#0r=n)dteka<3Jxe*QI)4=R1nxJV2nFK*$eEYqM}JVSglB|<~m(cc469a6NHa6y!E<1s<0~-wjRaz=; z&N-DZbqn_Gf-2emwQVbNwhvd%;^zl--3u4g>u|W2l^-~syIreZhya(Jl{Me4+_QLG z1$o~o?<|DhWv3`LE~%ouA-Q0;?F&9eIbYdbFy@sveP?C$o<*gy?QU+@xwPh1oRZ=; z(aw@nbSmLeRr1yqg=SbzZK(RRs@2WaqQ`8*@0DkjzwYGKuHx!IDSxZHIt$ScJpBX0 z%-O0l<`rwv1kwu}Mj%}?nuqCtt}e`Z_|O9G?7Ur}vz}kV>-^F)=meT@*B#$;OUkV< zVO{zBQxASr8ATdEI)j8=-55hUj)dJ4>m?ZzNGFiaB0YliI1*NCV+!eGNKYV5Bh4UT zMKSQpm2m;-BGM(KS)@6nd8EroSCFnE;Ur>w9Or zMJkbv+%@FJ$)h~20a4^qMM}p}T0vUG+V6r<)pEc#km%z7-JXY*D!VNc^nXC zsTW=NnUiN;+LOCJ`pTi9|9mI^UXEgxrX>uEv<75Mlhrf}y}{D8?(R%uYa)@@Z>04E z{)tF4bH8CVcBRv46eha6kx92rwau`&m`)hFp|{N^EJI71wyBuk=AaEWY$Rf&=>~G$ z-3_Ft)7{V$Y00L+;bJ3!#$gg97{j3kxDFiJpZ><;<*vbZUN+)w6DZLdDJDKNpmcva zq1Arxe1J~}b9%=W-!7l?+^tV)Zq@g$2O4;daw=-os5$h#qniY7LHXnbYs$@I_lK>n ztwqNAt8ZAf66;w104BpBjUGCFV(`RZVcG6mF61BS8~mtR>Kj^CC;E={4=oK1oLtHe z<}oeV>Hv<5_(wFOQFrd##N5_e+gn>$hH<2PBsT!})9qV@yeAax&2w0n+qsstRbmNS zK9Bluz&f;U#PL;p5?{r6@zU)0?04UM;Ja_${K)u=uYdVe{FCpmbC_eN7Uu)3<%_%r zEC$}1pI3{%!p5~2>XRLLZ|Rvu`R>DLu3T6W2mT+5pJ80;kB%jSth%=IUH_f8ias^w z`4byT7H~O3D3vP|`RtFs0z6FCh~$1He%X3Jm;0QBs~>(1AnYtRcJ@H^&Vof_7tXv0 z2&Bqi-Bl!u6#WPb;O9s1w+FoI&m`}IbQx#vrywWj5^__xF`t7z1$nmm*BbhZ*!y?b zel>CJs?EnZizkLuMMM=bF4$$+-_BzHDq>%o!Y;OqeU6`pq}CjEKO1O(a^Bq>l)6$* z^oOypV{y{pQw1#E0axHr)Y7Mg(~o_t`freykmEnwaDR-!UMaMvR!#R~;jfpKrTtAr zYYUGVlNb$4yv^gjLNtQgySCN#I3fwKSF=y$9X@kw9E&H>j-s@T`yIg_Zm;h9Wz^^0 ze>>Izw9>zoxINsir2UF;UHDcEd3f)3a^P+t@rZVz{xtF{Qj_^*+7yphXcazVJ>P{{ zxXW3Q*eyB+&jtvy5YJ&)4co1bUIFdY&oT0|g>WY&hV!*HdGt7jdLOXHC!MMvyZdZA zmLci;3$Wu+0jHKcybq7nz59Z2`{q91Sufi2(S9G2I-?jHKB1K`lZxmy3;nrs#G>_n zHb(Sb=mU8F&;RoDV;iNSg~KRceulHy$+MPn^Iic*;Nk52+}XaNtQAyjw_q1NR}E)3 zRgit`(Nr>(JZ;x*Virue!EkoXcTWZRRouRUzLJyoy}(H_)oSoUkHM!{EfDMmxcDbBATD4H|*MiEF zyX<{Pe~x9P9@-8R?$l_rrUUWSvup5E6)yPBI&Oz6D)^9AkJqhQc((0eW6iIz$J1(E z6|Ex6;jA4@x$E9Fj)XmM z^4!w%5n592L-K&d_^f;4sHNEdkI$a(xthR)mrCmR3W z$?@;ZLw-!#?hTB$b`MRv!6J40)*;)st{YLjdh^2tDJu`$4TS@OP(-`!M>>#|0DKS#b_@U#Dr}7u}quxa>3yOE#q49yom9@Bul<-78u}1r^uE zLeW@7ePy(^A{J?k216CmP(vhEQ4|TsB6Xo@4GrUuxt<*^3r0hs@XXMPsz_yYNojE) z7*i@(P|2l24^hKb(obgZ`Fh*%Y*X z-NBY!U+uL{_fRkTydu_PB$OcIG?FM~?+mW5s^Ho?h9Tr+_-^!o%&!79I$dhh%?$ph z=O3*bNhu=fti;JqdWJeLUCP)^bnQg9yUI?#wroW#9;!#D?K)5tsjCYG<2B57-ZLFd zFPW`WUynSiCcKBP zL+6>bvh9A+P`oT2b?R7%Q9lai7^iyBU_|QfPnWiP%d0__zL0Shn;FJtlE+4l3hmk4 zW^5uJn;xgIdDhr$^w{(|iH+2+`cz{~c{0vDoib9oq$vHK)3Tql>}{6)s%3v@-4XDu zo@1?E>sx)hwI<|SQ{ijsXEn|8H5FOS!+p(}8J6ygfSDf$rLzcMP_7#okCcC!I;+yk znlKsCciCjbNf%u=-}MQq);31L#%L5*YV(Q2JQ+Z-BVBy8&91RQ4{e)Ic=M!8*U!W! z67yU?lWFeF3p2l5J85cSp4bhcE?pDyB2_nDZA^8(_=nflS$J!-QPn~~UTLT9AW^UEvJxne02M=fpRWD?+pf@Do`hX`hbLTLbph{P8qkJ{`~dLqCD$DYlM|=&9dfM zRaT8(!C*WRRe@90mqvTn8)@giDXkShlVI`B-5=#F+icS5 zBU}1wFw8I<1Nn{JE;PIr4ne-r@OH@W@wS}Vg^xo&+-|rRW+DH>@PBX^a$jyFyciCL zlMUy>Y~*Ugl`sdn)$lPm0(qO^yYOPB91e%0kS7|JLiQcI%J61L8|}Lc zAAw_$pErC9jzj*d;eTKNxjTI(913$`zF`T>LtbbYgX59c8g7K_`}StTH{d16`whQ@ z`N%2EZ{Z+#DaA6|`|1v$>z*(RO2qvjwp zXVhGXuc~VxKBCH?+*kAq4Y{W-k9(+c(kWA22hmaUAhtT6JT)I#)(19Mdm+3YE`>M1 zWl;3PhK*3_xdQS`X5R{b2yK(z3@O9D11^GVP5MvZV&pqvCA=3_!HqBoe+ET=li`z4 z?(+;>Li%P{4WEP5&3@kGzW}MDy%loqw0{R# zVFZ2wm%~Fa1`k8ptmnm0R-|4!4%c&|ml{N_;yR7JidB@5&eKMJRw{{dJ(g7_OP`n> zz0=e6mVeO+%O62~hR8}wkg`v&{9))z3=jt?*RLPKS)KEy)pkyuN%`(RbPN3< zT@B^TgD=><4f{fy{{vwYl-_B9;>Y-e_TwMJ3CQ?{&04DNgsfreE_fxp8y3TR;B43m znFDGaTmaWYd{vJpzN79#UJUPt;@^YtD*P>b=2wHL*bh? z_fYtz_D{+G1@gnlkHVkBr{E)S8zj$u6FvsthrfiML-tntYxo50O2_>g_J&VG*-xK= zJSM1T;Xt?pNxD_(D?3axErr|F58tHEv`8~sZa3|^e;qT!G@OAhX zNFUjs!Cg>Z95PqUzLUkylZ!8Aa+b+~qltdv3}TuZz=|PrYA`Eke`ef3Ry04eb0GTJ zta2C035Sq{Pv@|k<*>u$uuJE&^G#JHT#sds70;40Kt8g}o+2%e;$GuevB#n3#6?hI z6>&CE@~+TPbRGSxG^HE~m$IYhP@f!CPb}5-$dX-|kVSpm`iU%cc7wFV4bnb0IP*D6 zw>@3=OIq6;%|ppKUs`SFP9JI6#<(AS+MVnEx^E|AH(4D-?nb1`b@207Vj+<|Ks6B8 z67egwg(z!hM}qvOo0*#XWg*JhRD$(W--G$1$voGbW|(Ctb6D!~jv;=oWl3uz z{p}QRBKtn==yx!yu!DNKjUClJrCyg)YMiwSJ*oKsqWHA_aJ{YaY<4pR4br8~sbAb>BG1lA8?4 z9_X|^;AhW2**4^!4P+8@Lr?bJ6Yam9wsV{#S0`?s^G)B)spBmf*B&bE?w)GIQh6R+ zMr8Sy_j3At33QOtt~?j=M6yGJKhD>I-tPn59AS4=ArG2_3J$f2{^R+sAi(b8{gglz zPrp2W+9i{|C${6Z1-^7`-S?=H?gq)z?{i!wHv>wNJQI6=w{f#2PtM|;wT}xv-d6Y0 zYx+lB5N8$suae|s4WIMDHw#fQ!Y&P7BySoRt zh~Ls*Q1vIaGiUpF4Xq-dln*|{c-fbEW@cyC&keD7EEf9*ANr){?hp#=tuUphyoNS* zh4Q&w*1jb?Bkwtm=WZ1?GwEHBN_g&iZpp~fPbQuBZS6}~cfr?^+nMx^U$=$%3$!cV zA-L=H>_TIyvC_!ptfeep;3EXN`Vpj`ePLUKx8-V(Uh7xMTP=`AiOVgwyOyxHhTcr-Rr3wswu_QGaO}y$-cW_t zacuh1SkbdB^!G7!R=8|}4wsevx&pn8O4L))bUg_LXmAY0ma8<{cWzxr@r&Chb<}mH z-WNBkcyz7*;;OWbeky&%%z}_$YEKGKlPybgSq3i6gB`99)MWEY$9PM64U76Ql8vE z>xD+2Fy*>Sz$*E!77lcmT-DTxlA84ul%N3;TvSz*o`Xt1pr(7W*BgX|4Y6UyVzFVA zL-BZ=;V;VA(4Qmaw$k8WdgA_?ni9@<1ujTo8gDRI?{j;5w@kqkvCC~AcDRu5e+s9T zwG?hMlXjHpNn6y<&)DMsK4L2?e92r|&aEvhLUwhnmbuN2&(zc?;!x{vSU+=h@%SJ` zqsXH0G)1BOGta3$AD}^kMv+5<1nt)sXDv=VI5~`BESaF@2nnPEvE&^T_%TW%Nn(t| zIEpcL7iEl1peUS{y3FZi8Hw~UmrxDKZq?Y{tb`mgbF^qI8@Wu6f_CZV=E)hmhngDs zm(_O)`DfMP^02BrUz$*r(DGCjNv`s2*l4wKm)c(aL$v^Pzll;I<*XnrDgjPC3OVpO z2Qo}<9zgO7GJO)o!^_t7sD8&vmckj+G$S24kPhr;Q>36f>q~4W93^Zvjjb{4%^C~Y zh1^>5EBre)mZH$oFPkA@91GX6*nMm#49m9JY|w%eNKy1D!i*^Y`X|H!gJYP%%K)20 z6#`Wt<7*=EPY3S->1QXa%g?J}Jks5LK(2gY$3kZ>?_IUy@A*U{Uq0Zn6*w`Ea6A&Y z9!U&f9wLkt2~5ahB?L&15a}pNqypF6AW;T={yG<6KaSeV0Go2}Yed?Q(n|tKBgjFN zAlsmg*IIWn@d=`tQKJ3k*ugG+6SZ3e^hUV96Iy~UH_2H20f{2j6o0Sgdf= z$i5PP!07%_r+S7Xe<#8__Ifd4P${6g;YW)aQRIEUH^0yCO?$P`(d4&y>-C-#QBta; zvZpBCMRLWbi17v(-(e$B#42c<*l$3IFB%gkI()4+MeL296mev-mwk_7_B4NES@w)Q z!_leJ*TU6Qh@%SK79O56_8j}?PAfOp9NTB?1&;TJcK?8yCQeKIm>;G!+#BKvj6%I$lxXm JE7P^{e*xph$TI){ literal 0 HcmV?d00001