From 42457989558c61629e460f635482354411e22f22 Mon Sep 17 00:00:00 2001 From: Niklas Gollenstede Date: Mon, 24 Nov 2025 15:04:26 +0100 Subject: [PATCH 1/3] fixes for A2 mostly include some things that should and remove some things that shouldn't have been included in the handout (yes this does hint at some places that need to be touched for A2) --- .clang-tidy | 22 +- LICENSE | 3 +- kernel/assets/osg.h | 3175 ----------------------------------------- kernel/boot/multiboot/data.cc | 6 +- kernel/main.cc | 1 - kernel/memory/pagefault.cc | 2 +- kernel/syscall/handler.cc | 4 +- kernel/thread/scheduler.cc | 16 +- kernel/user/loader.cc | 1 - libsys/iostream.h | 24 - libsys/rand.cc | 68 - libsys/rand.h | 9 - nix-develop.sh | 0 tools/build.mk | 10 +- tools/cpplint.py | 0 user/imgbuilder.cc | 69 + user/init.cc | 73 + utils/flake.nix | 3 + 18 files changed, 186 insertions(+), 3300 deletions(-) delete mode 100644 kernel/assets/osg.h delete mode 100644 kernel/user/loader.cc delete mode 100644 libsys/iostream.h delete mode 100644 libsys/rand.cc delete mode 100644 libsys/rand.h mode change 100644 => 100755 nix-develop.sh mode change 100644 => 100755 tools/cpplint.py create mode 100644 user/imgbuilder.cc create mode 100644 user/init.cc diff --git a/.clang-tidy b/.clang-tidy index d3e9cf4..c13105f 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -1,6 +1,26 @@ FormatStyle: google HeaderFilterRegex: '.*' WarningsAsErrors: 'readability*' -Checks: 'readability*,google-readability-casting,google-explicit-constructor,bugprone*,-bugprone-narrowing-conversions,-bugprone-reserved-identifier,-readability-else-after-return,-readability-magic-numbers,-readability-identifier-length,-readability-braces-around-statements,cppcoreguidelines-*,-cppcoreguidelines-avoid-magic-numbers,-cppcoreguidelines-avoid-c-arrays,-cppcoreguidelines-pro-*,-cppcoreguidelines-avoid-do-while,-cppcoreguidelines-owning-memory' +Checks: > + google-readability-casting, + google-explicit-constructor, + readability*, + -readability-braces-around-statements, + -readability-else-after-return, + -readability-function-cognitive-complexity + -readability-identifier-length, + -readability-magic-numbers, + bugprone*, + -bugprone-easily-swappable-parameters, + -bugprone-narrowing-conversions, + -bugprone-reserved-identifier, + cppcoreguidelines-*, + -cppcoreguidelines-avoid-c-arrays, + -cppcoreguidelines-avoid-do-while, + -cppcoreguidelines-avoid-magic-numbers, + -cppcoreguidelines-avoid-non-const-global-variables, + -cppcoreguidelines-owning-memory, + -cppcoreguidelines-pro-*, CheckOptions: readability-simplify-boolean-expr.IgnoreMacros: 'true' + readability-identifier-length.IgnoreNames: 'me' diff --git a/LICENSE b/LICENSE index 72c95aa..0422767 100644 --- a/LICENSE +++ b/LICENSE @@ -8,7 +8,6 @@ Diese Vorlage dient als Grundlage für Lehrveranstaltungen und darf nicht ohne v Es ist erlaubt und wünschenswert, diese Vorlage als Inspiration für eigene Projekte zu verwenden, es wird allerdings erbeten, dass die Vorgabe nicht mit deiner Lösung veröffentlicht wird. Wir, als Lehrende, möchten alle teilnehmenden Studierenden dazu ermutigen eine eigene Lösung zu erstellen; eine veröffentlichte Lösung ist ein Anreiz zum Abschreiben, den wir gerne vermeiden möchten. - This skeleton is provided as a foundation for educational purposes and therefore MUST NOT BE DISTRIBUTED OR PUBLISHED without prior, written consent of the copyright holders. You are free to use this skeleton as inspiration for your projects, but, please, do not publish it along with your solution. -We, as lecturers, want to encourage every participating student to write a solution themself; a public solution is an allurement to copying we want to avoid. +We, as lecturers, want to encourage every participating student to write a solution on their own; a public solution is an allurement to copying we want to avoid. diff --git a/kernel/assets/osg.h b/kernel/assets/osg.h deleted file mode 100644 index e09d7f8..0000000 --- a/kernel/assets/osg.h +++ /dev/null @@ -1,3175 +0,0 @@ - -/* GIMP RGBA C-Source image dump (tu-bs.c) */ - -constexpr struct { -unsigned int width; -unsigned int height; -unsigned int bytes_per_pixel; /* 2:RGB16, 3:RGB, 4:RGBA */ -unsigned char pixel_data[100 * 100 * 4 + 1]; -} logo = { -100, -100, -4, -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\341Ld\377\356\226\244\377\356\226\244\377\332\037=" -"\377\353\210\230\377\377" -"\377\377\377\377\377\377\377\370\322\330\377\341Ld\377\332\037=" -"\377\332\037" -"=\377\375\360\362\377\370\322\330\377\365\303\313\377\351y\213\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\337=" -"W\377\356\226\244\377\346j" -"~\377\356\226\244\377\372\341\345\377\346j~\377\332\037=\377\332\037=" -"\377\356" -"\226\244\377\377\377\377\377\344[q\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\344[q\377\377\377\377\377\365\303\313\377\341Ld\377\332\037=\377\332\037=" -"\377\332\037=\377\334.J\377\351y\213\377\332\037=\377\332\037=" -"\377\332\037=\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\337=" -"W\377\353" -"\210\230\377\363\264\276\377\377\377\377\377\377\377\377\377\346j~\377\332" -"\037=\377\365\303\313\377\344[q\377\332\037=\377\332\037=" -"\377\356\226\244\377" -"\377\377\377\377\353\210\230\377\332\037=\377\332\037=\377\332\037=" -"\377\356" -"\226\244\377\377\377\377\377\356\226\244\377\332\037=\377\332\037=\377\332" -"\037=\377\332\037=\377\334." -"J\377\365\303\313\377\372\341\345\377\353\210\230" -"\377\334.J\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\353\210\230" -"\377\377\377\377\377\377\377\377\377\356\226\244\377\351y\213\377\377\377" -"\377\377\375\360\362\377\334.J\377\365\303\313\377\344[q\377\332\037=\377" -"\332\037=\377\356\226\244\377\377\377\377\377\356\226\244\377\332\037=\377" -"\332\037=\377\332\037=\377\360\245\261\377\377\377\377\377\346j~" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\372\341\345\377\377" -"\377\377\377\363\264\276\377\351y\213\377\353\210\230\377\334." -"J\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=" -"\377\351y\213\377\377\377\377\377\377\377\377\377" -"\341Ld\377\365\303\313\377\377\377\377\377\370\322\330\377\370\322\330\377" -"\334.J\377\332\037=\377\332\037=" -"\377\351y\213\377\377\377\377\377\356\226\244" -"\377\332\037=\377\332\037=\377\332\037=" -"\377\365\303\313\377\377\377\377\377" -"\341Ld\377\332\037=\377\344[q\377\332\037=\377\332\037=" -"\377\351y\213\377\377" -"\377\377\377\370\322\330\377\332\037=\377\334." -"J\377\365\303\313\377\375\360" -"\362\377\356\226\244\377\334.J\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\351y\213\377\377" -"\377\377\377\375\360\362\377\372\341\345\377\370\322\330\377\377\377\377" -"\377\377\377\377\377\332\037=\377\332\037=" -"\377\341Ld\377\370\322\330\377\377" -"\377\377\377\377\377\377\377\356\226\244\377\332\037=\377\375\360\362\377" -"\377\377\377\377\377\377\377\377\356\226\244\377\353\210\230\377\370\322" -"\330\377\332\037=\377\332\037=\377\372\341\345\377\377\377\377\377\377\377" -"\377\377\360\245\261\377\337=W\377\372\341\345\377\377\377\377\377\360\245" -"\261\377\346j~\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\344[q\377\370\322\330\377\353\210\230\377\332\037=" -"\377\356\226\244\377" -"\377\377\377\377\377\377\377\377\344[q\377\363\264\276\377\377\377\377\377" -"\332\037=\377\332\037=\377\334.J\377\337=W\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\337=W\377\344[" -"q\377\356\226\244\377\356" -"\226\244\377\353\210\230\377\346j~\377\365\303\313\377\377\377\377\377\372" -"\341\345\377\334.J\377\356\226\244\377\375\360\362\377\377\377\377\377\365" -"\303\313\377\332\037=\377\332\037=\377\332\037=\377\351y\213\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\356\226\244\377\377\377\377\377\377\377\377\377\356\226\244" -"\377\332\037=\377\332\037=" -"\377\360\245\261\377\377\377\377\377\341Ld\377\334" -".J\377\334.J\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\351y\213\377\372\341" -"\345\377\370\322\330\377\334.J\377\332\037=" -"\377\372\341\345\377\377\377\377" -"\377\344[q\377\332\037=\377\332\037=\377\332\037=" -"\377\363\264\276\377\363\264" -"\276\377\334.J\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=" -"\377\341Ld\377\365\303\313\377\377\377\377\377\377\377\377\377" -"\365\303\313\377\334.J\377\346j~\377\365\303\313\377\341Ld\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\334.J\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\351" -"y\213\377\356\226\244\377\370\322\330\377\377\377\377\377\370\322\330\377" -"\332\037=\377\332\037=\377\332\037=\377\337=" -"W\377\375\360\362\377\377\377\377" -"\377\370\322\330\377\337=W\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\334.J\377\375\360\362\377\353\210\230\377\351y\213\377\375\360\362" -"\377\377\377\377\377\365\303\313\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=" -"\377\351y\213\377\365\303\313\377\370\322" -"\330\377\337=W\377\332\037=\377\334.J\377\370\322\330\377\377\377\377\377" -"\363\264\276\377\356\226\244\377\375\360\362\377\356\226\244\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\353\210\230\377\377\377\377\377\332\037=" -"\377" -"\332\037=\377\341Ld\377\375\360\362\377\377\377\377\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\344[q\377\341Ld\377\346j~" -"\377\365\303\313\377\377\377\377\377\377\377" -"\377\377\356\226\244\377\353\210\230\377\375\360\362\377\341Ld\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\356\226\244\377\377\377\377\377\344[" -"q\377\332" -"\037=\377\332\037=\377\356\226\244\377\377\377\377\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\356\226\244\377\337=" -"W\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=" -"\377\341Ld\377\372\341\345\377\377\377\377\377\375\360\362\377" -"\344[q\377\375\360\362\377\360\245\261\377\337=W\377\332\037=\377\332\037=" -"\377\334.J\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\353\210\230\377\377\377\377\377\375\360\362\377" -"\344[q\377\332\037=\377\356\226\244\377\365\303\313\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\377\377\377\377\344[" -"q\377\332\037" -"=\377\332\037=\377\360\245\261\377\377\377\377\377\375\360\362\377\372\341" -"\345\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\334." -"J\377\370\322\330\377\363" -"\264\276\377\334.J\377\360\245\261\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\337=W\377\372\341\345\377\334.J\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\370\322\330\377\377\377" -"\377\377\377\377\377\377\372\341\345\377\372\341\345\377\337=W\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\377\377\377\377\344" -"[q\377\332\037=\377\332\037=" -"\377\360\245\261\377\377\377\377\377\377\377\377" -"\377\375\360\362\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\360\245\261\377\372\341\345\377\365\303\313\377\332\037=\377\332" -"\037=\377\332\037=" -"\377\351y\213\377\375\360\362\377\365\303\313\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\353\210\230\377\360\245\261\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\334.J\377\351y\213\377\356\226\244\377\353\210\230\377\334." -"J\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\377\377\377\377\344[q\377\332\037=\377\332\037=\377\337=" -"W\377\375\360" -"\362\377\377\377\377\377\351y\213\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\356\226\244\377\341Ld\377\332\037=" -"\377" -"\332\037=\377\356\226\244\377\377\377\377\377\377\377\377\377\372\341\345" -"\377\356\226\244\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\341Ld\377\377\377\377\377\363\264\276\377\334.J\377" -"\332\037=\377\332\037=\377\370\322\330\377\341Ld\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\377\377\377\377\344[q\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\346j~\377\360\245\261\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\353\210\230\377\353\210\230\377\356\226\244\377\341Ld\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\341Ld\377\365\303" -"\313\377\363\264\276\377\377\377\377\377\377\377\377\377\351y\213\377\334" -".J\377\337=W\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\334.J\377\375\360\362\377\375\360\362\377\377\377\377\377\372\341\345" -"\377\341Ld\377\332\037=\377\360\245\261\377\360\245\261\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\377\377\377\377\344[q\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\377\377\377\377\377\377\377\377\377\377\377\377\363\264\276\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=" -"\377\360\245\261\377\377\377\377\377\375\360\362\377\341Ld\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\341Ld\377\337=" -"W\377\370\322\330\377\377" -"\377\377\377\375\360\362\377\356\226\244\377\372\341\345\377\334.J\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\334" -".J\377\365\303\313\377\341Ld\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\377\377\377\377\344[q\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\370\322\330\377\377\377\377\377\377\377\377\377\346" -"j~\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\334.J\377\370\322\330\377\353\210\230\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\356" -"\226\244\377\377\377\377\377\377\377\377\377\341Ld\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\356\226" -"\244\377\372\341\345\377\346j~\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\377\377\377\377\344[q\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\337=W\377\375\360\362\377\360\245\261\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\337=" -"W\377\375\360\362\377\360\245\261\377\356\226" -"\244\377\332\037=\377\332\037=\377\332\037=" -"\377\353\210\230\377\356\226\244" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\334.J\377\346j~\377\351y\213\377\334.J\377\332\037=" -"\377\332" -"\037=\377\370\322\330\377\353\210\230\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=" -"\377\341Ld\377\356\226\244\377\356\226" -"\244\377\356\226\244\377\344[q\377\332\037=\377\332\037=\377\332\037=" -"\377\365" -"\303\313\377\377\377\377\377\372\341\345\377\332\037=\377\332\037=\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\377\377\377\377\344[" -"q\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\344[q\377\334." -"J\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\344[q\377\360\245\261\377\334." -"J" -"\377\332\037=\377\332\037=\377\344[" -"q\377\365\303\313\377\375\360\362\377\334" -".J\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\351y\213" -"\377\375\360\362\377\377\377\377\377\377\377\377\377\375\360\362\377\341" -"Ld\377\332\037=\377\351y\213\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\337=" -"W\377\356\226\244\377\372\341\345\377\372\341\345\377" -"\375\360\362\377\377\377\377\377\356\226\244\377\332\037=\377\332\037=\377" -"\332\037=\377\365\303\313\377\377\377\377\377\356\226\244\377\332\037=\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\377\377\377" -"\377\344[q\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\337=" -"W\377\360\245\261\377\351y\213\377\372\341\345\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\341Ld\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\334." -"J\377\375\360\362\377\356\226\244\377\353\210\230\377\365" -"\303\313\377\377\377\377\377\370\322\330\377\332\037=\377\332\037=\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\351y\213\377\377" -"\377\377\377\377\377\377\377\375\360\362\377\372\341\345\377\377\377\377" -"\377\377\377\377\377\341Ld\377\332\037=\377\332\037=" -"\377\375\360\362\377\353" -"\210\230\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\377\377\377\377\344[q\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\372\341\345\377\372\341" -"\345\377\351y\213\377\363\264\276\377\377\377\377\377\356\226\244\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\351y\213\377\365" -"\303\313\377\332\037=\377\332\037=\377\332\037=" -"\377\360\245\261\377\377\377" -"\377\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\346" -"j~\377\360\245\261\377\337=W\377\360\245\261\377\356\226\244\377\363\264" -"\276\377\377\377\377\377\377\377\377\377\377\377\377\377\351y\213\377\332" -"\037=\377\351y\213\377\365\303\313\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\377\377\377" -"\377\344[q\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\341Ld\377\344[q\377\344[" -"q\377\346j~" -"\377\356\226\244\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=" -"\377\351y\213\377\356\226\244\377\351y\213\377\377\377\377\377\370\322" -"\330\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\353\210\230\377\377\377\377\377\344[q\377\332\037=\377\332\037=" -"\377" -"\337=W\377\377\377\377\377\332\037=\377\332\037=\377\332\037=\377\337=" -"W\377" -"\332\037=\377\346j~\377\372\341\345\377\360\245\261\377\351|" -"\215\377\353\210" -"\230\377\353\210\230\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\372\341\345\377\332\037=\377\360\245\261\377\356\226\244\377\332\037=\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\377\377\377\377\344[q\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\344[" -"q\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\372\341\345\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\337=" -"W\377" -"\375\360\362\377\377\377\377\377\370\322\330\377\365\303\313\377\365\303" -"\313\377\365\303\313\377\334.J\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\341Ld\377\377\377" -"\377\377\377\377\377\377\360\245\261\377\353\210\230\377\363\264\276\377" -"\360\245\261\377\332\037=\377\332\037=\377\332\037=" -"\377\372\341\345\377\356" -"\226\244\377\332\037=\377\332\037=\377\332\037=" -"\377\356\226\244\377\365\303" -"\313\377\375\360\362\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\344[q\377\365\303\313\377\356\226\244\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\377\377\377\377\344[q\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\337=" -"W\377\353\210\230\377\360\245\261\377\377\377\377" -"\377\363\264\276\377\372\341\345\377\377\377\377\377\377\377\377\377\365" -"\303\313\377\334.J\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\344" -"[q\377\356\226\244\377\356\226\244\377\356\226\244\377\372\341\345\377\377" -"\377\377\377\377\377\377\377\356\226\244\377\332\037=\377\332\037=\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\356\226\244\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\365\303\313\377\334.J\377\332\037=\377\337=" -"W\377\341Ld\377\370\322\330\377" -"\377\377\377\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\351y\213" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\365\303\313\377\351" -"y\213\377\337=W\377\356\226\244\377\375\360\362\377\341Ld\377\332\037=\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\377\377\377\377\344[q\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\337=W\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\356\226\244\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\370\322\330\377\365\303\313\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\370\322\330\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\353\210\230\377\353\210\230\377\365\303\313\377\377\377\377" -"\377\377\377\377\377\365\303\313\377\372\341\345\377\334.J\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\341Ld\377\344[q\377\344[q\377\332\037=" -"\377\332\037" -"=\377\337=" -"W\377\375\360\362\377\377\377\377\377\370\322\330\377\377\377\377" -"\377\341Ld\377\332\037=\377\332\037=" -"\377\360\245\261\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\337=W\377\332" -"\037=\377\334.J\377\360\245\261\377\375\360\362\377\351y\213\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\377\377\377" -"\377\344[q\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=\377" -"\334.J\377\375\360\362\377\351y\213\377\332\037=\377\353\210\230\377\337=" -"W\377\356\226\244\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\346j~\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\346j~\377\377\377\377\377\377\377\377\377\370\322\330\377\344[q\377" -"\332\037=\377\341Ld\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\334.J\377\360\245\261\377\356\226\244\377\334.J\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\337=W\377\363\264\276\377\377\377\377\377\377\377\377\377\375\360\362\377" -"\341Ld\377\360\245\261\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\344[q\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\353\210\230\377\377\377\377\377\346j~\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\377\377\377\377\344[" -"q\377" -"\332\037=\377\332\037=\377\334.J\377\344[q\377\344[q\377\341Ld\377\377\377" -"\377\377\370\322\330\377\344[q\377\377\377\377\377\353\210\230\377\334.J" -"\377\356\226\244\377\353\210\230\377\351|\215\377\353\210\230\377\375\360" -"\362\377\377\377\377\377\377\377\377\377\377\377\377\377\372\341\345\377" -"\356\226\244\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\365\303\313\377\356\226\244\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\365\303\313\377\377\377\377\377\377\377\377\377\356\226\244" -"\377\337=W\377\351y\213\377\372\341\345\377\337=W\377\332\037=\377\332\037" -"=\377\351y\213\377\377\377\377\377\372\341\345\377\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\353\210\230\377\363\264\276\377\337=W\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\356\226\244\377\365\303" -"\313\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\377" -"\377\377\377\344[q\377\332\037=\377\332\037=\377\334.J\377\372\341\345\377" -"\377\377\377\377\360\245\261\377\372\341\345\377\372\341\345\377\337=W\377" -"\375\360\362\377\377\377\377\377\377\377\377\377\365\303\313\377\360\245" -"\261\377\356\226\244\377\332\037=\377\356\226\244\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\351y\213\377\334.J\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\346j~\377\346j~\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\363\264\276\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\337=" -"W\377\375\360\362\377\351y\213\377\370\322\330" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\363\264\276\377\332" -"\037=\377\332\037=\377\332\037=" -"\377\353\210\230\377\353\210\230\377\356\226" -"\244\377\377\377\377\377\356\226\244\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\356\226" -"\244\377\341Ld\377\344[q\377\353\210\230\377\360\245\261\377\365\303\313" -"\377\363\264\276\377\365\303\313\377\363\264\276\377\332\037=\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\377\377\377\377\344[" -"q\377\332\037" -"=\377\332\037=\377\332\037=" -"\377\341Ld\377\363\264\276\377\372\341\345\377\377" -"\377\377\377\375\360\362\377\334.J\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\346j~\377\370\322\330\377\370\322\330\377\363\264\276\377\370\322\330\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\337=W\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\344[q\377\332\037=\377\332\037=\377\337=W\377\353\210\230\377\375\360\362" -"\377\344[q\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\351y\213\377\375\360\362" -"\377\363\264\276\377\363\264\276\377\370\322\330\377\356\226\244\377\353" -"\210\230\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\346j~\377\351y\213\377\332\037=" -"\377\365\303\313\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\356\226\244\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\377\377\377\377" -"\344[q\377\332\037=\377\332\037=\377\332\037=\377\346j~" -"\377\370\322\330\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\356\226\244\377\332\037=" -"\377\332\037=\377\332\037=\377\337=" -"W\377\356\226\244\377\356\226\244\377\372" -"\341\345\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\351y\213\377\332\037=\377\332\037=\377\346j~\377\337=" -"W\377\332\037=\377\332\037=" -"\377\370\322\330\377\360\245\261\377\372\341\345" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\356\226\244\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=" -"\377\360\245\261\377\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\372\341\345\377\363\264\276\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=" -"\377\353\210\230\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\356\226\244\377\332\037=\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\377\377\377\377\344[" -"q\377" -"\332\037=\377\332\037=\377\337=" -"W\377\375\360\362\377\377\377\377\377\370\322" -"\330\377\377\377\377\377\377\377\377\377\377\377\377\377\351y\213\377\332" -"\037=\377\334." -"J\377\356\226\244\377\365\303\313\377\365\303\313\377\375\360" -"\362\377\377\377\377\377\377\377\377\377\377\377\377\377\375\360\362\377" -"\377\377\377\377\356\226\244\377\332\037=\377\360\245\261\377\377\377\377" -"\377\353\210\230\377\332\037=\377\332\037=\377\353\210\230\377\377\377\377" -"\377\377\377\377\377\372\341\345\377\356\226\244\377\351y\213\377\372\341" -"\345\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\370\322\330\377\337=" -"W\377\351" -"y\213\377\360\245\261\377\375\360\362\377\377\377\377\377\351y\213\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\337=" -"W\377\375\360\362\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\363\264\276\377" -"\375\360\362\377\377\377\377\377\365\303\313\377\332\037=\377\332\037=\377" -"\332\037=\377\332\037=\377\332\037=\377\377\377\377\377\344[q\377\332\037=" -"\377" -"\332\037=\377\334.J\377\334.J\377\332\037=\377\372\341\345\377\377\377\377" -"\377\370\322\330\377\377\377\377\377\377\377\377\377\360\245\261\377\351" -"y\213\377\372\341\345\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\370\322\330\377\346j~\377" -"\341Ld\377\356\226\244\377\377\377\377\377\360\245\261\377\341Ld\377\332" -"\037=\377\332\037=\377\341Ld\377\370\322\330\377\341Ld\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\375\360\362\377" -"\334.J\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\341Ld\377\375\360" -"\362\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\363\264\276\377\344[q\377\332\037=" -"\377\356" -"\226\244\377\377\377\377\377\377\377\377\377\356\226\244\377\365\303\313" -"\377\332\037=\377\332\037=\377\332\037=\377\377\377\377\377\344[" -"q\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\370\322\330\377\356" -"\226\244\377\337=W\377\375\360\362\377\377\377\377\377\377\377\377\377\372" -"\341\345\377\365\303\313\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\337" -"=W\377\334.J\377\377\377\377\377\365\303\313\377\351y\213\377\372\341\345" -"\377\332\037=\377\332\037=\377\332\037=\377\353\210\230\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\344" -"[q\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\344[" -"q\377\377\377\377\377\377\377\377\377\365\303\313\377\353\210\230" -"\377\344[q\377\341Jb\377\356\226\244\377\372\341\345\377\344[q\377\344[q" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\332" -"\037=\377\332\037=\377\332\037=\377\377\377\377\377\344[q\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\337=W\377\332\037=" -"\377\332\037" -"=\377\351y\213\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\344[q\377\344[q\377\377" -"\377\377\377\375\360\362\377\375\360\362\377\363\264\276\377\332\037=\377" -"\332\037=\377\332\037=\377\337=W\377\337=W\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\344[q\377\360\245\261\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\346j~\377\344[q\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\356\226\244\377\377" -"\377\377\377\375\360\362\377\334.J\377\332\037=\377\332\037=" -"\377\356\226\244" -"\377\377\377\377\377\377\377\377\377\356\226\244\377\332\037=\377\356\226" -"\244\377\377\377\377\377\377\377\377\377\377\377\377\377\332\037=\377\332" -"\037=\377\332\037=\377\377\377\377\377\344[q\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\351y\213\377\375\360\362\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\363\264\276\377\363\264\276\377\337=W\377\344[q\377\377\377\377\377" -"\377\377\377\377\375\360\362\377\341Ld\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\351y\213\377\365\303\313\377\356\226\244\377\363\264\276\377\365\303" -"\313\377\377\377\377\377\365\303\313\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\344[" -"q\377\356\226\244\377\370\322\330\377\377\377\377\377\351y\213\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\334." -"J\377\375" -"\360\362\377\377\377\377\377\353\210\230\377\332\037=\377\332\037=\377\332" -"\037=\377\353\210\230\377\377\377\377\377\377\377\377\377\365\303\313\377" -"\332\037=\377\332\037=" -"\377\351y\213\377\377\377\377\377\370\322\330\377\332" -"\037=\377\332\037=\377\332\037=\377\377\377\377\377\344[q\377\332\037=" -"\377\332" -"\037=\377\353\210\230\377\372\341\345\377\370\322\330\377\365\303\313\377" -"\332\037=\377\332\037=\377\332\037=" -"\377\351y\213\377\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\375\360\362\377\332\037=\377\332\037=\377" -"\353\210\230\377\375\360\362\377\360\245\261\377\341Ld\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\344[" -"q\377\375\360\362\377\360\245\261\377" -"\356\226\244\377\372\341\345\377\377\377\377\377\363\264\276\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\337=" -"W\377" -"\365\303\313\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\377\344[q\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\334.J\377\344[q\377\337=" -"W\377" -"\341Ld\377\372\341\345\377\377\377\377\377\365\303\313\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\360\245\261\377\377\377\377" -"\377\375\360\362\377\332\037=\377\332\037=\377\353\210\230\377\377\377\377" -"\377\360\245\261\377\332\037=\377\332\037=\377\332\037=" -"\377\377\377\377\377" -"\344[q\377\332\037=\377\332\037=" -"\377\363\264\276\377\377\377\377\377\377\377" -"\377\377\377\377\377\377\332\037=\377\332\037=\377\344[" -"q\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\344[q\377\332\037=\377\372\341\345\377\351y\213\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\334." -"J\377\356\226\244\377" -"\332\037=\377\360\245\261\377\377\377\377\377\370\322\330\377\334." -"J\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\334" -".J\377\377\377\377\377\377\377\377\377\360\245\261\377\375\360\362\377\341" -"Ld\377\356\226\244\377\341Ld\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\337=" -"W\377\375\360\362\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\365\303\313\377\334.J\377" -"\332\037=\377\341Ld\377\341Ld\377\334." -"J\377\356\226\244\377\377\377\377\377" -"\377\377\377\377\346fz\377\344[q\377\341Ld\377\360\245\261\377\377\377\377" -"\377\346j~\377\332\037=\377\332\037=\377\332\037=\377\377\377\377\377\344[" -"q" -"\377\332\037=\377\332\037=\377\344[" -"q\377\377\377\377\377\377\377\377\377\356" -"\226\244\377\332\037=\377\332\037=" -"\377\351y\213\377\365\303\313\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\375\360\362\377\377\377\377\377\344[q\377" -"\341Ld\377\377\377\377\377\344[q\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\351y\213\377" -"\377\377\377\377\375\360\362\377\341Ld\377\351y\213\377\337=W\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\337=W\377" -"\363\264\276\377\375\360\362\377\377\377\377\377\332\037=\377\353\210\230" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\344[" -"q\377\356\226\244\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\370\322\330\377\334.J\377\356\226\244\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\365\303\313" -"\377\341Ld\377\363\264\276\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\337=W\377\332\037=\377\332\037=\377\332\037=" -"\377\377\377" -"\377\377\344[q\377\332\037=\377\332\037=\377\332\037=" -"\377\356\226\244\377\370" -"\322\330\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\334." -"J\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\356\226\244\377\351y\213\377\337=" -"W\377" -"\341Ld\377\377\377\377\377\344[q\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\351y\213\377\377\377\377" -"\377\377\377\377\377\356\226\244\377\356\226\244\377\372\341\345\377\344" -"[q\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\344[" -"q\377\370\322\330\377\372\341\345\377\372" -"\341\345\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\370\322\330\377\375\360" -"\362\377\375\360\362\377\363\264\276\377\377\377\377\377\351y\213\377\334" -".J\377\356\226\244\377\365\303\313\377\377\377\377\377\377\377\377\377\375" -"\360\362\377\351y\213\377\334.J\377\344[q\377\365\303\313\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\346j~\377\332\037=\377\332\037=" -"\377\377" -"\377\377\377\344[q\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\334" -".J\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\344[" -"q\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\360\245\261\377\332\037=\377\332\037=\377" -"\332\037=\377\375\360\362\377\360\245\261\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\365\303\313\377" -"\377\377\377\377\377\377\377\377\365\303\313\377\363\264\276\377\365\303" -"\313\377\356\226\244\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\356\226\244\377\365\303\313\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\372" -"\341\345\377\351y\213\377\372\341\345\377\356\226\244\377\332\037=\377\332" -"\037=\377\332\037=\377\346j~" -"\377\377\377\377\377\372\341\345\377\370\322\330" -"\377\372\341\345\377\372\341\345\377\332\037=\377\353\210\230\377\377\377" -"\377\377\365\303\313\377\370\322\330\377\372\341\345\377\363\264\276\377" -"\332\037=\377\332\037=\377\377\377\377\377\344[q\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\356\226\244\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\372" -"\341\345\377\332\037=\377\332\037=\377\332\037=" -"\377\356\226\244\377\377\377" -"\377\377\344[q\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\341Ld\377\334.J\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\337=W\377\337=W\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\334" -".J\377\341Ld\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\341Ld\377\351y\213\377\332\037=\377\332\037=\377\332\037=" -"\377\356\226\244" -"\377\363\264\276\377\353\210\230\377\377\377\377\377\334.J\377\332\037=" -"\377" -"\332\037=\377\363\264\276\377\356\226\244\377\356\226\244\377\377\377\377" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\377\377\377\377\344" -"[q\377\332\037=\377\332\037=\377\341Ld\377\360\245\261\377\353\210\230\377" -"\332\037=\377\332\037=\377\332\037=" -"\377\341Ld\377\375\360\362\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\360\245\261\377\332\037=\377" -"\332\037=\377\334.J\377\372\341\345\377\375\360\362\377\341Ld\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\344[q\377\344[" -"q\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\351y\213\377\365\303\313" -"\377\351y\213\377\332\037=" -"\377\351y\213\377\365\303\313\377\351y\213\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\356\226\244\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\334.J\377\351y\213\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\377\377\377\377\344[q\377\332\037=\377\332\037=\377\332\037=" -"\377\375" -"\360\362\377\377\377\377\377\356\226\244\377\332\037=\377\351y\213\377\375" -"\360\362\377\377\377\377\377\377\377\377\377\375\360\362\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\360\245\261\377\332\037=\377\332\037=\377\341" -"Ld\377\375\360\362\377\370\322\330\377\334.J\377\332\037=\377\332\037=\377" -"\332\037=\377\332\037=" -"\377\356\226\244\377\372\341\345\377\351y\213\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\356\226\244\377\372\341\345\377\337=" -"W\377" -"\332\037=\377\332\037=\377\346j~\377\365\303\313\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\377\377\377" -"\377\344[q\377\332\037=\377\332\037=\377\332\037=\377\344[" -"q\377\372\341\345" -"\377\377\377\377\377\372\341\345\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\370\322\330\377\341Ld\377\365\303\313\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\370\322\330\377\334.J\377\332\037=\377\346j~\377\377" -"\377\377\377\356\226\244\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\356\226\244\377\365\303\313\377\370\322\330\377\375\360\362\377\356" -"\226\244\377\334.J\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\356\226\244\377\356\226\244\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\334.J\377\375\360\362\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\341Ld\377\334.J\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\377\377\377\377\344[" -"q\377" -"\332\037=\377\334." -"J\377\356\226\244\377\365\303\313\377\370\322\330\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\372\341\345\377\356\226\244" -"\377\332\037=\377\332\037=" -"\377\341Ld\377\375\360\362\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\370\322\330\377\332\037=\377\332\037=\377\360\245\261" -"\377\377\377\377\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\337" -"=W\377\334.J\377\356\226\244\377\363\264\276\377\372\341\345\377\377\377" -"\377\377\353\210\230\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\353\210\230\377\370\322\330\377\334.J\377\332\037=" -"\377\332\037" -"=\377\360\245\261\377\365\303\313\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\363\264\276" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\353\210\230\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\377" -"\377\377\377\344[q\377\332\037=\377\346j~\377\370\322\330\377\365\303\313" -"\377\370\322\330\377\377\377\377\377\377\377\377\377\356\226\244\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\341Ld\377\375\360" -"\362\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\356\226\244\377\332\037=" -"\377\356\226\244\377\377\377\377\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\356\226\244\377\353\210\230\377\365\303\313\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\372\341\345\377\332\037=\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\337=" -"W\377\377\377\377\377\375\360" -"\362\377\365\303\313\377\375\360\362\377\377\377\377\377\356\226\244\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\353\210\230\377\377\377\377\377\377\377\377\377\365\303\313\377\372\341" -"\345\377\377\377\377\377\375\360\362\377\337=W\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\344[q\377\363\264\276\377\356\226\244\377\332\037=" -"\377\351y\213" -"\377\337=W\377\332\037=\377\332\037=\377\377\377\377\377\344[" -"q\377\332\037=" -"\377\332\037=\377\332\037=\377\334." -"J\377\375\360\362\377\363\264\276\377\377" -"\377\377\377\372\341\345\377\332\037=\377\353\210\230\377\377\377\377\377" -"\377\377\377\377\375\360\362\377\332\037=\377\334." -"J\377\351y\213\377\370\322" -"\330\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\375\360\362\377\344[q\377\375\360\362\377\375\360\362\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\356\226\244\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\360\245\261\377\346j~\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\351y\213\377\375\360\362\377\377\377\377\377\377\377\377\377\365\303" -"\313\377\334.J\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\341Ld\377" -"\346j~\377\344[q\377\377\377\377\377\372\341\345\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\344[q\377\332\037=" -"\377\332\037" -"=\377\346j~" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\375\360\362\377\337=W\377\332\037=\377\332\037=" -"\377\377\377\377\377\344" -"[q\377\332\037=\377\332\037=\377\332\037=" -"\377\341Ld\377\377\377\377\377\353" -"\210\230\377\372\341\345\377\372\341\345\377\332\037=\377\356\226\244\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\332\037=\377\332\037=\377" -"\332\037=\377\337=W\377\337=W\377\356\226\244\377\375\360\362\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\351y\213\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\356\226\244" -"\377\370\322\330\377\351y\213\377\334.J\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\334.J\377\344[q\377\341Ld\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\356\226\244\377\372\341\345" -"\377\356\226\244\377\345fz\377\332\037=\377\346j~\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\363\264\276\377\332\037=\377\351y\213\377\375" -"\360\362\377\375\360\362\377\377\377\377\377\365\303\313\377\353\210\230" -"\377\334.J\377\332\037=\377\332\037=\377\332\037=\377\377\377\377\377\344[" -"q" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\356\226\244\377\332" -"\037=\377\334.J\377\346j~\377\332\037=\377\334." -"J\377\372\341\345\377\377\377" -"\377\377\353\210\230\377\332\037=\377\334." -"J\377\360\245\261\377\377\377\377" -"\377\370\322\330\377\337=W\377\363\264\276\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\372\341\345\377\346j~\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\344[q\377\337=W\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\334.J\377\334.J\377\332\037=" -"\377" -"\332\037=\377\334.J\377\344[" -"q\377\341Ld\377\360\245\261\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\337=W\377\365\303\313\377\346j~\377\332\037=\377\332\037=\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\377" -"\377\377\377\344[q\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\341" -"Ld\377\363\264\276\377\332\037=\377\341Ld\377\370\322\330\377\377\377\377" -"\377\377\377\377\377\372\341\345\377\344[q\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\353\210\230\377\332\037=\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\344[" -"q\377" -"\375\360\362\377\351y\213\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\337=" -"W\377\353\210\230\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\372\341\345\377\363\264\276\377\341Ld\377\363\264\276\377\360\245\261" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\377\377\377\377\344[q\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\346j~" -"\377\360\245\261\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\375\360\362\377\343Xn\377\370\322" -"\330\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\341Ld\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\334.J\377\375\360\362\377\370\322\330\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=" -"\377\341Ld\377\375\360\362\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\375\360\362\377\332\037=\377\332\037=" -"\377\334.J\377\370\322\330\377\365\303\313\377\344[q\377\332\037=\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\377\377\377\377" -"\344[q\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\351y\213\377\372\341\345\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\370\322" -"\330\377\341Ld\377\360\245\261\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\377\372\341\345\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\337=" -"W\377\370\322\330\377\375\360" -"\362\377\370\322\330\377\377\377\377\377\351y\213\377\332\037=\377\332\037" -"=\377\341Ld\377\375\360\362\377\377\377\377\377\377\377\377\377\377\377" -"\377" -"\377\377\377\377\377\377\377\377\377\344[q\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\351y\213\377\370\322\330\377\372\341\345\377\346j~\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\377\377\377\377\344[q\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\334.J\377\365\303\313\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\360\245\261\377\332\037=\377\344[" -"q\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\351y\213\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\346j~" -"\377\356\226\244\377\375\360\362\377\377" -"\377\377\377\377\377\377\377\365\303\313\377\353\210\230\377\375\360\362" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\365" -"\303\313\377\375\360\362\377\344[q\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\341Ld\377\375\360\362\377\344[q\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\377\377\377\377\344[q\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\356\226\244" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\372\341\345\377\332\037=\377\332\037=\377\360\245\261\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\341Ld\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\341Ld\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=" -"\377\370\322\330\377\372\341\345\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\351y\213" -"\377\337=W\377\332\037=\377\332\037=\377\344[q\377\346j~\377\346j~\377\334" -".J\377\332\037=\377\360\245\261\377\356\226\244\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\377\377\377\377\344[q\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\370\322\330\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\344[q\377\332\037=" -"\377\372\341\345\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\375\360\362" -"\377\337=W\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\334.J\377\375\360\362\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\341Ld\377\370\322\330\377\346j~\377\377\377\377\377\356\226" -"\244\377\360\245\261\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\375\360\362\377\365\303" -"\313\377\370\322\330\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\375\360\362\377\351y\213\377\375\360\362\377\351y\213\377" -"\332\037=\377\332\037=\377\332\037=\377\377\377\377\377\344[q\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\356\226\244\377\332\037=\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\360\245\261\377\332\037=\377\332\037=" -"\377\332\037=\377\332\037=\377\334.J\377\360\245\261\377\346j~\377\334." -"J\377" -"\353\210\230\377\341Ld\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\356\226\244\377\332\037=\377\337=" -"W\377\353\210\230\377\370\322\330\377\377" -"\377\377\377\351y\213\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\356\226\244\377\334.J\377\332\037=" -"\377\356\226\244" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\372" -"\341\345\377\351y\213\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\377\377\377\377\344[q\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=" -"\377\375\360\362\377\370\322\330\377\375" -"\360\362\377\377\377\377\377\377\377\377\377\363\264\276\377\363\264\276" -"\377\353\210\230\377\332\037=\377\375\360\362\377\363\264\276\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\370\322\330\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\337=" -"W\377" -"\377\377\377\377\365\303\313\377\334.J\377\372\341\345\377\365\303\313\377" -"\356\226\244\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\363\264\276\377\375" -"\360\362\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\363\264\276\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\344[" -"q\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\363\264\276\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\377\377\377" -"\377\344[q\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=\377" -"\332\037=\377\332\037=" -"\377\351y\213\377\341Ld\377\375\360\362\377\377\377\377" -"\377\377\377\377\377\372\341\345\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\334.J\377\356\226\244\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\332\037=\377\332\037=\377" -"\332\037=\377\332\037=\377\356\226\244\377\356\226\244\377\332\037=" -"\377\341" -"Ld\377\377\377\377\377\377\377\377\377\375\360\362\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=" -"\377\351y\213\377\377\377\377\377\372\341\345\377\370\322\330" -"\377\360\245\261\377\337=W\377\377\377\377\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\360\245\261\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\365\303\313\377\337=W\377\360\245\261\377\377\377\377" -"\377\375\360\362\377\341Ld\377\351y\213\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\377\377\377\377\344[q\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\356\226\244\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\332\037=\377" -"\332\037=\377\332\037=\377\332\037=" -"\377\365\303\313\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\365\303\313" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\365\303\313\377\351" -"y\213\377\332\037=" -"\377\351y\213\377\351y\213\377\353\210\230\377\365\303\313" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\334.J\377\377\377\377\377\334." -"J" -"\377\351y\213\377\377\377\377\377\377\377\377\377\377\377\377\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\356\226\244\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\370\322\330\377\363\264\276" -"\377\353\210\230\377\343Wm\377\353\210\230\377\337=W\377\351y\213\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\375\360\362\377\332\037=\377" -"\332\037=\377\332\037=\377\377\377\377\377\344[q\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\341Ld\377\377" -"\377\377\377\377\377\377\377\377\377\377\377\356\226\244\377\365\303\313" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\351y\213\377\344[" -"q\377" -"\377\377\377\377\377\377\377\377\356\226\244\377\377\377\377\377\351y\213" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\365\303\313\377\370" -"\322\330\377\334.J\377\332\037=\377\332\037=" -"\377\363\264\276\377\356\226\244" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\365\303\313\377\372" -"\341\345\377\377\377\377\377\375\360\362\377\375\360\362\377\360\245\261" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\346j~\377" -"\377\377\377\377\377\377\377\377\341Ld\377\332\037=\377\332\037=" -"\377\351y\213" -"\377\377\377\377\377\377\377\377\377\351y\213\377\334." -"J\377\375\360\362\377" -"\377\377\377\377\377\377\377\377\377\377\377\377\332\037=\377\332\037=\377" -"\332\037=\377\377\377\377\377\344[q\377\332\037=\377\332\037=\377\334." -"J\377" -"\344[q\377\332\037=\377\332\037=\377\341Ld\377\375\360\362\377\377\377\377" -"\377\377\377\377\377\356\226\244\377\332\037=\377\337=W\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\346j~" -"\377\377\377\377\377\377" -"\377\377\377\346j~\377\334.J\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\353\210\230\377\377\377\377\377\375\360\362\377\365" -"\303\313\377\370\322\330\377\377\377\377\377\337=W\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=" -"\377\341Ld\377\375\360\362\377\377\377\377\377\346" -"j~\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\365\303\313\377\377\377\377\377\360\245\261\377\332\037" -"=\377\332\037=\377\332\037=" -"\377\356\226\244\377\377\377\377\377\377\377\377" -"\377\356\226\244\377\332\037=\377\334." -"J\377\363\264\276\377\377\377\377\377" -"\372\341\345\377\332\037=\377\332\037=\377\332\037=" -"\377\377\377\377\377\344" -"[q\377\332\037=\377\337=W\377\372\341\345\377\377\377\377\377\375\360\362" -"\377\360\245\261\377\375\360\362\377\377\377\377\377\377\377\377\377\356" -"\226\244\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=" -"\377\363\264\276\377\377\377\377\377\375" -"\360\362\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=" -"\377\365\303\313\377\377\377\377\377\377" -"\377\377\377\377\377\377\377\351y\213\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\356\226\244\377\353\210\230\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\360\245\261\377\377\377\377\377\375\360\362\377\337=" -"W\377\332" -"\037=\377\332\037=\377\332\037=\377\337=" -"W\377\365\303\313\377\377\377\377\377" -"\377\377\377\377\332\037=\377\332\037=\377\346j~" -"\377\377\377\377\377\365\303" -"\313\377\332\037=\377\332\037=\377\332\037=\377\377\377\377\377\344[" -"q\377\332" -"\037=\377\332\037=\377\344[" -"q\377\363\264\276\377\370\322\330\377\377\377\377" -"\377\377\377\377\377\375\360\362\377\341Ld\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\346" -"j~\377\377\377\377\377\377\377\377\377\346j~\377\332\037=\377\332\037=\377" -"\332\037=\377\332\037=\377\332\037=\377\344[q\377\353\210\230\377\332\037=" -"\377" -"\332\037=\377\341Ld\377\344[q\377\334.J\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\334." -"J\377\356\226\244\377\375\360\362\377\334" -".J\377\332\037=\377\332\037=\377\334.J\377\356\226\244\377\365\303\313\377" -"\365\303\313\377\365\303\313\377\377\377\377\377\375\360\362\377\341Ld\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\341Ld\377\375\360\362\377" -"\377\377\377\377\356\226\244\377\332\037=\377\332\037=\377\356\226\244\377" -"\377\377\377\377\353\210\230\377\332\037=\377\332\037=\377\332\037=" -"\377\377" -"\377\377\377\344[q\377\332\037=\377\332\037=\377\332\037=" -"\377\356\226\244\377" -"\375\360\362\377\377\377\377\377\377\377\377\377\377\377\377\377\370\322" -"\330\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\337=" -"W\377\363\264" -"\276\377\365\303\313\377\363\264\276\377\375\360\362\377\377\377\377\377" -"\356\226\244\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\365\303\313\377\365\303\313\377\337=W\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\351y\213\377\334" -".J\377\356\226\244\377\375\360\362\377\377\377\377\377\377\377\377\377\360" -"\245\261\377\332\037=\377\332\037=\377\334." -"J\377\360\245\261\377\365\303\313" -"\377\375\360\362\377\377\377\377\377\377\377\377\377\356\226\244\377\332" -"\037=\377\344[" -"q\377\365\303\313\377\365\303\313\377\363\264\276\377\377\377" -"\377\377\377\377\377\377\356\226\244\377\353\210\230\377\365\303\313\377" -"\365\303\313\377\375\360\362\377\377\377\377\377\337=W\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\377\377\377\377\344[q\377\332\037=\377\332\037=" -"\377\341" -"Ld\377\377\377\377\377\375\360\362\377\365\303\313\377\375\360\362\377\372" -"\341\345\377\377\377\377\377\344[q\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\365\303\313\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\377\375\360\362\377\356\226\244\377\332\037=\377\332" -"\037=\377\332\037=\377\332\037=\377\344[" -"q\377\377\377\377\377\377\377\377\377" -"\377\377\377\377\360\245\261\377\337=W\377\346j~\377\334.J\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\372\341\345\377\375\360\362\377\377\377\377\377\377\377\377" -"\377\360\245\261\377\344[q\377\377\377\377\377\334.J\377\332\037=\377\332" -"\037=\377\332\037=\377\356\226\244\377\377\377\377\377\377\377\377\377\372" -"\341\345\377\377\377\377\377\344[q\377\346j~\377\365\303\313\377\370\322" -"\330\377\377\377\377\377\377\377\377\377\365\303\313\377\334.J\377\346j~" -"\377\365\303\313\377\372\341\345\377\377\377\377\377\377\377\377\377\365" -"\303\313\377\337=W\377\332\037=\377\332\037=\377\377\377\377\377\344[q\377" -"\332\037=\377\332\037=\377\351y\213\377\353\210\230\377\337=" -"W\377\365\303\313" -"\377\377\377\377\377\337=W\377\356\226\244\377\344[q\377\332\037=\377\332" -"\037=\377\332\037=\377\332\037=\377\344[" -"q\377\351y\213\377\375\360\362\377\375" -"\360\362\377\372\341\345\377\377\377\377\377\377\377\377\377\341Ld\377\332" -"\037=\377\332\037=\377\332\037=" -"\377\356\226\244\377\353\210\230\377\360\245" -"\261\377\377\377\377\377\377\377\377\377\377\377\377\377\375\360\362\377" -"\337=W\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\344[" -"q\377\377\377\377\377\365\303\313\377" -"\375\360\362\377\363\264\276\377\365\303\313\377\377\377\377\377\344[q\377" -"\332\037=\377\332\037=\377\332\037=" -"\377\377\377\377\377\360\245\261\377\377" -"\377\377\377\356\226\244\377\356\226\244\377\344[q\377\332\037=\377\337=W" -"\377\372\341\345\377\375\360\362\377\372\341\345\377\377\377\377\377\370" -"\322\330\377\332\037=\377\346j~" -"\377\375\360\362\377\375\360\362\377\372\341" -"\345\377\377\377\377\377\360\245\261\377\332\037=\377\332\037=\377\377\377" -"\377\377\344[q\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\344[q\377\370\322\330\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\375\360\362\377\377" -"\377\377\377\356\226\244\377\377\377\377\377\344[q\377\344[q\377\337=W\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\337=W\377\360\245\261\377\377\377\377\377\356\226\244\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=" -"\377\363\264\276\377\356\226\244\377\377\377" -"\377\377\375\360\362\377\377\377\377\377\375\360\362\377\337=W\377\332\037" -"=\377\332\037=\377\332\037=\377\346j~\377\332\037=" -"\377\356\226\244\377\356\226" -"\244\377\332\037=\377\332\037=\377\332\037=" -"\377\356\226\244\377\377\377\377" -"\377\356\226\244\377\377\377\377\377\351y\213\377\356\226\244\377\332\037" -"=\377\360\245\261\377\375\360\362\377\356\226\244\377\375\360\362\377\341" -"Ld\377\344[q\377\332\037=\377\332\037=\377\377\377\377\377\344[" -"q\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\334.J\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\375\360\362\377\351y\213\377\346j~" -"\377\377\377\377" -"\377\344[q\377\332\037=\377\332\037=\377\332\037=\377\344[" -"q\377\363\264\276" -"\377\334.J\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\375\360\362" -"\377\337=W\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\372\341\345\377\375\360\362\377\337=W\377\344[q\377\337=W\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\337=W\377\332\037=\377\332\037=\377\332\037=\377\341Ld\377\341Ld\377\337=" -"W" -"\377\375\360\362\377\332\037=\377\332\037=\377\332\037=" -"\377\341Ld\377\332\037" -"=\377\341Ld\377\365\303\313\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\377\377\377\377\344[q\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\337=W\377" -"\332\037=\377\332\037=\377\346j~\377\341Ld\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\363\264\276\377\365\303\313\377\363\264\276\377\332\037=\377\332" -"\037=\377\332\037=\377\332\037=\377\334.J\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\377\377\377\377\346j~" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\337=" -"W\377\332\037=\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\377\377\377\377\344[" -"q\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\346j~" -"\377\375\360\362\377" -"\334.J\377\365\303\313\377\363\264\276\377\344[q\377\341Ld\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\360\245\261\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\334.J\377\351y\213\377\360\245\261\377\356\226\244\377\334.J\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\377\377\377\377\344[q\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\370\322\330\377\372\341\345\377\377\377\377\377\353" -"\210\230\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\337=" -"W\377\375\360\362\377\377\377\377" -"\377\363\264\276\377\375\360\362\377\360\245\261\377\346j~\377\377\377\377" -"\377\341Ld\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\334." -"J\377\353\210\230\377\356\226\244" -"\377\370\322\330\377\377\377\377\377\370\322\330\377\377\377\377\377\375" -"\360\362\377\334.J\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\377\377\377\377" -"\344[q\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\377\377\377\377\377\377\377" -"\377\377\377\377\377\360\245\261\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\356\226\244" -"\377\356\226\244\377\375\360\362\377\377\377\377\377\375\360\362\377\344" -"[q\377\356\226\244\377\365\303\313\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\334.J\377\370\322\330\377\370\322\330\377\353\210\230\377\375\360\362\377" -"\370\322\330\377\377\377\377\377\351y\213\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\377\377\377\377\344[q\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=" -"\377\356\226\244\377\377\377\377\377\375\360\362\377\341Ld\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\346j~\377\341Ld\377\332\037=\377\334." -"J\377\365\303\313\377\377\377\377" -"\377\377\377\377\377\375\360\362\377\334.J\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\334.J\377\363\264\276\377\332\037=" -"\377\356\226\244\377" -"\377\377\377\377\370\322\330\377\332\037=\377\332\037=" -"\377\351y\213\377\334" -".J\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\377\377\377\377\344[q\377\332\037=\377\332\037=" -"\377\353\210" -"\230\377\372\341\345\377\370\322\330\377\365\303\313\377\332\037=\377\332" -"\037=\377\332\037=\377\332\037=\377\370\322\330\377\351y\213\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\356\226\244\377\377\377\377\377\341Ld\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\356\226\244\377\377\377\377\377\346j~\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\372\341\345\377" -"\372\341\345\377\377\377\377\377\344[q\377\332\037=\377\332\037=" -"\377\363\264" -"\276\377\370\322\330\377\337=W\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\377\377\377\377\344[q\377\332\037=" -"\377\332" -"\037=\377\363\264\276\377\377\377\377\377\377\377\377\377\377\377\377\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\334.J\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\337" -"=W\377\353\210\230\377\365\303\313\377\351y\213\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\351y\213\377\360\245\261\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\351y\213" -"\377\377\377\377\377\363\264\276\377\332\037=\377\332\037=\377\334." -"J\377\370" -"\322\330\377\377\377\377\377\375\360\362\377\341Ld\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\377\377\377\377\344[" -"q\377\332\037" -"=\377\332\037=\377\344[" -"q\377\377\377\377\377\377\377\377\377\356\226\244\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\334." -"J\377\370\322\330\377" -"\363\264\276\377\332\037=\377\351y\213\377\365\303\313\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\360\245\261\377\353\210\230\377\332\037=\377\332\037=" -"\377\365\303" -"\313\377\377\377\377\377\370\322\330\377\344[q\377\344[q\377\346j~\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\377\377\377\377\344[" -"q\377\332" -"\037=\377\332\037=\377\332\037=" -"\377\356\226\244\377\370\322\330\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\337=" -"W\377\370\322\330\377\377\377" -"\377\377\377\377\377\377\365\303\313\377\346j~\377\375\360\362\377\337=W" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\334.J\377\332\037=\377\332\037=" -"\377\353\210\230\377\377\377" -"\377\377\375\360\362\377\334.J\377\332\037=\377\334.J\377\375\360\362\377" -"\356\226\244\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\344[q\377\334." -"J\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\334.J\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\341Ld\377\375\360\362\377\353\210\230\377\344[q\377" -"\370\322\330\377\377\377\377\377\377\377\377\377\375\360\362\377\353\210" -"\230\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\356\226\244\377" -"\377\377\377\377\344[q\377\332\037=\377\332\037=" -"\377\353\210\230\377\375\360" -"\362\377\360\245\261\377\341Ld\377\334.J\377\332\037=\377\332\037=\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\344[" -"q\377\375\360\362\377\377\377\377\377\377\377\377" -"\377\360\245\261\377\351y\213\377\377\377\377\377\365\303\313\377\377\377" -"\377\377\365\303\313\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\344[q\377\377\377\377\377\344[q\377\332\037=\377\346j~" -"\377\377\377\377\377" -"\346j~\377\332\037=\377\332\037=\377\375\360\362\377\360\245\261\377\341Ld" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=" -"\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\334." -"J\377" -"\351y\213\377\370\322\330\377\334.J\377\341Ld\377\356\226\244\377\372\341" -"\345\377\377\377\377\377\377\377\377\377\377\377\377\377\341Ld\377\344[q" -"\377\341Ld\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037=\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\356\226\244\377\375\360\362\377\365\303\313\377\377\377\377\377\353\210" -"\230\377\332\037=\377\332\037=\377\332\037=" -"\377\351y\213\377\377\377\377\377" -"\370\322\330\377\332\037=\377\341Ld\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\337=" -"W\377\353\210\230\377" -"\375\360\362\377\377\377\377\377\356\226\244\377\332\037=\377\332\037=\377" -"\332\037=\377\332\037=" -"\377\351y\213\377\372\341\345\377\377\377\377\377\356" -"\226\244\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\341Ld\377\356\226\244\377\344[" -"q\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\372\341\345\377\377\377" -"\377\377\377\377\377\377\334.J\377\363\264\276\377\372\341\345\377\353\210" -"\230\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\351y\213\377\365\303\313\377" -"\372\341\345\377\337=" -"W\377\351y\213\377\377\377\377\377\370\322\330\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\351" -"y\213\377\334.J\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\346j~" -"\377\375\360\362\377\356\226" -"\244\377\377\377\377\377\351y\213\377\356\226\244\377\370\322\330\377\353" -"\210\230\377\332\037=" -"\377\341Ld\377\363\264\276\377\365\303\313\377\356\226" -"\244\377\356\226\244\377\332\037=\377\332\037=\377\334." -"J\377\351y\213\377\356" -"\226\244\377\365\303\313\377\372\341\345\377\332\037=\377\363\264\276\377" -"\372\341\345\377\377\377\377\377\353\210\230\377\332\037=\377\346j~" -"\377\377" -"\377\377\377\377\377\377\377\341Ld\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\344[" -"q\377\365" -"\303\313\377\356\226\244\377\341Ld\377\377\377\377\377\360\245\261\377\372" -"\341\345\377\351y\213\377\332\037=\377\332\037=" -"\377\365\303\313\377\377\377" -"\377\377\353\210\230\377\360\245\261\377\365\303\313\377\332\037=\377\334" -".J\377\370\322\330\377\375\360\362\377\351y\213\377\356\226\244\377\377" -"\377" -"\377\377\332\037=\377\332\037=\377\344[" -"q\377\377\377\377\377\372\341\345\377" -"\372\341\345\377\370\322\330\377\363\264\276\377\377\377\377\377\360\245" -"\261\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=" -"\377\363\264\276\377\377\377\377\377\356\226" -"\244\377\332\037=\377\375\360\362\377\377\377\377\377\372\341\345\377\332" -"\037=\377\332\037=\377\332\037=" -"\377\363\264\276\377\377\377\377\377\360\245" -"\261\377\337=W\377\344[q\377\332\037=\377\356\226\244\377\377\377\377\377" -"\351y\213\377\332\037=\377\332\037=\377\341Ld\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\372\341\345\377\377\377\377\377\353\210\230\377\332\037=\377\334" -".J\377\377\377\377\377\377\377\377\377\375\360\362\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\337=W\377\351y\213\377\332\037=\377\363\264\276\377\377\377\377\377" -"\356\226\244\377\332\037=\377\332\037=\377\332\037=\377\334." -"J\377\372\341\345" -"\377\377\377\377\377\370\322\330\377\332\037=\377\332\037=\377\365\303\313" -"\377\377\377\377\377\344[q\377\332\037=\377\332\037=\377\332\037=" -"\377\332\037" -"=\377\332\037=\377\332\037=" -"\377\353\210\230\377\377\377\377\377\363\264\276" -"\377\344[q\377\360\245\261\377\365\303\313\377\351y\213\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\346j~" -"\377\372\341" -"\345\377\334.J\377\332\037=\377\332\037=\377\341Ld\377\356\226\244\377\334" -".J\377\370\322\330\377\377\377\377\377\351y\213\377\332\037=" -"\377\360\245\261" -"\377\377\377\377\377\356\226\244\377\332\037=\377\332\037=" -"\377\351y\213\377" -"\341Ld\377\332\037=\377\332\037=\377\344[q\377\377\377\377\377\375\360\362" -"\377\360\245\261\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\353\210\230\377\377\377\377" -"\377\356\226\244\377\370\322\330\377\377\377\377\377\351y\213\377\332\037" -"=\377\341Ld\377\375\360\362\377\377\377\377\377\353\210\230\377\344[q\377" -"\365\303\313\377\356\226\244\377\332\037=\377\332\037=\377\356\226\244\377" -"\351y\213\377\334.J\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\337=" -"W\377\344[q" -"\377\356\226\244\377\356\226\244\377\351y\213\377\332\037=\377\332\037=" -"\377" -"\332\037=\377\337=" -"W\377\360\245\261\377\365\303\313\377\363\264\276\377\353" -"\210\230\377\334.J\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=\377\332\037=" -"\377\332" -"\037=\377", -}; diff --git a/kernel/boot/multiboot/data.cc b/kernel/boot/multiboot/data.cc index 0bcaba3..83b7835 100644 --- a/kernel/boot/multiboot/data.cc +++ b/kernel/boot/multiboot/data.cc @@ -96,13 +96,11 @@ Module *getModule(unsigned i) { unsigned getModuleCount() { return multiboot_addr->mods.size; } -void *Memory::getStartAddress() const { - return reinterpret_cast(static_cast(addr)); -} +void *Memory::getStartAddress() const { return reinterpret_cast(addr); } void *Memory::getEndAddress() const { uint64_t end = addr + len; - return reinterpret_cast(static_cast(end)); + return reinterpret_cast(end); } bool Memory::isAvailable() const { return type == AVAILABLE; } diff --git a/kernel/main.cc b/kernel/main.cc index 03b036c..d5f9883 100644 --- a/kernel/main.cc +++ b/kernel/main.cc @@ -21,7 +21,6 @@ OutputStream* copyout = ©stream; #include "./device/ps2controller.h" #include "./interrupt/guard.h" #include "./sync/semaphore.h" -#include "./thread/thread.h" Semaphore koutsem(1); TextStream kout(0, 80, 1, 17, true); diff --git a/kernel/memory/pagefault.cc b/kernel/memory/pagefault.cc index 752bf01..aa3c3fe 100644 --- a/kernel/memory/pagefault.cc +++ b/kernel/memory/pagefault.cc @@ -29,7 +29,7 @@ assert_size(ErrorCode, 4); uint64_t err) { PageFault::ErrorCode error(err); // Get the faulting address - uintptr_t virt; + uintptr_t virt = 0; asm volatile("mov %%cr2, %0" : "=r"(virt)); DBG << "Page fault at " << hex << virt << dec << endl; diff --git a/kernel/syscall/handler.cc b/kernel/syscall/handler.cc index 0471cc4..346c60e 100644 --- a/kernel/syscall/handler.cc +++ b/kernel/syscall/handler.cc @@ -1,8 +1,6 @@ #include "syscall/handler.h" -#include "arch/core.h" #include "arch/core_interrupt.h" -#include "arch/gdt.h" #include "arch/idt.h" #include "debug/kernelpanic.h" #include "debug/output.h" @@ -26,12 +24,12 @@ namespace Syscall { * by the system call number -- allowing up to five parameters for the system * call. * + * \param sysnum identifier for the system call * \param p1 first parameter * \param p2 second parameter * \param p3 third parameter * \param p4 fourth parameter * \param p5 fifth parameter - * \param sysnum identifier for the system call * \param user pointer to the interrupt \ref context (for example to determine * instruction pointer) * \return system call return value diff --git a/kernel/thread/scheduler.cc b/kernel/thread/scheduler.cc index 01494f8..bdfaf25 100644 --- a/kernel/thread/scheduler.cc +++ b/kernel/thread/scheduler.cc @@ -32,15 +32,13 @@ void Scheduler::resume(bool ready) { Thread *me = dispatcher.active(); assert(me != nullptr && "Pointer to active thread should never be nullptr"); - if (true) { - // Be careful, never put the idle thread into the ready list - bool is_idle_thread = static_cast(&idleThread) == me; + // Be careful, never put the idle thread into the ready list + bool is_idle_thread = static_cast(&idleThread) == me; - if (ready && readylist.is_empty()) { - return; - } else if (!is_idle_thread) { - if (ready) readylist.enqueue(*me); - } + if (ready && readylist.is_empty()) { + return; + } else if (!is_idle_thread) { + if (ready) readylist.enqueue(*me); } dispatcher.dispatch(getNext()); @@ -56,6 +54,8 @@ void Scheduler::kill(Thread *that) { if (dispatcher.active() == that) { exit(); } + + readylist.remove(that); } bool Scheduler::isEmpty() const { return readylist.is_empty(); } diff --git a/kernel/user/loader.cc b/kernel/user/loader.cc deleted file mode 100644 index 6caa263..0000000 --- a/kernel/user/loader.cc +++ /dev/null @@ -1 +0,0 @@ -#include "device/textstream.h" diff --git a/libsys/iostream.h b/libsys/iostream.h deleted file mode 100644 index 94cae8e..0000000 --- a/libsys/iostream.h +++ /dev/null @@ -1,24 +0,0 @@ -#pragma once - -#include "outputstream.h" -#include "stub.h" - -class IOStream : public OutputStream { - private: - IOStream(IOStream ©); // no copy - int fd; - - public: - explicit IOStream(int sysfd = 0) : fd(sysfd) {} - - ~IOStream() { - if (pos > 0) { - sys_write(fd, buffer, pos); - } - } - - void flush() override { - sys_write(fd, buffer, pos); - pos = 0; - } -}; diff --git a/libsys/rand.cc b/libsys/rand.cc deleted file mode 100644 index ea55744..0000000 --- a/libsys/rand.cc +++ /dev/null @@ -1,68 +0,0 @@ -#include "rand.h" - -// Mersenne Twister (32 bit pseudorandom number generator) -// https://en.wikipedia.org/wiki/Mersenne_Twister - -static const uint32_t N = 624; -static const uint32_t M = 397; -static const uint32_t R = 31; -static const uint32_t A = 0x9908B0DF; - -// initialization multiplier -static const uint32_t F = 1812433253; - -static const uint32_t U = 11; - -static const uint32_t S = 7; -static const uint32_t B = 0x9D2C5680; - -static const uint32_t T = 15; -static const uint32_t C = 0xEFC60000; - -static const uint32_t L = 18; - -static const uint32_t MASK_LOWER = (1ULL << R) - 1; -static const uint32_t MASK_UPPER = (1ULL << R); - -static uint32_t mt[N]; -static uint16_t index; - -void srand(const uint32_t seed) { - mt[0] = seed; - - for (uint32_t i = 1; i < N; i++) { - mt[i] = (F * (mt[i - 1] ^ (mt[i - 1] >> 30)) + i); - } - - index = N; -} - -uint32_t rand() { - uint16_t v = index; - - if (index >= N) { - // Twist - for (uint32_t i = 0; i < N; i++) { - uint32_t x = (mt[i] & MASK_UPPER) + (mt[(i + 1) % N] & MASK_LOWER); - - uint32_t xA = x >> 1; - - if ((x & 0x1) != 0) { - xA ^= A; - } - - mt[i] = mt[(i + M) % N] ^ xA; - } - v = index = 0; - } - - uint32_t y = mt[v]; - index = v + 1; - - y ^= (y >> U); - y ^= (y << S) & B; - y ^= (y << T) & C; - y ^= (y >> L); - - return y; -} diff --git a/libsys/rand.h b/libsys/rand.h deleted file mode 100644 index 2067d11..0000000 --- a/libsys/rand.h +++ /dev/null @@ -1,9 +0,0 @@ -#pragma once - -#include "types.h" - -const uint32_t RAND_MAX = UINT32_MAX; - -void srand(uint32_t seed); - -uint32_t rand(); diff --git a/nix-develop.sh b/nix-develop.sh old mode 100644 new mode 100755 diff --git a/tools/build.mk b/tools/build.mk index 7e7e9f7..2252dc1 100644 --- a/tools/build.mk +++ b/tools/build.mk @@ -99,7 +99,7 @@ $(BUILDDIR)/%.asm.o : %.asm $(MAKEFILE_LIST) # The standard target 'clean' removes the whole generated system, the object files, and the dependency files. clean:: rm -rf "$(BUILDDIR)" - + rm -rf doc # Target issuing a nested call to make generating a fully optimized systems without assertions. %-$(OPTTAG): @@ -120,6 +120,9 @@ clean:: %-$(VERBOSETAG): $(VERBOSE) $(MAKE) BUILDDIR="$(BUILDDIR)/$(VERBOSETAG)" ISODIR="$(ISODIR)/$(VERBOSETAG)" CXXFLAGS_OPT="-DVERBOSE" $* +# Build the doxygen docs +doc: + PROJECT_NAME=StuBS doxygen ../doxygen/doxy-sra.cfg # Documentation help:: @@ -134,7 +137,8 @@ help:: "To get a verbose make output, clear VERBOSE, e.g. \e[3mmake VERBOSE=\e[0m.\n" \ "The following targets are available (each target can be suffixed by \e[3m-noopt\e[0m\n" \ "and \e[3m-verbose\e[0m):\n\n" \ - " \e[3mall\e[0m Builds $(PROJECT), generating an ELF binary\n\n" + " \e[3mall\e[0m Builds $(PROJECT), generating an ELF binary\n\n" \ + " \e[3mdoc\e[0m Builds the documention (doc/html/index.html)\n" \ # Print warnings, if appropriate @@ -150,4 +154,4 @@ endif # Phony targets -.PHONY: clean help +.PHONY: clean doc help diff --git a/tools/cpplint.py b/tools/cpplint.py old mode 100644 new mode 100755 diff --git a/user/imgbuilder.cc b/user/imgbuilder.cc new file mode 100644 index 0000000..19d16a4 --- /dev/null +++ b/user/imgbuilder.cc @@ -0,0 +1,69 @@ +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +constexpr size_t block_size = 4096; +const uint8_t zeros[block_size] = {}; + +template +static void die(std::format_string fmt, Args &&...args) { + auto msg = std::format(fmt, std::forward(args)...); + perror(msg.c_str()); + exit(EXIT_FAILURE); +} + +static void writeBuffer(const void *data, size_t size) { + std::cout.write(reinterpret_cast(data), size); +} + +int main(int argc, char *argv[]) { + if (argc < 2) { + std::println(stderr, "usage: {} \n", argv[0]); + return EXIT_FAILURE; + } else if (argc > 1000) { + std::println(stderr, "Only a maximum of 1000 apps are supported\n"); + return EXIT_FAILURE; + } + + // HEADER: Number of apps + size of each app + std::array size{0}; + size[0] = static_cast(argc - 1); + + for (size_t i = 1; i < argc; ++i) { + struct stat sb; + if (stat(argv[i], &sb) != 0) die("stat"); + // 4 GB Limit + if (sb.st_size >= UINT32_MAX) { + errno = EFBIG; + die("stat"); + } + size[i] = sb.st_size; + } + writeBuffer(size.data(), block_size); + + // DATA: Each App + for (size_t i = 1; i < argc; ++i) { + std::vector buf(size[i]); + std::ifstream input(argv[i], std::ios::binary); + if (!input) die("fopen"); + + input.read(buf.data(), size[i]); + + writeBuffer(buf.data(), size[i]); + + // Fill to block size, if required + if (size[i] % block_size != 0) + writeBuffer(zeros, block_size - (size[i] % block_size)); + } + + std::cout.flush(); + return EXIT_SUCCESS; +} diff --git a/user/init.cc b/user/init.cc new file mode 100644 index 0000000..707a128 --- /dev/null +++ b/user/init.cc @@ -0,0 +1,73 @@ +#include <../libsys/stub.h> + +#ifdef __cplusplus +extern "C" { +#endif + +extern void _init(); +extern void _fini(); +extern void main(); + +extern void (*__preinit_array_start[])(); +extern void (*__preinit_array_end[])(); +extern void (*__init_array_start[])(); +extern void (*__init_array_end[])(); +extern void (*__fini_array_start[])(); +extern void (*__fini_array_end[])(); +[[gnu::used]] [[noreturn]] void start() { + const unsigned int preinit_size = + __preinit_array_end - __preinit_array_start; + for (unsigned int i = 0; i != preinit_size; ++i) + (*__preinit_array_start[i])(); + + const unsigned int init_size = __init_array_end - __init_array_start; + for (unsigned int i = 0; i != init_size; ++i) (*__init_array_start[i])(); + + main(); + + const unsigned int fini_size = __fini_array_end - __fini_array_start; + for (unsigned int i = 0; i != fini_size; ++i) (*__fini_array_start[i])(); + + sys_exit(); + + while (true) { + } +} + +// additional C++ stuff +void __cxa_pure_virtual() { + // pure virtual error +} + +// For libraries +int __cxa_atexit(void (*func)(void *), void *arg, void *dso_handle) { + (void)func; + (void)arg; + (void)dso_handle; + + return 0; +} + +#ifdef __cplusplus +} +#endif + +void *operator new([[maybe_unused]] __SIZE_TYPE__ n) { + return reinterpret_cast(0xdeadbeef); +} + +void *operator new[]([[maybe_unused]] __SIZE_TYPE__ n) { + return reinterpret_cast(0xdeadbeef); +} + +void operator delete[](void *ptr) { operator delete(ptr); } + +void operator delete[](void *ptr, [[maybe_unused]] __SIZE_TYPE__ size) { + operator delete(ptr); +} + +void operator delete([[maybe_unused]] void *ptr) {} + +void operator delete(void *ptr, [[maybe_unused]] __SIZE_TYPE__ size) { + operator delete(ptr); +} diff --git a/utils/flake.nix b/utils/flake.nix index c40f899..bb9d6ae 100644 --- a/utils/flake.nix +++ b/utils/flake.nix @@ -38,6 +38,7 @@ with pkgs; [ # for all tasks and maintenance + gnumake gdb qemu_kvm nasm @@ -49,6 +50,8 @@ python3 bear # make compile_commands.json clang-tools # for clangd and clang-format + doxygen + graphviz # make doc ] ++ (lib.filter ( pkg: lib.isDerivation pkg && pkg.pname or "" != "glibc" From 7ae806fa0122bbbacf9c7d28385806c818161200 Mon Sep 17 00:00:00 2001 From: Niklas Gollenstede Date: Mon, 15 Dec 2025 12:17:19 +0100 Subject: [PATCH 2/3] make em make less make, cuz makin' make ain't make no fun --- .clang-tidy | 2 +- .gitignore | 3 +-- user/Makefile | 29 ++++++++++++++++++++++++++--- user/Makefile.app | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 81 insertions(+), 6 deletions(-) create mode 100644 user/Makefile.app diff --git a/.clang-tidy b/.clang-tidy index c13105f..cabaf8c 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -23,4 +23,4 @@ Checks: > -cppcoreguidelines-pro-*, CheckOptions: readability-simplify-boolean-expr.IgnoreMacros: 'true' - readability-identifier-length.IgnoreNames: 'me' + readability-identifier-length.IgnoreNames: 'g,me' diff --git a/.gitignore b/.gitignore index d95f4fd..567609b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1 @@ -.build* -/build* +build/ diff --git a/user/Makefile b/user/Makefile index ea3cb72..bd8767f 100644 --- a/user/Makefile +++ b/user/Makefile @@ -13,8 +13,31 @@ INITRD = $(BUILDDIR)/initrd.img all: $(INITRD) +# Rezepte fuer Apps (Unterverzeichnisse) +$(APPS): $(BUILDDIR)/init.o + $(VERBOSE) $(MAKE) -C $@ -f ../Makefile.app + +# recipe for compiling imgbuilder +$(IMGBUILDER): imgbuilder.cc $(MAKEFILE_LIST) + @echo "CC $@" + @if test \( ! \( -d $(@D) \) \) ;then mkdir -p $(@D);fi + $(VERBOSE) $(CXX) -std=c++23 -o $@ $< + # recipe for building the final oostubs image -$(INITRD): +$(INITRD): $(APPS) $(IMGBUILDER) @echo "IMGBUILD $@" - @mkdir -p $(@D) - @touch $@ + @if test \( ! \( -d $(@D) \) \) ;then mkdir -p $(@D);fi + $(VERBOSE) $(IMGBUILDER) $(addsuffix $(BUILDDIR)/app.img, $(APPS)) > $@ + +lint:: + $(VERBOSE) $(foreach APP,$(APPS),$(MAKE) -C $(APP) -f ../Makefile.app lint && ) true + +tidy:: + $(VERBOSE) $(foreach APP,$(APPS),$(MAKE) -C $(APP) -f ../Makefile.app tidy && ) true + +# clean all apps additionally to default clean recipe from common.mk +clean:: + $(VERBOSE) $(foreach APP,$(APPS),$(MAKE) -C $(APP) -f ../Makefile.app clean && ) true + +.PHONY: all clean $(APPS) + diff --git a/user/Makefile.app b/user/Makefile.app new file mode 100644 index 0000000..a88f5b1 --- /dev/null +++ b/user/Makefile.app @@ -0,0 +1,53 @@ +# -------------------------------------------------------------------------- +# Linker Script +LINKER_SCRIPT = ../sections.ld +# Files to be compiled (important: defined prior to importing common.mk!) +CC_SOURCES = $(shell find * -name "*.cc" -a ! -name '.*' ) +ASM_SOURCES = $(shell find * -name "*.asm" -a ! -name '.*' ) + +CXXFLAGS_INCLUDE = -I../../libsys -I../../kernel +CXXFLAGS_DEFAULT += $(CXXFLAGS_INCLUDE) + +# ----------------------------------------------------------------------------- +# Globale Variablen und Standard-Rezepte einbinden +include ../../tools/common.mk + +# -------------------------------------------------------------------------- +# Default target + +.DEFAULT_GOAL = all +all: $(BUILDDIR)/app.img + +# ----------------------------------------------------------------------------- +# Parameters & flags: + +CXXFLAGS += $(CXXFLAGS_INCLUDE) +# Enable 16-byte compare-and-exchange instruction for debugging purposes (stack alignment) +CXXFLAGS += -mcx16 + +LDLIBS += -L../../libsys/$(BUILDDIR) -lsys +INITOBJ = ../$(BUILDDIR)/init.o + +# -------------------------------------------------------------------------- +# Linked applications +$(BUILDDIR)/app: $(INITOBJ) $(ASM_OBJECTS) $(CC_OBJECTS) $(LINKER_SCRIPT) $(MAKEFILE_LIST) + @echo "LD $@" + @mkdir -p $(@D) + $(VERBOSE) $(CXX) $(CXXFLAGS) -Wl,-T $(LINKER_SCRIPT) -o $@ $(LDFLAGS) $(INITOBJ) $(ASM_OBJECTS) $(CC_OBJECTS) $(LDLIBS) + +# -------------------------------------------------------------------------- +# 'app.img' contains all section required for loading an application (flat binary) + +$(BUILDDIR)/app.img: $(BUILDDIR)/app + @echo "OBJCOPY $@" + @if ! nm $< | grep "4000000 T start" >/dev/null 2>&1 ; then echo "Symbol 'start' is not first address" ; exit 1 ; fi + @if test \( ! \( -d $(@D) \) \) ;then mkdir -p $(@D);fi + $(VERBOSE) objcopy -O binary --set-section-flags .bss=alloc,load,contents $< $@ + +# -------------------------------------------------------------------------- +# Include dependency files (generated gcc -MM) + +ifneq ($(MAKECMDGOALS),clean) +-include $(DEP_FILES) +endif + From 598f97cd788281b23ed696daecfa174c1d0ad30c Mon Sep 17 00:00:00 2001 From: Niklas Gollenstede Date: Mon, 5 Jan 2026 10:41:27 +0100 Subject: [PATCH 3/3] fix make for a21, PIDs are always ints, linter things --- .clang-tidy | 8 +++-- kernel/arch/idt.cc | 14 ++++----- kernel/debug/assert.cc | 2 +- kernel/debug/assert.h | 2 +- kernel/object/queue.h | 47 +++++++++++++++-------------- kernel/sync/message.h | 39 ++++-------------------- kernel/sync/semaphore.h | 8 +++-- kernel/syscall/skeleton.cc | 2 -- kernel/syscall/skeleton.h | 2 +- kernel/thread/thread.cc | 3 +- kernel/thread/thread.h | 12 ++++++-- kernel/user/app1/appl.cc | 2 +- libsys/assert.h | 74 ++++++++++++++++++++++++++++++++++++++++++++++ user/Makefile | 10 ++++--- user/Makefile.app | 2 +- user/imgbuilder.cc | 32 ++++++++++---------- 16 files changed, 155 insertions(+), 104 deletions(-) create mode 100644 libsys/assert.h diff --git a/.clang-tidy b/.clang-tidy index cabaf8c..f90f0de 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -1,6 +1,6 @@ FormatStyle: google HeaderFilterRegex: '.*' -WarningsAsErrors: 'readability*' +#WarningsAsErrors: 'readability*' Checks: > google-readability-casting, google-explicit-constructor, @@ -9,6 +9,7 @@ Checks: > -readability-else-after-return, -readability-function-cognitive-complexity -readability-identifier-length, + -readability-implicit-bool-conversion, -readability-magic-numbers, bugprone*, -bugprone-easily-swappable-parameters, @@ -19,8 +20,11 @@ Checks: > -cppcoreguidelines-avoid-do-while, -cppcoreguidelines-avoid-magic-numbers, -cppcoreguidelines-avoid-non-const-global-variables, + -cppcoreguidelines-non-private-member-variables-in-classes, -cppcoreguidelines-owning-memory, -cppcoreguidelines-pro-*, CheckOptions: readability-simplify-boolean-expr.IgnoreMacros: 'true' - readability-identifier-length.IgnoreNames: 'g,me' + readability-identifier-length.IgnoredVariableNames: '^(g|id|me)$' + readability-identifier-length.IgnoredParameterNames: '^(id|ms|p[1-5])$' + readability-identifier-length.IgnoredLoopCounterNames: '.*' diff --git a/kernel/arch/idt.cc b/kernel/arch/idt.cc index 22c21ba..f30394c 100644 --- a/kernel/arch/idt.cc +++ b/kernel/arch/idt.cc @@ -10,13 +10,9 @@ constinit struct InterruptDescriptor idt[256] = {}; // Struct used for loading (the address of) the Interrupt Descriptor Table into // the IDT-Register struct Register { - uint16_t limit; // Address of the last valid byte (relative to base) - struct InterruptDescriptor* base; - explicit Register(uint8_t max = 255) { - limit = - (max + static_cast(1)) * sizeof(InterruptDescriptor) - 1; - base = idt; - } + uint16_t limit = + sizeof(idt) - 1; // Address of the last valid byte (relative to base) + struct InterruptDescriptor* base = idt; } __attribute__((packed)); static_assert(sizeof(InterruptDescriptor) == 16, @@ -26,11 +22,11 @@ static_assert(alignof(decltype(idt)) % 8 == 0, "IDT must be 8 byte aligned!"); void load() { // Create structure required for writing to idtr and load via lidt - Register idtr(Core::Interrupt::VECTORS - 1); + Register idtr; asm volatile("lidt %0\n\t" ::"m"(idtr)); } void set(Core::Interrupt::Vector vector, InterruptDescriptor descriptor) { - idt[(uint8_t)vector] = descriptor; + idt[static_cast(vector)] = descriptor; } } // namespace IDT diff --git a/kernel/debug/assert.cc b/kernel/debug/assert.cc index 678e3c5..066d882 100644 --- a/kernel/debug/assert.cc +++ b/kernel/debug/assert.cc @@ -1,7 +1,7 @@ #include "assert.h" #include "../arch/core.h" -#include "output.h" +#include "./output.h" [[noreturn]] void assertion_failed(const char* exp, const char* func, const char* file, int line) { diff --git a/kernel/debug/assert.h b/kernel/debug/assert.h index d6546b7..e28de40 100644 --- a/kernel/debug/assert.h +++ b/kernel/debug/assert.h @@ -15,7 +15,7 @@ */ #pragma once -#include "../types.h" +#include "types.h" #ifndef STRINGIFY /*! \def STRINGIFY(S) diff --git a/kernel/object/queue.h b/kernel/object/queue.h index 7f49815..1cba188 100644 --- a/kernel/object/queue.h +++ b/kernel/object/queue.h @@ -25,18 +25,22 @@ class Queue { /// Function pointer to the get_link function, called whenever the /// next pointer array is referenced const NextFunc get_link = default_get_link; - /// head points to the first element (the one returned on first dequeue). - /// Can be nullptr if the queue is empty. + /// `head` points to the first element (the one returned on first dequeue). + /// Can be `nullptr` if the queue is empty. T* head = nullptr; - /// tail points to the last element (the one last added). - /// Is only valid if head != nullptr + /// `tail` points to the last element (the one last added). + /// Is only valid if `head != nullptr`. T* tail = nullptr; // Prevent copies and assignments Queue(const Queue&) = delete; + Queue(Queue&&) = delete; Queue& operator=(const Queue&) = delete; + Queue& operator=(Queue&&) = delete; public: + ~Queue() = default; + /*! \brief Minimal forward iterator * You can use this iterator to iterate the queue like a normal STL * container. It only supports forward iteration, since the queue is single @@ -44,11 +48,11 @@ class Queue { */ class Iterator { private: - Queue& queue; + Queue* queue; T* current; friend class Queue; Iterator(Queue& queue, T* current) - : queue(queue), current(current) {} + : queue(&queue), current(current) {} public: Iterator operator+(unsigned num) { @@ -57,21 +61,21 @@ class Queue { } T* temp = current; while (num--) { - temp = queue.next(*temp); + temp = queue->next(*temp); } - return Iterator(queue, temp); + return Iterator(*queue, temp); } // pre increment Iterator& operator++() { - current = queue.next(*current); + current = queue->next(*current); return *this; } // post increment Iterator operator++(int) { auto temp = Iterator(queue, current); - current = queue.next(*current); + current = queue->next(*current); return temp; } @@ -84,8 +88,6 @@ class Queue { bool operator!=(const Iterator& other) { return !(*this == other); } }; - constexpr Queue(Queue&&) = default; - /*! \brief Constructor * \param[in] get_link A function pointer to the get_link, i.e. a function * which returns a pointer to the next-pointer of an @@ -97,11 +99,10 @@ class Queue { "get_link function pointer must not be nullptr!"); } - /*! \brief Enqueues the provided item at the end of the queue. If the - *element is already contained in the queue, false will be returned - * \param[in] item element to be appended (enqueued). - * \return false if the element already was enqueued (and nothing was done) - * or not (and it is now enqueued, then true) + /*! \brief Enqueues the provided item at the end of the queue. + * \param[in] item Element to be appended (enqueued). + * \return `false` if the element already was already in this (or a + * different) queue (and nothing was done), `true` otherwise. */ bool enqueue(T& item) { T** nextptr = get_link(item); @@ -214,7 +215,7 @@ class Queue { T* remove(T* that) { if (!that) return nullptr; T* cur = head; - T** next_link; + T** next_link = nullptr; if (head == that) { head = *get_link(*head); @@ -258,14 +259,14 @@ class Queue { * the pointer. */ template -OutputStream& operator<<(OutputStream& os, Queue& queue) { - os << "{"; +OutputStream& operator<<(OutputStream& out, Queue& queue) { + out << "{"; for (typename Queue::Iterator it = queue.begin(); it != queue.end(); ++it) { - os << *it; + out << *it; if (it + 1 != queue.end()) { - os << ", "; + out << ", "; } } - return os << "}"; + return out << "}"; } diff --git a/kernel/sync/message.h b/kernel/sync/message.h index 3f019ff..5f09735 100644 --- a/kernel/sync/message.h +++ b/kernel/sync/message.h @@ -3,42 +3,13 @@ #include "../types.h" struct Message { - const size_t pid; ///< Sender Thread ID of message + int sender; ///< Sender Thread ID of message - const uintptr_t sbuffer; ///< Send buffer - const size_t ssize; ///< Send buffer size + uintptr_t sbuffer; ///< Send buffer + size_t ssize; ///< Send buffer size - const uintptr_t rbuffer; ///< Receive buffer - const size_t rsize; ///< Receive buffer size + uintptr_t rbuffer; ///< Receive buffer + size_t rsize; ///< Receive buffer size Message *queue_link = nullptr; ///< Next message in the message queue - - /*! \brief Constructor - * \param pid Sender Thread ID of message - * \param sbuffer Send buffer - * \param ssize Send buffer size - * \param rbuffer Receive buffer - * \param rsize Receive buffer size - */ - explicit Message(int pid, uintptr_t sbuffer = 0, size_t ssize = 0, - uintptr_t rbuffer = 0, size_t rsize = 0) - : pid(pid), - sbuffer(sbuffer), - ssize(ssize), - rbuffer(rbuffer), - rsize(rsize) {} - - /*! \brief Helper to retrieve (and remove) a message from the queue - * \param pid Thread id of message - * \param queue Queue with message - * \return Pointer to message or nullptr - */ - static Message *dequeueByPID(size_t pid, Queue &queue) { - for (Message *m : queue) { - if (m->pid == pid) { - return queue.remove(m); - } - } - return nullptr; - } }; diff --git a/kernel/sync/semaphore.h b/kernel/sync/semaphore.h index cb0a9bd..6200229 100644 --- a/kernel/sync/semaphore.h +++ b/kernel/sync/semaphore.h @@ -24,15 +24,17 @@ class Thread; class Semaphore { // Prevent copies and assignments Semaphore(const Semaphore&) = delete; + Semaphore(Semaphore&&) = delete; Semaphore& operator=(const Semaphore&) = delete; + Semaphore& operator=(Semaphore&&) = delete; unsigned counter; Queue waiting; public: - /*! \brief Constructor; initialized the counter with provided value `c` - * \param c Initial counter value + /*! \param init Initial counter value */ - explicit Semaphore(unsigned c = 0) : counter(c) {} + explicit Semaphore(unsigned init = 0) : counter(init) {} + ~Semaphore() = default; /*! \brief Wait for access to the critical area. * diff --git a/kernel/syscall/skeleton.cc b/kernel/syscall/skeleton.cc index 33e0b5c..e790e9b 100644 --- a/kernel/syscall/skeleton.cc +++ b/kernel/syscall/skeleton.cc @@ -1,8 +1,6 @@ #include "syscall/skeleton.h" -#include "debug/kernelpanic.h" #include "debug/output.h" -#include "device/textstream.h" #include "interrupt/guard.h" #include "sync/semaphore.h" #include "thread/scheduler.h" diff --git a/kernel/syscall/skeleton.h b/kernel/syscall/skeleton.h index 5f9f831..7a33ec8 100644 --- a/kernel/syscall/skeleton.h +++ b/kernel/syscall/skeleton.h @@ -22,7 +22,7 @@ void sem_destroy(Vault &vault, size_t id); void sem_signal(Vault &vault, size_t id); void sem_wait(Vault &vault, size_t id); void exit(Vault &vault); -void kill(Vault &vault, size_t pid); +void kill(Vault &vault, int pid); } // namespace Skeleton } // namespace Syscall diff --git a/kernel/thread/thread.cc b/kernel/thread/thread.cc index b53c678..c6af7d5 100644 --- a/kernel/thread/thread.cc +++ b/kernel/thread/thread.cc @@ -6,8 +6,7 @@ #include "../interrupt/guard.h" #include "debug/output.h" -// counter for ID -static size_t idCounter = 1; +static int idCounter = 1; // counter for task IDs void Thread::kickoff(uintptr_t param1, uintptr_t param2, uintptr_t param3) { Thread *thread = reinterpret_cast(param1); diff --git a/kernel/thread/thread.h b/kernel/thread/thread.h index 8149670..35f04e2 100644 --- a/kernel/thread/thread.h +++ b/kernel/thread/thread.h @@ -28,14 +28,12 @@ class Thread { /*! \brief pointer to the next element of the readylist */ Thread* queue_link; - friend class Queue; friend class Semaphore; /*! \brief Memory reserved for this threads stack */ alignas(16) char reserved_stack_space[STACK_SIZE]; - protected: /*! \brief Context of the thread, used for saving and restoring the register * values when context switching. */ @@ -56,17 +54,25 @@ class Thread { * \param param1 Thread to be started * \param param2 Second parameter (will be used later) * \param param3 Third parameter (will be used later) + * */ static void kickoff(uintptr_t param1, uintptr_t param2, uintptr_t param3); public: /*! \brief Unique thread id */ - const size_t id; + const int id; /*! \brief Marker for a dying thread */ volatile bool kill_flag; + // Naively moving or copying esp. the (user) stack of a thread would be a + // bad idea: + Thread(const Thread&) = delete; + Thread(Thread&&) = delete; + Thread& operator=(const Thread&) = delete; + Thread& operator=(Thread&&) = delete; + /*! \brief Constructor * Initializes the context using \ref prepareContext with the thread's * stack space. diff --git a/kernel/user/app1/appl.cc b/kernel/user/app1/appl.cc index 99791d8..869a768 100644 --- a/kernel/user/app1/appl.cc +++ b/kernel/user/app1/appl.cc @@ -23,7 +23,7 @@ void Application::action() { // NOLINT // Make sure that we can use kout exclusively due to the hardware cursor // otherwise we'd get a word jumble koutsem.p(Guard::enter().vault()); - kout.setPos(0U, id); + kout.setPos(0U, static_cast(id)); kout << i; kout.flush(); koutsem.v(Guard::enter().vault()); diff --git a/libsys/assert.h b/libsys/assert.h new file mode 100644 index 0000000..e28de40 --- /dev/null +++ b/libsys/assert.h @@ -0,0 +1,74 @@ +// vim: set noet ts=4 sw=4: + +/*! \file + * \brief Contains several macros usable for making assertions + * + * Depending on the type of assertion (either static or at runtime), a failing + * assertion will trigger an error. For static assertion, this error will be + * shown at compile time and abort compilation. Runtime assertions will trigger + * a message containing details about the error occurred and will make the CPU + * die. + */ + +/*! + * \defgroup debug Debugging functions + */ + +#pragma once +#include "types.h" + +#ifndef STRINGIFY +/*! \def STRINGIFY(S) + * \brief Converts a macro parameter into a string + * \ingroup debug + * \param S Expression to be converted + * \return stringified version of S + */ +#define STRINGIFY(S) #S +#endif + +/*! \def assert_size(TYPE, SIZE) + * \brief Statically ensure (at compile time) that a data type (or variable) + * has the expected size. + * + * \ingroup debug + * \param TYPE The type to be checked + * \param SIZE Expected size in bytes + */ +#define assert_size(TYPE, SIZE) \ + static_assert(sizeof(TYPE) == (SIZE), "Wrong size for " STRINGIFY(TYPE)) + +/*! \def assert(EXP) + * \brief Ensure (at execution time) an expression evaluates to `true`, print + * an error message and stop the CPU otherwise. + * + * \ingroup debug + * \param EXP The expression to be checked + */ +#ifdef NDEBUG +#define assert(EXP) ((void)0) +#else +#define assert(EXP) \ + do { \ + if (__builtin_expect(!(EXP), 0)) { \ + assertion_failed(STRINGIFY(EXP), __func__, __FILE__, __LINE__); \ + } \ + } while (false) + +/*! \brief Handles a failed assertion + * + * This function will print a message containing further information about the + * failed assertion and stops the current CPU permanently. + * + * \note This function should never be called directly, but only via the macro + * `assert`. + * + * + * \param exp Expression that did not hold + * \param func Name of the function in which the assertion failed + * \param file Name of the file in which the assertion failed + * \param line Line in which the assertion failed + */ +[[noreturn]] void assertion_failed(const char* exp, const char* func, + const char* file, int line); +#endif diff --git a/user/Makefile b/user/Makefile index bd8767f..7d3d491 100644 --- a/user/Makefile +++ b/user/Makefile @@ -19,14 +19,16 @@ $(APPS): $(BUILDDIR)/init.o # recipe for compiling imgbuilder $(IMGBUILDER): imgbuilder.cc $(MAKEFILE_LIST) - @echo "CC $@" - @if test \( ! \( -d $(@D) \) \) ;then mkdir -p $(@D);fi + @echo "CXX $@" + @mkdir -p $(@D) $(VERBOSE) $(CXX) -std=c++23 -o $@ $< -# recipe for building the final oostubs image +.ONESHELL: +# recipe for building the initrd image $(INITRD): $(APPS) $(IMGBUILDER) @echo "IMGBUILD $@" - @if test \( ! \( -d $(@D) \) \) ;then mkdir -p $(@D);fi + @mkdir -p $(@D) + if [ -z "$(APPS)" ] ; then touch $@ ; exit 0 ; fi $(VERBOSE) $(IMGBUILDER) $(addsuffix $(BUILDDIR)/app.img, $(APPS)) > $@ lint:: diff --git a/user/Makefile.app b/user/Makefile.app index a88f5b1..8351c83 100644 --- a/user/Makefile.app +++ b/user/Makefile.app @@ -41,7 +41,7 @@ $(BUILDDIR)/app: $(INITOBJ) $(ASM_OBJECTS) $(CC_OBJECTS) $(LINKER_SCRIPT) $(MAK $(BUILDDIR)/app.img: $(BUILDDIR)/app @echo "OBJCOPY $@" @if ! nm $< | grep "4000000 T start" >/dev/null 2>&1 ; then echo "Symbol 'start' is not first address" ; exit 1 ; fi - @if test \( ! \( -d $(@D) \) \) ;then mkdir -p $(@D);fi + @mkdir -p $(@D) $(VERBOSE) objcopy -O binary --set-section-flags .bss=alloc,load,contents $< $@ # -------------------------------------------------------------------------- diff --git a/user/imgbuilder.cc b/user/imgbuilder.cc index 19d16a4..535cc73 100644 --- a/user/imgbuilder.cc +++ b/user/imgbuilder.cc @@ -10,7 +10,7 @@ #include #include -constexpr size_t block_size = 4096; +constexpr std::streamsize block_size = 4096; const uint8_t zeros[block_size] = {}; template @@ -20,7 +20,7 @@ static void die(std::format_string fmt, Args &&...args) { exit(EXIT_FAILURE); } -static void writeBuffer(const void *data, size_t size) { +static void writeBuffer(const void *data, std::streamsize size) { std::cout.write(reinterpret_cast(data), size); } @@ -33,35 +33,33 @@ int main(int argc, char *argv[]) { return EXIT_FAILURE; } - // HEADER: Number of apps + size of each app - std::array size{0}; - size[0] = static_cast(argc - 1); - + // HEADER: Number of apps + size of each app in bytes + std::array sizes{0}; + sizes[0] = static_cast(argc - 1); for (size_t i = 1; i < argc; ++i) { - struct stat sb; - if (stat(argv[i], &sb) != 0) die("stat"); - // 4 GB Limit - if (sb.st_size >= UINT32_MAX) { + struct stat file; + if (stat(argv[i], &file) != 0) die("stat"); + if (file.st_size >= UINT32_MAX) { // 4 GB Limit errno = EFBIG; die("stat"); } - size[i] = sb.st_size; + sizes[i] = file.st_size; } - writeBuffer(size.data(), block_size); + writeBuffer(sizes.data(), block_size); // DATA: Each App for (size_t i = 1; i < argc; ++i) { - std::vector buf(size[i]); + std::vector buf(sizes[i]); std::ifstream input(argv[i], std::ios::binary); if (!input) die("fopen"); - input.read(buf.data(), size[i]); + input.read(buf.data(), sizes[i]); - writeBuffer(buf.data(), size[i]); + writeBuffer(buf.data(), sizes[i]); // Fill to block size, if required - if (size[i] % block_size != 0) - writeBuffer(zeros, block_size - (size[i] % block_size)); + if (sizes[i] % block_size != 0) + writeBuffer(zeros, block_size - (sizes[i] % block_size)); } std::cout.flush();