Merge "Replace uses of deprecated std::auto_ptr with std::unique_ptr."
diff --git a/webm_parser/fuzzing/corpus/148357130d1e5ac4059ad2bb6c63d78e2523f7d2 b/webm_parser/fuzzing/corpus/148357130d1e5ac4059ad2bb6c63d78e2523f7d2
new file mode 100644
index 0000000..23129b8
--- /dev/null
+++ b/webm_parser/fuzzing/corpus/148357130d1e5ac4059ad2bb6c63d78e2523f7d2
Binary files differ
diff --git a/webm_parser/fuzzing/corpus/1df9507cc2a54a369646d6d34d846d3fcc172479 b/webm_parser/fuzzing/corpus/1df9507cc2a54a369646d6d34d846d3fcc172479
new file mode 100644
index 0000000..0826b42
--- /dev/null
+++ b/webm_parser/fuzzing/corpus/1df9507cc2a54a369646d6d34d846d3fcc172479
Binary files differ
diff --git a/webm_parser/fuzzing/corpus/27d62874ec87a2552e7c842da65de113aa69f7aa b/webm_parser/fuzzing/corpus/27d62874ec87a2552e7c842da65de113aa69f7aa
new file mode 100644
index 0000000..f83242a
--- /dev/null
+++ b/webm_parser/fuzzing/corpus/27d62874ec87a2552e7c842da65de113aa69f7aa
Binary files differ
diff --git a/webm_parser/fuzzing/corpus/2a8dda90aa286175b5c683b57fae1dc7e6ac1e7e b/webm_parser/fuzzing/corpus/2a8dda90aa286175b5c683b57fae1dc7e6ac1e7e
new file mode 100644
index 0000000..f453884
--- /dev/null
+++ b/webm_parser/fuzzing/corpus/2a8dda90aa286175b5c683b57fae1dc7e6ac1e7e
Binary files differ
diff --git a/webm_parser/fuzzing/corpus/395027454c7d5babff9544414c04a39d712eed1c b/webm_parser/fuzzing/corpus/395027454c7d5babff9544414c04a39d712eed1c
new file mode 100644
index 0000000..e34ef6f
--- /dev/null
+++ b/webm_parser/fuzzing/corpus/395027454c7d5babff9544414c04a39d712eed1c
Binary files differ
diff --git a/webm_parser/fuzzing/corpus/53c27071f53df6b8d2e5c419edf95b7792b278e7 b/webm_parser/fuzzing/corpus/53c27071f53df6b8d2e5c419edf95b7792b278e7
new file mode 100644
index 0000000..87d69ed
--- /dev/null
+++ b/webm_parser/fuzzing/corpus/53c27071f53df6b8d2e5c419edf95b7792b278e7
@@ -0,0 +1 @@
+¶¶¶¶ÿ6¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿö¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿö¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶Óÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿö¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶Óÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿö¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿö¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿö¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿö¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿö¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶Óÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿö¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶Óÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿö¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿö¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿö¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶:¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶wÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶;¶ÿ¶¶¶¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶m¶ÿ¶¶ÿ¶¶®®Ý¶ÿ¶¶ÿ¶¶µ¶¶ÿ¶¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶¶¶ÿ¶¶ÿ¶¶¶ÿ¶ÿ¶¶ÿ¶¶¶ÿ¶¶¶ÿ¶¶ÿ¶¶ÿ¶¶å¶¶¶ÿ¶Eߣ¶¶À¶ÿ¶m¶ÿ¶¶ÿ¶¶®®Ý¶ÿ¶¶ÿ¶¶µ¶¶ÿ
\ No newline at end of file
diff --git a/webm_parser/fuzzing/corpus/6538d0517865c8832ee9bec87609b7bd4facb025 b/webm_parser/fuzzing/corpus/6538d0517865c8832ee9bec87609b7bd4facb025
new file mode 100644
index 0000000..7230e70
--- /dev/null
+++ b/webm_parser/fuzzing/corpus/6538d0517865c8832ee9bec87609b7bd4facb025
Binary files differ
diff --git a/webm_parser/fuzzing/corpus/8dc58cfcb396a60db921901f1b0807c4f4f37619 b/webm_parser/fuzzing/corpus/8dc58cfcb396a60db921901f1b0807c4f4f37619
new file mode 100644
index 0000000..e256d2f
--- /dev/null
+++ b/webm_parser/fuzzing/corpus/8dc58cfcb396a60db921901f1b0807c4f4f37619
Binary files differ
diff --git a/webm_parser/fuzzing/corpus/8f8f956eaaf8f7f5e65002be888b946218f0f7ce b/webm_parser/fuzzing/corpus/8f8f956eaaf8f7f5e65002be888b946218f0f7ce
new file mode 100644
index 0000000..7ebec69
--- /dev/null
+++ b/webm_parser/fuzzing/corpus/8f8f956eaaf8f7f5e65002be888b946218f0f7ce
Binary files differ
diff --git a/webm_parser/fuzzing/corpus/95a60268c555a77c1010d75bb44142af47635486 b/webm_parser/fuzzing/corpus/95a60268c555a77c1010d75bb44142af47635486
new file mode 100644
index 0000000..a95f40a
--- /dev/null
+++ b/webm_parser/fuzzing/corpus/95a60268c555a77c1010d75bb44142af47635486
Binary files differ
diff --git a/webm_parser/fuzzing/corpus/a823a019c0b19c97a1d35722cd843109ab016c17 b/webm_parser/fuzzing/corpus/a823a019c0b19c97a1d35722cd843109ab016c17
new file mode 100644
index 0000000..eae1319
--- /dev/null
+++ b/webm_parser/fuzzing/corpus/a823a019c0b19c97a1d35722cd843109ab016c17
Binary files differ
diff --git a/webm_parser/fuzzing/corpus/c2cc55849ff4858bf80f1a4713187618d14a496d b/webm_parser/fuzzing/corpus/c2cc55849ff4858bf80f1a4713187618d14a496d
new file mode 100644
index 0000000..b511eed
--- /dev/null
+++ b/webm_parser/fuzzing/corpus/c2cc55849ff4858bf80f1a4713187618d14a496d
Binary files differ
diff --git a/webm_parser/fuzzing/corpus/d3c74d3a64dba86f98a31bb726587ec97a7e4531 b/webm_parser/fuzzing/corpus/d3c74d3a64dba86f98a31bb726587ec97a7e4531
new file mode 100644
index 0000000..c2ce861
--- /dev/null
+++ b/webm_parser/fuzzing/corpus/d3c74d3a64dba86f98a31bb726587ec97a7e4531
Binary files differ
diff --git a/webm_parser/fuzzing/corpus/d62459bb217d3050bcd9e29a6327cf81f5ed68b9 b/webm_parser/fuzzing/corpus/d62459bb217d3050bcd9e29a6327cf81f5ed68b9
new file mode 100644
index 0000000..c4ec3c4
--- /dev/null
+++ b/webm_parser/fuzzing/corpus/d62459bb217d3050bcd9e29a6327cf81f5ed68b9
Binary files differ
diff --git a/webm_parser/fuzzing/corpus/dd962d74d04aa4aed270fd8e6b0ae9c4ac35fd19 b/webm_parser/fuzzing/corpus/dd962d74d04aa4aed270fd8e6b0ae9c4ac35fd19
new file mode 100644
index 0000000..dcb3af4
--- /dev/null
+++ b/webm_parser/fuzzing/corpus/dd962d74d04aa4aed270fd8e6b0ae9c4ac35fd19
Binary files differ
diff --git a/webm_parser/fuzzing/corpus/de9e0ed8ae29220e5b65e5b97eb3b254ccbe7e0c b/webm_parser/fuzzing/corpus/de9e0ed8ae29220e5b65e5b97eb3b254ccbe7e0c
new file mode 100644
index 0000000..d48be42
--- /dev/null
+++ b/webm_parser/fuzzing/corpus/de9e0ed8ae29220e5b65e5b97eb3b254ccbe7e0c
Binary files differ
diff --git a/webm_parser/fuzzing/corpus/fa79e8ad34cabea4d3c434cc02ea1499069fcafc b/webm_parser/fuzzing/corpus/fa79e8ad34cabea4d3c434cc02ea1499069fcafc
new file mode 100644
index 0000000..ac147e8
--- /dev/null
+++ b/webm_parser/fuzzing/corpus/fa79e8ad34cabea4d3c434cc02ea1499069fcafc
Binary files differ
diff --git a/webm_parser/fuzzing/webm.dict b/webm_parser/fuzzing/webm.dict
index 2aa0eb9..7660ce8 100644
--- a/webm_parser/fuzzing/webm.dict
+++ b/webm_parser/fuzzing/webm.dict
@@ -94,6 +94,12 @@
IdWhitePointChromaticityY = "\x55\xD8"
IdLuminanceMax = "\x55\xD9"
IdLuminanceMin = "\x55\xDA"
+IdProjection = "\x76\x70"
+IdProjectionType = "\x76\x71"
+IdProjectionPrivate = "\x76\x72"
+IdProjectionPoseYaw = "\x76\x73"
+IdProjectionPosePitch = "\x76\x74"
+IdProjectionPoseRoll = "\x76\x75"
IdAudio = "\xE1"
IdSamplingFrequency = "\xB5"
IdOutputSamplingFrequency = "\x78\xB5"
diff --git a/webm_parser/fuzzing/webm_fuzzer.cc b/webm_parser/fuzzing/webm_fuzzer.cc
index 1cb2228..501b151 100644
--- a/webm_parser/fuzzing/webm_fuzzer.cc
+++ b/webm_parser/fuzzing/webm_fuzzer.cc
@@ -49,7 +49,7 @@
assert(status.code != Status::kOkPartial);
// Only the following ranges have status codes defined:
- assert((-1030 <= status.code && status.code <= -1025) ||
+ assert((-1031 <= status.code && status.code <= -1025) ||
(-3 <= status.code && status.code <= 0));
return 0;
diff --git a/webm_parser/include/webm/status.h b/webm_parser/include/webm/status.h
index c0ad135..52abd38 100644
--- a/webm_parser/include/webm/status.h
+++ b/webm_parser/include/webm/status.h
@@ -87,6 +87,11 @@
*/
kInvalidElementValue = -1030,
+ /**
+ A recursive element was so deeply nested that exceeded the parser's limit.
+ */
+ kExceededRecursionDepthLimit = -1031,
+
// The following codes are internal-only and should not be used by users.
// Additionally, these codes should never be returned to the user; doing so
// is considered a bug.
diff --git a/webm_parser/src/chapter_atom_parser.h b/webm_parser/src/chapter_atom_parser.h
index d15f179..653f59f 100644
--- a/webm_parser/src/chapter_atom_parser.h
+++ b/webm_parser/src/chapter_atom_parser.h
@@ -12,7 +12,6 @@
#include "src/chapter_display_parser.h"
#include "src/int_parser.h"
#include "src/master_value_parser.h"
-#include "src/recursive_parser.h"
#include "webm/dom_types.h"
#include "webm/id.h"
@@ -23,7 +22,7 @@
// http://www.webmproject.org/docs/container/#ChapterAtom
class ChapterAtomParser : public MasterValueParser<ChapterAtom> {
public:
- ChapterAtomParser()
+ explicit ChapterAtomParser(std::size_t max_recursive_depth = 25)
: MasterValueParser<ChapterAtom>(
MakeChild<UnsignedIntParser>(Id::kChapterUid, &ChapterAtom::uid),
MakeChild<StringParser>(Id::kChapterStringUid,
@@ -34,8 +33,8 @@
&ChapterAtom::time_end),
MakeChild<ChapterDisplayParser>(Id::kChapterDisplay,
&ChapterAtom::displays),
- MakeChild<RecursiveParser<ChapterAtomParser>>(
- Id::kChapterAtom, &ChapterAtom::atoms)) {}
+ MakeChild<ChapterAtomParser>(Id::kChapterAtom, &ChapterAtom::atoms,
+ max_recursive_depth)) {}
};
} // namespace webm
diff --git a/webm_parser/src/master_value_parser.h b/webm_parser/src/master_value_parser.h
index d504cfb..841d624 100644
--- a/webm_parser/src/master_value_parser.h
+++ b/webm_parser/src/master_value_parser.h
@@ -17,6 +17,7 @@
#include <vector>
#include "src/master_parser.h"
+#include "src/recursive_parser.h"
#include "src/skip_callback.h"
#include "webm/callback.h"
#include "webm/element.h"
@@ -244,6 +245,56 @@
std::vector<Element<Value>> T::*member_;
};
+ template <typename Parser, typename... Tags>
+ class RecursiveChildFactory {
+ public:
+ constexpr RecursiveChildFactory(Id id, std::vector<Element<T>> T::*member,
+ std::size_t max_recursion_depth)
+ : id_(id), member_(member), max_recursion_depth_(max_recursion_depth) {}
+
+ // Builds a std::pair<Id, std::unique_ptr<ElementParser>>. The parent
+ // pointer must be a pointer to the MasterValueParser that is being
+ // constructed. The given value pointer must be the pointer to the fully
+ // constructed MasterValueParser::value_ object.
+ std::pair<Id, std::unique_ptr<ElementParser>> BuildParser(
+ MasterValueParser* parent, T* value) {
+ assert(parent != nullptr);
+ assert(value != nullptr);
+
+ std::vector<Element<T>>* child_member = &(value->*member_);
+ auto lambda = [child_member](RecursiveParser<Parser>* parser) {
+ if (child_member->size() == 1 && !child_member->front().is_present()) {
+ child_member->clear();
+ }
+ child_member->emplace_back(std::move(*parser->mutable_value()), true);
+ };
+
+ return {id_, std::unique_ptr<ElementParser>(
+ new ChildParser<RecursiveParser<Parser>,
+ decltype(lambda), Tags...>(
+ parent, std::move(lambda), max_recursion_depth_))};
+ }
+
+ // If called, OnParseStarted will be called on the parent element when this
+ // particular element is encountered.
+ constexpr RecursiveChildFactory<Parser, TagUseAsStart, Tags...>
+ UseAsStartEvent() const {
+ return {id_, member_, max_recursion_depth_};
+ }
+
+ // If called, OnChildParsed will be called on the parent element when this
+ // particular element is fully parsed.
+ constexpr RecursiveChildFactory<Parser, TagNotifyOnParseComplete, Tags...>
+ NotifyOnParseComplete() const {
+ return {id_, member_, max_recursion_depth_};
+ }
+
+ private:
+ Id id_;
+ std::vector<Element<T>> T::*member_;
+ std::size_t max_recursion_depth_;
+ };
+
// Constructs a new parser. Each argument must be a *ChildFactory, constructed
// from the MakeChild method.
template <typename... Args>
@@ -262,6 +313,8 @@
Id id, Element<Value> T::*member) {
static_assert(std::is_base_of<ElementParser, Parser>::value,
"Parser must derive from ElementParser");
+ static_assert(!std::is_base_of<MasterValueParser<T>, Parser>::value,
+ "Recursive elements should be contained in a std::vector");
return SingleChildFactory<Parser, Value>(id, member);
}
@@ -270,9 +323,20 @@
Id id, std::vector<Element<Value>> T::*member) {
static_assert(std::is_base_of<ElementParser, Parser>::value,
"Parser must derive from ElementParser");
+ static_assert(!std::is_base_of<MasterValueParser<T>, Parser>::value,
+ "Recursive elements require a maximum recursion depth");
return RepeatedChildFactory<Parser, Value>(id, member);
}
+ template <typename Parser>
+ static RecursiveChildFactory<Parser> MakeChild(
+ Id id, std::vector<Element<T>> T::*member,
+ std::size_t max_recursion_depth) {
+ static_assert(std::is_base_of<MasterValueParser<T>, Parser>::value,
+ "Child must be recusrive to use maximum recursion depth");
+ return RecursiveChildFactory<Parser>(id, member, max_recursion_depth);
+ }
+
// Gets the metadata for this element, setting the EBML element ID to id. Only
// call after Init() has been called.
ElementMetadata metadata(Id id) const {
diff --git a/webm_parser/src/recursive_parser.h b/webm_parser/src/recursive_parser.h
index aef49cf..1646f2f 100644
--- a/webm_parser/src/recursive_parser.h
+++ b/webm_parser/src/recursive_parser.h
@@ -27,7 +27,8 @@
template <typename T>
class RecursiveParser : public ElementParser {
public:
- RecursiveParser() = default;
+ explicit RecursiveParser(std::size_t max_recursion_depth = 25)
+ : max_recursion_depth_(max_recursion_depth){};
RecursiveParser(RecursiveParser&&) = default;
RecursiveParser& operator=(RecursiveParser&&) = default;
@@ -39,8 +40,12 @@
std::uint64_t max_size) override {
assert(metadata.size == kUnknownElementSize || metadata.size <= max_size);
+ if (max_recursion_depth_ == 0) {
+ return Status(Status::kExceededRecursionDepthLimit);
+ }
+
if (!impl_) {
- impl_.reset(new T);
+ impl_.reset(new T(max_recursion_depth_ - 1));
}
return impl_->Init(metadata, max_size);
@@ -48,8 +53,9 @@
void InitAfterSeek(const Ancestory& child_ancestory,
const ElementMetadata& child_metadata) override {
+ assert(max_recursion_depth_ > 0);
if (!impl_) {
- impl_.reset(new T);
+ impl_.reset(new T(max_recursion_depth_ - 1));
}
impl_->InitAfterSeek(child_ancestory, child_metadata);
@@ -79,6 +85,7 @@
private:
std::unique_ptr<T> impl_;
+ std::size_t max_recursion_depth_;
};
} // namespace webm
diff --git a/webm_parser/src/simple_tag_parser.h b/webm_parser/src/simple_tag_parser.h
index 8944c99..d8b9da6 100644
--- a/webm_parser/src/simple_tag_parser.h
+++ b/webm_parser/src/simple_tag_parser.h
@@ -11,7 +11,6 @@
#include "src/bool_parser.h"
#include "src/byte_parser.h"
#include "src/master_value_parser.h"
-#include "src/recursive_parser.h"
#include "webm/dom_types.h"
#include "webm/id.h"
@@ -22,15 +21,15 @@
// http://www.webmproject.org/docs/container/#SimpleTag
class SimpleTagParser : public MasterValueParser<SimpleTag> {
public:
- SimpleTagParser()
+ SimpleTagParser(std::size_t max_recursive_depth = 25)
: MasterValueParser<SimpleTag>(
MakeChild<StringParser>(Id::kTagName, &SimpleTag::name),
MakeChild<StringParser>(Id::kTagLanguage, &SimpleTag::language),
MakeChild<BoolParser>(Id::kTagDefault, &SimpleTag::is_default),
MakeChild<StringParser>(Id::kTagString, &SimpleTag::string),
MakeChild<BinaryParser>(Id::kTagBinary, &SimpleTag::binary),
- MakeChild<RecursiveParser<SimpleTagParser>>(Id::kSimpleTag,
- &SimpleTag::tags)) {}
+ MakeChild<SimpleTagParser>(Id::kSimpleTag, &SimpleTag::tags,
+ max_recursive_depth)) {}
};
} // namespace webm
diff --git a/webm_parser/tests/chapter_atom_parser_test.cc b/webm_parser/tests/chapter_atom_parser_test.cc
index 10c656a..5c82061 100644
--- a/webm_parser/tests/chapter_atom_parser_test.cc
+++ b/webm_parser/tests/chapter_atom_parser_test.cc
@@ -11,12 +11,14 @@
#include "test_utils/element_parser_test.h"
#include "webm/id.h"
+#include "webm/status.h"
using webm::ChapterAtom;
using webm::ChapterAtomParser;
using webm::ChapterDisplay;
using webm::ElementParserTest;
using webm::Id;
+using webm::Status;
namespace {
@@ -185,4 +187,23 @@
EXPECT_EQ(expected_chapter_atom, chapter_atom.atoms[0].value());
}
+TEST_F(ChapterAtomParserTest, ExceedMaxRecursionDepth) {
+ ResetParser(1);
+
+ SetReaderData({
+ 0xB6, // ID = 0xB6 (ChapterAtom).
+ 0x80, // Size = 0.
+ });
+ ParseAndVerify();
+
+ SetReaderData({
+ 0xB6, // ID = 0xB6 (ChapterAtom).
+ 0x82, // Size = 2.
+
+ 0xB6, // ID = 0xB6 (ChapterAtom).
+ 0x80, // Size = 0.
+ });
+ ParseAndExpectResult(Status::kExceededRecursionDepthLimit);
+}
+
} // namespace
diff --git a/webm_parser/tests/recursive_parser_test.cc b/webm_parser/tests/recursive_parser_test.cc
index 88af177..8965a3e 100644
--- a/webm_parser/tests/recursive_parser_test.cc
+++ b/webm_parser/tests/recursive_parser_test.cc
@@ -30,22 +30,37 @@
class FailParser : public ElementParser {
public:
- FailParser() { EXPECT_FALSE(true); }
+ explicit FailParser(std::size_t /* max_recursion_depth */) { ADD_FAILURE(); }
Status Init(const ElementMetadata& /* metadata */,
std::uint64_t /* max_size */) override {
+ ADD_FAILURE();
return Status(Status::kInvalidElementSize);
}
Status Feed(Callback* /* callback */, Reader* /* reader */,
std::uint64_t* num_bytes_read) override {
+ ADD_FAILURE();
*num_bytes_read = 0;
return Status(Status::kInvalidElementSize);
}
- int value() const { return 0; }
+ int value() const {
+ ADD_FAILURE();
+ return 0;
+ }
- int* mutable_value() { return nullptr; }
+ int* mutable_value() {
+ ADD_FAILURE();
+ return nullptr;
+ }
+};
+
+class StringParserWrapper : public StringParser {
+ public:
+ explicit StringParserWrapper(std::size_t max_recursion_depth) {
+ EXPECT_EQ(max_recursion_depth, 24);
+ }
};
class RecursiveFailParserTest
@@ -56,7 +71,7 @@
}
class RecursiveStringParserTest
- : public ElementParserTest<RecursiveParser<StringParser>> {};
+ : public ElementParserTest<RecursiveParser<StringParserWrapper>> {};
TEST_F(RecursiveStringParserTest, ParsesOkay) {
ParseAndVerify();
@@ -67,4 +82,9 @@
EXPECT_EQ("Hi", parser_.value());
}
+TEST_F(RecursiveStringParserTest, ExceedMaxRecursionDepth) {
+ ResetParser(0);
+ TestInit(0, Status::kExceededRecursionDepthLimit);
+}
+
} // namespace
diff --git a/webm_parser/tests/simple_tag_parser_test.cc b/webm_parser/tests/simple_tag_parser_test.cc
index 27931ec..f67191c 100644
--- a/webm_parser/tests/simple_tag_parser_test.cc
+++ b/webm_parser/tests/simple_tag_parser_test.cc
@@ -13,11 +13,13 @@
#include "test_utils/element_parser_test.h"
#include "webm/id.h"
+#include "webm/status.h"
using webm::ElementParserTest;
using webm::Id;
using webm::SimpleTag;
using webm::SimpleTagParser;
+using webm::Status;
namespace {
@@ -181,4 +183,23 @@
EXPECT_EQ(expected, simple_tag.tags[0].value());
}
+TEST_F(SimpleTagParserTest, ExceedMaxRecursionDepth) {
+ ResetParser(1);
+
+ SetReaderData({
+ 0x67, 0xC8, // ID = 0x67C8 (SimpleTag).
+ 0x80, // Size = 0.
+ });
+ ParseAndVerify();
+
+ SetReaderData({
+ 0x67, 0xC8, // ID = 0x67C8 (SimpleTag).
+ 0x83, // Size = 3.
+
+ 0x67, 0xC8, // ID = 0x67C8 (SimpleTag).
+ 0x80, // Size = 0.
+ });
+ ParseAndExpectResult(Status::kExceededRecursionDepthLimit);
+}
+
} // namespace