From 5fa35c7a34686efe263f49c13ae08a60ee1d18d5 Mon Sep 17 00:00:00 2001 From: halub3 <63481170+halub3@users.noreply.github.com> Date: Wed, 20 Oct 2021 21:08:05 +0300 Subject: [PATCH] hw Sushchenko A MIPT --- kernel_modules/1-2-test-mod/Kbuild | 3 + kernel_modules/1-2-test-mod/hello_mod.c | 21 +++ kernel_modules/1-2-test-mod/hello_mod.ko | Bin 0 -> 37188 bytes kernel_modules/1-2-test-mod/hello_mod.mod | 2 + kernel_modules/1-2-test-mod/hello_mod.mod.c | 27 ++++ kernel_modules/1-2-test-mod/hello_mod.mod.o | Bin 0 -> 30216 bytes kernel_modules/1-2-test-mod/hello_mod.o | Bin 0 -> 7980 bytes kernel_modules/1-2-test-mod/modules.order | 1 + kernel_modules/3-error-mod/Kbuild | 3 + kernel_modules/3-error-mod/err_mod.c | 25 ++++ kernel_modules/3-error-mod/err_mod.ko | Bin 0 -> 37348 bytes kernel_modules/3-error-mod/err_mod.mod | 2 + kernel_modules/3-error-mod/err_mod.mod.c | 27 ++++ kernel_modules/3-error-mod/err_mod.mod.o | Bin 0 -> 30208 bytes kernel_modules/3-error-mod/err_mod.o | Bin 0 -> 8164 bytes kernel_modules/3-error-mod/modules.order | 1 + kernel_modules/4-multi-mod/Kbuild | 7 + kernel_modules/4-multi-mod/mod1.c | 27 ++++ kernel_modules/4-multi-mod/mod1.o | Bin 0 -> 8380 bytes kernel_modules/4-multi-mod/mod2.c | 4 + kernel_modules/4-multi-mod/mod2.o | Bin 0 -> 2652 bytes kernel_modules/4-multi-mod/modules.order | 1 + kernel_modules/4-multi-mod/supermodule.ko | Bin 0 -> 39024 bytes kernel_modules/4-multi-mod/supermodule.mod | 2 + kernel_modules/4-multi-mod/supermodule.mod.c | 27 ++++ kernel_modules/4-multi-mod/supermodule.mod.o | Bin 0 -> 30220 bytes kernel_modules/4-multi-mod/supermodule.o | Bin 0 -> 9840 bytes kernel_modules/5-oops-mod/Kbuild | 5 + kernel_modules/5-oops-mod/modules.order | 1 + kernel_modules/5-oops-mod/oops_mod.c | 27 ++++ kernel_modules/5-oops-mod/oops_mod.ko | Bin 0 -> 37504 bytes kernel_modules/5-oops-mod/oops_mod.mod | 2 + kernel_modules/5-oops-mod/oops_mod.mod.c | 27 ++++ kernel_modules/5-oops-mod/oops_mod.mod.o | Bin 0 -> 30212 bytes kernel_modules/5-oops-mod/oops_mod.o | Bin 0 -> 8296 bytes kernel_modules/6-cmd-mod/Kbuild | 3 + kernel_modules/6-cmd-mod/cmd_mod.c | 26 ++++ kernel_modules/6-cmd-mod/cmd_mod.ko | Bin 0 -> 60308 bytes kernel_modules/6-cmd-mod/cmd_mod.mod | 2 + kernel_modules/6-cmd-mod/cmd_mod.mod.c | 27 ++++ kernel_modules/6-cmd-mod/cmd_mod.mod.o | Bin 0 -> 30204 bytes kernel_modules/6-cmd-mod/cmd_mod.o | Bin 0 -> 31164 bytes kernel_modules/6-cmd-mod/modules.order | 1 + kernel_modules/7-list-proc/Kbuild | 3 + kernel_modules/7-list-proc/list_proc.c | 35 +++++ kernel_modules/7-list-proc/list_proc.ko | Bin 0 -> 75892 bytes kernel_modules/7-list-proc/list_proc.mod | 2 + kernel_modules/7-list-proc/list_proc.mod.c | 27 ++++ kernel_modules/7-list-proc/list_proc.mod.o | Bin 0 -> 30216 bytes kernel_modules/7-list-proc/list_proc.o | Bin 0 -> 46680 bytes kernel_modules/7-list-proc/modules.order | 1 + kernel_modules/8-kdb/Kbuild | 3 + kernel_modules/8-kdb/hello_kdb.c | 142 +++++++++++++++++++ kernel_modules/8-kdb/hello_kdb.ko | Bin 0 -> 120524 bytes kernel_modules/8-kdb/hello_kdb.mod | 2 + kernel_modules/8-kdb/hello_kdb.mod.c | 27 ++++ kernel_modules/8-kdb/hello_kdb.mod.o | Bin 0 -> 30204 bytes kernel_modules/8-kdb/hello_kdb.o | Bin 0 -> 91584 bytes kernel_modules/8-kdb/modules.order | 1 + kernel_modules/9-dyndbg/Kbuild | 3 + kernel_modules/9-dyndbg/dyndbg.c | 32 +++++ kernel_modules/9-dyndbg/dyndbg.ko | Bin 0 -> 37836 bytes kernel_modules/9-dyndbg/dyndbg.mod | 2 + kernel_modules/9-dyndbg/dyndbg.mod.c | 27 ++++ kernel_modules/9-dyndbg/dyndbg.mod.o | Bin 0 -> 30180 bytes kernel_modules/9-dyndbg/dyndbg.o | Bin 0 -> 8900 bytes kernel_modules/9-dyndbg/modules.order | 1 + 67 files changed, 609 insertions(+) create mode 100644 kernel_modules/1-2-test-mod/Kbuild create mode 100644 kernel_modules/1-2-test-mod/hello_mod.c create mode 100644 kernel_modules/1-2-test-mod/hello_mod.ko create mode 100644 kernel_modules/1-2-test-mod/hello_mod.mod create mode 100644 kernel_modules/1-2-test-mod/hello_mod.mod.c create mode 100644 kernel_modules/1-2-test-mod/hello_mod.mod.o create mode 100644 kernel_modules/1-2-test-mod/hello_mod.o create mode 100644 kernel_modules/1-2-test-mod/modules.order create mode 100644 kernel_modules/3-error-mod/Kbuild create mode 100644 kernel_modules/3-error-mod/err_mod.c create mode 100644 kernel_modules/3-error-mod/err_mod.ko create mode 100644 kernel_modules/3-error-mod/err_mod.mod create mode 100644 kernel_modules/3-error-mod/err_mod.mod.c create mode 100644 kernel_modules/3-error-mod/err_mod.mod.o create mode 100644 kernel_modules/3-error-mod/err_mod.o create mode 100644 kernel_modules/3-error-mod/modules.order create mode 100644 kernel_modules/4-multi-mod/Kbuild create mode 100644 kernel_modules/4-multi-mod/mod1.c create mode 100644 kernel_modules/4-multi-mod/mod1.o create mode 100644 kernel_modules/4-multi-mod/mod2.c create mode 100644 kernel_modules/4-multi-mod/mod2.o create mode 100644 kernel_modules/4-multi-mod/modules.order create mode 100644 kernel_modules/4-multi-mod/supermodule.ko create mode 100644 kernel_modules/4-multi-mod/supermodule.mod create mode 100644 kernel_modules/4-multi-mod/supermodule.mod.c create mode 100644 kernel_modules/4-multi-mod/supermodule.mod.o create mode 100644 kernel_modules/4-multi-mod/supermodule.o create mode 100644 kernel_modules/5-oops-mod/Kbuild create mode 100644 kernel_modules/5-oops-mod/modules.order create mode 100644 kernel_modules/5-oops-mod/oops_mod.c create mode 100644 kernel_modules/5-oops-mod/oops_mod.ko create mode 100644 kernel_modules/5-oops-mod/oops_mod.mod create mode 100644 kernel_modules/5-oops-mod/oops_mod.mod.c create mode 100644 kernel_modules/5-oops-mod/oops_mod.mod.o create mode 100644 kernel_modules/5-oops-mod/oops_mod.o create mode 100644 kernel_modules/6-cmd-mod/Kbuild create mode 100644 kernel_modules/6-cmd-mod/cmd_mod.c create mode 100644 kernel_modules/6-cmd-mod/cmd_mod.ko create mode 100644 kernel_modules/6-cmd-mod/cmd_mod.mod create mode 100644 kernel_modules/6-cmd-mod/cmd_mod.mod.c create mode 100644 kernel_modules/6-cmd-mod/cmd_mod.mod.o create mode 100644 kernel_modules/6-cmd-mod/cmd_mod.o create mode 100644 kernel_modules/6-cmd-mod/modules.order create mode 100644 kernel_modules/7-list-proc/Kbuild create mode 100644 kernel_modules/7-list-proc/list_proc.c create mode 100644 kernel_modules/7-list-proc/list_proc.ko create mode 100644 kernel_modules/7-list-proc/list_proc.mod create mode 100644 kernel_modules/7-list-proc/list_proc.mod.c create mode 100644 kernel_modules/7-list-proc/list_proc.mod.o create mode 100644 kernel_modules/7-list-proc/list_proc.o create mode 100644 kernel_modules/7-list-proc/modules.order create mode 100644 kernel_modules/8-kdb/Kbuild create mode 100644 kernel_modules/8-kdb/hello_kdb.c create mode 100644 kernel_modules/8-kdb/hello_kdb.ko create mode 100644 kernel_modules/8-kdb/hello_kdb.mod create mode 100644 kernel_modules/8-kdb/hello_kdb.mod.c create mode 100644 kernel_modules/8-kdb/hello_kdb.mod.o create mode 100644 kernel_modules/8-kdb/hello_kdb.o create mode 100644 kernel_modules/8-kdb/modules.order create mode 100644 kernel_modules/9-dyndbg/Kbuild create mode 100644 kernel_modules/9-dyndbg/dyndbg.c create mode 100644 kernel_modules/9-dyndbg/dyndbg.ko create mode 100644 kernel_modules/9-dyndbg/dyndbg.mod create mode 100644 kernel_modules/9-dyndbg/dyndbg.mod.c create mode 100644 kernel_modules/9-dyndbg/dyndbg.mod.o create mode 100644 kernel_modules/9-dyndbg/dyndbg.o create mode 100644 kernel_modules/9-dyndbg/modules.order diff --git a/kernel_modules/1-2-test-mod/Kbuild b/kernel_modules/1-2-test-mod/Kbuild new file mode 100644 index 00000000000000..3674ef2591b3d9 --- /dev/null +++ b/kernel_modules/1-2-test-mod/Kbuild @@ -0,0 +1,3 @@ +ccflags-y = -Wno-unused-function -Wno-unused-label -Wno-unused-variable -DDEBUG + +obj-m = hello_mod.o diff --git a/kernel_modules/1-2-test-mod/hello_mod.c b/kernel_modules/1-2-test-mod/hello_mod.c new file mode 100644 index 00000000000000..3fac57752e06ca --- /dev/null +++ b/kernel_modules/1-2-test-mod/hello_mod.c @@ -0,0 +1,21 @@ +#include +#include +#include + +MODULE_DESCRIPTION("Simple module"); +MODULE_AUTHOR("Kernel Hacker"); +MODULE_LICENSE("GPL"); + +static int my_hello_init(void) +{ + pr_debug("Hello!\n"); + return 0; +} + +static void hello_exit(void) +{ + pr_debug("Goodbye!\n"); +} + +module_init(my_hello_init); +module_exit(hello_exit); diff --git a/kernel_modules/1-2-test-mod/hello_mod.ko b/kernel_modules/1-2-test-mod/hello_mod.ko new file mode 100644 index 0000000000000000000000000000000000000000..02bc4670b2e155abdc53ca4c7062f29c6ea9658b GIT binary patch literal 37188 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 aP(rtXX#TkTk<2smU4eG#c>(w12LBfvQ6F#s literal 0 HcmV?d00001 diff --git a/kernel_modules/1-2-test-mod/hello_mod.mod b/kernel_modules/1-2-test-mod/hello_mod.mod new file mode 100644 index 00000000000000..e06a51fd8eb115 --- /dev/null +++ b/kernel_modules/1-2-test-mod/hello_mod.mod @@ -0,0 +1,2 @@ +/home/osboxes/linux/tools/labs/skels/./kernel_modules/1-2-test-mod/hello_mod.o + diff --git a/kernel_modules/1-2-test-mod/hello_mod.mod.c b/kernel_modules/1-2-test-mod/hello_mod.mod.c new file mode 100644 index 00000000000000..8309f67e10c7df --- /dev/null +++ b/kernel_modules/1-2-test-mod/hello_mod.mod.c @@ -0,0 +1,27 @@ +#include +#define INCLUDE_VERMAGIC +#include +#include +#include + +BUILD_SALT; + +MODULE_INFO(vermagic, VERMAGIC_STRING); +MODULE_INFO(name, KBUILD_MODNAME); + +__visible struct module __this_module +__section(".gnu.linkonce.this_module") = { + .name = KBUILD_MODNAME, + .init = init_module, +#ifdef CONFIG_MODULE_UNLOAD + .exit = cleanup_module, +#endif + .arch = MODULE_ARCH_INIT, +}; + +#ifdef CONFIG_RETPOLINE +MODULE_INFO(retpoline, "Y"); +#endif + +MODULE_INFO(depends, ""); + diff --git a/kernel_modules/1-2-test-mod/hello_mod.mod.o b/kernel_modules/1-2-test-mod/hello_mod.mod.o new file mode 100644 index 0000000000000000000000000000000000000000..0263be143f2952f2b84837ff5044fcc9349f1d51 GIT binary patch literal 30216 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 DuxD_f literal 0 HcmV?d00001 diff --git a/kernel_modules/1-2-test-mod/modules.order b/kernel_modules/1-2-test-mod/modules.order new file mode 100644 index 00000000000000..60c9296c1c0d48 --- /dev/null +++ b/kernel_modules/1-2-test-mod/modules.order @@ -0,0 +1 @@ +/home/osboxes/linux/tools/labs/skels/./kernel_modules/1-2-test-mod/hello_mod.ko diff --git a/kernel_modules/3-error-mod/Kbuild b/kernel_modules/3-error-mod/Kbuild new file mode 100644 index 00000000000000..7bf41fb63f9589 --- /dev/null +++ b/kernel_modules/3-error-mod/Kbuild @@ -0,0 +1,3 @@ +ccflags-y = -Wno-unused-function -Wno-unused-label -Wno-unused-variable + +obj-m = err_mod.o diff --git a/kernel_modules/3-error-mod/err_mod.c b/kernel_modules/3-error-mod/err_mod.c new file mode 100644 index 00000000000000..74c60767838f20 --- /dev/null +++ b/kernel_modules/3-error-mod/err_mod.c @@ -0,0 +1,25 @@ +#include +#include +#include + +MODULE_DESCRIPTION("Error module"); +MODULE_AUTHOR("Kernel Hacker"); +MODULE_LICENSE("GPL"); + +static int n1, n2; + +static int err_init(void) +{ + n1 = 1; n2 = 2; + pr_info("n1 is %d, n2 is %d\n", n1, n2); + + return 0; +} + +static void err_exit(void) +{ + pr_info("sum is %d\n", n1 + n2); +} + +module_init(err_init); +module_exit(err_exit); diff --git a/kernel_modules/3-error-mod/err_mod.ko b/kernel_modules/3-error-mod/err_mod.ko new file mode 100644 index 0000000000000000000000000000000000000000..abe31693194b832d8325bdcf7be6043afd82ee26 GIT binary patch literal 37348 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 GgZ~G|iX^@O literal 0 HcmV?d00001 diff --git a/kernel_modules/3-error-mod/err_mod.mod b/kernel_modules/3-error-mod/err_mod.mod new file mode 100644 index 00000000000000..9405383914f189 --- /dev/null +++ b/kernel_modules/3-error-mod/err_mod.mod @@ -0,0 +1,2 @@ +/home/osboxes/linux/tools/labs/skels/./kernel_modules/3-error-mod/err_mod.o + diff --git a/kernel_modules/3-error-mod/err_mod.mod.c b/kernel_modules/3-error-mod/err_mod.mod.c new file mode 100644 index 00000000000000..8309f67e10c7df --- /dev/null +++ b/kernel_modules/3-error-mod/err_mod.mod.c @@ -0,0 +1,27 @@ +#include +#define INCLUDE_VERMAGIC +#include +#include +#include + +BUILD_SALT; + +MODULE_INFO(vermagic, VERMAGIC_STRING); +MODULE_INFO(name, KBUILD_MODNAME); + +__visible struct module __this_module +__section(".gnu.linkonce.this_module") = { + .name = KBUILD_MODNAME, + .init = init_module, +#ifdef CONFIG_MODULE_UNLOAD + .exit = cleanup_module, +#endif + .arch = MODULE_ARCH_INIT, +}; + +#ifdef CONFIG_RETPOLINE +MODULE_INFO(retpoline, "Y"); +#endif + +MODULE_INFO(depends, ""); + diff --git a/kernel_modules/3-error-mod/err_mod.mod.o b/kernel_modules/3-error-mod/err_mod.mod.o new file mode 100644 index 0000000000000000000000000000000000000000..3120877d104d43f0ed5c29f787f9747e78644fd4 GIT binary patch literal 30208 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 literal 0 HcmV?d00001 diff --git a/kernel_modules/3-error-mod/err_mod.o b/kernel_modules/3-error-mod/err_mod.o new file mode 100644 index 0000000000000000000000000000000000000000..3818ae4a4b91b88a094fd3ee411aed72da114918 GIT binary patch literal 8164 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 Gm-}Bs7J(}O literal 0 HcmV?d00001 diff --git a/kernel_modules/3-error-mod/modules.order b/kernel_modules/3-error-mod/modules.order new file mode 100644 index 00000000000000..18a57f866ec375 --- /dev/null +++ b/kernel_modules/3-error-mod/modules.order @@ -0,0 +1 @@ +/home/osboxes/linux/tools/labs/skels/./kernel_modules/3-error-mod/err_mod.ko diff --git a/kernel_modules/4-multi-mod/Kbuild b/kernel_modules/4-multi-mod/Kbuild new file mode 100644 index 00000000000000..900491701e9ee4 --- /dev/null +++ b/kernel_modules/4-multi-mod/Kbuild @@ -0,0 +1,7 @@ +ccflags-y = -Wno-unused-function -Wno-unused-label -Wno-unused-variable + +# TODO: add rules to create a multi object module + +obj-m = supermodule.o +supermodule-y = mod1.o mod2.o + diff --git a/kernel_modules/4-multi-mod/mod1.c b/kernel_modules/4-multi-mod/mod1.c new file mode 100644 index 00000000000000..08511866c460a1 --- /dev/null +++ b/kernel_modules/4-multi-mod/mod1.c @@ -0,0 +1,27 @@ +#include +#include +#include + +MODULE_DESCRIPTION("Multi-file module"); +MODULE_AUTHOR("Kernel Hacker"); +MODULE_LICENSE("GPL"); + +extern int add(int a, int b); + +static int n1, n2; + +static int my_hello_init(void) +{ + n1 = 1; n2 = 2; + pr_info("n1 is %d, n2 is %d\n", n1, n2); + + return 0; +} + +static void hello_exit(void) +{ + pr_info("sum is %d\n", add(n1, n2)); +} + +module_init(my_hello_init); +module_exit(hello_exit); diff --git a/kernel_modules/4-multi-mod/mod1.o b/kernel_modules/4-multi-mod/mod1.o new file mode 100644 index 0000000000000000000000000000000000000000..5a4bc73eeefd4d959a3ba302d3804ff30860e527 GIT binary patch literal 8380 zcmb7JeQ+Dcb>GAH5+Ws%`m_`qvL#2h15l(?R#Hq^Ab6zC!j}P1irl7G5IB-Bfdg{@ zBuY(dr*6`yaVL%^ow#n|eAJoAB$-U=W*U3)<+0;9_8)EHwjNK~$uxD`Ni^=XaVKt@ zxK)2|?;UuQ^+&ox?C^ayjRc8YMLgzq=}$dFA4F*J#Nim1qZ}+VwWeX zaQ@P(_rDhV&^9W3I)v;eZ(g}_<+eX|6D~CX zZl~As3Q%`X;2v$6)IAp_ePqmYVJZjkQ`*O$dj6Saqh{G1Yih2T71dsMx$R7yvK-rL zCQepsE0!bbR;T7PR=bV1J(cSxqiH2t?Ru|iiJw6=X-BTTjxMwlF(J+>#(EYA zMW2Td;Qa(zWEeuhLl6KxfK~x5b|nG`gy*6J(VJjsC=_nkT@i?d-z3Rc^a})`@Vixm zz`vtGcpT!fCwA^fO(Yt62Ot!Wka+ZKsDZeMURGlciRi4dGbW-JRn-;|y-N`Z5uI06 zCq(osO87nzbq1)p(4t3Fl?X&LQgK4jn_xUrOvHAhz1wTxcw{%sl9SY4{)ikQ2Cjz= zw>tQTTEwLK?Z||D1Ey>8@1Z9k1%!g~2VjTf@6eFsFzASU1GQ0aP~qDm4^Z=4$tw9K zI??2QbRLlZj3z<(Ao7riKLVC~Jdhwi#D3T}E^vc$1Y{kYpe(~JA^8#%h2^8jBl4$E z6qSp}W6EVxJ`8$5eirg^5qoCcuE!!Lf>8Y;I70rE94&XFi6&2i49L%;Sx{a^ZAcob zgZ~B{k-s1lWfyr&z6yh+jH7lyz5qi9WDR*--U>aN3kUb2M#B}#6q2#$c>d@spGG~z>UlP7nlCl?pNVdC7u&1#x}cvXH|?NFQNJ&Tg*L419~zAZhjtIm z?-! z%pUkV7Se)4SJz5a8;1!SYQsn4)Hc4|)sG_eyve7XB?dLk7$wo6y)bSJiZ=Ug`k)pM z?1X2*i+OeuV>ks{T*ljX4QnHj6FWaPy^HjWT>5=Y3~S>cM?u0PL~i{fa05F(GL5#| z{B4cV4XwAQ#2veC-(|HRN>&fA7PO4l6iQ<&@C`Q=$p;r)%+7ur7jP2dxh6 zmqUZd)d5ZAvE_El8f$kJ+G|#4tl6-8Yh&GZy9v6w&>8EjSRhklH~?`Jn(krO89SV8 zsS^-oks7NywdJw3Ba>qdyVmU0t+8sS1-4gGN`2*Cb+zI4Bm@+Ur)qR2uR86T)#B4+IqhnCiiO8FCdR{LX8Pmuc6(e0Klmvv*`9j{ToGg}wY0l@3yXJM% zm@)Yxa`X_182NOjVw~2^StF~9YfP3nQz)G>@^fXqV&)4odP&b@(?-tERvOY3)&ZrY z%Pgkn^s;ES?WKgudUmI=WLxzF-8DSpa_M4GpP^#;WKPdvAjk`)v)5El!|^F3J*={} zTy@a4SSXi`X^bOVnm7I9g8mt!R58$1&X_Bat(CJyn1_l}dMU4G&2lB3Ic1)jb~|7j zX$+P0RT`BUXgFKQX3e6JH%od}PnX?c%$9WB%;eHMe2Dq&pao=}uXZh`RdrT6)IFJ+ zHOiH;ShkwYwrQ<3lzWW)Y=P=?*+S-&n9I*6GDnUk#t)_@Qsaq~t)bXtmb*oC%jYRJYsbU9x(PY7bFGr@h!sE;ifME((sdv|4pqQ-?sWI@Y4)I95H` z>Ec$JTxj>~deylwMXhKXPBkWvOoDFM^@d~By2%BnYJ=Tf?%69zYYjuQ-&&nSAB_&` z63Hd})z4R*#pK~cvH-Q6ZhdOW?j6No7HKeDrvbItiq%d7Yez9_?N+M|y^9@Oo4d*L zG~XyeE6MjD?^xX)^-L;O8#NH9wJ-?S>1nBUF2Gc$ZMS=!WY0d2F(kXyg{IYU+uhS^ zt!`k{t)|trl6J4zOs=-ECM+jeTefN|+@OjHI}Z!mj+LxeyVayqMTmhi*LjFIUAU<2 zkdd?xly&V^1HN~vEz8r%eBAt7jf+;Y(^x=6TT0fTo;zZvw9i=%W)1VnJt$+Q>^2y+ zHa;$#b7)QzM~uZJ8$cfvHddZEbFzSqS=KX!{7hNQ&J+}R#G(R0^qbgh;+lS`LQnc2b_TEVAt zylvOFLNR>Nsie=Q=d%@a8hcTw zg_78yTF+NX7+Zf>c@-ne+4MAaunKCl)6MCAh?vjk3a9(Ke?G6DHZpEB@Pdf1ooG5e zgw~GQyfgyyOvyl;DeCzdgin#4nZaf^az@2GG%;;d`n|x*{aB>h`8!gr@&&V$&d(Hb z#@)Kegd9~}>*qDl*SCtea-2q&q8#S#^rz~=%%xPR05Z?>=tdZA6 ze^%YF&$dv2KP$S;1+!r{PSSUw>-&IgD7DZr-hz)TU5E6vWlCJJ&K7tGKzCY8jl)xjJyRR7@;}Tv^QL z(>Z-&Qe8jD9NsYKt*@iiSaNVg(Dj3?@Gl1x)q0)J`&J%S>;^}u1K+>g=B7pKg6SSF z4I9VHHIDiJ-<@oXuT>kSuZ&xVt`_H8o###}AH64yxs$k}&Dp!omsk3Iq$my7ErCiOV|Fpiw=+q+c zU#8rboTC#PZdksToTKCZt4v9Eouo{l{wU0uv*~P>wyC z=O;Y%*+JhQ>7m&B1Ji?H>sbh(?60Tqk$(MPDE;iv`ZtVHfD9`8DI|V&rC$KC@%50( z>T9?!67+o&5i^Ka0e=dL2%f0iM79P{rcYn8f_@ru?*-B;d-jv_>}1L z9d8F>ifMYZq;d(k7r*Pd4CtqzkbRnnAl`!f3GWpCBI@xe?Mp#5BkPQy7+EiX3W}{) zmDN*fpBEIPqS-IuTNiYP%jBOC_~+iM>hI?=`D29q!SQ8d*uwh+UL<_iWdBB7|ElqG ze}(PIpHLJS`SVjfMbw&B)$Xl&EIb#$HVqRDJ zU@4^eqI$eM2n|kAa|>6}E2IWga|@)kqCq*y(*wW(t{-EZWSnL+7>kT&7%fJc3(`+> zKzNan=77q7%J>;Zdi*8+R~Wy+_#MW-VSJhKM~s&l|AX;=7&l`&N#8ccJ&a?FzsC4Z z#x&y`V~(-Rc$U#->@r?typQn%jDO7d2;&zSA7^}m@tcg_W_*G1`;4zJ(yJ?t=ieBA z&iG444d3}xA7vb59A(_acmv~p#@iSt7-tyoWGphCX8cXY1;%AYo3YDyk?}sp4=_H! z_z>g6jE^!t#`t;0FEjoXaS!8-j0YG~jE5PIF{T;IjAt25MvHNU@jZ-dj2~kB2;;{XKf(Byj88H?#rPuQ z%Zxu{{4paP5;RUawlsw516-cua*@lw#pO03e)lobe|o6>1BCG1pD{kh_&6cr(UXLb z`!*qh(BCrBzXOQ>uZ$`_ZFb`}=~MBGn6#f!hL}PX=fGES40toGf8ac!*A53Eopr=N zLWuJ1++L(Q7h3rI26i16mp#g{nyD@x6GVzWt3_&|(-A4BO$Cx3PmQC3Y~U5~ zf=J=ipu4|YSGN{=OX^zyS`=MfSa7U!{@N-YFP3mkQp#MRw{q|?Zh0!uxk%A#1imIj z%EtG73QsfcH@9Dl`o70Nf5mhI#DNZym9vx3TAB7Kw&;zw;JsDMOrHz~@^sE&RaMohO# zA4X1RzL&gy?*PL;j!$763Giqf)YcnE2{g6Aa#HCDx@xD6x zSBAger_k@GAV>WY-|Kh9*9N3`4f|)=*MUd=?p1OX{6mZ8!%Lpr1u*>m{x&9(_7(L@ z`^W3|LC{_skm9}2M{-{B>K*{YuWt?d65x?Ox_5Z`J_Fio15$hx`r1B*M?Q)=zrKf| zkJcRNBlPrr2{g5#^*||zMxPyUY09aNeor!ba-ZXS4A?4pa!;c~w3ogIIe+r%UINpj zsh;F2K0&gN(u?@{$MHFzU+8}2je~S~YYL>;hxqptnB;5vksOViba{INr1&wEJVXR1 U&nCLV`Q^TgeqZr~fS%m{0jLn6;Q#;t literal 0 HcmV?d00001 diff --git a/kernel_modules/4-multi-mod/mod2.c b/kernel_modules/4-multi-mod/mod2.c new file mode 100644 index 00000000000000..bc0af867d7c87c --- /dev/null +++ b/kernel_modules/4-multi-mod/mod2.c @@ -0,0 +1,4 @@ +int add(int a, int b) +{ + return a + b; +} diff --git a/kernel_modules/4-multi-mod/mod2.o b/kernel_modules/4-multi-mod/mod2.o new file mode 100644 index 0000000000000000000000000000000000000000..8d179d2d3a6098410bd773b40f5f9b288cd172f7 GIT binary patch literal 2652 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 literal 0 HcmV?d00001 diff --git a/kernel_modules/4-multi-mod/supermodule.mod b/kernel_modules/4-multi-mod/supermodule.mod new file mode 100644 index 00000000000000..509379961f1053 --- /dev/null +++ b/kernel_modules/4-multi-mod/supermodule.mod @@ -0,0 +1,2 @@ +/home/osboxes/linux/tools/labs/skels/./kernel_modules/4-multi-mod/mod1.o /home/osboxes/linux/tools/labs/skels/./kernel_modules/4-multi-mod/mod2.o + diff --git a/kernel_modules/4-multi-mod/supermodule.mod.c b/kernel_modules/4-multi-mod/supermodule.mod.c new file mode 100644 index 00000000000000..8309f67e10c7df --- /dev/null +++ b/kernel_modules/4-multi-mod/supermodule.mod.c @@ -0,0 +1,27 @@ +#include +#define INCLUDE_VERMAGIC +#include +#include +#include + +BUILD_SALT; + +MODULE_INFO(vermagic, VERMAGIC_STRING); +MODULE_INFO(name, KBUILD_MODNAME); + +__visible struct module __this_module +__section(".gnu.linkonce.this_module") = { + .name = KBUILD_MODNAME, + .init = init_module, +#ifdef CONFIG_MODULE_UNLOAD + .exit = cleanup_module, +#endif + .arch = MODULE_ARCH_INIT, +}; + +#ifdef CONFIG_RETPOLINE +MODULE_INFO(retpoline, "Y"); +#endif + +MODULE_INFO(depends, ""); + diff --git a/kernel_modules/4-multi-mod/supermodule.mod.o b/kernel_modules/4-multi-mod/supermodule.mod.o new file mode 100644 index 0000000000000000000000000000000000000000..a93cedb2d9dcebba1e22b4d0d56f27e7e1a79540 GIT binary patch literal 30220 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
N(+^$Q% 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 literal 0 HcmV?d00001 diff --git a/kernel_modules/5-oops-mod/Kbuild b/kernel_modules/5-oops-mod/Kbuild new file mode 100644 index 00000000000000..c1602da5cf974e --- /dev/null +++ b/kernel_modules/5-oops-mod/Kbuild @@ -0,0 +1,5 @@ +# TODO: add flags to generate debug information + +EXTRA_CFLAGS = -Wall -g + +obj-m = oops_mod.o diff --git a/kernel_modules/5-oops-mod/modules.order b/kernel_modules/5-oops-mod/modules.order new file mode 100644 index 00000000000000..88f0e6891ad616 --- /dev/null +++ b/kernel_modules/5-oops-mod/modules.order @@ -0,0 +1 @@ +/home/osboxes/linux/tools/labs/skels/./kernel_modules/5-oops-mod/oops_mod.ko diff --git a/kernel_modules/5-oops-mod/oops_mod.c b/kernel_modules/5-oops-mod/oops_mod.c new file mode 100644 index 00000000000000..9fd1448572a94a --- /dev/null +++ b/kernel_modules/5-oops-mod/oops_mod.c @@ -0,0 +1,27 @@ +#include +#include +#include +#include + +MODULE_DESCRIPTION("Oops generating module"); +MODULE_AUTHOR("So2rul Esforever"); +MODULE_LICENSE("GPL"); + +static int my_oops_init(void) +{ + char *p = 0; + + pr_info("before init\n"); + *p = 'a'; + pr_info("after init\n"); + + return 0; +} + +static void my_oops_exit(void) +{ + pr_info("module goes all out\n"); +} + +module_init(my_oops_init); +module_exit(my_oops_exit); diff --git a/kernel_modules/5-oops-mod/oops_mod.ko b/kernel_modules/5-oops-mod/oops_mod.ko new file mode 100644 index 0000000000000000000000000000000000000000..9663ab7c53db91329a0c2cce5e0e6ebe9317bb1f GIT binary patch literal 37504 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 G!T$wE1ZJoJ literal 0 HcmV?d00001 diff --git a/kernel_modules/5-oops-mod/oops_mod.mod b/kernel_modules/5-oops-mod/oops_mod.mod new file mode 100644 index 00000000000000..977e6996c556ae --- /dev/null +++ b/kernel_modules/5-oops-mod/oops_mod.mod @@ -0,0 +1,2 @@ +/home/osboxes/linux/tools/labs/skels/./kernel_modules/5-oops-mod/oops_mod.o + diff --git a/kernel_modules/5-oops-mod/oops_mod.mod.c b/kernel_modules/5-oops-mod/oops_mod.mod.c new file mode 100644 index 00000000000000..8309f67e10c7df --- /dev/null +++ b/kernel_modules/5-oops-mod/oops_mod.mod.c @@ -0,0 +1,27 @@ +#include +#define INCLUDE_VERMAGIC +#include +#include +#include + +BUILD_SALT; + +MODULE_INFO(vermagic, VERMAGIC_STRING); +MODULE_INFO(name, KBUILD_MODNAME); + +__visible struct module __this_module +__section(".gnu.linkonce.this_module") = { + .name = KBUILD_MODNAME, + .init = init_module, +#ifdef CONFIG_MODULE_UNLOAD + .exit = cleanup_module, +#endif + .arch = MODULE_ARCH_INIT, +}; + +#ifdef CONFIG_RETPOLINE +MODULE_INFO(retpoline, "Y"); +#endif + +MODULE_INFO(depends, ""); + diff --git a/kernel_modules/5-oops-mod/oops_mod.mod.o b/kernel_modules/5-oops-mod/oops_mod.mod.o new file mode 100644 index 0000000000000000000000000000000000000000..513e6d50fce8d59b342cd85425f785b4d3e0b494 GIT binary patch literal 30212 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 literal 0 HcmV?d00001 diff --git a/kernel_modules/5-oops-mod/oops_mod.o b/kernel_modules/5-oops-mod/oops_mod.o new file mode 100644 index 0000000000000000000000000000000000000000..5269983351ab626c48945d31a4e1200ebbf121e2 GIT binary patch literal 8296 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 CLA2cf literal 0 HcmV?d00001 diff --git a/kernel_modules/6-cmd-mod/Kbuild b/kernel_modules/6-cmd-mod/Kbuild new file mode 100644 index 00000000000000..2c5fe9cfd4de33 --- /dev/null +++ b/kernel_modules/6-cmd-mod/Kbuild @@ -0,0 +1,3 @@ +ccflags-y = -Wno-unused-function -Wno-unused-label -Wno-unused-variable + +obj-m = cmd_mod.o diff --git a/kernel_modules/6-cmd-mod/cmd_mod.c b/kernel_modules/6-cmd-mod/cmd_mod.c new file mode 100644 index 00000000000000..3bd758897f3600 --- /dev/null +++ b/kernel_modules/6-cmd-mod/cmd_mod.c @@ -0,0 +1,26 @@ +#include +#include +#include + +MODULE_DESCRIPTION("Command-line args module"); +MODULE_AUTHOR("Kernel Hacker"); +MODULE_LICENSE("GPL"); + +static char *str = "the worm"; + +module_param(str, charp, 0000); +MODULE_PARM_DESC(str, "A simple string"); + +static int __init cmd_init(void) +{ + pr_info("Early bird gets %s\n", str); + return 0; +} + +static void __exit cmd_exit(void) +{ + pr_info("Exit, stage left\n"); +} + +module_init(cmd_init); +module_exit(cmd_exit); diff --git a/kernel_modules/6-cmd-mod/cmd_mod.ko b/kernel_modules/6-cmd-mod/cmd_mod.ko new file mode 100644 index 0000000000000000000000000000000000000000..075b68704637d896eda17a40c0c2d179d4ae8fea GIT binary patch literal 60308 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 Vb=i(r@Z^EDTBK7%G( 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 E0mYoxH2?qr literal 0 HcmV?d00001 diff --git a/kernel_modules/6-cmd-mod/cmd_mod.mod b/kernel_modules/6-cmd-mod/cmd_mod.mod new file mode 100644 index 00000000000000..d2b0cefacb95b6 --- /dev/null +++ b/kernel_modules/6-cmd-mod/cmd_mod.mod @@ -0,0 +1,2 @@ +/home/osboxes/linux/tools/labs/skels/./kernel_modules/6-cmd-mod/cmd_mod.o + diff --git a/kernel_modules/6-cmd-mod/cmd_mod.mod.c b/kernel_modules/6-cmd-mod/cmd_mod.mod.c new file mode 100644 index 00000000000000..8309f67e10c7df --- /dev/null +++ b/kernel_modules/6-cmd-mod/cmd_mod.mod.c @@ -0,0 +1,27 @@ +#include +#define INCLUDE_VERMAGIC +#include +#include +#include + +BUILD_SALT; + +MODULE_INFO(vermagic, VERMAGIC_STRING); +MODULE_INFO(name, KBUILD_MODNAME); + +__visible struct module __this_module +__section(".gnu.linkonce.this_module") = { + .name = KBUILD_MODNAME, + .init = init_module, +#ifdef CONFIG_MODULE_UNLOAD + .exit = cleanup_module, +#endif + .arch = MODULE_ARCH_INIT, +}; + +#ifdef CONFIG_RETPOLINE +MODULE_INFO(retpoline, "Y"); +#endif + +MODULE_INFO(depends, ""); + diff --git a/kernel_modules/6-cmd-mod/cmd_mod.mod.o b/kernel_modules/6-cmd-mod/cmd_mod.mod.o new file mode 100644 index 0000000000000000000000000000000000000000..301ee0853094e1e73aa2f70ab426effbe6f8cceb GIT binary patch literal 30204 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 literal 0 HcmV?d00001 diff --git a/kernel_modules/6-cmd-mod/modules.order b/kernel_modules/6-cmd-mod/modules.order new file mode 100644 index 00000000000000..830b81d3fcfc8b --- /dev/null +++ b/kernel_modules/6-cmd-mod/modules.order @@ -0,0 +1 @@ +/home/osboxes/linux/tools/labs/skels/./kernel_modules/6-cmd-mod/cmd_mod.ko diff --git a/kernel_modules/7-list-proc/Kbuild b/kernel_modules/7-list-proc/Kbuild new file mode 100644 index 00000000000000..45eb7676b7ec51 --- /dev/null +++ b/kernel_modules/7-list-proc/Kbuild @@ -0,0 +1,3 @@ +ccflags-y = -Wno-unused-function -Wno-unused-label -Wno-unused-variable + +obj-m = list_proc.o diff --git a/kernel_modules/7-list-proc/list_proc.c b/kernel_modules/7-list-proc/list_proc.c new file mode 100644 index 00000000000000..fc8ae74fefba88 --- /dev/null +++ b/kernel_modules/7-list-proc/list_proc.c @@ -0,0 +1,35 @@ +#include +#include +#include +#include +#include + +MODULE_DESCRIPTION("List current processes"); +MODULE_AUTHOR("Kernel Hacker"); +MODULE_LICENSE("GPL"); + +static int my_proc_init(void) +{ + struct task_struct *p; + + /* TODO: print current process pid and its name */ + pr_info("Information about current process:\n"); + pr_info(" pid: %d;\n name: %s\n", current->pid, current->comm); + + /* TODO: print the pid and name of all processes */ + pr_info("Information about all processes:\n"); + for_each_process(p) + pr_info("**\n pid: %d;\n name: %s\n", p->pid, p->comm); + + return 0; +} + +static void my_proc_exit(void) +{ + /* TODO: print current process pid and name */ + pr_info("Information about current process:\n"); + pr_info(" pid: %d;\n name: %s\n", current->pid, current->comm); +} + +module_init(my_proc_init); +module_exit(my_proc_exit); diff --git a/kernel_modules/7-list-proc/list_proc.ko b/kernel_modules/7-list-proc/list_proc.ko new file mode 100644 index 0000000000000000000000000000000000000000..aa129f14daf901d7acab4c0a494393be2a4772ce GIT binary patch literal 75892 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 literal 0 HcmV?d00001 diff --git a/kernel_modules/7-list-proc/list_proc.mod b/kernel_modules/7-list-proc/list_proc.mod new file mode 100644 index 00000000000000..c728b6101f335f --- /dev/null +++ b/kernel_modules/7-list-proc/list_proc.mod @@ -0,0 +1,2 @@ +/home/osboxes/linux/tools/labs/skels/./kernel_modules/7-list-proc/list_proc.o + diff --git a/kernel_modules/7-list-proc/list_proc.mod.c b/kernel_modules/7-list-proc/list_proc.mod.c new file mode 100644 index 00000000000000..8309f67e10c7df --- /dev/null +++ b/kernel_modules/7-list-proc/list_proc.mod.c @@ -0,0 +1,27 @@ +#include +#define INCLUDE_VERMAGIC +#include +#include +#include + +BUILD_SALT; + +MODULE_INFO(vermagic, VERMAGIC_STRING); +MODULE_INFO(name, KBUILD_MODNAME); + +__visible struct module __this_module +__section(".gnu.linkonce.this_module") = { + .name = KBUILD_MODNAME, + .init = init_module, +#ifdef CONFIG_MODULE_UNLOAD + .exit = cleanup_module, +#endif + .arch = MODULE_ARCH_INIT, +}; + +#ifdef CONFIG_RETPOLINE +MODULE_INFO(retpoline, "Y"); +#endif + +MODULE_INFO(depends, ""); + diff --git a/kernel_modules/7-list-proc/list_proc.mod.o b/kernel_modules/7-list-proc/list_proc.mod.o new file mode 100644 index 0000000000000000000000000000000000000000..f4a77579f71f61996f57d021bb3c3cf9ac2363e9 GIT binary patch literal 30216 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 gnj?ojL0KXeLdXq-`Wk+9ZYYoKBL-gC;ZS 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 avKGp@Z)eOOXH5YTdbYbJ^WON6c7Flams%wN literal 0 HcmV?d00001 diff --git a/kernel_modules/7-list-proc/modules.order b/kernel_modules/7-list-proc/modules.order new file mode 100644 index 00000000000000..247c675c3fe05e --- /dev/null +++ b/kernel_modules/7-list-proc/modules.order @@ -0,0 +1 @@ +/home/osboxes/linux/tools/labs/skels/./kernel_modules/7-list-proc/list_proc.ko diff --git a/kernel_modules/8-kdb/Kbuild b/kernel_modules/8-kdb/Kbuild new file mode 100644 index 00000000000000..4453b28ab39c4d --- /dev/null +++ b/kernel_modules/8-kdb/Kbuild @@ -0,0 +1,3 @@ +ccflags-y = -Wno-unused-function -Wno-unused-label -Wno-unused-variable + +obj-m = hello_kdb.o diff --git a/kernel_modules/8-kdb/hello_kdb.c b/kernel_modules/8-kdb/hello_kdb.c new file mode 100644 index 00000000000000..656a265d288927 --- /dev/null +++ b/kernel_modules/8-kdb/hello_kdb.c @@ -0,0 +1,142 @@ +#include +#include +#include + +int kdb_write_address; +EXPORT_SYMBOL(kdb_write_address); + +noinline void dummy_func18(void) +{ + panic("Hello KDB has paniced!"); +} +noinline void dummy_func17(void) +{ + dummy_func18(); +} +noinline void dummy_func16(void) +{ + dummy_func17(); +} +noinline void dummy_func15(void) +{ + dummy_func16(); +} +noinline void dummy_func14(void) +{ + dummy_func15(); +} +noinline void dummy_func13(void) +{ + dummy_func14(); +} +noinline void dummy_func12(void) +{ + dummy_func13(); +} +noinline void dummy_func11(void) +{ + dummy_func12(); +} +noinline void dummy_func10(void) +{ + dummy_func11(); +} +noinline void dummy_func9(void) +{ + dummy_func10(); +} +noinline void dummy_func8(void) +{ + dummy_func9(); +} +noinline void dummy_func7(void) +{ + dummy_func8(); +} +noinline void dummy_func6(void) +{ + dummy_func7(); +} +noinline void dummy_func5(void) +{ + dummy_func6(); +} +noinline void dummy_func4(void) +{ + dummy_func5(); +} +noinline void dummy_func3(void) +{ + dummy_func4(); +} +noinline void dummy_func2(void) +{ + dummy_func3(); +} +noinline void dummy_func1(void) +{ + dummy_func2(); +} + +static int hello_proc_show(struct seq_file *m, void *v) { + seq_printf(m, "Hello proc!\n"); + return 0; +} + +static int hello_proc_open(struct inode *inode, struct file *file) { + return single_open(file, hello_proc_show, NULL); +} + +static int edit_write(struct file *file, const char *buffer, + size_t count, loff_t *data) +{ + kdb_write_address += 1; + return count; +} + +static int bug_write(struct file *file, const char *buffer, + size_t count, loff_t *data) +{ + dummy_func1(); + return count; +} + +static const struct proc_ops edit_proc_ops = { + .proc_open = hello_proc_open, + .proc_read = seq_read, + .proc_write = edit_write, + .proc_lseek = seq_lseek, + .proc_release = single_release, +}; + +static const struct proc_ops bug_proc_ops = { + .proc_open = hello_proc_open, + .proc_read = seq_read, + .proc_write = bug_write, + .proc_lseek = seq_lseek, + .proc_release = single_release, +}; + +static int __init hello_proc_init(void) { + struct proc_dir_entry *file; + file = proc_create("hello_kdb_bug", 0, NULL, &bug_proc_ops); + if (file == NULL) { + return -ENOMEM; + } + + file = proc_create("hello_kdb_break", 0, NULL, &edit_proc_ops); + if (file == NULL) { + remove_proc_entry("hello_kdb_bug", NULL); + return -ENOMEM; + } + return 0; +} + +static void __exit hello_proc_exit(void) { + remove_proc_entry("hello_kdb_bug", NULL); + remove_proc_entry("hello_kdb_break", NULL); +} + +MODULE_LICENSE("GPL"); +module_init(hello_proc_init); +module_exit(hello_proc_exit); diff --git a/kernel_modules/8-kdb/hello_kdb.ko b/kernel_modules/8-kdb/hello_kdb.ko new file mode 100644 index 0000000000000000000000000000000000000000..57c75ca31b63da6450a2bc75f30db05216dcf497 GIT binary patch literal 120524 zcmeFad3cmX_BLG4(%scbr@E6=p6(<~(wzkoXhIqS21t_x2m}Ly5Ef+%lCbZKqJpC0 zf})}#;<%yXf{Kcc;yNzlGVZ&MqmJ8*<1&n+4*GLuP`~?}>deghUhg08pWk(TAJ;`w zcb!^JojT{#`V^ef^G9`}szS3ezo#ODW%bK+;>(p4Kb0n?wKee}Ei*(Wc&w=adJZ+~_Br|IV& zsz>&*zjr2p6a zn|?0+Iv6DWAE@f(^0@84dEhXbdG_lY2Bcq4KewcX$b);y+kZ1F{rK6hZw&t@2Pc2- z$>~(se`3?G|0mPjCz1WX{w(i4Vg5<$mTu^ozo5H&UC;XULbUg+Sg|^>X5H$A$($_c z7&|(#WWoBxngy$tF6`+}iY1h0K4m^(v|R}7b}ox)%u>y_$d=bch8!hRo&|| zVqMRMHLF)FUDcC0POMt6vM2NJGQ^2J>sBsUymVn^XkEI#F5NI7F>TV6#LCs(^Ea+q zv3fywVp!v_gkd`JU%X%bU*Z4T;D6`;zs>W1O7|b;|4-EaKkomF61e3`!Tt`v)`{>n z)|c>n-yZ$Hio$jSY#_HqUgySC6^6EQV!d`nheNip$t0~+e2hKaAggmzC&?#N$hq+N!Pb@)du0C zaNrj+5MSz1)q!)4MYt^W3T2bN(G)d>!sY!x;i$m)i9!U|Hwq^bJ{~c_jR@w4S8^~t zOgM$%9SHk=rik@J1`9`rucL?v8Xeq75k=wqnK-OLI9{0iQE(%Lqv5v^&Y6OQxx|+U ztOLVtI6Mb2w(I+Qvk)N)2gXfBd?ZRD3_Lst;ke?4ECg?E+BD=$j5zLK6MhFxbH|$S z+f-(oNnbn^;aP>$*uZj$@LUtl8H@0|V&Ww5b{WF+P5N1N2zPPV?{dEkC$TrgS#*OT zc7I-8l5(wsNd1xGpD3J&v>oBn_(v43%t5#;f1Hh$TK4J$ zq6&^eRH9@nkr$%-{K=9X6dr(4(O*|`fWlKl2p?6lhr&HnWmCzG6t)5gF9|a%{~C_) zmb~EY+PgYYX&VWECMhCnF+7dm~IQU_-N_z%hqrM@H=3GOfIq0}OL z1`I{|ACd%3K@S^}8Z->)9`3U|TM*^-yOb>QDBQVp{qM+M{5#X{V-yzZmSUuOH+VY$ z)xH-0<`Bqbvftf{aK7tzAH=@}g}20nNZ5(MQcHF~cKW_nNNbs;zbEC_YtVy%l~y4& z!PQ#`t+4_(Lz6=K%Sk}%t=K`JcD)tS2yC!Qw;|tV{V$UFMoXci#a6u*%mz+0Xq!G3 zv!uXDR>2_<&(n9{H*ktoW#+pXwiq)H^LXaiI{u-{;Jisjup4frmr^cu)@D+&t&-fcz5 z<^lf##Sh$P<&sRcS>7k301uiDIuDGX#=!lSJ_i5pw7mWWfR9*xIstcCUVpyn0fr zcdY1%puTE(kAwmLXsB;m-kHSJpRDj^P~Wk0p-(8A#zH(~WH$EX4W; zVx%a3cPsy1gZN_dU4C~Tf+eN>(aIIUd!^hXQ9BuQ@IJ|AD)cvm4oXvjejB-hk4m}n zGE}7BfPV`(h{SMYIJcs)==KQRI5H!^trr6^K=4EGa!Qs$3@`o=W*#o$vi z{^t2Y#B~^59ei5q3aCj!SM>w>t&DvI2~_FUdZ1?wO6kWEK+hS}px=oCJuhRopuQ$O z3+)WPXlR}KZ8(YGO9su+cR*mlmksI`d3H|Bc?2z0uftAqiUWtyD52(n{hSg8mdJB+ z;?75u<~W#EP9OO*rwM`aoH7Qsh`TvqTY$|zCoWhaav~w>$}$pR8I>-=XQHugj*4ic zDW}5Fr_s&1zA3p!7g$O14O`zl6dPxkmp5IXRfkW11F9H zE4g7)X95u-JQ0$Uxp|SDK;@K2sK21n+>%0Kz=d^T2+b{ZD0>*aBCJreydOXf?SuYn z2|y$9$9FZN;xg1`e}F*Z&yaFxoJXTf;;c@D$Cp#Qa3~pd5_1+1;cZlXXsom`c9%aw zNksUDIF`Yo>GDCuDK6=_A}UF!r8Ow3OVbb{)g4m-7Bh&bzEIWB;v`XG$>lvKi_p?) z%AZiLBPz5kpPXEknuwt#w46bWnnvcarht?@rMhbY*2W)0o_h5e6fbmAkhFc4BFzqM zinIgFQGdr=C3H&e*#KQ??^u9S8JqyKAgMU7paA;I4GbdoU4V*bAX4932!$Vnx6`40 zvJQ%47`?TG!a@}yd+0W=0l+nt-p-YVOg;O#o`~V#4h97%o`mU)MIQQ_od^3}5@)y& z4z4OsN3H}#jYcoz6%|mY3bio-5M@8%s&#P3c~PF&Nkt}?7h~reQerwlY0-x$EFuCI zPzimUqfuI3Ro*1$IV!dcjxg_-0ELA~KRIgBvl9Lu@yt|M#H;e!?Zd!{{Z#veC>2z8 z6J-p~fFP^##z!Q~rkwIX=Vw8&@}@bIBd=DK!HE3Kub`S1EX%u*ZXIgYv_Q!%+r}qEti6w+71s@|Oy|&u*mHuWNP;DT12T+YZ79&)!zdilAdc6~FFPI9L_UQ{@e8GVM`7vmX`bR=_0r@YWCfxvw3l1{07X2kOE?6IsPg7!E`{50&3SJ^WflsoC`Ej-vwO?4he)V0GgtoYXE8p6r4I7zD%z|w*-d<D%gnhM9bG^c2c>R3P*mXkEGrh8k=PguVsp){zRJ;Q<-HScoP1GW1GtL?GA#v_hXk za%l<#X8^6yTWDZt352!*ZP0%&0U901y$5KM_TXxRZKe&Ig^% z{D6F4L3dK)F)5ZMk6^MR)M4~Qez4>fgrx{yQG|YsP(1C@AG_5XprI$2sgKyAkfgVVPXNR1}nPIF#&0xSYe0 zt9F8Ts*NcLR{5_~PuKr$t$$TY)vSbekRUA&JUylKynn6W!5eR)b zT&1pnnilk9&^Nglgjx>QsMd)f^k>jtJ%Da1NO6U!AXkfu0 z2E*8h3hFskV{$!mq&eJ_#131*U{2JccEF$uhAOB~HVO{|dXe~qHEt~*t6!8|l)s`2)@#%pB@pF#tor5yX`bBTI3l>tR=#3aU^d)vK z%}YbN4VtSjwZn-HvPH6Xz02ltMe8jyfi5>FrVBAl>OD3OCUHFl+N`g%2wq^!~XJkYK+D5dX#9_#CD9-iv;O>IDX?I^L?podcJx0*5=_3vSs`Zj}_bPXD< z_Z!rrqfkbDr$J+NIc!niWl+1Gg6WPvV9-SU5!$8iHnmUD4-oBFc6`TbSYPG(9-;5G zqkmcfrn{=vZGdd-lAWZbR(1CZp&ztM0;?d`xaG~n;H_UX#bEmG9|riksRPq@Hv#yD zU34jm#q|9UV&`9Ji-Is0OQf$*hLN9LcD23 zC5BY}tzCFy3Kf5DRjphp^mlgA`{+VUvJX&E-y4WY_K`Bcf7p6ne<3i*E`q<(N9@?| z2H;=YE5-<~e=JE1E& z;IJk%*?osW=XH*gN3##tDsQp-eh&rLxxF!Eh`EY7EYus*2QjnZv~*=}O!-*5?*kZH zbl={XGQ^xq4eZw&(+4qML8WwUZ%llw?LCZYb+h5E-S%i>M7KJz4kVmtSFKsvE%X>C zw*t{CZ0}z9KRwpKHMaK^h8Nv#@@}xb=V8hESSL>Ux5@UdpnmK$aI@`ojRQQ+;hx%R zd!1C#@dln}d-bHrvmMsmowoNJb^1a>-DP_plEQQwc(v`l-U+zaiL@;i;zrwRCf#1* z6zze+?6bX6lGRd^_*vWYQBN&1@KxJ;jWlG1ukh5l+41 z2{N*?4Qz0{MymHblef|F#=<-53k+;=ygXv#qHL!)-XjpGzSzKtj`t&V{iROHdNhBE z6Mc*H=W?g)0YLXW$2+4C_$nv958~M6c(rN3YYp7vcpX)M*Bf}X<2{7&Ti@m6{0*J8 z*YTbuZMfSh`W5mXaH`2>4XoJlEYh48oV>5+!-^g6XX@V<4Sdt_e6T?M zvVreA9<87BD^AgYh3Eyx8%#yLYNT=4@%}=+|C$q83x)c@@ovcneBBt=5y$H$vA^jQ z^JbLmeJ}>_4^Ck&$;$N}Af7)mVh0>a{rj-{#e3f`kT?`C9b!Wl>Zy2bO@Ti!u7tVF8khz4F_C< zdINy}H11-9>&>EyesW4)hk!S^Uh^=(pG}LdcD>I@u)<}X-0ONLk-N5B_B{Jsk2lq9 z1NXaLX)CCXfd^dgX(~#Zy!X1^R5H4tp+4ezyUA)Z}>un}`I%E=8<$CQAz`q$-lj{}N09N|U zqBhq%g}h6(&x~EU-VoxdpU=!9a=pJ!0j%@!B&IPpI=lh!7+-8$Qizt8T;X?Dpzy$s zV}&RRnS+9p^AXPDaOroDn(M`_$TL(4A%N;@0I-yJ8SMrfbSq%3>y=r-LkJbES==oE zN-r^~mcd~GR=fdNvk88~`w>$HOa}aJ2)~hg(YFaV+9pQ>@pLdcj{8CMe+C}eb;~XA z98>Fagor-NyJB%MK+0Hda5i$JXvaMkDjbN8gf0z?j|a?is4y9r07We>D4^|^a5v08 zR8lMtQZ*S&4ob2UZ1p$HCrgsNtL3V0w5-HTfF*NNVkW&gBK-1Xuv3~Jd5ucQN2b#J z5(;B+4nHJlg2R(}$a62+S(-nR>he*%-{m8QLnAO1O%>jQ)ZxX`z+s<=Brl;7NZ%*l z|1%Y)UM>JAU|`q1NubaGDc!oJdcqM(X}hjFXgyFdBg=6Ib+1_gT+Z0G+(B!A`WdQl z>-teG+LYyn{DT&ph}1gY&~yER2xZI4@ek?-G9_6-|DeS{)h4C%*S$+z=>d$T@Qd(a zm_}7uwVV#kRk!uUs=qHU+J(B&1L(&+>Z<9GT3HPPsiJKFwVW)Z_Q86~`ZI{AuO|Tv z;AC304hAr5ikNDGN|X)cWN}rBO3UgPBt-ZZ@MvqwL-HN4kX(3Dwb04&rvRc;)0es;5@cJOrQ{pg#jiX;RM7l!kd3$VCAVFLexD!^uhQ&n8sSx$olPUWY6ip>+R>MRznq#N)g$okCphWsG6FKzEYBMvlfz0`?+C zYI5YFMT`t%K*W9?0wD?rYvgC}{`g~$EQM9!k2`YPL=H&Nq@W6>*5oKZO~o@`K*S>R z4%!c0#^O@^j9BI?EW+)OR3uR@TOlm9t_3wGa-W6e2xUVmiDd9c0GH2p6BW6i0Z8>b z47Q0%c_%;!w+2vJVGR;L9%)H_YRSe5$mkVxbMiB*h=3?szouR!zp(PDMKK_e{EGo` z?bajVUkyqWVUdvh(Ht076=7#5`I7-P`ges$XWK>XC@`hhKwFZoT|xym=^jFUgIbCf zt{W_p(&oy>>ZNce$)G{)`ZZW;GRL5a`a1M*GGgl`D07P5907_NTIZitw=RmwhD)qEW`{85~?{1VfxG1f!)jlsMv`fub_JT?n2HBou+KT7{^L zI=6s=BqhO*|DB{%9%qsigN4et^E@cw%N!_Dl_x)~L@mD?jd3y>;BiSg(*R<*9`d;A z%rrnT4`x#R6Qf~ON$z$~LhAeJ0Hp!4>WDff2oPrwODX!hut_xC0rN0MQ62H;AYJA?GR4ea zkl)JqJIE;W;?;ee6F^hVQ-r84i+qd8l96|HIeSBwCt=kI22x!Q4_cjMfH?yczPf@3 z(un#FKB2mj3y9$~th(0ShH?{E!s@I0_vLU4bhdgx<@tz*ZrqD@`rT6?hdf=~*ZD1R zLH7fy`zdm1LeW&Kx+Y5f=9UwaQYE22)dRW45M`_9Wvu#v7)h7#oLOA}^{5^!Z$}ZX zqDvjsLl{Wbx9SG=S|Q#wt{%!DA}Z#hkNrHukH@P^ZQ8y`ETB@Wd?dQWVkks)oo^?F zX?MSRn2#71VcPIXR2R$T$dO#MN>rBww<0LY`{36V&9pIk3WB-xgDR+Gze}mZv=b`( zHp)8zSjv5evjGd9)$|=<? z?Kg2AR)saA_!v@zZ$V;NGeQ>hMGwtr3H zE3_iq7fR#~2uoV|Dmq*qpn2&7(vG9CwU-(yuOt$kGo^;*FCnwxL*3L-T(+BBy?(7o z4KJ@isv5NeY^FwXMJYZROl5Ltle>XW&QdLWa@HuqQ&3Z9YP@`z%KiakZmOLx&|pru zVUtKrC|(Y+PgE~LsZt$ec%;xNLE@0#~rWJmc_do zR007i0b3prXD^8~l6JppPDaxxax&!}1P>XnE3&KyfHda@_^;eq66Geft+}lLxe<9G z($}`sl{vw0|DCha@g4=p)?4M|QI5E%SqvSit9G0hKx}z)Xz$1{=v>P`25Oc$h&iap z)POlFv$qgKL#77m;$$N5b#CS>#P~7;p<4dT`z^>U!vBCTcX8xMyZwq*=Jla`T5dyx zbPy0rSIBdSbQl$@hyMP1_HZ>o>#^_%bKK})OWrmB?Rakj zwjG9=84+&4z*|L!8RY7Ta68cvRxuSKbqi*7K$V0-Lmq~8MVqXAKDvnLyHRs=tjQSH zdKOT-rRg9ep|^nP=rL9tiBb_H`-%WzW~&(@5WdgU1Exvs24)9qsy$wX`oHf58*eu+zOHh=+t$v zfaofV?O~So!GT3jwBp;4W=`*1Iz7No$0(V*v7!?h4_sTBha~mV53ma-(+>H&B77Cp zUZ;o2pOIGmeLQ4+RQ4{?M<^}b=qG|JoZG3FAm*&#!zHl)NV-Y(N1WoMnFxhZG#M%F zuk|K96IIA`i=>@7MO#Pd)-Y`*3ALN*8z*-l?DD)OJ)QwJCpytinVu-AFBILEOHZ#P ztrP0B4uDyFq0d#n83!<*floxv3!)p{Au;(bOiaK^ammX){?-K|>Op0Hohwz9ENfk(CglqI5$}%l`<;ggU1Z;B-@}2p@t! znbJ@xcThT#NkdiEW0A{m=+D4-`GypGdCC62p^mRNgxKXb3}PQt&z`0s&6gz_*>yHF zup?;_;hCf0k%kVC_fkdVErzBF%moSC2QV-@I)#UV$@*a>l5|#Wf#wY>We+ISJoM_Y zcnNVzBl#!zw{SfYv^z3-wk3lQUH_58&}`xPbD>=sJMtjRz1@smqGNOBAQ3Ey1{gB-p{egU9n zV)ik7akdYLtKmynG%nwu9llg;L#hzhJ$yOW9l_Nntb{s;ub2G?p@bqB;qVPbRJ2fM zqko5Q)WlF#@}#w5_@>f9NHj4?=f%TMX1kdpDkAm74P_tjxEzreyp;;N5>8=6f$?dn z&yxW0JlYGDSU8~RBg#F}u1Io4_XaT{QFJHrbaB^?sNvDPTeVQK+AukQ1L}_$K1TE} z-GZv_RRP%Ih!oE?9uO7pfjz%Vm4+!*dLi{L3~yv1pVUXx7!*0Oh=EoQwg7kxV(K$^l#x*eadiTWYh;W;LM;a~ zBa0bSsfAFwktGaj)N%-OWGRD`nhrlWGR~l0-3*Nx*@r=c@ZF1A{Vug&;Mr|x=TK)T zVq~6eR9UK<$@9(%nWkI_HI2^C&fQ!82kgJ& z2A{MfCDlJbYl2T%`Rma4I8>Mj^t6@#E)u!=a>zaSjFs~sDyY}XCIS7{;yH4I{tgTT zU$kQ6G#d3GXm{`>i+i#~e}Q>f@MW`N->K)oK!UFrv`e3aCI(-%n6*869!8w^c)GYx*ARNkj4UteS@}S3TRb&+6Cxww z_}?1i&V4 zbEurSz`E>|3~3DI$cseJa>Nj1>YRdf+qn0Ix|TAXTW~T;bJZfa&**s!d}=@pV0#`N zK1lTils|etuS2kKj6`=hX)3CbBza-BsB@sw(Tg~PtKKD%?PN`q)Vkg7G-OD))b1;y zJaO0!^@;9LQ~@>YQs)XPavMBt^s;P`DQI7Gm-+{W3|C!5l*^eS%c=TMa?OSnB6?MX zW_}Us$-U0QRK`+j)D5x65fTx&Z9(~e; z|A>Uqr}ze*D5S%hDx8<@a^%Sv6)P9b-zb869Cz|LRIq-E4CP8EeDxeiU8lwX{lZ~W zjOfpbfUa^9C&4tdei!B$yxw8;k7-O9MeqhE^6S%RbL-D2IrvM5msKsgVj9qm<^XrB zeybJeCMWbX#NMuF)d1b>L};BhQJ;D=&@E0b?WgR~b0P2GKBs6qj9{-`R{(UYQ$)x5 z@9QTa#^7yE^blwt>DW;~`yJj_IO4JK-R&5OTV7*-5btw%u#uKGg<5gYz=-87gTD?w z;Ka!F#Bi0KIDgP#6UR-RwIq&*3`|(UM>6-j^xH-gJrS+7gHeKNpqBD*62#E@sZu(tHSMfAV!1n|~e)k#tmiC|?89mvOM}Rb~0i&l_W)aAD zx}&G!ehx@9KX{EYbVDbaqNiDsCIKaWmdSl9do?sR;!2-y88JRpffB@^OKMm zPm_vsEPEE_3w(JodahMMGj6P0FeXROvkGW77nFkb{mA9Qq0|=R~VGwlg;QJEB6ePQl8xD10=FHEOT*6A0XPhhR-*3aURfn2EC*INaFm1LGSCUM+1Fe&__dF zC*gi*<@4;}bA1*0&W{Z7YyBwsqmKAh7w)zoFS>DGa;y+vDiABBTZ5aXhnaSH=Rh_VIIl(wl z8!hiim?B`3V3Xxt+XDExN!((2R}fR5o5W*rnG8w^SWSuBar4Z;dV&-2c}FFvUt0O+ zqBEzM>ta!S$U*B8X?uMpgZix%yBgG(9i83=_?;Cw3yw}EY>zGjM*qiDjC)3;&C!3L zMx@3)qj#z3BNktE{@nI%BLDTHRYo6`g&eP(e16C-`4wQq@m`@}B5ZrKG}DgPj7d(k z)@F|wbG$1Zz?3cNlcPAU!%(l+*)f_^_rX;fQjo#6M^nm#Bbupcq~f_$ST3Re?FZ&Z zmg9Hnq@GW$uK?u5)j(0PlDz}P;C4CevI4t12=3zu+A-%G&jPl?*3g+BkVx;b`5QRD zO9Ow?t)Q4)-%PE)0G*ln1i}%S&2a8k=FB)P8v7xklbHjb>tqH&S6$Jx3Td+0cKX*- zwgY1+TMJmSGV>9(G9k3m&YXf6CzA(xxS87`v@dX5Gq}uLUW^hlm%yB4=7W5=y-XK8 zbx!6JC`GPlng*-MR&b;LOgPO<1v$XXt_k$}C|9rl<-)T8>G%rVf3oXq7(RFj!1(Z!i1@JFFc5^c@Pv?G_w3;{zbQ#A|o z=*)YlE0Xylj7!6rH&A{-W(HU&%&hf60W#w;gcM~$2z#08D8!rDjt0asoro#U%tb9F znWw;cX=W0*jc1-mU41fdLIh=*=g^k&Od8TlWCB>$B{MTnLPh3L2(B`72>euKf{=Z+ zX!-`lWySHm|3MPR!oeg6`tr}p96(>&nU%+oq%BnGW@bPHK2ft8hMq}V{2gb@eIyXp zoy-u+PhUP|_Q04$CIuH?nv zW?mLHSMjp&#?&oP)8^^|o+dr3o`I<~_tnpUpI6nll>p`<#hbiJY_8>1;ybu1y+$T6CjuR=YJzHc7PQmaxD-P1gjL4#rSC}wr6Is&V2Zsc0q z)dXl?^KhUwBs^Jx7pK&RRU zi)|ju>(4octu|(BpBhP=jAP1+>90xw#`DBJW~JXJ0kkt;aVyQzoxmtzrCGd3Gpe%E zXOBn94n{Rr$NKICqIqJUFHv*KN`DRwYo5fkdMmw~syl|OYp~J>p!Us^d3LeYO53pR z=3{vta==Q{g1x!Zqvij-R+_$)X`aC=duc;oUqtI25&^Z3bqbh-PPH;7ttJKYGioY@ zE*T4Gndwi$Vlx{GA*M`TEtyLm8g6G?7%!O%%^-0^1#R%VbZ+N&>A)`1QH2j4+}71{ zcnjo97t~wVm{}7a^0jW_Lq3-e`C3orLq4f~gej8iCtaoH!oXV32;VTDtnKt7fHN7?tH5Z0 zvluk0LkWOw3|dqJ8r^y}gLXBX>bbMI&SDrNuNbcB;p*SZ%$m=)JW#;_ZJw ze%(33Hyl#qjOjKxkl%4eE0>F78(6Oo?`#XvEppB1FVf0Zso8DnZJ-h-*Z zb1vQMM8nuZ*^Yc_2>N=gE`Ap!3U%pJfFfQBrPOG+k+B|wdJ%4^0c&lu&Z`6|(N(0c`)WsU&b?&q>ywFcg} z?IA_Ykm@1u+V(J?2R5l1qCCQ&Mco5+YWsDc{cYs^Cc{G79_NKhyLvSN@Ec8sUQ?jH z#A3JyhUm5}mW8NKIS@nJ5>vN`+zNV^+jgoXUUK%RJ0as+rq%*&C9majTNdZ zsE%{Fh&X>v*LGeQ0uqTySje=UZ`LtY$yMt`+m7(Bz<0g65cIYSxseU!UyQ-5QuTxD zXxqiht%*sTj<@}S7h+R*Q?c#pf;}j479ZBPT@#|i`r}n~C$d}{i;tyEa=%OM3I758 zq}!IuC<;xkUV}PUl)i(oQ1l^H+se{E0+_AowpF}Dl`tJPREu6n$>h_F-@rfUE9^103S3AX3etzWpkPu8)M&n^51jzva-4k%+2?X|;XL zcS*E*4W+bw8%m<7G4(EW=aJxA6pAHIF@R$}V^8qcXl<^=39I-!vbKPgHxAiqc)8V< zW63U{l)kSo^5t24SXM85)M~#=oL7{hM88W{wd1<&B0Gv!_32)^PPAQIO4^;6grByZ zWj|1OI!wOplK5K?ps08lF@BfQhkp!_F!#x|04fAEZ@X1CK*{i40cqUravFfECQ5)i zx%@+#kBTm!ii!sau{9Cl!jmU#TqF|t z{0+O=)=U(zlw6g9UrrP!7)X@xn7Vrl89OlN7(ie}L)W{eZv1f5gW1lb?ak zH(tio=tT(Q%Q{%lxZ2=10Iuo-36JZaa|A%DQxgCKB5|l+NVS5Maj8f@fQWhnCOB?j zkgj=X;iEc>sgtnYq#%jV@BR;h&E$;pktLUY5E;ck6+^%_@K#!aU9wyEFvi;P6}>v)=kKn^R~FNE*HRsFL98+d`y#w&43*d^ zU;cNA)3YVcp%Q1P16W?T>L0@ZW~nq(SE{3v0LK>{1rSmdnBk3|U7P`k2p=)lOydGQ zQIg9)x1oUC+tD&K;#n*y7S8bI~AMGy(1hf))66{Bjdtp@wl2Ih1YUTZj!GK;PGl z-zQ04iv0TcTMH?-@ucH#WBu0b)yCh>ZXw3Q()j(M<;W6O^d$0 zRDpqmr~&)%{7W^n{ZKZu)$t#W*pkTqa&^cv28q~6sHp!vb=F+gf)rkYPL<>TEPoBa z*Dc3?7J3h1p-!y;FQ12g25^P%a{R;96Y;;gn`%aVzv(4Y^8X@}Bzk%J7^LvIa0Bjy z)sX~xPUYlad7Pcfi@^DCkQ3HAK2XBczwXh6ay%v5UxO8w&Z8_Kk%Dx#KQ2i_*mbr) z!FmKk#!RgJH$3l@YUlufC-X@UQ))TfZTnM+OEFKTX&IFo{tC(&Z$Dp>a`9B7{eoZ+ z<|Gu!q=zq(;KuwqM+T7(hflLV0#ZIsmk4z(lG2 zlHei$x<7I;YRI9YSulwB2@!smMDBM>5s#xLu-ROXApPx4M&1eEP#}gq2bJARYC<@N z$~Uqe2$|##G2Z!D#2)=iOm}s#eV2R;NLd(D+Ars@P*0)M_TBOo5JKq=;`9n0heK8e z%>>%_1U>{QVx|940NRyIiv)#3Jx!T-0fK9&gefKCX0t%~8ra-s#$^@dM-A;)%W6nn zm09f`@fSX z5Sd~*_Zj~SIhPM~v2EXACVE&PgLGoPyp8a;D*%#naea{BbF+_Gj zQ?R-uFjSrbAl0tHLUbI(E*}?@_aG-%`*#G){DeZNU^Y^RKY(89jy6ev-C)N!zEdTV zc*Ib2jOX_faH|2c=Z^MdD>_T6S6flRgitPo9O5m7j-!2Fkn9YHX0In)z7<8n8UF*d z;oe;@8^og-U9)T~LPXr{m}uXLK%WKc7K@Had=aM4`VH$u$1&yanRtXJmkk92B77m7 zrtFv@-v&jUm;yI5ja1YV7!^Ba@q7`EflBndlq#G9h1MN&B+bE-EAbV6$GmKo1Wcu4 zzVWchRU21|j;_epaH}BonT(K5WbJOWGc+>KExv<^-!b*Y8i7U*2r#9 zQnd9lu{NK=810VXGn|bCFu({4i^Z|1Ws;J#v{(D#pC_3!dz|LOTqZ^M(7_d>XC{#T z7%6$3O|Nxv0VDBdOAr@N0(H`zf&$2?1O~BFF`XBv=gzBAXJEAxNb`GLHOZBDcWZE; zAabM>-MbA8DWWfT>qUj1eL0mCzN8!@M_`y-P6gA*5jZM4a?q{!Kx1ep2%6n+U_|I% z0E`?-P@00z1H@G$JX0VeKLkjyLIy?!zXqr>j(Qt{x%_iJg|d!1j4%ckG!XY;5oVuG zh5uJlvaepJy&I$)sxOz`Dq`KH?x38vBN*BlsQUaG=8Cl{#AJVoW|jl+S)8-y!sg+LPw3h4`>Ab}2pB9$vQ ztP+7^tSIs6YEgP6#?(mQI7|ME>NtNO(jIT+62SQ#xDCwit;2`z#BMB`h19pr0Gex1 z2(o#(g#^A8p2m;21n8GcHhfDC%zJXaq({)y@4)5c0`|8!Ztq7RL^5{OAJCe~1%(9Y zwpAfg``ryt8O+7OO2sWu7{7ZwqAONm#)OSDPVob$pdCs-ZN!R-(HPSGE-lRc?wOQ& zFAqW2a>Ql)OSTi9Ng|$7A)iJRzr#1BGWJ)5L7Iz3%PD;&LB9JirJo`3JA706CH@Wq z9e7e+%=+=0S95Hc(+6`*UJf3M&(P5GX1C+m1TTTAM7-wM5<7)7W&c195&j5@UUO`* zY(Z2xR|r35SLf551s`$VwY3v?bE3k%9!{aN}1Zgr=f6Y*zyWZ z9VGXHQcmRe``@;gq6w~4b8W7PJsi8_Q&(re+lToG9SV|~D#dYpV4Bd$6!2(;N*=Xf;6 z$*FVr2C1uVo(V8FN+l%Jd1-)o`R^f1je4>OV7?+QQ|dHy`_!%o-L`2|oBIHq5ZMIK zq;4Jz(34NH>{1!xXHiAlEW9G9u0m%|UF=;w8;=O8fyDI^-W}elf|!&|UCMrUSNToI zxkpW@LDXuVSnX90Mgi6^*f$B!?ux0K+?SBdJs^A}1HVhZg+IZT+ie*SL#j_7F=w;hzaQwrCes~ z@6LiL>Zh;>4lXxH>ya?t;3_*g>}+^PJqq;)SKHjexV|65M{teJcLWmJL8k>zGT+=( zmHSavjegie+*x)GeLRxVIh1~z&1=zmeQ^TlY@0v$Xw;WY1Uko{v3h+Q(76Up(WS)g zc{X3En4_Qa0d2QS_CQs(>R;Caop1BEZ)fT_Og?ylL1*cgM+5D!L)WABZF(Y1Jb1Cq z=i@sxO$URQ8E$XX*VY5!K?yno->2^(&UPEx5Bg@JU187>&mtLLX`73KmRAB78T^IK z9fwO4&toVH{?b5PqSy$93f^cSE>Vnv(FbobFk$r@01>%0R`fAwP4G5b@nLzr6{StY z;O$wA!|7kaEeH3Tqg$LtuSLfP?=TRj(d(hx!8;AaY4mr*`vC(dT7##e4xB=NPi;SF z$In79c3RQ>RO0=1l&)X7vn-E3nFu~$7^}AjUxZ9}k7Np_jln1Eockf@Cfn;IHea=Q zh1FtX@&KE`@d19Flab;)u*D;KrHGuLgJCH#^<3Ekvru!Kco9GZ_cknvn7O93M4IgDmgFOu~DTK#i8z{SBaiZ0aug1wcwYS^#i)VQ?9v&d3Sai_-%Vrzdwe`R z?9^k>Nx>_9yc@nt|41pX@s-a(eS7pLWL3BNqPL+_uGX~^fNnFA*sFgfpLvlIb(~YO$)5B;3 zp?iG#-1DJQk67OE=%nC-KGwW#j<*$VKlq4`PYUp^$<5TpM}6Ua3SQUoKEP}+_?Usa z9Pf14e(-5ua1`ph+VNf>cAxR({&Kyb$4Q>WBqI2%;R5fC{0h1ie9p&ruwHe%hNA&r z@$u#=o*xP21HR?sg+;>kYN@E-`PlVWx!#}00KV_z$wiIp6_x>h;44@P%}Tl6cM|Yp zA7AsG=z7ml$$v6%itBZy0Y5W&J6-R+FyNQIT)Iy=%k?&r3;wH*@A2YAk>8RWzw+_x zm0hk!M_0k`e0;jq?RwjZt0TU`IrH#nnd>biW&F{=6>jyqg}BxBlh0h2!wVz7BX9Pz zj}M9Qq{t%bTFcKnsCZK3m!xNYKR4-fH#!@$r(n>}Za5))-j5{s96y^xmCtL%j%_ex z$SI#EVa~xkL!IJ-S#`jyct%T(AeS`Ke1PJ2Z$Jc7UL^|uyp0g@&`|DoX+ZY7kMyR( z(MUE`6B3!lAjKgK%{*{Zyf-De4=xXpA%wXSawA+lB9jQ`kSpnp7)BA~K@5X@*A}}O zh-jwiJ-HJ@A=JAQHy5!LXZw(5Cqnc$cQ<}e{$~8+cj?k#_%`&hoF?T{0LhiBHi&7# zLP{zWOCMogq076m@wDu0K!GA)!dF!f{k*gge$%6Ckus^WLCTN1#rf+2`LBeSg!LELw>C zxU>3Vh)Sly!q;IWPjoiP*Qw;Qnvg0}@GZhZZ7v09X5gxMP}R=Se1k%&MZX?m>6=9)4HBgsa1#yq`0E48_&Jw4_9ghH!K zt~7IxGtqybE$;LNc@kx!mD2Q~F$z=lRAW;(2MZD&0cQmLcOoWJ55b7c5O^;u^I;!a zh3$@`$1=6(3Vhb$VWK5x43lpnZF1E*F(dm`3!N*@XpH?H(YP3U8T!EQQku#1>egm= z#z;AHK6s#yH)dqao*nOB%ot^s|J!0BPR181{jff7}F#xGZ-SaGfSXz z4i+ZIMT7Jv6dosBERKtr+cS8u8xz;#iXF-u_z+DyzCg91j{{$!oZ}12bQg*42vN(R z8^;$ZdVM(139~ugD<90%68ui7>;Q+eWq2My;z^{L9b`RC1Tj9$&f&9k5qJ!|&(3uk zktk2juCOmcKVA{ogeVHZ_>sLriYm)Si8m-M*lgrN;lxFg%;# z5L9&b2(Ce@OE6%~9$EA(xC*IH`vNpEz=iG5>`wP&Dry*(EwiWRP#D)6V41UL6wqml zt7c+KHG3uleDVf&Ahsh>Rzo13^Zrl6Ie)wW>0e7Lz+Y} zq(6IV&e@1gyafZ9J>sGaVbq4!2yr3GsSZe5&OX78p8(>Z zejqN?WauI}e^IxX-JRWjLYtP@lPFCIhT_>vO#x~M)x9j+8(&2Lmh+TEiYXqZzj}5e za2GNq9;Cjnc9(S_{N@CN2fEb#edgmq!`Tfkb#vm!1XWx!Up?-s(EO6B<7-AMk^#XbWfLaj};bYNd zi8-N&wGe_JCZXE7sA`UKsL*fICpVS7n_=3XW%PnD6(vs;&Vb!T{f) zqs?=Rc$N}UmqH)sn#YVH>YV`q=DARol~Cm*j;dua}v2^^SD|va}2s- zPNgjAM!IiM(46Xg*@XtH>(OO%`tl;%RbTo6Qu%#Bk!n9wVNM;F0AW3W!u6cAY(NRg z^$WzD!G%;Qc!)ut^t@>jzE!B`cp>I>@|0Mp3pBuVX2?|wq2lvqFbIiA59x+GKPWFl zF5V%XpJP7B6#Om!{M?*^I_{+aN|f`JypxKj@ABq{`AZ!5zj>wTF}9elR{u+&XU?7i zjxyIE-V%`;P(Y2_b)szR$=13#z5odmvmi6zkqNCz%wBAbwkmMUGMv8lynp z*Z9A{^F%b|eIzfYcHvV%L^ZX-6tg;TTYwT}cIJbf%ngk+26kh7vojCCXE>RUuxxcR zB}tsDWFD_U0hza;;epJpE}4i!GUC?@sWkyHny$%+1+6li2M;1o7$E7LJhi|Q;)GP; z68t07K`6ut0~ug@{uzt zPBwO*D)&*kr!oF@Z|*~3d}Iz^)V+nJU9T#S0XU5T{->D^B;aQ$iCJ4j=&8z(+kKAw z1cVe_kL*4-y4GP;KN|mZpOC>Wbx5pVdZwvF2UYk(7@#wIpNl^I z=$X!zEY*GR*gaX}RWpYI%;IT}R@+7a%;qmjT2vXP4L$SpfrWJG>|ZFeX8})@I#n0U zrKg)qo29-$m-Z}UFh`vQZR=Ui1$3!Au+g)MDcyXE)U%oyUsAUW67M<1*oRfVqV8cx zyXVv_E?c2qhq!yTa?Uks6$X-?GuYQ`NR>e!dbZ`06}p?%fc`*dvvavIxpaf**`Zgj z!&*Ca!C(+BEuRV?UscpAJ-dsk^FB|XO|8FDoemPNw>}D`?zv9U8>zUo`XXfAa|2Iy z8mx{D8%`EIHx}(e%0??)0j2J_D@2QcCM!*Ep7tEzk3%^cbo&)?J*=)1Y)6msD z2Q+;Xv%^ZSBbgqE6WV2^pQKXm=6qLM>AY&7dl=nlrRizZo?m(NGU|RSO)sPN+{?cF zBV3CePl%sB`ID9YK1iq>xy9#JdL?EFJ@@jL9*0n7CD47G?`tbfkD~V6S4=4nTj|T| z2~`mK!AiIGC6pp`#7ghL6sG4O=M#2%ADm#%LC)ve>A@tkgPc#=Y5J(U=OE_`+3CIT z(mnTczKESp!xi`3AEPq0ou*eQdmi9NDPwke!~meji#`Dj=rh=H&kK=XP(Rq|Pl>bl z`Qr9oJN?VaK!1>DBjpWtdK>Zb0izr3^vl%RkNBhheRlfrV4y$pp2U7T{RHfx=L_D^ z`GGDElL0j?fdev5Wl^y|1>t7O$>1~3V5qY)l?k%BJh^C{GX*r&A6>cVB;Mr{YBGq6 zHZh>R{zWTod?+Ilb77#1Rt4WiDSg)9Jaf@0J}Os4==sY;V$mo`eW*4}MY0ZgKPY&P z1;So*JOfurWDM5q&R?^GOieJ_}oPCRhluUoeK(fQv-?PJy zh_?J(RG}*@S^9h#iqvhEEMI|`HKXw}&b;7-M`@uodb|}(qWL(_+7Uofsk`uh3{l#} zRQ!V8x4+JXHs})!LfZXsjx7m&nI+$)v=&tszNjttD&~Aew`gRCk zUt#KuX`KMtV^CcG1g`a!hP#CRX9LhL464!&1_gbUK{Z2&ReiOksZp|Cw4E8E_FiX6 z$Pr)tB{aSYrbo2(%TRv(wB;R!^u&-K;AZtRmU-A(>Wkoy^>59`T-v8o*FB(*@ZzRdQWKg4?V*|ZnP>cQqKA=LhYSkoPf1RANQ{Puh~fJy zt8fpH)>n+f@81ma^w9~RZ>&X2q1IjvA<%p3EeGK>eEiyx-e~*jHR5A8VL^3zrWDRhWF}*- zV`aQCCl-y7rj}4m$vkr>}SU>DOtrZ=i2* zvxjgM^!B@tQu*C;`S-7=)1kEieV>|L9{SzkE!Z)mN2T%76XGl0fHTB@1xCTekPdda zD0nUMVylaS+t8)>|4Ua1jkNDyJ46Yce3SIY?B{TgHBuVk#CxP&ogkAiZIX z^IrK;FO)w4@O7%i-MsJ->Isy(xF@^X+FJ>*D7)IC4}KOe<$aov z+Km~(;^q8*5n#GB5nv@>)NfGv=%e%Krz{shn z+wanPu;Lwz5`H%a&8=vM`TE@=1f6>P&|hvKeMK^i5?p}J@Vn&aD_ro3tDuN&NyC+x zK}6pa@UKHuW~(3ikO{+Zt;|~}71ul;N0e+WmbZXzz8fjw#tC%@ecoDXR@Uabk$4WJ z!d&%ZxE}iQqJiw2PkLJ~x9Nk7#6@tPt-Co>Cuvse71=Ml!5`=jEdakkfE$3A4n&97Fu<1IC)k0B$(})y=0_=>%G8^uEkuf^GU@C?7b$Xt zJ%bI3h{!$A5o8=KX_l2L84co?K2#fQz#&d(R+SZ}LvyN&d$A)b1{aYuDaO$t-PTLO zQ;i$Ikh>%zpGF+NZM7ty-^WLDenh7>xl8k9a6M=*!W@cZObdN`M5s+cYZHK{k@>6e8I zh_x1V3Vgz{2$wiky$eAs%jenj8vZ(BSs{NNu|b4C0!c2@c#2vcku){8tIa2#p0u5 z;}H_crK=Z;#T`Xtoo@NVs7Lmv+S~|F(-+U-nRrZ8ybi7PyObM-#J|Vkw=|xMYJ)A7 zd=*Ihrs8O$)x3Iy{{{iBDLBsJ6Fyg0f&Cz+93xK0l19^2`(V3y?;@hVgg*;Tu(e!U!b@N-z(@QJV?^DAz7BrO=j}0d7?u|Ngh7>h1_BNKkwLxM zJPhE=Fn#LV1SuScx=UjPm`$(hYstuoX#ZrCx~iXL&cO8&c!E_m7B5$%&Vz2Osx>I0 zA0k?RgJSv*^*{s6f1Q}nhtY&pDf1E23jI$w##IB&r}{f}ECN(#@jZiGIwt@$$Wo7? z@;!PEnz5?h;_n~!>S0jhRcZ4c)jr)uwGXxmKSIj=A}|LXwOaFk;hE>I_JTtY&5v%b zj^}isA_O#O`Z6_fOX{Sk(-dkE|+N5o0 zZcWmbOJR4CnIuD!Njj4>DVHO6Q9&+>2!h}hj$9PsC|5;M0TmUm9QCLmM-gv`C|*E+ zpU-#gJ(+;#{k_lgKF|Bd+oze?-*sQ#^}VmPX9045;C14fz!5;(uR=fC_Upl@<=g+% zfMey_w)#z;Ow4QyT*g9!SW>)%jBfSqU&aFYwBp+#5;HsHBGXE|3E|_Ym-44FGrMJp zmhzV}Gker)Z~M`3X74->3_&UwnP#TN%3j^GyNFQXH$>#!Qy!3m!0X!o>wDd}@+_wdYm0q_9z;^_wD{Zm> zd{=1tDX*bfN~pe+v*TeVoO9Aw#Gved!Q@UkXrDx~dnz ziy~K6YZdoKuq2s>b(8(tBc~wm5ncMlPtapMGLPz2Yr#ND9Fq_Cau zLzr5{>nIw_Y}C!yIHLKS;U@6PaiGQi4Mv;UtRTbQ4Gognq9D`Gkm$E62tWGB(VnE6 zD^Rc8z8?&l!8tubwtW*MK?XlsOekt!0v^wttedTXDm6ccE}Mny(c*ChZ)fs#FNgIk ziV@6vA)cl9Df!}jLJmnaV8j7b{Jk9dF0)fNUj<~}U4ag9^pDNp4hoV-i@spqxkU1- zNXoS8!DWC<`@07L?N%j2_H~@#9tD-#t?;Qbdlh8c4O}=#Lk>D>-@?Ud*XM0PE0y-G zwSYQw^K?Kl`$;0EOE+_XYSiTStI5~l&Ph~1g)`%5=1l&t$SL8dyorbLe9Ag}@XvDh zcF8{hqlQ^`VkW&_mc=LJkTnCwDPDdqpU*~+e!s7W*c0*nooe+Q&8lN~%`c?VIC(QVQzBWj}xh6?EAC(GoyI zs?DT51ksimR;`R`6+giw)@Rhix&aD^E7d7Y&29uLGFN$LHn+h*%UrD>)1HJr z&s?LRko_|#&djw6Dz{%)1L!&h+4e(Fhne>%C>r7K5og}3OCY7vUdSn3uUkCURbzjR zQ+l6*ARL}Rqqk*l)XfGC?M!Npn^ZG!porfO=!=+zp9|z#oy^B=SV(w5FJLiZ8Tic?^Zw`R?V9B-Mav}*Y1Yw7qxk1NQw?+yXF zT|rTMhKqQIf-1F&KY*)NXYSI?!3)s+qeR@@y7>+Oh#71EbdM)QmiYmFQa3+>JkuU0 z8b76=ko{p&)V-=?xjk<&pik@OlWfxF>9)*$y7^l`QJcT8l(}CwLlBjf_6g+FhZ zT}I0ItZuGGUX6VKQZe&@>H!=_^a!tTY_l9EGDnUofGb9jC1p59Rfbqb&edMd7xOvf zJBuK)xghvuIIqwz^MxpzEP}{B4xYn_U#}2np!yJr<`(*+mtC9B<`XKCYVo7U0Pxlr zBxD7D1@rYxz-L~CG)2$F>MC4l6pAVQato1X*gGh{gT8VW?6bc>mMQVsw*Wd4;oAin z%U5+bpqI5G$`@w1@{I8Ij!44HR+4u)6VX#xLSdJX6`qeNe%Tgt@ zOs(EYd~lmoK9IEnsTF!94jcu?b@P%7frpRK%$?B9+W{c51}YC8)y*#eGVJnZK$E)p zBS5BoC-4`X*3Fjzg=`Id1uxJ|`y%SG7yAIcO%FB#LO2Yw2wtR{X+TkX?EyfS>gLUW zD(&O@0lh|{#FnI=huMh?AI3ox>66m4rsMKAHpek72Ykr z7^aDR2y_;_4(b8Wdi#nhK#1EpfHvFjV1J0)vEDX&C9oTOpBnWJ`?Zq+-JqNQhLSDz z8?1Mu9=sLMUi%>(&`rAeAfR^pWGMaMExP$DK;8BS!G6J8_2AzC^=bYcz@rfU&A^4l zpRTd^1Pp%|U)3Mq$;T`3D20ej_3ju;BIj-|hlsWK<6B8d}YOvwu7^8=OQ_^Mt8{SJb_qYPw#`SR;NQeR$l10q!;*7qROEEYi(ZoDIK z;8o<({m&I;{<2jcFveNsdY`6oebv+mp|KAmp@i$K@RjcuS&y(17-`c=U^aRy5b2_+;s!95awkLQ3vzJ)+|o6pC?#T)+u-59*k$0(n+@!aJAE>dT{ z8P5xT+~?!*;Ek6+w*_zaMXJ&MroEuU;2l2Kp+;Mu_W7n+Y7f*?@IGIa0FSf+xZhWD z1#-|Wucnn}Zp>8Sgl&-X*tZ3F!TAM(isR~v)706grA^2F%I*I*F@AMwq9iGYte zkNV_AnvGAh&gXn`{h?Ool4?KGMS?k_g41QfL|+zY6u*!(!4N}Inu5bP~BzYHj5^S1`dZ&y&ceR(+`+`dThXA6&9U*tQ6_BZ~p0y*z1 zitwcTrtiQM2;NZS@Q{gaHUA|jQSvxGto#S?_Y@K;nxWcn4%QkbE83rgx(}Xc*er&)KNVb^LbzcMZU(f{ zkXTH}e#io}O6A%1=V5^a>lIXK@ALy|H0E(WHFhUkX)**wb@qF(GQqWmc&w}K8W3jI)5!Hy9of?arVVK6#*em(gEo2 zYDG-@$tpmv7nxs1UdY}@e7#W={2`!n`$x5a{!wK96_9QJ9qSYPXHl>W| zTV<89uVd!M(fQ^C>r0gdOQ!G)`Fm{>OEF_*d9cMO;<6|)*=ndCJGOZQDY)B^n5Svq zMGn}bZdwd!2g-xZhVOY)+ITS+Vy6*}5cnE3)h=W40RRURgE@py4gYxnwB}M+a661( zwcjKm*}c^$d4fMAlEt2i0jg1NG}PHYW|J!v1do}tS?iCoTBH4&c0eck<>y7#uiM`V zsLnkV&jUvs5_YDrash)h{1aM~Z>I|3A%PDEuP!#@SE4~b)+%^SabzE)xMrVB8Fp=PkjmJwMKxciAQKm_BJaJ$ zp#(~X><_@F4PFn80;t^HOY!i&V)Gh6w!Lftpc_=ZsJ(-%@c!c9hmcokpHB&TBQ)l5 zYPZ|A0J^Ez{0#DH>)llx>;TkfR}xG2DCjiJ|3jb{rZBJ>Fc{(r7<9XW>jiYx z0LLFN{=$;X+mSCRBNsa22g+0|`kv2m0bRnE(%hcMd&a<21o=q=3V zc(4B7@-D9C2tsQooBn;yiQvMs)7i!v{HW$0HFlo8w&;vW6Wr+x z7@NHODdx+2NbJ4oU$+NgBw$$ZP0x%$9M;lgLAUpv;$$Rs9~Q zMZC!66@M{bT%O!@jYEzYWJKoQte5MLjIc|7o$jhNRl^is35uQt^L%mkt=ar)J^b&9P62HYnSp+_z z{`c`!J%Fho65R1Yg%@h_$6BDi>CruZc+^xrO)gK5DQVo;m$i) zwb?3(`Grb@pqXrSh>ESebWaGt2^JNlU3x)1fEsBaT6zd(Q+CBX>Z!_7vmHQfkg6$G zI=lnGDwB$+rql*nv+)J|!D~djIZzylsp2PZ1~_yx3<=%uClUBzT_Ivxw-PAr#*NAQYPFK)+&M}t38SWf(1+S-;L+f<4Dx6)S0fUw$7LU{`9xo ztOHw7({GMlk9SDQ@HloOBE|p?>)n0^gYnR#H{zWQH&4>n=F_#azsh0FggJEn>%yOY z^GDHw^ZV_1Jihqf@oY*Sx`2_R9Y+`AZ|UN&z90RZxxp=PjaMMwmnv`;SDu5+4-f?N z11ub_GeVWK+ZUnJg!}>rK%RqQ^*7+->|Y;1#u?HbKzM8bZ=T6_cSa4n`y^6{ zpM-RG#zuCh_avmFGo>Sazv|*luM6$$_XB78L20=h<-@FV^AFkbKUOej6@|-pk@_wC zsmUEYg}wb9@SpH^7RXDxOkt|%k9rRl(qGhwG=)g*?8{c8o&C}SlNBLwS_5N9ucx+- z>$pJ?e*?#mvXR8t4X7P|XYE0iYuUPQ(oj@|Gxhg3p~?0#ki3ie4m8()JwQHa$$@>y z-&=NBK7Wk)EY1fl`4sE7lwFX|zl!-R&Ic{|J?8Hyo66_k&3qQ;gO+@b`P<6I^7&6Q zpT+s0C4bBO&1GC`pce@JE%RBN4_flC%wNy9K;8U#??*n1^Fd4cL5+H2*@1k1J@Z+d z4_b0Q^H-O34m@8vA|&RBs7Y@$!0yEo!tPzr?m#~ zsmF)Wdb}TZ84uxiDZ!RLqxi%WBqYbW9)AWubSAGHg+P^G+VSaubB;igG$X4xJA-_C z@#%O*`tGxl^f3T>WD&|E$z12)%jdr+hnx&^qEX5UpRahwSxEZ81d^6SIW5!hr}1)j zfX~H8&qR8~LUvy~in{u;)sM28=|6;_7T=4G^yRC_)IPKL!YRm<+-A*JE;JRK!sGn1 zBghO+HEq;<;j(k_9QZ90a_iP=K3jM%@DC}$gh<)PBy;0>&9|`ZUP=u& z;l;#8v5l7f%jVw(k>S&QMMseI17N@(Te1~N#X7L;uUfL3&%eRc{S8a_T1)ZBX?WhW zq=(OMKZ@sVOU~x=uO{*Q-WaLp@j*)BkC? zlEQj@8X5Q5Vrg5?2v9))VN+uPzC#aS$xQ!4<}e$T(ho=YtXT(uB>%%pGj8b}`1Tvj zn)ed0g7tmYyakY|^q)~aYu1BA!w>O0DyoY~e3ud^lWf275j>Y0e&Z2*&tLFwKuydS z3#4_k6C@nog8>H4(e1~nzQgB_0UFc89H$WuqvgPaUYuKnQHQ?(Tm^D^^b$aO!#mFa zG^tnYN4@jI{lHydN-qVEXcvYDfR4a11zj5cB6kDW`ToGOmBnHmamwjV3!l2<1 z5JBKPecpEgT@$`!5YYL08PWdU@M1z2>SfPaJUTZrp#?717yS?gUkHDd)hW)Ax8s)Luq@4&(bu23Dk8oro=#tk^{#iIQsjDWosxLHAe4X*+Z1a4LJ zUXT0{L=w17)dMqjf~NyGL&1?5dgOb|#jy#3rXIO90q|pb?7uO%kRDl{1$c*U-Uj^Q zmvpL#(>wJ=mB@|7^o4xIEO3{Cjcz^ikAA?P)GN*bUN6)mS=PQ+FJFqb0X{Pc@IQ2m zU0te2*0ZtCs0F%0k6gpm`>byNn)uTr4;}&dh`#g>0CDEzX0FPk`ofCH;(}~pF+Q*0Kcx!zaNxvzaIGnarLyC@dJ9~ zYU1OY_;EGlKB7ksvGBK4?qhmn0rBx21%647e4m5-u5QmmM^BkFdgOgz@xY6!@Xz$fI?~;* z^d%dR`+^?X!Q7Wr?u&XP28Ip%L5=x0dgO5q@)ec)vL1OGbN{H%KPAeSuOfdYa$Z%r zf6*gHh&sPd_~Lav@=MOBSb>Hw@&@r-;tSr11rPZm+sG&(pGBcj?u&G=@Iqg#8Kbg& zk&hEx@o}UqrU3OD_u_F$iO-A{eIHNOT_AFEaq;uW)2vem0W1+f zhnO=fi~hzkf5RZmrRHy?%p;hKxl8~YGcwFF-;!duAiVwEEDv#pOFxZDOWC>>ng{+e z%+m4(lv&2cFwP&2p@r2&tQL9+bJc^Vmf`V2F8>PF zIko}2j^KIEa;9rVEXEg%M6VWWp{LNJ8Ei3cL)x-4SOmR*43fbE<{{W#mb7$w zge_^-1n4w)#HMsJt@R*};E(|2)?Y!;!J#VVL}MeV<61Dig7st8AJ9YaocZLx8tePO zd~ig7I%^2BB{;EwIA3kuKoxql@+{P8v_gXbrh{C9(=1BS;7s{R01jIp03ij>wUDG8 zv3^M4JOTQ#R>Vrt7#iT8OfZPl830uoQfCfNp@Znu4&GsY9e^6>zc1mlW;K9wf}dFU zZ2*Sq^iJtCr24r_`YBfG=u02J%`EGl-T8)VAoh5#xj;f z7I0-X>o|r}vPelotNsW9QQoF?59p;NDsmxYZ3XH|Dk2x4<#Om?ptxjd(TjjeYDzka zhS=-@V4|e6n9m4Kv3%DeRlewXBuyh-234k2)RgS?T?csiAz-(pZ4nz8g$SvtDVvVXTL*#`|24&trN~dj{w(v4`7WETBZl()%%H|qz0hkQB~?|pe}&b{{*$VwM1ARmRk0TvFGEjDjNj&&)3vI=@Rf?&t`Ud8ydR=&OU?X~s7qheY+psvgR@IHK5@UWO*n_MX1<3q`=IuZVYTbZE znZKy$B;=sTlHgRnNQHTyDsm8FbADyf*~sx5Z^vipb@(Ww0@6aC8UYI~s4*WxlGP6c zFIZ7ZTF|U_feIGXirmI^@`pjU3+iI58Tu*uG{R*j%?pcSE^Ld$MpidkXty`uPAg=Q zqV0|I_hD5us~s4zH%Z$@jMvHATb6$X4b)j%fd~5}>1eg^hrPXogIh0DZSN2+*sO(q z4$~nTX)aH(?d?E$WT)tMMg5T$DTm9Q>r{0T5|6gPRZVr4i0 zW{Kh^@1`=WbNB_IFN&MI$yPPtmqr2MCU2IkYq$myqPWRB4rp(fzpE0(P2Oy#J-nEs!A;&jK{MUqmoWDzZt^Db`@#oU z5;u8s`A!Qj0xqJs$@>MAJnZqvl6c_HKt}uk%yKRM0JN?i9|Upu;?IIdisHRUF(7!c z^yN#one#Dc>&X#bI#$kS6k+3niuHuFd0R1rkWmpe53%e8=RmV9p3kvr*4u&ciX{t} zVOU?lB34ugfL|Cj*hJ`lAi=0uZqBeO8>)y&0c8CX!|AR(!F-Nc96@D`%uCT|(;8S zhy3;%tiIwgvua-O6*lxW@OssP00U=Q?K8kuRpmTt9MiNcNSUhT3rR%fG2VGy6^p!v zI!9zVtLnt5N?KnBBCA%45dD<(pP;;|RTWA5f>wHY0dZ_?7==BCB;x{;h6N9KywV~+WkYZL*&-#u3M0yh?g%(|@W6_N$u7X_% zVqKT**P^%zR#;sNUqF$Bt6*hXS{3D$-(b0_VoW4Zg(tsJi_hwBfM(1nu7W)bDEv1N zcobK`ewG{+rvD$sRj|w=t2D8~Dpc4O#Z|E6k?@BpmvI#=tpqK66u5}OF=Rm_d;sH* z;wo6OYDim8{=!wT4@6M#8{pL_u7ah=*1~_{XmJ(nSs)1`d^_+Sg(FPbF~ebW7sXYu zKSH(gaFj9{SHW^#cDRwU9aq5;iiRsWc3cHZs4_f$1Q4!*B^0x14MlMk>~m27R(*RRj`z> z-QgU2$5pU5qQAcI37iqGf~BHAE&LRFz*Vp$`SZiC5M{UumiGMD!#5GfxC)lz{BHOS zuuT+K!4i5ld_T1nu7V}>mSBq>xsH_cqP~LQUOn=Dis2XaMuP2n7kP|@ zaTVu0_QsX2UO&*@+@f+SHY5UqD7H6NSwF|mhqg* zq6k$-6j#Agy(}$?G?RF66)YuftVr9);gH13*q8*L-}C|YBj@-HTK5vdeGQ-(()C)^ z6&Q-&V2a=92lG{Zr=O1|2I@Cx?@En2fScB%C+&m_kstlEPojvcUV@RLY`B`0fl(BS z^Sx>+n1fsGn!wYnb{q_%#oqxbs>jd7ko5R% zpgmvQ2hRl#sN(p}DJ)I=J0S01d;-f=62A&9TiPlIICDGr zXyC_-(DWZsO^ZJWuGHceqo^MLmUQrE%%CW~1I-!n`_P;}{uxX#5cgs1#qrOgq!~Ye z!3E>*!3;{`3*>VV=4ZuE#d9eB1eQ7!|H&~pK=Em`QyQ1wL5Np^*vjIS=&?L*qWt{$ zyFvB~;*Vk^;rPQKA3Odhv>b{58FaWX{y9uF2ZXylXI!pT%mU<|h`TbN+^6?UM2u6w<8C1S$kDYw2s%E?Y!aj>W8Eprm&Bq9HWY zVl`mqwK1^(Caj;cQk4Lc)-OQjwbc@Yov{{SEo)B@1L%A)jcRMeH2P@mvp{_9iUpIv zh4G~Id#qJ$tsP#1D52$J+b2qM-xW)#cBNQK&&GJ~YwfCq^D7|D;Zh%gqNr^&SxYRR z+9nw*!Wmed+O>kU8fz!$yLN*B>(x*w(ree3C(<22sT+%d-y))b^Anl^Or*0{fl1XQFuy>ny1+<^15P{?;E99yMVPD> z|0Ee8&Yzd_#Xka+kzGEovlD*gq=RyR-5 zLklp!^127g1C>~UE3lSz50-uqy=m5Sm`~k9rI&MjRzGO4?qSJ6SP+X-_sDz-!H{(m z#!&aD0Q0P?AtLHNS9%@l;EL1Vo(bslMV|mveIht5RQFl9ndm6I6jP~tKvzA5e@^H@ z1sUOwpk&=c3Nmpw2MBrfO5BZlDJ$NK1z3r@QN>UQ*AT+ps6WU2Yr?(Yt(CYNm2PdF zwoUFvT@^MT3IP0 z!=j@#YZ#M>pRJ5T>q!XBcyi$Ygo25E9}MyQ`28lq816=me`ev1W$b7Z#uxvrv~5_` zVDR`urJROo{RGlJ{;+sq+pK3<>=6NWSRo)I{^-)Vs>UISM7h!H=}rirWfN^qw=hCQVCO(xCgZiSGW7hH}OPqRJ-Z4Or5e=vF#>f^>< zgYyY}0yD7VBjy#DK#cES#z!mKP(ZU5Atydo(Fec~uPUCg$ONV}2*!wy%LL$6{t+nK z9RE+V1qD^5pP1cMY+)YQDE`x60)S!NaRk6`%<}-4)-;FpyOQexgskU@so$5}51`z7 zKYM*S_*DS5^#%w0O6Ye0qSk+aapJEBzoygX&tXmCxEqxwS1f!hi3oS2vS3X(!#v!L z8mM<0u-VSz% z-)Y7G7}jgV%iZP%0H#&XV)vMR07BN4#O$Zc9Ds6d z-AExeTSgKTIx6F8qhv8sC7T^dHWF*SM0Tj^1jpyUp z1R<+3d_qnszN)5yPQURg3lVXoc2!9HZsS9s^QWuasBI4C~Ib0IVu`3OT0rd93;Bc=@jY zgsctBSzZ1rfO6|~Fx=|;;6+$wTa!K)bCLYUgUDV?6#9)X;c+7c-B0jP#t$UEfUl|< z49RbN6OW6T?>Byr$521owCk6d?I&PR+}EmKE`+a%xT}wexHC?!VotS369L(#sy|^d zx2a648bYVOM&v*UCnwHki+$z?@+}^4Ta18L>kpP*P(#MOy&u47rT+k6S``G&h!`t4 z=V}On`ZE`o04Uc29N0#3ArBjr$;UM6lyPM+iO(Z7v<)?C8g`h>kV!N&yInGz*RazK z=TTWS>ei*5tdB9Lz{T(LpWl?6<|9hCVRgkX!6Bg;)wiaQC^>>O`h>FOs zzbmwvgSRNx>+caDW-*Xd|0$D~vDIJzm!MIi|U2-C-0jWz&KfBzz6eeuF6Y8!yT;nR4SBc;uf~ zjM54A8B#=Yux&4kXPHaczQXmn5X@y4;sfQEA$8052QiLd!+Xsu0a+PHxQ6THS+mZB z=xTVMc{4IXThE7VY`8&utB`&Y?;UM;fAL+&D%ZEBu~ZE=N?tkc9py^1lDHMPca$(o z3XFS4o6-BDfKOSEhkxS0z=u#j)Nr%;3KFehST+r}l+DKqxT4^Liy8qK*8RlXtz~Bb zz!3|!AcSiHF5?<|Q+^FO0j6#wQLTD&_Ch2Cm@2h9=VX@=1ZuXR3BR#{CHwG!I6D$T zmt#@Oo7R}OBS|dFrY4aET8#IOHmx)3S7Mwo-aFc~!Q2DDv|2zsO`AmI<42-Ws43k( zh6j;wWqd*hJoFv zm73=u&H5eW+d8#xqFJSAXI;5OxDBmw3f_md9`}xtjCt-(8aPP{{Sbt^KG0x3!v-i+ z0&7I5sKpC3%Hq{nH-R7mO>*+CE;cry1=cS8K5DGC(g|d&i%ep+jat>?5JY~1ZH4%g zQFVch=H@sWrsfE2ay19VaA0%jEM(Xsh67te7XgS`&kP`ETkr+|mDUQZP++@x7l4=$ zWZ>lBqX24@pyqMGGWj^fCs$Da7+piL$R~Rina;)wiju!Pp*?`CQubFyB30TOrvg~> zMigV`l7mKXVNnjiOZYUNS36i!Wse1L@96K56u%dfg$D|0t;bJ+to6lTKf(Y+J?~Yj zGy?cNGoIkH$sGaQJIbE52Cj4f_m0|t3`48`Ct7JV0=RdShwj2z^b^33kBRjf<_=i^ z_l}YZjIaX+4B*~TLT30*nA-u|J4z@NKJ7F>xObFL`8wV^8o<4y94B7~1@6Oha~4S65Y(BD7gickM9T4XYiX)f z3;c-Xz6k_xDAAdYa#bj|lSgMagchq85~NmDgImke0`u|QJkC)p(wUB05wG<&uN>6M z7MA;Z3gwpQOh>s8%4zz1eMM>5Dk`lgJ+NrLUcLy_Sfg3i$w+-CGw7S@YO3rm!%ge&xdTJt#?9=^eZ!jkV-`Ti{yTeaO*0k(zNY6J-!TRvgo zoDzP-{0kG%*k+_faVJB5uBR-9zY@_-Tudx1;R7^Gez0!Gm5b)gZmHX?i>zhy1O?0a z#ZkrFKHco9!qUvI4x|5V=;s7CM~2VAA+x41jiX&rnBdN!7HOP;RJ5#lR!AmxB1hmB z!KTt|5yS!A^>HV($}5Q;+0|R^HZK!!$5mfQAV`BCD=g&>0?BLK@k-^{||(sjvmkb*-Qf59{2VLd>iu?QTL3U=h<+-NBSOG!gLQqD#StuV(Z^1y!H`U&1 z=qFobgjpP%R0sT3f@ilG=SGEV@`b+|ILcR6xQ9eog@p7 zMeqy2q&Zc`JWGj_|Ks#a(g1^dun zp7Xgp?Si@jLg^?hfw7W+J1J}M%mwaJ73R#MTUM{2k^O?pdHB`!*%`Y->UG-(C~d-F zdQ*@1;U$+h-6{tQtKj{`xxDU+BG6ix#Dvoe6EIe$ozZ|*SEx8~@qB$jU`O4Jbnj_iV z+_)zhSI^0Hhf!a+mTsD-M*u4Ag@Hhc*g0iZ+Pt4gs;sim0x>Q zDn9f7uE*2O_(MH@-GV z38`@H@ekg+`;Vpg52{W6I5ise{9fvQuW-NX-R}+V_jdQY)%|8$tarfuhRZB)%KaX5 zzo*>q3*7I^-0!R0@9W)fe8~&({N`A^e>NU`+MPER&cn;&82E3V`xn7C|5%@YoD2Wz z-M|pi;QpP3Z~mp+zcGCCZ_53<0N?z(%>BCx-~7AY{ksL<{MV(v z=FEp@kc+gv#ULB~@9;`={6jJP>1&3^$5Ly?bN%Bpsoa{;bY^O1&E)v_D4rAjxiz_w z6doJajHI%e)Tjd=ergouHrJ0N`?ZEO>CC|BR5G<@Dlw5>lgN$L52Z4xYtClz z1?jDzs0Syq1H)@(HgC)~k2X;3UnQ>@#Btx*aU4tL#tT3-o!r213L%5x)adBAgK;+u zaOQa9w|;bVS5LoXYkdLDt@*AIl@yKnXmjW+uk7lj?bp zwUBl+H<8Yajt`9Fn?l=1v(s-*BAiT3hOeV^azeB&lIf3{58bM^p7{M^neJ=H7%+#my;98XL<) z=r1ujK9(NXxZYW}RyC^<>PN>jLrB2%`={IooYNjlCE7`YGrgZopX!l#^x-PyLPJHbRzAR!YeM$YbF-rw7$2J$O--i9Gb(F@*inysBFccl>GABy(W%swn=|H-2$>5duoP23a=-8f zijR$*JD%~n9hh=*siA@X0({|4pV@I?&{%lY&p_j4)aIvG1=8U?iM!%_S zc0603&afYaDUfZR)iL|jjPM5<1i*=cbX4nH%Y0YKfdmAP%9sGJsi)jgVnPmM7R(&{IKoPmr07*v;4*W7cl@%#MaR_>J(&J77C4ld=@HvJoBD7xG@RrIO zGCIzJ@X;FTas}l$x#O7u)vqF*`U1*MrbZLTQ%PqaG3qYB6j)r9 z#ww~lFqWfJw)qne`}y<`eLTG2Ig<`2iHvc_0#=Z0!7DPVB(g*e7~>CzvYnMcY5Gq z)Cl_mP|5iwm#~n|Lfi56p*hf*|BpjOk<(^pcp9;?(nIuXg6Ob+WuV-T9|K*v*B@;3 z`~TY?Tn@yq@s|X`em_te==28zdIKKJHGV%<1-}mJU*#_f?7J0ZfaNoNKDN8cYxi;h zK=>-PDy!=KzBPecf%u1|++$$=BJCl3zQuH!H9P( zt2Ken^2#62u86@?fu08BX=XgmYGwe1HU)YvP}Hn6YXPz79IZ^v;bwc98)fo}n$NDH z#-pdG@i<3O1NLMw9t*WIK&72AC|5h`? zR2cY>*Gh0BPZQhLNkKc|uH&KX_|$}xn;f5TL}O`#&U7{nFjcPT6_DNd-|NNPN%!4wY8(W&)M15r*JTpp|z1p#)t=4 z3qD zl3~3wx;k5(=3RYl2U}HDWkC%lo#~^)+F&kmECm#grV_an_zTVU^J$KsfE9s_n;FtF zSw~rC=q0DtfYQ$y$21bOA9EV)ilkbBfqrHDi^(=MMhbRDV7%mxkL6$qB?h$Q)Y#Z@ zXK*Sr(9~E6G!+7CHIHrzQ`Z*)8w!Dqg}|mlV6!%y$T^fQ<5O7AB$!}mxIaCa(~?Ki z&fs_!PNJ4{;2q^A;5aHyLIfa5${ZY>$_+bH8HFLZDwyfff$<4Y<~XLD)smwQu#m>S zzXJl700R84b!(kTZG_7&Z>^$8moZ`5Q=|#=5Z{_#rzrFsT8};{$H>DIgwxF%%hCNC*)_?@y-b zALB>4u%_%Rjq&6l2A$MQ3N@2N94R_^)B)CpMJqTHZTP;KcN~ zDO}QpERg_%*~Abk_dDs~L^dgYyE30~SEr0Z+uPIE*3sJIbTpsl>}v1Ywa?kv+za6{ zf~JNN;*LP9!6K$K=_mIH8n_&=a7UeEV;TZB$3eo5xXPpx%p|9}kzs-S5B0S5weD<2 z>wREuWgSC0QZj+b2M2+e*}#Ir&fussK8?tZHag~zu}8>8y?Z-aJDl#0mX7A`?$#E} zG&7zXP2rYYWQu5PY3u1bon+8ItsNW8jnPBU#LtFbe+=T4rbHTyx8#szIp@k_?mq zPC+>$3o(uael{+xa+QV=0o!`8wX<)IKn33*J~RY%=VZqrq>pl_Kt7~kQe+({ddNx4 zxGGDS0OSb%fxK{IRFLJ$$8u;FXt@Mv0+Y>RsRYmPjv)P}AgzV%K)RGgE_J{pA|WeP zGdey#k{G69Y1!Y~r--B%rcOo$MqFi?8y}qH5_w7ovMn=!?vh7w4;FARq6o8pG%+wD zE8t1?sfh`UET>_(qYj3ML5x8=CKHnhAzQ8|#3sUElf$GKb}XG_WNC6x8l&iIvVb|U zZg6E?zYG9;dWc$vn&aBeYnp`Pp*NK`x2)w8dyb5Cz;pORM4Lc*%Ef{v?#I2hDfT6jC9 z2+|<}U7~l578;jS7a0v)M$1&}G&<=yt)s)~J=EL{%7KMJwc_eqrJRIF_I2$%)#>bY z`cChLq+ore`Es7xR5VDzPKgPD3i8sF)gciI(Zp$rlr(PKE1+X2<3f$*Ejew5bUz|m zSV34LQY8gt0i6YmiH)hS=+X-C=2|@!P=<(zhvZEPN_1>vZN2jS64xR+o%Xiftti#f zcAx{~n3@>?(L&SXmw6HcN2egqpzu6nm$VGIGCny;t(gQ)v&RdK1L0mp8~KJnoFe{M z))miS;{S!2*4wtHv$}T3Un(B3g?R!HU^BK7YNnWKbR`$OKHM% z27w|W@ImOLNo|b7!!_xXlv%0lF~}-qWl+<>D8zb!BRnzY>N?2l392{@z*8ETFSN7B*NasZY*%wF*E zt}amI9;Gs6%F4X~-H=g7sg58RL{gJRF=`J79c_Dh*h25=ox5mA@9OG4UHlvu;nbzj zN@?&3CPwGlb)^dlB260wav+;gB*#i1+U&G)P#`p&0kLreIn>2MpOB|u2Vq7mMUHN# zS|H`AL1p9^CPPm-tg}nv!)d5fcm%K;MCiBlbanS?-ZYd%5d){WrKN|6>2B_G+M7@B zI?z|Bbb;jwO)2XFy}GCKKy26MEwQG?hP4e%v9*nBn;M&%8e{cineqBuE~OsE#%A&< zYt_@bWM+I?JtmGZcO5e*P3i}+n3DjY_95@bwy(o8^vWRgdMa5jDx|)j(j}2SzMZwW zXS6-Naq~tzr$MP%1a<5Cvxy9nCx@ppBlR#mV4A))yB>XDu~OMs{Sf{qu_A-@>tpp@ zXf`*Q+&+|<+JeapaxxHzXcnRP1f4gP2p4{A9PJL~hOseJKRp2J1`t|hd03?AU~-B* zvx$lH03MJF8J!T0Qt4vtL40J!r*idEnQ6?SUZg`#<(~tSbWQ?dqN&MLeP(KOv|ct; zQrUXpNVfvb;AxBiI=h}Cvz{A5%u~n%jZXqa2!Ladbb4iU*wg{;phs#WwB~lPqzmd%=XMU5};9p@6i_|Iui!#-2p(Hq6}Q>S%uUO1(lhE zWErE0VM2I(lIh;ql3wW)Lj)?*sh0?mx0POcw1A(0frN9>I( z^gw}j?`hrLe4rf;Fzj#@SAwvDXcVUszNjnk9SRx@O6h27LC^6_k59nf8Jik~_<*|N z?JlUEg{Xw~JdTJy1ux7tB`+}naZV3(wjONT)z`eUy;UPlsqq{!&S)1n^eL36?A__? zhL3)Rh^_AS*1lHgEzmp%1Jq%PaQ_R%3p|afei1!`iR7`g__f>~fW(9iGzv3-d!KVr z(A(G51BaRZ7=jg)=CZ%wx$+9FuABk+jnO`pP{_m(my?zo>>x@{HA~OUAyS==uFkH$ zuFkeyzyb#6*`~5d3XM5C!QH(OyAm1^V`+vlGN=C-7ky{ffzDm6bE6zUfJQ&cGXr}e z62&5AOoghCJ}zS;bVLxV5z8d+jCZ%SQ2aT4d)itsY4{v4y;5#eW(LC5^@nBGfZnMa zbW^q-VoKcH65<`g`VUTl)1jT{=8GC;JON${pCQ<>RhO86lz@Nj(lwg*c8=+Or(jx8 zPl{e+FrpDQ5F%6ZxfU8Xkr`rlS(+LkXF4@Wc&K;-h(Bz>B-)CQ`~^W1Sx*?m94H({ zv7aG2vgkWC0IHjC5@Y>o5UQ4i6Ado^S41IvA-aP~uUE?(g5A5i4>-GbIn4+9y4-DN zM4s4}3cv}v!8P8(ADXv@}OKoO5{m^JYaB9ZI zeW!!2l_4x{w~7(a?nJ7 z9FnC^GPLN59IfALiJ_W)Y!Jfo`9IhtSTh?!9ndBbX;E4VmxV(?9-E}KA?7$(84&^r zHey#C@lHp@ti&pt98Q3orx+!Hq1dlxN>V}!bjT!0ZPb|pdE!UYIVI8>+~>S!rra`j zWhDHh?4+c~Jc<56(jKET?hqTZ9K&J3*d(pXnkvtL*rd;(to*47s64pXG!MmJro(}~ zWYx!XVgwvMIGP4Q<+wUfO9(AVX?Hsmu}5U6cp!L*(JH!_y^K>ybW`SDC~rX-Y9tbw zkT@>`3MxuEiA6@7h~)0YK9sNIq$hwQ{F;2)0WlpD!3-^mF(E2R>SCkHN~Ea=1dpZ= zAUd8OS#NvuPK2_1T6eWKw{=jDI6Gk?DvKUE6ST#1BeQ`XiUtYjC=7yKMn`D*D;Eqb z0P2RQ;3kV3_&|l-UG42ocUvc%;Qa^MdJqG0sPAED)98oXpGtu(CJ@k6v1v#tL^%+0 zmM9o`NsWRLN4$?me~v6m7iE$RAaP^~U=1R&Eh1260In2fR3pi%@VSIClnVlV3Xv#o z0Zl6LlapY=3~NngmOZbdqba1(P3W`Y1guJA*>c$Eam5sp;E zCT;KT%7+c->Qkq;Yj>YEG@)V&us&$|VJiXDC!XIF=j&>1YE;D{RMUucK-4-8eR(lD zJnE+mc3o#VAqBZe?#L>#0}9=!Ib#VD;{MfO?Ibcb8{x}IFEhPqEOQ{1|(l^Q~BBfR2cy`yU-5?7H22F_i zJJa(#s8MWiD_=roZT2d0E6AR%PyM2s3}H7t{M zptooLfv&!0EjgA@u>*-qB6t34zkDNTY72$axDqrovm zcU=|&yAsYozqpRVQz8!B*!+NNz>U!9#Th9uF@-__+j+fco?_;&!Tw2kmYGzz*t%neBiB zhx5ei?mDRF}ht9`9KhT%Ye8lRG2j|c(= z)VQ5Uy*N8CYCxp{3ij7LM0V3wPXjlgeA!mVg-*2F|MgClI*3IJ3~a@dS}@$?Y#C^F zLh+MQPTo$c^y@})U={$~6w%(wGIH45htSb34MB?yP1xiDGl3(pNg*Q|OEaJ>0-dCr zhEO;cVi4z1l@^orWQ2Us-JCj#!;hkc<(QL-?@KJpjfLj-)RYKTVdMPaJ8gIAAz*6!Fqy5(Reokp`M;?MeJtEM}4XF!m7Mf*hl3D#D*AF#w=`*E+uancUrSg;b$!I?3hLlf158DbOB$w!i9KuUV3T^9-00sW9L zGh%_FNpab6P-{Iz95&P#jR5cF#Pkxyz`X$~95{9oCLYH=G;t$4AE0*lI50inkaNop zvKbqbB9#%%{$B-Gy%pvjIQ?++t+tD}dn*)1BQ`yVQ_mAaG+msX3?@SsAtjT7iIW+j zdLgBWo=aom6tuLb;9ccSjwGYjStZuh_Mo6`x$EYDOhtbsF$INMx=ZviPC=yLTcbw~Ln#hA@?->t zF5TlgvL?#jn6q`Vr;9r$%6oS=@hP6U;h4#x(hLtdR=Ctu1gE8OI-vRBs8G(_C$IjrQBbof@BJesmb{jI3y6| zsRV>EtaORLE2`aNT9qL`SI81mN{q!3;ZF5y2eQ z)z{pnv{qlA)7i{}T^yP;==xuv8);Ia|KqY>>mG}d<~%HVJCWcgt=- z(#lDvK6kCWX{dd*nTjJF(`@=?*O7xN_Qx!2O~k=hyaz6{1gvyb;PeGqe1>46B<~ zGu&ZDH7Jc`M}Lmon-zM(ZG$)Emgn-Jp$ zJJbl2!U%zg!!96B3&6ab%HS!I21A%7V~^ zxc5VY6H3xyUV=+6aEO;}CdDx_eGl;U%@HhNY5b)UkL<@{Grj%GMB3jvGu6 zE5*!t)Jg=>EERTi$d;ZuzD$}>-llTll#;~JI3g8smQhj+3}ReQA|^MtZ-j`{A!i(2 z7Jko*GVXS361o;e>z$?rna~MU(gC&x_7TZG zi}6StlpHq<)hSi)pogoi^NL<}1%!Rb2M1evyWn$TTNAsR&At0*tb+c;cYy^Z;gA$# z{v!5B?Xao{o5#E&F%l zv|-yp#Im3XNV61c&ajhfjH{E}z$#35 zg&`1xD~qWtUEUYfCoWF@)S@yggq^r?A}7h9i2Lb}9|L6X!5(9 z4lfxt1R|1pw2l9i{lLV6!?kHd25DYMutwgiq6m!Yz~(M zAx30Vupk7DEy3Qtwq5&9cW6-JP*<-P+iGIS73=~>8(Ug$J(CTOT?k_~W-9K2YgO=o z4J=O~RA@Jb(8(DT7v%Zg{FxQ%9ywp59Ao$J7^0IfJWwz_j`N)qkFEhORuf$N;dDOg z55ov8 zqCUl~hIcwd4ISug?r2@Rk?#Oa&ETMAhUb*LnscK$v+F3kNOG8#h8IE^N``X7VTe{W z>KE=E5{q;FRr)*Jm4qpTP%JHE(V~j?!0euXM%AZuxpLPOZ|0?|d+Z;tLaDf|`;r0T zey(tpfVG%TFo_Xk6WL82J1`7X@a&aXcQSk>kA&`V#CB?kh7D!DYt*RlfG7d=$cc*i zKpOxvl$J!3sht-U=~U-?X&B3UIe7yFu7I*VaOOsAkXd$^5qgy6LDQsJ27%=S94H%+ z2n21R@L(DXYUI@dG{=+b$H3tZwQ}}o-mFs8fSTA9;?G>j>pgH1l*AXdR$4{QwkTqz z)hZS?V$YZucM-j(wX*Lfn0BSK99~v7E)1?D+C>nFFRGA+DNhP4J9PkH)|x|bL{JJX z#Bi+|6JnpVC2-6OZ!7Vgut8UifV*hb<#$WRW(Hs-isn~qB5DsuyeG-62Re86be+-K z$*|h!cwQuk?+8QPJJy_cXjGIqZw}86k}^nM8j)ZzUdfWskb3vPQ&Jn95N7|;=wI=E-r;-crXR$1$bay99%Jt8R+Crhr77}8;NmK378X8 zkjb-3+zSmrvqRUw4x*`|RsBQ1Ei#5DS*0;I0v>EI*hyVI2C$sEr>r z5y_%XnR%v>=HQ(cAVme(c`AW#*JOY|3FCPY1;`+biWknMrpFQxD=O-VsOp^XkmxJA z+v4u#y=}e>h0O~IDZ`uz?b0?8Q3s`kRk3%P3ngn5D>-N zYS@>W9hYpwy+=%?xc#AFb$TMFLKbbl#{Vs-YNAXIx0n}CUL`s9v~g@ z`Wx+iSKEW<_#-qP_aLz2y{I`3Kbj=(0*p)iO?u7yHO&Kk=*32Mw z%5jME|7-8g!)+@6|BtU@3Q>eoDl{N*ka;RXj?7~sPQu|J#3339rCCZ!Dn%(3m6S#r zG)a9l5e-Ty4JzfMx$o=!zMpIFwGXcA`@4Sse$SO2=U!*;wbowiUiW<8+s9vovN)@9 zc#X*CGwNg7BcN+w1C1smpFThLR0p#fQIvP;Jd{=_wv3DCWw1w262kLE$v7O)3RKqS zGDJPfHZ3xheKQ?_d1?NPD&tCYTB)plVWQ^bZAprl>YEO0d4$gxnj=;2OYhl+WLX=U z*U(ft2q}kEQY}?a77SG=_SU|kjNrA;6pi-j3f8-Bl?7`j(G(-~i0H1;^r(K)unbYi zzPz4pjme5)wyseqv3a~q_ewJ@IMhA3fnK4lCetMLWx9AHA5r1cIw?u z)0|Ud<5D$lT_=lhevS1shs$nN&(I3U-LQ$^c2x?WmN&3^C2MGCj8`wXXKpHLdiJfP zK=C|`2T*EfD@Li59*&||5GNUG(M+{u+C2}0R>@y{+=fLn<-48`E82TUnMYH`Q2XPd z2U_(l8)=}5*`)CWu&z@zh$yo7Vm^M~Y~Fx3b$PAZ6a934 zl%CC#F8ZhLwiScI>s4B_Q}m}fJfdoK89zCkwN=#xvuXZcC>Dn2 zAY;^%3M#2)MURuVKXp2Wxtw`wqPI>F)gD!dP%fjgjz4c|XtR;kUJ?jnKJ>x8n4?G< z=TbTc@6c}7wJob5SbKnX7^>AX)N552u`50{PsQ!b45dS#IN^xvc^;GWQ59RM`Q^t& zO0Re8BC5A3B%T@lk6op*uJ<@HDt8M>eO!tScOl~^b`n5Ut6!=gzR+2VdTZ;eRhnBkeS;cH(1B zWl1$w47V22e7m6PIT<%Wr^Sk3anVe}q>( zY%;|VO#!z3DSz{X+Vc@hOmj72SS8B%c?$I(g=hot{i^3;%n*%?3U?;a7-`7>d0PC~ zczd7nGp|@GD~=o2!+YZ#JfrMGbG@RFx4h67qqrA(3av#U6c$pMl^&T?Ur?^*NBVQC z@|)elkk$EBQjvwXC;|}cCyqSd+h*)B@{Tnhf*-}x5^V~$KRBU%*pl8vF)}2#DuZx8 zYz;5luP&^zu7b&Gt-DrG-G?J9ubt?5yYf=IHYyo-w1_8Uj~QYUlWF8;UW1LW zOf@VV7kC4bHL)w_ zX;xp|&S34~Hxk928 z<@MK4qzN_dTT@Ku9P5D6m5jycvVhqoV2oEZ)?^C z(=cKisBQ(zA!EG$>QO~4I<^{w4FpW}JXyIeOvlkxo~%I;8hsxs&>jUSJ6qC4XSGf{ z%(PGnV8g+@w?h%f&fVgf4bBM56@(d0$=b55H0n>1H;w6bSn3jpmMZ7VwTk_!dn*=-8+gvBa@{CHKTZQOGrm( zmr#*V>m-EylzOxJz0_x*>Gdk***U1V6IWC1%4)SA@6J>IkS>K*7z#y)#2~a#81iH$ z6tz<&q%h*cMq{fKt@~je;hr!kRm)5-z48zmw>?LrWE#5o)D38(kn|>7QlyhjH1XJM z4TQQHHejz|v!;>ON$92VOrbeVbyI)HecA(K$C!K(a*t3_i)(^@YUxhsj6s*7&dYqqLS?M z=wpp0$3;3zHf`c*NMt>&v{Od0ORG4|V7|wdwo5GJ@6n zdua?yZttFb+xE^;)t@#KO`7nSVdY`ZF}&qNkxl2S3bT!bjb~P9uc2P0B{cNBD#23C zJd~L2EIk(pPm?Cz7UbJ?v60n&eL|9$DwkTk)b4Bqjn#^x@#kw1q)9eVL8VW1yZM>q z=8jMq#OoCPzf?E3)s@v@XpPBqL#yx^R$B30}8Z5&oeZ>+~y?T(=n&1$$_Rs)Sd8}5SAra3 zO=Rn1+QqY$dwuXcE8zH*48vSiX0h^)C)FX7vPLAuU(GL7LS*f;Die9ZabkMROc<7! zqXgJKmSV8)(z7c&kk^`&H*3_k_V3LaUM5vx+j?k~LNgS^(&2bSr7g##vK{St>H3pu zr1}Upz(eD>t^L(LuMG#aHeL;G4Wm{H^;xN&85XhA`FVjWb+_V+9o8Y5nkwX2JusaX zSyP7g?cJnaxX?ir&k}1I`jUVlH@9}=WS@;^3n7C_J?Ne{jZaNCU`bf-9ae<0&!8)9 z7n8;`oi@WnLz!4vka7!Ex8qU8;m|guB)mOD9xJPPqN7L3<`CM%ph5*kb$II&si(?^ z3i`NIHPzUlEvu$jDq%5%5vfW5m8G=PWa~a1)U}_g`TIktvUo^o?P~{97uX&bol|O+ z$VjVp*oo))YpsTt=Usgn(?dL)@Wo3q8X`5-vSW@)TVdho^fA=o>8o*^mD62KiM>0t z>)x$>Zz~n3B;*;Ft#Oj-TeD^zf6#sUwU2PhXmV9%Xv37f;29SN$3;6#O%3yTjT+*~Oedv4ww8bw)hx}7Ya%wX!D5HCRcYwG zj;o$9YdrF#ND*8KC1*32>Ohtvbzu5CD`KUU+!R5Gw@ zsZz4981Cf(>r)MLeZq2ViG`EAiOEWsepIiP`cph{q_u2oDx_znRt?d8of57x9cQ}A zaSOREPnBrK^W5B~0c$#^Vuc#P5_2l`wz&C0DT}6C7d~Z`F2X=ZPoU^A^V6VktSsC| z0s76-&h?SQ5^f>CN!<+9RP0H#Cguy2^m?BRH_EGX?b^1>>7d20Gyp`ClT;ZGWdg71 zD8&dL-7mg1R55tMMw(b@KqCZ|1INjmKdbQ=Wh+)%GnuvdPHND^CK7oAmq&Cma8FZo zX6XgQBcIY4@(CNJ6w)AFL47`zJ#>mz1W;NLVju-Cuh)dhr+)V7p%q#?!Y-Q5HLN0M zv%r$~LDf!mHE5Anqd{0XGIc2xebkx|u7|gX#O+D;klRWF@rb!N7gAoUBDr^)q*gH| z<4>$$V|Pro7F`z0q(Y9S%Vdo})_k38mXG_jlr`usYPO3HNRCeMB`L{eMRUgt&CbePd zQ&Q)R6V8l{^#>xgVMt{v;@Cx^iL$MpAl<`S-Gx=N~f@yXTE!W17% zz{9X7T^Nh7O3dR*YIxLbbb%-HDo@38*?q#WVwWldUZbQZAv~_W+=WgpHP$t?rbIG_ zvl3GB;#!@d`6-sX>MwM^h5-|yi*(=7ed(g8=ft5%W6><`>f&%-Otm&1OF5N&`tuT+ zO$rThwO4uy9L7R>VOwt^{(C3c{u{1R(Jatwje8tb2piyju;l3i(`wnWc~E=juUBaGAEXEr9Yi&;t7#yZ z=;X{?XCf>RVj(H zFTVou;yK>=MW?RK$gqjtAxE?YWbFdm%70;19;@eM)-1xDd@pn2>6G&dAlYBxls0~P^8+k`*vo*&rKA91^5YD{u+z_DK| z&z)4iOs&`MTjS4c^&sXhWuzRbuG>`F>m$W%?r~VLJs$TJ*1z$6W(>a48G5NsPp)?h z6)Gls#*jF;?;vDa-nU^^&J$cP9uHnuyj!YYtr}>Zq@c| zB!cBYmI`Y4qKeVVi{k3EBHn&i@$znqj3zCQ4Dl5RHE9YG_LzC4+W%_xR^@b-`+5P) z8;aFLXj$7us$%;BA(>;GQY}1cXUk#vu;J7_AZ<@3q$&)jmgz}NR|y^ZYTJ)nnUduLJ-UjIR<%#8E92i9uy5Cf zCF}dlX0v;c$X@gs?@0G^wv^Cztq9F@%#UIRz4*$1k_5UqeT~PP`d(rB|+>d>y6|3oFqOTXAr`A); zWcO5DUGxqF^*dVY16_29qPkZmY?V4M6)OhsXIaCLS9)HQ{yGkNf)cyRn8O;U3W?Rs z;?5<{`4aC-or2GZ+y87wpP?Qa*3;c6mQiOmw0--_C_T=q$ zEIIFEic}Pi*GTZr8r3junE}1Yim0jlD3w5YqnGzpCl}aB)q1QN?x{<1z)~t7rjai* zAG0#464rPcN-BC3qdFi(BO5bX{Oc$;*d(Of#(`sdmOP~~sJmXBY z7I~AEVpE|}eH7vJT3ZM+jugoz0;Ufp=J)#p=mY5W`pk%|6h)n?T5MOhg;tF)hrzC? z9)q~pk}(F;;$i0Z^fiXqmWAK6St1&K56pCMJqyu9ctJc}+Di(L|JJ3-xp~k-Eiw z0CD=7EXal_dun{OL?k?xsrI1c9EAPs&eO`ckYYVZVU)r?Gf8sCj#Q6xa@bgCj|v6W zRI`z;uy;aJld;;KZbw*FmtMMfp$J`VRWw<@E3WzIhFfo{I>=P-414t^uiU1(y`kqT z9*hz<-!ewc4wD!P5*MiL)fq)}Eq75bO}`dd@$9(#+L&nXB^Nj4YM50ufAU{&3a_axdj z5_i|qX{~gT_^u{3O4~3>ouxMfl6Kp)1#OClFs3FdFd~96N};dO`f+T=h9!J)=9>P( zh>UTJ`=7X>1EohRDv)YQ^eAl!l-HU({kM5piBV>rFD4fhkBbG#DO2gMO^Y8aAC($L zd4x>WhY?vfXL@28H`uyfLdu#NDXP6_L4Miki3}z%!=@hEaY>Ryt$nyltk}Vs95Vw4U>R%YrqC?xLjrdW~)1{iR zwMA0u(lh1Pz3}%P=xkHHUa1vcXom^0!Acd@J4&g-5=~{$8Zs1;h4>*21HhOl%QZ-R z)1S6jR1M#Ag4H3=BclfN>>y! z3RqzcX}?we=PoZx2hCRjrpt=NGax)_~o2mRURwN6Yx62L^G&(^Hkh z3T>I+VPfOhH25La<)|?*iG(OsCil-CzN#*sOrZo)7u6pA`0H^JZ;UGe{=P)%ESVTu zj<2S%)Hi&vct)Hy#0zi4b18HM)f1%kms6|b>fsK<%&lx01~SDbXT#qtQm1ylzg0MW zcz|_zTT6&$D%i@}q5V1(B6Z`eAI6I-DhT=G>hr&%u*`?H?K^_bZbf?00NcABV0+&KY#(%h?ZXeS{rm%LpLBrjmmXmItOIPn z{s7zO71|!h18t7F>!07pGs+e((lJDYv9N(cP!hZhQ0E)+hpP`FB=uwBvgPtmAqI-uW*M%4?2k1G^DzEJptj4NI&`uX4T zdWAjvcIC37L!+9~K80{`!rTce*hr<7C{}wOPKV_ra z6-Zyjve8rNKkB!GqxT5g`4rJ7{8YwikcD?C9H%)J{zu_B&K6PpC`pvExLQQ6|B{=QJ*6BFSF74Dk|zo_5s$MUT5Il$B{+>{v47gv_U+MaeiJC@c0v7Xf2eHP74|4jqx z_y1QPO}C%F`IoAMfpUq3M12HXBJAz0R=V2fm0riSzo=em-!`lnk{MsqlGuq?n3Esa zzEf3mX&W@F9|qpD2zF+FQF;PcgHsag>osT^=4ES+VklB4{ua9J!aC93^|Q|_l6z{H zcxUs(?+qFx1Ie}h8Z>5An)JCPmjTpBUsX`Oc{u%o320q zo?L_a8fWa^Qy5n@(l1OdPuL*2Zeg?dJ$_3SuPsVv<&Xv|%e3daNT(<|#kMOUZD--O z;Tf>7r>!mQdC>M|QDnJLk$NGWFQNqhBnvl>q6X#}QKVm^BBv{FH?yOtli4(idYan# z*=Ca{8e(>gqI|Pu>NOi7@ zuA8MJ zeuX{l{Pq4^%*RP+d7Sd;>qg&+!*jMa1`auw5_h_Xs>5>tRdmgxzoe z=HUdq46ngk@m^ex&)}=L6?ftuETVgF=XWR`kM;3X?2P?!0#3v0@mXAtAK}-y2a6U9 z$1RUlu`ag6PIwj$$7y&2F2rTH8ehft@eBMJmA!}0kH=zNY>i#<92|`o;njE>F2yHt z9lnp-aW`h^fwKEh4y$4|w#F_v5J%xuoQ?DGeq4pG;CuK5{)|@r@c4koVqI*7UGQwo z!-;q$F2mLMD!z|j;7|AumQliG=W!I)!Y0@rd*Qh_7B9hT@LpVjui|@XX{sHs64u71 zI2gy{47>^N#AWy@zKcI%(bC*!JO*oHQ|yU@aWqcBSvVK(#)t7k+=hSPLCQ$%b5_La z*ctodaGZdb<8`Vh8MvLvS2kir3=pxD;36%eWCg!yoWZETw9@ozD??A~wXf*c}Jq zXq<{y;XHg0SK&+e4t|2);$Ezz%CVi#6?g|efg5lO{)=T)Cb0K4z|*h`o{i_@rFbpg zj!SVBzKk33GyD@vsQ}{F4^PB~*cQ9vARLWT@hV)4@8GBS1O9~vt3YSRJql04j@S=} zV*$>v;w3Z_fR|* z>tZYHi~}$qr{Gn1E8d4s;LG?fevUukzj%nw#m?tgtc$I%GY-HD@k*SBOK>H=gd1@i z{)qozSv7~*@sGxnu?2R*{x||B<1D-d7vtmjBK`+I!(I3{mQjVk&Z7#}#^#uVXJH;r z!kKt8-iwdnT6_mT#UJo5JXjSAJCCFABy5Hqu^$e{0-S+!@g7`_ui=OI75<7vRq?Rn zABNSjKAwi%a1f5ci*YXAh0Aa?zJ@>GA6WJ%?gKW)u6PdS<0QNSZ^VW8AU=h!;1~Ei z7FRQ?e{QUbb+8pq!I$to+=f5kA9#=&!)?D6u{vgBOU%K3_yVrSk*dJkehTm=+=5@@ zub6dgc>N*R9v{Z1@l|{ex8d(tqH5Sr1+0mUu^slr@i+}{#JlhXd>gmoPW&$xs}_#i z5ZhvRJRc|HBf6@hqH%58#vd3U0$) z_!pKwE*!5i=Hf6MhZo~)oQI2X4Ss>U@J}pxd^k=eJPzw&D;$c~;Cx(ykKqfr9yj9- z{0;xXVkd;-SHx^=i8z=gOB*WicvCH{g@?Qr}GcqCTE6Y*qhfK9PAw#S~Bi(_yq z-iZ(6Gx$1wh+pC_n00bE&qMJTJQ-VH4)()gI02{O4Y&}W#x=MO*W*Uqj9=kyELSI- z-!a${bFeR-hvV^5yawmveYg_W;s*R2ci~@Hs%|)s!|?=cfTv=A9F7z4a=acF;8I+L zFX2159sj`6*~BZXigmC#o`JpbT%3gu;3|9x-@%XZTilDq>V@NT4Y zaT%_{m+&3jiT}l-^}}(?;W1bnn__$HiGy)8&cvno1ipyx;HUUK{(&VM5D)MKJO$fe zH#`SN;S{_QZ^3(UEpEau@n4#a%C5NF}dcn_|?=W#uLgkR$xEZR7n zM|rG@+1MJp;6NOOv+x0Y3SYu^aU1T!qD?q1R>iuQgZ*$APQYn+11`j6_$t1SU*J#p z50+^f&f_Sog-x(M_QG>)QI@e-VY^Y9M52bba_xDubi*KiAN z!yWiNmTVQS$01k+YhhzN9nZmhoR9b6KEe?{v{w|ev;SOrhQCO8;J;}o2Q zbMbC`7@x)sxD~&_J!oSP>^u&|qp>zN!!xiCj>pUJI$VGc;FGu)OP$8?uo70m7MO$M z@DjWlZ^gyY(LPS_8J;&{9a=i?H53}3+YxEa5~-?7B$;XEqhaaa#qVJGZ|m*9=~0ItH9 z@I(9w|HjhoxDR+Do`R=g7d#vDa3W5_>+ueJ5TC+z_!<6-2e;=u@OZ3`t?^7e3y0x# zct5VhwYUMd;Me#omhBLZe-zflmG~BZggfvTjLrz}FN;TEO>Bg1u_q3}(>sRukHD#T zInKiC@OHc(SK?aSfLpL~PS}4ow!|FlixY4fUXKfKDL#QO;xA|evAmrUkHVVR2)p6{ z9EBI*HMjsj#O?SK{*9&2497hJPrzGoF+PeVI)~R+!0K2RTVM|M#q)3+UV?M*PF#jh z;VZZiKgI9x{4U{qF2>n74d=|gJ-Dm@;z5IqpV{L4P zXJ8*Z569zWI2RY;a(oWo#Lc(^f5jsGxbAo?*1;B-gZ*$APQ)wlCR~J1;cK`FciLYq2c(4U=^%|jq!Bsj_07h(AU%7$v6k^#K-UjT#p~&4*Uh9VPSt| zu?jZE)3H0AgQIW?UWvEhJ-7m2#Mkg`{20H*y;y8`IIr?}ES`+ba0qHiJijg%<7~Va zSKxE_27ZFyV~M=5p9)wF>th@2f#>4+coANOx8O=#hwE`8Zo*G+JMP3EaSxUm5zey` z9*6a?HFm+XF%JuHI^KYH;M4dTet_F?H~x!dMuzh_5^G>XY=d2K0FJ-{oQ^l(9rzGF zi?8DcxE=q(()rI2xzoRX7h9<72o6H{e#>iF>j5DB=@V$9mWrJLB0n z0w>`Nyb15dNAOvE12^GU_zRXC9nR+{tcEqP3AV!lsP)tR`I?S5;2rn?K8Y{mfAACh z4)g2S>wa;55X!}4}0K1%)<-t61*C3#l`q2 zK96tWCj1hA#)B^i=W{qV#nZ7Xo{M=n1}EY)ydGb|-S{t-nGlY56xPBf*dBZ15S)V# z;c9#p-^b5!7ygN*Cx+wJz=qfcyW#*GiA(TNT!$O+8~hcE6olh6#&$RW^=+K~TusKA zI2RY;a(oUq;-~l>{)WXTh5a6eRk02>$1`vMj>O406X)V0T#nD-o46Tw;ICL@ayXyz z*a*8}9~^)~a3W5{%kfHFiEHsa{2X`TpIGw3a2}QLIIM@QuoL#fVR!*vhS%b4cppBF zYw#`n2*1WXSab^42dm=gn1kK04-UX{F%QS!1e}Uj;XGW7kKr2JfLn1Vc9|N^a{!LS z$v6||;v!s*&*7W68F%1C7lr-L##?a-K8|bgZTuL&#ow^R#bJLH@i?rHr(zczfcbbK z&cd7V9$bOX<9hrW_h7M0!g(Bq)$laziUTnpFT`1RGv0$M@CAGex8OJUUo3Vh=YiEQ z8(ZO-*dLo;7T(tp`{Gc%0AIk3xCuYO?YI+v#OU&{|FT#G+hTVdgrjjPUWM~;F+PTC za070|owyf^PYdT!0jpy@Y>l1qY#f1;a52`I9`<+46~WK2{EQGj7Mo&w9E79rcDx@~ z;#%B*TX6^ejDO+5GsAI@#G2R`+hI@4#q;rEyc*}@eYg@|#CPx${0@J|gJy;Esf5R4 zYwV0?;|QFD*WhjV1pWs<#UJobEOli#?h$w*HpI3#5J%#LI1}gMB774!;|}~4i(D0s zTMm!KI@khpupbV?2{;XJz=gOBSL3VrK7N5EXNU7R98bVgunl&@b8r++!Nac(`#B!# zV{7b;{ctE=fLG!zcrQMSuj6*yjnOsXxQF1;SR0#RK90jlcri}L*?1e?k5AxM+=+X! z__g6YDqwZ2hpn+Qo{b}L63)Pz@NRqrpT#$D6MluiVAgfvd=AB9upRcsd@R6K_%g1$ zDePy{++hCA!2(>3>+oIt48OjuJ zzf5?eSvrb7B>ah4B8tApzs*uwH)LMeUddFrx>-r!uOe#qUce4)+`o9Zxa5%)c!xhPuaec@DI3~?SB)_x;4D7gjq@R`c3V( zD&g8@QLO_*xV@?4nR@@dxRmXW6Mhn(HTAxCaI2~F+d=pr zQ~N10KUfYc;*qA_U(?j}%{KM^#-=`Bd+f&czJ!P2Shi0hJQHtV`#i!+a5>vo5q<^V zX8Q+(zr)V{LXOP3Yd+p@J#HFd02o~;2gXgm*eyJ7H-Aw@J}p#S2&L&u@*MP zGq5iX!-;qW-h_*A1-^hA@MHWA|G-jrhx4e6HL(eHz&C*X9PgLmU{d>-Gzt@the zfh87kU$7e1#Wpws3-DUJ4PV7AxC4K|L+=U4se;Y03!aU6I1#7e0$hqu;EVV+ZpCkK z4_3W59RDP2hdpo*j>22;9$b#k;_LVUZpYuS_~LN9I(RDf!oir2lW;oThj$0m&!TQ()TjA-LgWa$X4!{vO8E4{LT!hQrT8F)3`i1Y9cycbvC2Hc9@;2tdXKsc|%@dRvur(%B` zjuY^5ydD?eQe1^E;XAk;|G?4@hV!U^)vzwMz>e4lr{Y3<5TC@C@jv(}euuwd)n(!M zjj%0t$9$ZOGjI;xg%9GB_%eQi-{M{@_E0!(c{~>!0YAa- z@OM1q;cy;DV{L4Py>SSR!%Oj6yd9U~D%^;l;ScyHmU<){{|G!08)94Rj)QPCPQ|Nm z9xlPhaV@@$ALDoU2bNkM&Zjcg#17a8hvEdBj&tyCT#nD<2K*Sm!#}Xp3XYF8u?cp- zKDZd4!1wWU`~`oj;{sfS_v6F(IIhMu_%3e7Pw`8P9uL=}1XjRmSQlGh9~^== z;+?n*pTc$cE`EmJ+=f5kA9&Cc;XEqh zaabQu#V$A!C*w?J^UR1#41mR^QnoA@HFg# zXJZ~t#A)~dp8QPMUwiC{gK;!Y!C5#L@5YDmX?z1e!e^ch$N3C@#=ZDA7JDwdt~?%# zCu1}0fW2@I-j6GBEpEVX@i#2~d^p}=SQYDFa~zFRa2C$RyYXRMhwtJSxEqVSz;Uq~ z4#bf-39rB#aUmYEChVsQ*22s1TD%?a!^d$gZon=0HU5ev*M{R%!sD4~ODc z_zOlahW(YrlQ17A;|!dG{Y4tM^UPgGeSvQK_W&1X^ z|3SFq>*0MRBUzmF<7EZHN8qt|9G-;QwZE^8S&a4TWoN?OaX9AVcr3tc@CKZRx1);f z-p``qhO1=K)no0xkDKu`+>U?ZzgQwGystEt$4YoI*25;)0()Q|9EiT2eNooqKa_R; z6|QW@)peq^T8lHf)unyM8M%WBnVH<3ZIoJhzU?1#{=is?G3`gP^9FGM! z1uwyAI1^{%bvOra!P{^lE;4mpm*4}YuJ6Nm)3>I? zx(~Go*CCukxC`NtgvXfL-!#HA3H$kJfARS}%HN;h@2?Yni|{tWUlRU}@Lz<>S$x<2 zDw;Z8Ey8sOw;|k~aDT$*5FSssfUtc(obB&A!ixwmA-tOKbANoqkK7E7BM7?{QeZQ`qQiJRUk$sy`{@A>6VXxtDQMP{rub+gSqJ6LSxUoZrXBUjr zH%#)4HreOt`wjgi!-m_J@PwU&--n!co_(8P;;;HL!DMjAgdt-`49|G~zFX`oc6BPg zcb#pNt#7J5-@e{AT&a%T`qm9!T$(se-URy+*#C#0DtfIRAG_85(@6h6f!__?X8+07 z|C6uludt#<>L-5PsoJ9GIm_}^~|CXQS&u0yV^{D!BOG{#%M%!$Eb{*{V+WC#rzvTWNRNxqGi+|$%3YwUGP_&q+qlk`i!La(!+ns_ok$27gp($)B<8o#K?G~;tL)92`+ZT2}VuEd{1 zRY%{S#SQ!UK0bjE^uO7!FYBM3XZ$+*rCQ>()$}*}Q57TOxU+R!JDwfau1|d2PxQOp z=XihB6q)RA@lX8w4sEdG#y|GDvaiRX^xwYFrsRFQO~-9BI2`wI{VhK3ZvCFzU)>E_ z7fEH)_$U5bG5r$%ZhvdFN#Ey`*pT{Fza)>l`3+rXZL`mNr2fUnt)OkG_h|bgo1VA+D_W};+5Rj|iT78d(EhIfD3p`*690+!cU+MRTWw-|hdlKl|5R|1;y) zeW*fe4~65O_;sE~#~Wo0`w)qrI5bAT#J}60Yw2}k67keNul +#define INCLUDE_VERMAGIC +#include +#include +#include + +BUILD_SALT; + +MODULE_INFO(vermagic, VERMAGIC_STRING); +MODULE_INFO(name, KBUILD_MODNAME); + +__visible struct module __this_module +__section(".gnu.linkonce.this_module") = { + .name = KBUILD_MODNAME, + .init = init_module, +#ifdef CONFIG_MODULE_UNLOAD + .exit = cleanup_module, +#endif + .arch = MODULE_ARCH_INIT, +}; + +#ifdef CONFIG_RETPOLINE +MODULE_INFO(retpoline, "Y"); +#endif + +MODULE_INFO(depends, ""); + diff --git a/kernel_modules/8-kdb/hello_kdb.mod.o b/kernel_modules/8-kdb/hello_kdb.mod.o new file mode 100644 index 0000000000000000000000000000000000000000..b0871144d3a461c5035319be99b48a4de70eeff2 GIT binary patch literal 30204 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 H^~L7jmI|t< literal 0 HcmV?d00001 diff --git a/kernel_modules/8-kdb/modules.order b/kernel_modules/8-kdb/modules.order new file mode 100644 index 00000000000000..1c4a22c9901c68 --- /dev/null +++ b/kernel_modules/8-kdb/modules.order @@ -0,0 +1 @@ +/home/osboxes/linux/tools/labs/skels/./kernel_modules/8-kdb/hello_kdb.ko diff --git a/kernel_modules/9-dyndbg/Kbuild b/kernel_modules/9-dyndbg/Kbuild new file mode 100644 index 00000000000000..a0d5f3af5202f1 --- /dev/null +++ b/kernel_modules/9-dyndbg/Kbuild @@ -0,0 +1,3 @@ +EXTRA_CFLAGS = -Wall -g + +obj-m = dyndbg.o diff --git a/kernel_modules/9-dyndbg/dyndbg.c b/kernel_modules/9-dyndbg/dyndbg.c new file mode 100644 index 00000000000000..e9071e5a723535 --- /dev/null +++ b/kernel_modules/9-dyndbg/dyndbg.c @@ -0,0 +1,32 @@ +#include +#include +#include + +MODULE_DESCRIPTION("Dyndbg kernel module"); +MODULE_AUTHOR("Dyndbg"); +MODULE_LICENSE("GPL"); + +void my_debug_func(void) +{ + pr_debug("Important dyndbg debug message1\n"); + pr_debug("Important dyndbg debug message2\n"); + pr_debug("Verbose dyndbg debug message\n"); +} +EXPORT_SYMBOL(my_debug_func); + + +static int dyndbg_init(void) +{ + printk(KERN_INFO "Hi dyndbg!\n" ); + my_debug_func(); + return 0; +} + +static void dyndbg_exit(void) +{ + printk(KERN_INFO "Bye dyndbg!\n" ); + my_debug_func(); +} + +module_init(dyndbg_init); +module_exit(dyndbg_exit); diff --git a/kernel_modules/9-dyndbg/dyndbg.ko b/kernel_modules/9-dyndbg/dyndbg.ko new file mode 100644 index 0000000000000000000000000000000000000000..3379fe79a466c17163937581c1e552cfde600f54 GIT binary patch literal 37836 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 +#define INCLUDE_VERMAGIC +#include +#include +#include + +BUILD_SALT; + +MODULE_INFO(vermagic, VERMAGIC_STRING); +MODULE_INFO(name, KBUILD_MODNAME); + +__visible struct module __this_module +__section(".gnu.linkonce.this_module") = { + .name = KBUILD_MODNAME, + .init = init_module, +#ifdef CONFIG_MODULE_UNLOAD + .exit = cleanup_module, +#endif + .arch = MODULE_ARCH_INIT, +}; + +#ifdef CONFIG_RETPOLINE +MODULE_INFO(retpoline, "Y"); +#endif + +MODULE_INFO(depends, ""); + diff --git a/kernel_modules/9-dyndbg/dyndbg.mod.o b/kernel_modules/9-dyndbg/dyndbg.mod.o new file mode 100644 index 0000000000000000000000000000000000000000..d175844467a2ffd417abf5c9ab5baf2183a34d23 GIT binary patch literal 30180 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 literal 0 HcmV?d00001 diff --git a/kernel_modules/9-dyndbg/modules.order b/kernel_modules/9-dyndbg/modules.order new file mode 100644 index 00000000000000..ad49e8374a1b86 --- /dev/null +++ b/kernel_modules/9-dyndbg/modules.order @@ -0,0 +1 @@ +/home/osboxes/linux/tools/labs/skels/./kernel_modules/9-dyndbg/dyndbg.ko